9

我目前正在三个.js 中进行骨骼动画测试。我有一个简单的模型,可以在搅拌机中很好地制作动画。基本上它由三个堆叠的弯曲立方体组成。

当我使用 Blender V2.64 的 Blender 导出插件将 Blender 文件导出到 Three.js 时,webGl 上下文中的动画看起来不同,就好像皮肤权重错误一样。

WebGL 演示: http ://rainbowrangers.de/threejs/animation_test01/

搅拌机文件: http ://rainbowrangers.de/threejs/animation_test01/model/animation_test01.blend

我该怎么做才能在 three.js 中得到正确的结果?

4

3 回答 3

10

我是你在 github 讨论中引用的那个人。我最近一直在试验这个管道,(即 Blender 骨骼动画到threejs,)并且发现找到一个每次都能工作的可靠过程非常困难。

在我的博客上,我整理了一份“秘诀”列表,这些秘诀让我在某些情况下取得了成功:

http://dev.mothteeth.com/2012/10/threejs-blender-exporting-skeletal-animations/

总而言之,我发现的最重要的事情是:

导出前删除Armature Modifier,否则动画会一团糟。

检查您的顶点组是否正确分配给骨骼。(在 Blender 中,您可以使用自动骨骼权重。)

在动画的第一帧和最后一帧中键入所有骨骼。(正如您所发现的,如果您只有已更改骨骼的键,ThreeJS 不会推断出其他骨骼的任何内容,并且事情会被破坏。)

即使遵循这些指导方针,我也无法让事情始终如一地工作,并且一直在考虑使用变形目标,直到库更加成熟为止。变形目标的文件大小要大得多,但根据我的经验,目前它们似乎是一个更可靠的选择。

于 2012-11-25T06:58:23.347 回答
3

经过大量挖掘,我终于在三个.js github讨论之一中找到了答案:

“在动画的开头和结尾为所有骨骼插入一个完整的关键帧。我发现如果没有第一个关键帧,动画会轻微变形,如果没有最后的关键帧,我会在接近结尾时丢失部分动画。”

来源:https ://github.com/mrdoob/three.js/issues/2106

这正是我们的渲染发生的事情。我们只为正在变化的骨骼设置关键帧,而不为静态骨骼设置关键帧。

于 2012-11-24T14:25:17.080 回答
2

I've also found that to get the exported model working right the export should be done at frame 0 in Blender.

Another thing that solved a problem I've encountered was not to scale model after exporting it. This means that the model can't be scaled in the JSON file and probably in the code directly.

Using three.js r56

于 2013-02-26T20:32:30.507 回答