ThreeJS场景相关方法
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增加对象且没有创建嵌套结构
方法(属性) | 描述 |
---|---|
add(object) | 用于向场景中添加对象,使用该方法还可以创建对象组 |
children) | 用于返回一个场景中所有对象的列表,包括摄像机和光源 |
getObjectByName(name,recursive) | 在创建对象时可以指定唯一的标识 name,使用该方法可以查找特定名字的对象。当参数 recursive 设置为 false 时,在调用者子元素上查找,当参数 recursive 设置为 true 时,在调用者的所有后代对象上查找 |
remove(object) | object 为场景中对象的引用,使用该方法可以将对象从场景中移除。 |
traverse(function) | children 属性可以返回场景中的所有物体, 该方法也可以遍历调用者和调用者的所有后代,function 参数是一个函数,被调用者和每一个后代对象调用 function 方法。 |
fog | 使用该属性可以为场景添加雾化效果,可以产生隐藏远处物体的浓雾效果。 |
overrideMaterial | 使用该属性可以强制场景中的所有物体使用相同的材质。(效果不理想) |
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭