如何使用Three.js基于按钮单击替换场景中的对象?

时间:2013-02-07 23:36:11

标签: three.js

删除场景中的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);
 }

1 个答案:

答案 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();

}