【问题标题】:three.js: Transformation between two matricesthree.js:两个矩阵之间的转换
【发布时间】:2018-05-02 22:41:08
【问题描述】:

我想在每帧更新的函数中逐渐将矩阵4应用于对象。

如果我有两个矩阵,那么知道它们之间区别的方法是什么。假设我想知道代表第一个 + 0.2 两者之差的矩阵。

【问题讨论】:

  • 不能在矩阵之间直接插值。 This question 可能会给你更多的见解。
  • 如果是只有旋转数据的矩阵呢?
  • 没有。尤其是旋转是不可能的。您通常想要的是旋转角度的线性插值,但矩阵确实只包含角度的 sin 和 cos。你会插入那些看起来很奇怪的结果。分解矩阵,插入角度,然后组成一个新的矩阵。

标签: matrix three.js


【解决方案1】:

您应该研究THREE.Quaternion.slerp 和THREE.Vector3.lerp 方法。

Slerp 代表“球面线性插值”,而 lerp 代表“线性插值”。

然后必须由三个基于这两个构造一个矩阵,但是如果您设置 myObject3D.position 和 myObject3D.quaternion,则三个在内部处理这个问题。

如果你的起点是一个matrix4,你可以decompose把它变成四元数和向量,然后compose一个从新的结果。如果您只想要矩阵中的最终结果,您可以使用makeRotationFromQuaternion( quaternion ),后跟setPosition( position )。

【讨论】:

  • 应该补充一点,您可以使用matrix.decompose(position, quaternion, scale) 从矩阵中获取这些值,并使用matrix.compose(position, quaternion, scale) 将值返回到矩阵形式。
猜你喜欢
  • 2018-08-31
  • 1970-01-01
  • 2014-10-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多