用 Object3D 填充的对象文字 - 循环以填充网格



我正在尝试用 Three.js Object3D s 填充对象文字,然后用网格填充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的对象文字,然后可靠地循环并为每个对象添加网格。问题出在哪里?感谢您的观看!

按照上面评论中人员的指导,我发现我的代码中奇怪行为的原因是(console.logs 指示对象文字中的每个Object3D在运行过程中都被网格填充,但最后除了最后一个Object3D都是空的(是网格只能使用一次,我需要将它们复制到Object3Ds中, 否则,他们只是在我分配他们时从一个跳到另一个。哎呀!

修复快速简便 - 只需在 .add() 函数中将 .clone() 添加到 mesh 变量的末尾:

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());
};

谢谢大家!

相关内容

  • 没有找到相关文章

最新更新