2015-02-24 79 views
1

的,這是我的作品的鏈接:maison.whiteplay.frthree.js所:我可以創建網格來代替很多對象

什麼,我試圖做的是3D吃豆,但看個代碼,我使用網格來建立我的水平,除了氣泡(黃色圓圈),你需要吃才能贏。 它們都是不同的物體,但是因爲它們很多,所以它是滯後的,我可以使用相同的技術(網格我認爲)來處理氣泡嗎?如果是,如何?

代碼:

var geometrySphere = new THREE.SphereGeometry(5, 32, 32); 
var bille = function(x,z){ 
    this.bille = new THREE.Mesh(
     geometrySphere, 
     new THREE.MeshBasicMaterial({color: 0xffff00}) 
    ); 
    this.bille.position.x = (x-15.5)*100; this.bille.position.y = 100; 
    this.bille.position.z = (z-15.5)*100; scene.add(this.bille); 
} 

感謝您的閱讀,如果你對我的代碼的任何建議,不要猶豫:d

+0

在我的電腦上它根本就沒有滯後性。也許你應該考慮投資你的硬件?如果它已經落後於這樣簡單的場景,那就不是一個好兆頭。要回答你的問題,我需要更多關於你如何構建場景的細節。你能分享一些代碼嗎? – Wilt 2015-02-24 14:36:05

+0

舒爾,源代碼:(查看源代碼:http://maison.whiteplay.fr/)如果你認爲這是可能的這是我的Skype:lxladlxl – 2015-02-24 14:52:53

+0

我不會讀你所有的代碼。如果你想幫助你在你的問題中實現相關的代碼。否則祝你好運。 – Wilt 2015-02-24 15:05:36

回答

0

您也可以重用的材料,而不是使一個新實例所有的時間:

var geometrySphere = new THREE.SphereGeometry(5, 32, 32); 
var billeMaterial = new THREE.MeshBasicMaterial({color: 0xffff00}); 
var bille = function(x,z){ 
    this.bille = new THREE.Mesh(
     geometrySphere, 
     billeMaterial 
    ); 
    this.bille.position.x = (x-15.5)*100; this.bille.position.y = 100; 
    this.bille.position.z = (z-15.5)*100; scene.add(this.bille); 
} 

重複使用材料對性能有很好的影響。

如何複製網格/對象?

+0

@AntoineDuval,你試過這個嗎? – Wilt 2016-05-13 15:45:00

0

你的代碼幾乎是正確的。

在您的具體情況下,使用N個相同的球,您必須有N個網格,但只有一個材質。通過這種方式,如果你想着色(例如)只有一個球,你必須使用一種新的材料,否則你將新的顏色應用到所有的球。

在你的情況下,滯後可能是由於球體結構。

您清楚地從文檔中複製並粘貼,而未讀取它。

var geometrySphere = new THREE.SphereGeometry(5, 32, 32); 

其中,作爲documentation解釋說:

radius — sphere radius. Default is 50. 
widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8. 
heightSegments — number of vertical segments. Minimum value is 2, and the default is 6. 

32 * 32是太多的小氣泡單色,沒有意義。

這個值越高,每幀畫出的複雜度就越高。

我建議你用少量的垂直/水平線段創建球體(8 * 8也可以)。

看一看這個demo

相關問題