gpt4 book ai didi

javascript - ThreeJs 从另一个对象创建对象

转载 作者:行者123 更新时间:2023-12-03 01:50:00 26 4
gpt4 key购买 nike

我有一个通过导入 .obj 创建的对象我想克隆这个对象并给它自己的坐标。更准确地说,我有一面墙,我将另一个对象( window )作为子对象附加到它。当沿着墙壁拖动 window 时,一切正常。现在,当我想要克隆墙并将其旋转 180 度时,沿着其父级拖动子项的方式与鼠标移动的方式完全相反。我想在建筑物的所有侧面重复使用相同的 obj 墙。

最佳答案

您描述了两个问题。

其中之一是如何克隆对象并赋予它不同的位置:

var wallCopy = wall.clone();
scene.add(wallCopy);
wallCopy.position.set( 10,20,30 );

另一个问题是在对象空间而不是世界空间中移动对象。IE。如果更改作为旋转对象的子对象的对象(窗口)的position.x,则该对象将相对于其旋转的父对象移动。

如果您正在构建某种编辑器,则可以使用 SceneUtils 来简化此操作...

https://threejs.org/docs/#examples/utils/SceneUtils

在编辑开始时,您可以使用 SceneUtils.detach 分离窗口并将其附加到场景...然后应用编辑运动,运动完成后,使用 SceneUtils 将其附加回墙壁.附加。

SceneUtils 负责保持场景层次结构中不同位置之间的分离和附加操作之间的视觉变换一致。

编辑:因此,处理您在评论中描述的情况的一种方法是使用更多的中间节点,而不需要做任何繁琐的事情。您始终可以在子节点上设置缩放比例和内容(如果您对性能影响很担心,则可以随时更新它们的矩阵,然后设置它们的matrixAutoUpdate = false。}

这就是我的意思:

{“根”,比例:1,子项:[ anchor 1, anchor 2]}{“anchor1”比例:1,子项:[墙]} {“anchor2”比例:1,子项:[墙2]}

然后你可以操纵 anchor 或根来移动物体,“墙”的缩放将被隔离到它自己的小子树上。

关于javascript - ThreeJs 从另一个对象创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50456636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com