【问题标题】:3d (THREE.js) : difference matrix3d (THREE.js) : 差异矩阵
【发布时间】:2017-12-24 12:53:59
【问题描述】:

我想保存代表两个 THREE.Object3d 之间相对差异的信息。我更喜欢将数据保存为转换矩阵。

有人知道我需要做什么才能得到这个吗?

我想要一个matrix4,稍后我可以将它应用到一个对象上,它会移动/旋转相同的值。

谢谢

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    所以你有两个转换 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)

    【讨论】:

    • 成功了!现在,当我在第一个对象上应用 T 矩阵时,它看起来像第二个。 @datenwolf
    【解决方案2】:

    你可以为每个对象做一个

    matrix.decompose( position, quaternion, scale )
    

    要取回位置、四元数和比例,然后对于四元数你可以做

    matrix.makeRotationFromQuaternion( quaternion )
    

    然后存储您需要的适当差异。

    【讨论】:

    • 所以第一次我计算两者之间的位置/旋转/比例差异,然后你写的两行代码呢?比我需要将此矩阵应用于另一个矩阵吗? @gaitat
    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 2021-01-19
    • 2013-07-18
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多