【问题标题】:Three.js add an object to a group but keep global position/rotation/scale as it wasThree.js 将对象添加到组中,但保持全局位置/旋转/比例不变
【发布时间】:2016-05-23 17:01:34
【问题描述】:

我想将一个对象从一个组(或世界/场景)移动到另一个组,但保持它的全局转换不变。基本上,我不想看到对象发生变化。

基本上是这样的:

//store current world transformation
var origWorldMatrix = myObject.matrixWorld.clone();

//move object to a group (that is positioned and rotated arbitrarily)
someGroup.add( myObject );

//restore previous world transformation
myObject.matrixWorld.copy( origWorldMatrix );

但是,这似乎不起作用。我猜是因为世界矩阵总是根据本地位置/旋转/缩放属性在下一帧更新。 我尝试将它与 matrixAutoUpdate = false 一起使用,但这似乎也不起作用。

我试图完成的结果似乎应该很容易做到,所以我希望我遗漏了一些明显的东西。谁能告诉我如何做到这一点?

谢谢!

【问题讨论】:

  • 查看stackoverflow.com/questions/24441223/… 研究attach()detach() 的源代码,以便了解它们在做什么。
  • 非常感谢,正是我想要的。你会认为在我所有的搜索中,我都会偶然发现这个答案:)

标签: javascript matrix 3d three.js


【解决方案1】:

编辑:您可以使用内置方法Object3D.attach()

// add object as a child of parent, while maintaining the object's world transform

parent.attach( object );

three.js r.109

【讨论】:

  • WL 你是三天使 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多