我目前正在尝试将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
遗憾的是,我找不到明确的解决方案。没有作者提供适当的算法(所提供的算法非常抽象,没有指定其“子功能/算法”)。只有很少的论文。最后,他们没有提供任何示例(从一个矩阵到另一个矩阵),因此几乎不可能验证他们的方法。
你们中的任何人是否已经面临过这个问题并实施了解决方案?如果有人知道答案,那么清楚的例子或伪代码将是完美的。
无论如何,在此先感谢您的所有帮助。
答案 0 :(得分:0)
因此,我终于找到了一个解决方案:w3c提供了一种插值变换矩阵的算法:https://www.w3.org/TR/css-transforms-2/#matrix-interpolation
它分3个步骤工作:
可能不会更快,但可以完成工作。