2013-06-19 112 views
3

我使用的是目前正在創建中three.js所網格實時如下:切換網格的幾何three.js所

sphereGeometry = new THREE.SphereGeometry(1, 16,16); 
mesh = new THREE.Mesh(sphereGeometry, material); 

我還創建了一個圓環:

torusGeometry = new THREE.TorusGeometry(1, 0.42); 

在我的動畫循環中的任何一點上,我都希望能夠將球體換成環面。這可能嗎?如何將一個幾何體換成另一個幾何體?

+0

你幾何切換工作? – jh314

回答

-2

嘗試尋找這個:http://threejs.org/docs/58/#Reference/Objects/Mesh

尤其是這種方法:

mesh.setGeometry(geometry) 

這裏是你會怎麼做渲染循環內(您設置的標誌,每當你想出去交換領域的花托)

var flag; 
... 
function render() { 
    if (flag) { 
     mesh.setGeometry(torusGeometry); 
     flag = false; 
    } 
} 
render(); 

如果你要來回翻轉(內循環渲染):

if (conditions) { 
    mesh.setGeometry(sphereGeometry); 
} 

if (condition) { 
    mesh.setGeometry(torusGeometry); 
} 
+1

這不起作用了...看到下面的答案並接受+ upvote – mattdlockyer

4

切換幾何圖形可能會很昂貴。我只是簡單地添加到場景中,並根據您的情況隱藏/顯示。

在three.js所R59,setGeometry和setMaterial
+0

如何隱藏幾何? –

+0

@BartekKosa每個[THREE.Object3D](http://threejs.org/docs/#Reference/Core/Object3D)都有一個'.visible'屬性。您可以實時將其設置爲「false」或「true」。 – xAlien95

11

從Three.Mesh

再次刪除,你可以做些什麼來替代幾何形狀從現場移除你的網格,並創建一個新的與你的新的幾何形狀和你的舊物並將其添加回您的場景。這將工作肯定:)

+2

如何有效地從場景中移除物體? Object3D.remove()對子數組進行線性掃描:https://github.com/mrdoob/three.js/blob/master/src/core/Object3D.js#L332 – nraynaud