【问题标题】:Keep object rotation based on parent/other object coordinate system in Three.js?在 Three.js 中基于父/其他对象坐标系保持对象旋转?
【发布时间】:2013-02-17 08:21:38
【问题描述】:

我试图保持子对象的旋转与添加到父对象(即相机)之前的旋转相同。

我正在使用 Three.js 的 worldToLocal 来保持位置,但由于父级的位置和旋转,旋转会发生变化。

之前之后“接机”:

注意立方体如何保持位置(感谢worldToLocal)但旋转发生变化。

编辑:我希望能够将立方体的初始旋转设置为与添加到父级之前相同。之后,我希望孩子能够正常行动并像父母一样旋转/平移。

【问题讨论】:

  • 听起来您想要移动/平移子对象及其父对象,但不旋转它。我想你可以继承 Object3D 并覆盖一些函数,这样它就会忽略旋转,但你也可以使用“分组”但不使用 .add 嵌套的对象数组或仅更新“ child' 手动从它的父级,包括更新循环中的偏移量。 HTH
  • 哦,不,我希望子对象与父对象一起平移和旋转。我只希望初始轮换与之前的轮换相同。就像您要选择一个物体并开始携带它一样。

标签: rotation coordinates three.js transform webgl


【解决方案1】:

要从场景中移除孩子并将其添加到新的父级,同时保持孩子的世界位置和方向,请执行以下操作:

parent.attach( child );

注意:如果parentcamera,你要记得把相机添加到场景中:

scene.add( camera );

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

three.js r.109

【讨论】:

  • 谢谢,效果很好! worldToLocal 代码让我很困惑,我只需要将父级的逆矩阵世界应用于子级。
猜你喜欢
  • 1970-01-01
  • 2021-09-15
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多