我想使用Three.js将obj文件上传到WebGL场景中。我看到了一些像下面的示例代码,它们运行良好,但我想知道命令是什么意思。
我正在尝试使用Three.js将obj文件上传到WebGL场景中。我看到一些类似下面的示例代码,它们工作得很好,但我想知道命令
的含义是什么。object.traverse();
遍历是什么?如果我们不进行遍历会发生什么?谢谢。
// prepare loader and load the model
var oLoader = new THREE.OBJLoader();
oLoader.load('models/chair.obj', function(object, materials) {
// var material = new THREE.MeshFaceMaterial(materials);
var material2 = new THREE.MeshLambertMaterial({ color: 0xa65e00 });
object.traverse( function(child) {
if (child instanceof THREE.Mesh) {
// apply custom material
child.material = material2;
// enable casting shadows
child.castShadow = true;
child.receiveShadow = true;
}
});
object.position.x = 0;
object.position.y = 0;
object.position.z = 0;
object.scale.set(1, 1, 1);
lesson6.scene.add(object);
});
object.traverse
会在子孙节点上被调用吗?如果不会,那么调用object.traverse
和object.child.forEach
或者for
循环有什么区别呢? - Haltobject.traverse
将会在每个子节点的子节点上被调用。基本上它以深度优先遍历方式遍历任何给定 Three.js 对象的所有后代。 - Hari krishna