使用Three.js(JSON)导出器在Three.js中加载Blender动画

Load a Blender Animation in Three.js using the Three.js (JSON) exporter

本文关键字:Three js 加载 动画 Blender JSON 使用      更新时间:2023-09-26

我正在使用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。

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

感谢

我花了很多小时试图让Blender动画与当前版本的three.js一起工作,我的结论是,这在功能上是不可能的。

不久前,我在这里发布了一个关于这个的问题。最后我不得不回答自己的问题。我介绍了您必须经过的卷积,才能从three.js本身提供的.mblend文件中获得一个示例(最简单的)。

官方示例和文档建议使用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。