2012-11-22 112 views
8

我目前正在three.js骨骼动画测试工作。我有一个简单的模型,在搅拌机中动画很好。基本上它由三个堆叠的弯曲立方体组成。模型与骨骼动画(搅拌机出口)three.js中的动画不正确

当我使用Blender V2.64的搅拌器导出插件将搅拌器文件导出到three.js时,webGl上下文中的动画显得不同,就好像skinweighting是错误的。

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

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

我有什么做的就是正确的结果在three.js所?

回答

10

我是你引用github讨论的人。我最近一直在尝试使用这种管道(即将Blender骨骼动画插入三维),并发现找到一个每次都能正常工作的可靠过程非常困难。

在我的博客,我编的,让我在一些场合获得成功“提示”名单:

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

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

在导出之前删除电枢修饰符,否则动画将全部搞乱。

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

键入动画第一帧和最后一帧的所有骨骼。 (正如你发现的那样,如果你只有骨头的钥匙你改变了,ThreeJS将不会推断任何关于其他的东西,事情将被打破。)

即使遵循这些指导方针,我也无法得到东西一直工作,并一直在考虑使用变形目标,直到图书馆成熟一点点。根据我的经验,变形目标的文件大小要大得多,但在这一点上它们似乎是更可靠的选项。

+1

谢谢!我的骨头从错误的轴心旋转,似乎不服从养育。 **“在导出前删除电枢修饰符”**对我来说是关键。好文章! – jozxyqk

+0

很高兴我能帮忙:) – null

2

很多挖我终于找到了答案在three.js所GitHub的讨论之一后:

“在动画的开头和结尾插入一个关键帧,完全为所有的骨头我发现如果没有第一个关键帧,动画将被巧妙地扭曲,如果没有最终的动画,我会在最后失去部分动画。“

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

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

+0

我真的很想分享有关Blender/ThreeJS管道的信息。如果您想交换指示,或者如果您有任何关于如何使其可靠运行的重大突破,请随时与我们联系。 – null

+0

我刚刚给你发了一封电子邮件以取得联系。我很想交流一些知识。 – Patrick

2

我也发现为了让导出的模型正常工作,导出应该在Blender的第0帧完成。

解决我遇到的问题的另一件事是在导出它之后不按比例缩放模型。这意味着模型不能在JSON文件中缩放,并且可能直接在代码中缩放。

使用three.js r56