我尝试使用Three.js Object3D
填充对象 - 文字,然后用网格填充Object3D
s。但是我从代码中得到了一些奇怪的结果。我已经将问题提炼到仍然复制问题的最基本代码行。在下面的场景中,thing1和thing2没有接收到网格,而thing3接收所有三个网格:
var objSet = {
thing1: new THREE.Object3D(),
thing2: new THREE.Object3D(),
thing3: new THREE.Object3D()
};
for (key in objSet) {
objSet[key].add(aMesh);
objSet[key].add(anotherMesh);
objSet[key].add(yetAnotherMesh);
};
我最终的目标是动态创建一个填充了Object3D
的对象文字,然后可靠地循环并为每个网格添加网格。这里的问题在哪里?谢谢参观!
答案 0 :(得分:0)
在评论中的上述人员的指导下,我发现我的代码中出现奇怪行为的原因(console.logs表明对象文字中的每个Object3D
都在填充网格期间运行,但最后只有最后一个Object3D
是空的)是网格只能使用一次,我需要将它们复制到Object3Ds
,否则他们只是从一个跳到接下来我分配给他们。喂!
修复快速而简单 - 只需将.clone()
添加到.add()
函数中的网格变量的末尾:
var objSet = {
thing1: new THREE.Object3D(),
thing2: new THREE.Object3D(),
thing3: new THREE.Object3D()
};
for (key in objSet) {
objSet[key].add(aMesh.clone());
objSet[key].add(anotherMesh.clone());
objSet[key].add(yetAnotherMesh.clone());
};
全部谢谢!