使用Three.js ObjectLoader正确渲染动画

时间:2015-09-21 01:12:37

标签: javascript animation three.js blender makehuman

我正在尝试使用MakeHuman中的网格在Three.js中渲染动画。网格正确加载,但在动画运行时变得非常扭曲。如果我添加一个SkeletonHelper,我可以看到骨架正确地完成了动画,但是它的方向与网格不同。

当网格加载时,它是面朝下的,骨架是正面朝上的。如果我在Three.js中旋转网格使其正面向上,那么骨架由于某种原因上下颠倒。我不确定这是否可能导致网格失真。

以下是我正在采取的步骤:

  1. MakeHuman中制作网格。
  2. 导出为Collada * .dae文件。
  3. 导入Blender。
  4. 使用MakeWalk Blender插件重新定位到BVH mocap文件。
    • 如果我此时在Blender播放动画,它看起来很完美。
  5. 由于多个网站说这解决了他们的问题,我清除网格和骨架上的任何位置,旋转或比例。
  6. 使用Blender的Three.js导出器导出整个场景。
  7. 使用ObjectLoader加载场景和嵌入式动画。
  8. 非常感谢任何帮助。感谢。

    更新 - 我能够(简要地)将模型设置为主要按预期进行动画处理(只有一点失真)并且骨架和网格都指向同样的方向,但现在我无法重现我的成功。我相当肯定(在Blender中)清除或应用旋转,位置和比例是产生差异的原因,但是当我尝试再次执行这些步骤时,我再也无法做到这一点。骨架和网格不再同步。 成为问题,对吗?

    我想我需要应用轮换和位置,但清除比例。但是,当我尝试应用该位置时,比例不再显示为“已清除”。我想我不明白Blender是如何工作的。清除或应用Rot,Loc,Scale的正确方法是什么?在重新定位到BVH之前或之后我是否申请/清除?也许两者?我是否需要在每个网格和/或骨骼上执行此操作?

1 个答案:

答案 0 :(得分:0)

所以我想出了如何使它工作,虽然我永远无法弄清楚为什么我以前的方法不起作用。

只要将模型导入Blender(默认情况下选择了所有网格),请清除旋转,位置和比例。 然后,如果模型面向错误的方式,请按' n'要显示转换面板,请在“大纲视图”(Outliner)中选择根网格节点,然后根据需要旋转它。然后,单击ctrl + A以应用旋转。

基本上,不是保持导入过程中设置的旋转,而是清除它并应用自己的旋转。