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と最新のblenderエクスポーターを使用しています。

Help (please use the forum)

最も参考になるコメント

私はあなたのblenderファイルにいくつかの修正を加えて、three.jsのエクスポートに適したものにしました。

  • メッシュオブジェクトのスケールをリセットします(ctrl-A、オブジェクトモード)
  • アニメーションをフレーム0ではなくフレーム1から開始するように変更し、他のすべてのキーフレームを1フレームシフトしました。
  • フレーム0にレストポーズキーフレームを追加しました(新しいアニメーション範囲外)
  • クラブメッシュのすべての頂点を「hand.R」という名前の頂点グループに追加しました(ボーン名と同じ)。

これで、フレーム0を選択してからエクスポートすることで、モデルとアニメーションを正しくエクスポートできます。

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

全てのコメント3件

スケルトンからすべての変換をクリアして、メッシュとアニメーションをエクスポートする必要があります。

私はあなたのファイルを試してみましたが、ポーズモードですべてのボーンを選択し、[ポーズ]-> [変換のクリア]-> [すべて]を選択してから、three.jsエクスポートを実行することで適切な結果が得られました。

これはシーンや他のキーフレームには影響しませんが、エクスポートするたびに行う必要があります。

私はあなたのblenderファイルにいくつかの修正を加えて、three.jsのエクスポートに適したものにしました。

  • メッシュオブジェクトのスケールをリセットします(ctrl-A、オブジェクトモード)
  • アニメーションをフレーム0ではなくフレーム1から開始するように変更し、他のすべてのキーフレームを1フレームシフトしました。
  • フレーム0にレストポーズキーフレームを追加しました(新しいアニメーション範囲外)
  • クラブメッシュのすべての頂点を「hand.R」という名前の頂点グループに追加しました(ボーン名と同じ)。

これで、フレーム0を選択してからエクスポートすることで、モデルとアニメーションを正しくエクスポートできます。

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

satori99、どうもありがとうございました! 私はこれと何日も取り組んできました。 そして、固定ファイルを提供してくれてありがとう。 それは今私のために働いています:)

このページは役に立ちましたか?
0 / 5 - 0 評価