Three.js: 应用动画时,Blender 导出的模型会变形

创建于 2014-09-07  ·  3评论  ·  资料来源: mrdoob/three.js

从 Blender 导出器加载模型时,我遇到了一个奇怪的问题。 当我在不应用动画的情况下加载模型时,它看起来像这样——

screen shot 2014-09-07 at 1 26 00 am

但是一旦我应用动画,模型就会变形并看起来像这样——

screen shot 2014-09-07 at 1 24 25 am

手指可怕地伸展着,身体扭动着。 模型仍然执行动画,但变形了。

这是我用来加载和动画模型的代码

    var loader = new THREE.JSONLoader();
    loader.load( "js/models/Golfer_SWING.js", function(geometry, materials){

    for ( var i = 0; i < materials.length; i ++ ) {
        var m = materials[ i ];
        m.skinning = true;
    }

    playerObject = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial( materials ) );
    playerObject.position.set( -50, -250, 0 );
    playerObject.scale.set( 100, 100, 100 );
    playerObject.rotation.y = -180 * Math.PI/180;

    scene.add( playerObject );

    playerObject.castShadow = true;
    playerObject.receiveShadow = true;

    helper = new THREE.SkeletonHelper( playerObject );
    helper.material.linewidth = 3;
    helper.visible = false;
    scene.add( helper );
    swingAnimation = new THREE.Animation( playerObject, geometry.animations[0] );
    swingAnimation.play();

    } );

我已经尝试了一些对混合文件的常见建议配置更改,但它们都不起作用。 这是混合文件的链接。

http://cl.ly/3H3M2T3i1o1p

我正在使用 r68 和最新的搅拌机出口商。

Help (please use the forum)

最有用的评论

我对您的 Blender 文件进行了一些修复,使其适用于 Three.js 导出。

  • 重置网格对象的比例(ctrl-A,在对象模式下)
  • 将动画更改为从第 1 帧而不是第 0 帧开始,并将所有其他关键帧移动一帧。
  • 在第 0 帧(在新动画范围之外)添加了一个静止姿势关键帧
  • 将球杆网格的所有顶点添加到名为“hand.R”的顶点组(与骨骼名称相同)

现在您可以通过选择第 0 帧,然后导出来正确导出模型和动画。

https://dl.dropboxusercontent.com/u/46299249/Golfer_FIXED.blend

所有3条评论

您_必须_在清除所有变换的骨架的情况下导出网格和动画。

我尝试使用您的文件并通过在姿势模式下选择每个骨骼,然后选择姿势-> 清除变换-> 全部,然后执行three.js 导出来获得正确的结果。

这不会影响您的场景或其他关键帧,但您每次导出时都必须这样做。

我对您的 Blender 文件进行了一些修复,使其适用于 Three.js 导出。

  • 重置网格对象的比例(ctrl-A,在对象模式下)
  • 将动画更改为从第 1 帧而不是第 0 帧开始,并将所有其他关键帧移动一帧。
  • 在第 0 帧(在新动画范围之外)添加了一个静止姿势关键帧
  • 将球杆网格的所有顶点添加到名为“hand.R”的顶点组(与骨骼名称相同)

现在您可以通过选择第 0 帧,然后导出来正确导出模型和动画。

https://dl.dropboxusercontent.com/u/46299249/Golfer_FIXED.blend

satori99,非常感谢! 我已经为此纠结了好几天。 非常感谢您提供固定文件。 它现在对我有用:)

此页面是否有帮助?
0 / 5 - 0 等级