我正在尝试使用 MakeHuman 的网格在 Three.js 中渲染动画。网格正确加载,但在动画运行时会变得非常扭曲。如果我添加一个 SkeletonHelper,我可以看到骨架正确地执行动画,但是它的方向与网格不同。
当网格加载时,它是面朝下的,而骨架是正面朝上的。如果我在 Three.js 中旋转网格使其正面朝上,那么骨架由于某种原因会上下颠倒。我不确定这是否会导致网格失真。
这是我正在采取的步骤:
- 在MakeHuman中制作网格。
- 导出为 Collada *.dae 文件。
- 导入搅拌机。
- 使用 MakeWalk Blender 插件重新定位到 BVH 动作捕捉文件。
- 如果我此时在 Blender 中播放动画,它看起来很完美。
- 因为多个站点都说这解决了他们的问题,所以我清除了网格和骨架上的任何位置、旋转或比例。
- 使用 Blender 的 Three.js 导出器导出整个场景。
- 使用 ObjectLoader 加载场景和嵌入的动画。
任何帮助将非常感激。谢谢。
更新- 我能够(简要地)让模型按预期进行大部分动画(只有一点失真),并且骨架和网格都指向同一个方向,但现在我无法重现我的成功。我相当确定(在 Blender 中)清除或应用旋转、位置和比例是造成差异的原因,但是当我尝试再次执行这些步骤时,我无法让它再这样做了。骨架和网格不再同步。那一定是问题所在,对吧?
我想我需要应用旋转和位置,但清除比例。但是,当我尝试应用该位置时,比例不再显示为“已清除”。我想我不明白 Blender 是如何工作的。清除或应用 Rot、Loc、Scale 的正确方法是什么?我是在重定向到 BVH 之前还是之后申请/清除?也许两者兼而有之?我需要在每个网格和/或骨骼上这样做吗?