删除场景中的OLD对象并使场景可用于添加新对象
我开发了一个应用程序,它将3D自定义对象添加到网格中,然后将网格添加到场景中。我的页面上也有一个Button,当我点击它时,已经创建的对象应该从网格中移除,网格是场景的子节点,场景应该准备好像第一次那样添加新对象。我的意思是,如果可能的话,可以移除整个网格,并且新的网格物体应该添加到场景中。
function xyz() // Button click function
{
// should remove the objects in the scene if exists and make scene available to add
// new objects
for ex: scene.remove(mesh)....???
// Also needed to clear the renderer??
.
.
.
do something
}
function init()
{
// adds the objects to the scene and instantiate renderer
mesh = New THREE.Mesh({// some material});
cube = new THREE.CubeGeometry(1,1,1);
object = new THREE.Mesh(cube,material);
mesh.add(object);
scene.add(mesh);
}
function animate()
{
requestAnimationFrame(animate);
render();
}
function render()
{
renderer.render(scene, camera);
}
答案 0 :(得分:4)
我根据您提供的代码片段对您的代码做了很多假设,所以也许可以尝试:
function xyz() {
var l = scene.children.length
;
//remove everything
while (l--) {
if(scene.children[l] instanceof THREE.Camera) continue; //leave camera in the scene
scene.remove(scene.children[l]);
}
//reinitialise your stuff
init();
}