THREE.Scene.Add:用于向场景中添加对象
THREE.Scene.Remove:用于移除场景中的对象
THREE.Scene.childern:用于获取场景中给所有的对象列表
THREE.Scene.getObjectByName:利用name属性,用于获取场景中特定对象

这些方法是和场景相关的重要方法,通常情况下用这些方法就可以满足大部分需求,但是还有几个辅助方法可以被用到

  function render() {

        trackballControls.update(clock.getDelta());
        stats.update();
 
        scene.traverse(function (e) {
            if (e instanceof THREE.Mesh && e != plane) {
                e.rotation.x += controls.rotationSpeed;
                e.rotation.y += controls.rotationSpeed;
                e.rotation.z += controls.rotationSpeed;
            }
        });
 
        requestAnimationFrame(render);
        renderer.render(scene, camera);
    }

这里,我们使用了THREE.Scene.traverse()方法。我们可以将一个方法作为传递参数传递给traverse()这个传递来的方法会在每一个子对象向上执行,如果子对象本身还有子对象traverse()方法会在所有的子对象上执行,知道遍历完场景数中所有的对象为止

我们使用render()方法来更新每个方块的旋转状态,还可以使用for循环来遍历children属性数组来达到同样目的,只因为向THREE.Scene增加对象且没有创建嵌套结构

01.gif

方法(属性)描述
add(object)用于向场景中添加对象,使用该方法还可以创建对象组
children)用于返回一个场景中所有对象的列表,包括摄像机和光源
getObjectByName(name,recursive)在创建对象时可以指定唯一的标识 name,使用该方法可以查找特定名字的对象。当参数 recursive 设置为 false 时,在调用者子元素上查找,当参数 recursive 设置为 true 时,在调用者的所有后代对象上查找
remove(object)object 为场景中对象的引用,使用该方法可以将对象从场景中移除。
traverse(function)children 属性可以返回场景中的所有物体, 该方法也可以遍历调用者和调用者的所有后代,function 参数是一个函数,被调用者和每一个后代对象调用 function 方法。
fog使用该属性可以为场景添加雾化效果,可以产生隐藏远处物体的浓雾效果。
overrideMaterial使用该属性可以强制场景中的所有物体使用相同的材质。(效果不理想)