花了很多时间试图让 Blender 动画与当前版本的 three.js 一起工作,我的结论是,如果不是完全不可能的话,它在功能上是可行的。
不久前,我在这里发布了一个关于此的问题。我最终不得不回答我自己的问题。我介绍了你必须经历的卷积,以便从三个.js 本身提供的 .blend 文件中获取示例之一(最简单的)。
官方示例和文档推荐使用 ObjectLoader 从 Blender 加载导出,但这在当前的 three.js 动画系统中根本不起作用。新的动画内容使用蒙皮网格,如果您查看 ObjectLoader 源 (src/loaders/ObjectLoader.js),您会发现它没有任何使用 THREE.SkinnedMesh 的逻辑。新的动画混合器 THREE.AnimationMixer 并未包含在官方的three.js 文档中。
此外,根据您的看法,Blender 导出器要么非常脆弱,要么完全损坏。我在上面链接的问题中对此进行了更详细的介绍,但是例如导出器会更改模型的状态:您必须进入姿势模式,选择所有骨骼,Alt-G 和 Alt-R 将它们重置为休息模式,然后在导出之前选择网格并进入对象模式,导出会将所有骨骼转换回来,所以如果你只是导出然后立即再次导出,例如,你会得到不一致的结果。
从所有这些中,我得出结论,将 Blender 动画导入到 three.js 中是有效的,如果没有完全破坏的话,所以如果你正在处理一个立即实施的项目,你需要将你的管道更改为不使用 Blender,或者将渲染端更改为不使用three.js。