javascript - Three.js 将对象添加到组中但保持全局位置/旋转/比例不变

标签 javascript matrix 3d three.js

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

基本上,是这样的:

//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 一起使用,但这似乎也不起作用。

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

谢谢!

最佳答案

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

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

parent.attach( object );

three.js r.109

关于javascript - Three.js 将对象添加到组中但保持全局位置/旋转/比例不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35364409/

相关文章:

c++ - 缓慢移动的 3D 球体到 3D 三角形碰撞

javascript - Actionlink rowindex 存储到 C# get 设置

python - 创建 numpy 转换矩阵数组的正确方法是什么

javascript - 全部折叠并默认打开第一个 Accordion

python - 如何计算大矩阵的行列式而不会溢出?

从省略上三角部分的文件中读取对称矩阵

c# - WinForms 中的 3D?

javascript - WebGL 中的时空立方体

javascript - 多表单验证: where to put $ajax when valid?

javascript - 为移动设备禁用 velocity.js 动画