4x4矩阵(3D)动画

时间:2020-07-16 15:44:26

标签: animation matrix 3d

我目前正在尝试将3D对象从一个变换矩阵动画化为另一个。我知道“原点”和“目标”变换矩阵(4x4),并且想获取之间的“中间”矩阵来制作带有“ progress”变量[0,1]的动画。

例如,我可以去:

1  0  0  0
0  1  0  0
0  0  1  0
0  0  0  1

收件人:

0.70711  -0.70711  0  0
0.70711   0.70711  0  0
      0         0  1  0
      0         0  0  1

这是一个简单的45度旋转,我希望能够找到例如 0.5 级数的中间矩阵。当然,这很简单,而且我完全知道如何对其进行动画处理,但是我认为这种算法能够处理更复杂的变换矩阵(其中包含平移,多轴旋转和缩放)。

我找到了一些文章:

甚至搜索使用这种算法为css转换属性设置动画的chrome和firefox源代码:https://github.com/chromium/chromium/blob/2ca8c5037021c9d2ecc00b787d58a31ed8fc8bcb/cc/animation/transform_operation.cc

遗憾的是,我找不到明确的解决方案。没有作者提供适当的算法(所提供的算法非常抽象,没有指定其“子功能/算法”)。只有很少的论文。最后,他们没有提供任何示例(从一个矩阵到另一个矩阵),因此几乎不可能验证他们的方法。

你们中的任何人是否已经面临过这个问题并实施了解决方案?如果有人知道答案,那么清楚的例子或伪代码将是完美的。

无论如何,在此先感谢您的所有帮助。

1 个答案:

答案 0 :(得分:0)

因此,我终于找到了一个解决方案:w3c提供了一种插值变换矩阵的算法:https://www.w3.org/TR/css-transforms-2/#matrix-interpolation

它分3个步骤工作:

  • decomposition:将矩阵拆分为平移,缩放,倾斜,透视和旋转(四元数)向量
  • interpolation:根据先前的矢量创建内插的新矢量
  • recomposition:根据这些向量组成一个变换矩阵

可能不会更快,但可以完成工作。

相关问题