2013-03-03 270 views
2

我试图保持子对象的旋转与添加到父级(即相机)之前的相同。在Three.js中基于父/其他对象坐标系保持对象旋转?

我使用Three.js'worldToLocal来保持位置,但由于父母的位置和旋转,轮换会发生变化。立方体如何保持位置(感谢worldToLocal),但旋转变化
Screenshot of the cube before pickup.Screenshot of the cube after pickup, position is the same but rotation changed.

注意:

后和之前 “捡”。

编辑:我希望能够设置多维数据集的初始旋转与添加到父级之前相同。之后,我希望孩子正常行动并像父母一样进行旋转/翻译。

+0

这听起来像你想移动/与它的母公司一起翻译子对象,但不能将其旋转。我想你可以继承Object3D的子类并覆盖几个函数,这样就可以忽略旋转,但是你也可以使用'分组'的对象数组来快速地作弊,或者只是更新'孩子'手动从它的父母,包括更新循环中的偏移量。 HTH – 2013-03-03 02:54:59

+0

哦,不,我希望子对象能够与父对象进行平移和旋转。我只是想让初始轮换与之前的一样。就像你要挑选一个对象并开始执行它一样。 – 2013-03-03 03:00:56

回答

5

要从场景中删除一个孩子,并把它添加到一个新的父,同时保持它的全球位置和方向,这样做:

THREE.SceneUtils.attach(child, scene, parent); 

根据我对你想做的事的了解,我相信这是票。

注:如果parentcamera,你要记住将相机添加到场景:

scene.add(camera); 

它目前不是相机的场景的一部分的要求。

three.js所r.56

+0

谢谢,完美的工作! 'worldToLocal'代码让我感到困惑,我只需要在父子上应用父矩阵的逆矩阵。 – 2013-03-03 15:54:53