【发布时间】:2017-12-24 12:53:59
【问题描述】:
我想保存代表两个 THREE.Object3d 之间相对差异的信息。我更喜欢将数据保存为转换矩阵。
有人知道我需要做什么才能得到这个吗?
我想要一个matrix4,稍后我可以将它应用到一个对象上,它会移动/旋转相同的值。
谢谢
【问题讨论】:
标签: javascript three.js
我想保存代表两个 THREE.Object3d 之间相对差异的信息。我更喜欢将数据保存为转换矩阵。
有人知道我需要做什么才能得到这个吗?
我想要一个matrix4,稍后我可以将它应用到一个对象上,它会移动/旋转相同的值。
谢谢
【问题讨论】:
标签: javascript three.js
所以你有两个转换 A 和 B,你正在寻找将 A 转换为 B 的转换 T,对吗?正式写成
B = T·A
现在您可以认为从 A 到 B,即从 A 回到身份 (I),然后从身份回到 B,即
从 A 回到 I:
I = inv(A)·A
从 I 到 B
B = B·I
把它串起来
B = B·inv(A)·A
添加几个括号以突出显示内容:
B = ( B · inv(A) ) · A
将其与我们看到的第一个等式进行比较
T = B·inv(A)
【讨论】:
你可以为每个对象做一个
matrix.decompose( position, quaternion, scale )
要取回位置、四元数和比例,然后对于四元数你可以做
matrix.makeRotationFromQuaternion( quaternion )
然后存储您需要的适当差异。
【讨论】: