我想访问场景中的所有元素。这些元素是类型的对象:THREE.Object3D,THREE.Mesh,依此类推。有些元素有一个名为 children 的字段,这是一个其他元素的数组。所以我们可以得出结论,场景(也有子字段)是一棵树。
有了这些知识,我想对场景对象中存在的每个元素执行深度优先搜索访问,为其设置一些属性。这是我的代码:
function setShadowRenderer( element ) {
element.receiveShadow = true;
element.castShadow = true;
if ( element.children !== undefined ||
element.children !== [] )
for ( i = 0; i < element.children.length; i++ )
setShadowRenderer( element.children[ i ] );
console.log( C++ );
}
现在,这段代码导致了无限的计算,它永远不会结束。这怎么可能?
答案 0 :(得分:0)
我认为这将完成你想要的工作:
if (object instanceof THREE.Object3D)
{
object.traverse (function (mesh)
{
if (! (mesh instanceof THREE.Mesh)) return;
mesh.castShadow = true;
mesh.receiveShadow = true;
});
}