animation - 4x4 矩阵 (3D) 动画
问题描述
我目前正在尝试将 3D 对象从一个变换矩阵设置为另一个。我知道“原点”和“目标”变换矩阵 (4x4),并希望在“中间”矩阵之间获取“进度”变量 [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级数的中间矩阵。当然,这里很简单,而且我完全知道如何为它设置动画,但我的算法能够处理更复杂的变换矩阵(包含平移、多轴旋转和缩放)。
我找到了一些文章:
- https://research.cs.wisc.edu/graphics/Courses/838-s2002/Papers/polar-decomp.pdf
- https://link.springer.com/article/10.1007/s11075-016-0098-7
甚至搜索使用这种算法动画css变换属性的chrome和firefox源代码:https ://github.com/chromium/chromium/blob/2ca8c5037021c9d2ecc00b787d58a31ed8fc8bcb/cc/animation/transform_operation.cc
可悲的是,我无法找到明确的解决方案。没有作者提供适当的算法(提供的算法非常抽象,没有指定他们的“子功能/算法”)。只有极少数的论文可用。最后,他们没有提供任何示例(从一个矩阵到另一个矩阵),因此几乎不可能验证他们的方法。
你们中是否有人已经面临这个问题并实施了解决方案?如果有人知道答案,清晰的示例或伪代码将是完美的。
无论如何,提前感谢您的所有帮助。
解决方案
所以,我终于找到了一个解决方案:w3c 提供了一种插入变换矩阵的算法:https ://www.w3.org/TR/css-transforms-2/#matrix-interpolation
它分三个步骤工作:
它可能不是更快,但它可以完成工作。
推荐阅读
- autodesk-forge - 模型伪造查看器中缺少 Autodesk.AEC.ModelData
- javascript - 使用 NodeJS 将 MediaRecorder 块合并到单个视频文件中
- powershell - Powershell MS Teams 'New-Team' 崩溃
- java - 如何在 IntelliJ 中使用库的代码而不是 jar 文件
- sql - 在 MS-ACCESS SQL 中添加要查询的行
- apache - 如何使用htaccess根据不同的条件进行重定向?
- javascript - 如何在 Vue3 组合 API 上使用 Vue2 插件?
- image - 显示来自共享点列表的图像
- maven - Groovy 依赖管理
- java - 如何在 Docker 中使用 OAuth2 运行 Micronaut 应用程序