Object3D.traverseVisible()
是 three.js 中 Object3D 类的方法。它会递归遍历 Object3D 对象的子对象,并对其中 visible 属性值为 true 的子对象执行指定回调函数。
Object3D.traverseVisible( callback: Function ): void
callback
:(必需)一个回调函数,用于依次处理遍历到的每个 visible 属性值为 true 的 Object3D 对象。mesh.traverseVisible(function(child) {
if(child instanceof THREE.Mesh && child.visible) {
console.log(child.name);
}
});
此代码将遍历 mesh
中所有 visible 属性值为 true 的 Mesh 对象,并输出其名称。
mesh.traverseVisible(function(child) {
if(child instanceof THREE.Mesh && child.visible) {
child.material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
}
});
此代码将遍历 mesh
中所有 visible 属性值为 true 的 Mesh 对象,并将它们的材质属性修改为红色。
Object3D.traverseVisible()
方法是递归调用的,这意味着如果 Object3D 对象有很多子对象,此方法可能会产生较大的性能开销。Object3D.traverseVisible()
方法仅会对 visible 属性值为 true 的子对象执行回调函数。如果要遍历对象的所有子对象,请使用 Object3D.traverse()
方法。