0

我正在使用 JavaScript 迈出第一步,也正在使用 Three.js。

我正在学习如何将 Blender 动画导出和加载到 Three.js,并使用 Three.js 网站上的这个示例:http: //threejs.org/examples/#webgl_morphtargets_horse

我制作了一个 Blender 动画(http://s000.tinyupload.com/?file_id=07429365581548704592),当我导出它时,我使用它不运行的相同代码将它加载到 Three.js。

你知道为什么我看不到动画吗?我不知道这是出口商的限制还是我的动画的问题。

谢谢

4

1 回答 1

1

花了很多时间试图让 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。

于 2015-12-03T23:22:45.780 回答