我正在尝试使用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);
});
答案 0 :(得分:15)
它基本上是通过加载对象的迭代器。您可以将该函数传递给traverse()函数,该函数将为要遍历的对象的每个子项调用。如果你在场景上调用traverse()。你遍历完整的场景图。