8

私は THREE.JS を使用して 3D プロジェクトに取り組んでおり、単純なマインクラフトのようなキャラクターをアニメーション化したいと考えています。

そのために、Blender から 1 つ (ボーン付き) をエクスポートし、SkinnedMesh クラスを使用して THREE.JS でレンダリングしました。

メッシュの腕が動くようにあらゆることを試みましたが、その方法がわかりません。回転、位置、マトリックスを変更し、すべてのフラグを true に設定しようとしました (matrixWorldNeedsUpdate のように腕は動きませんでした)。

サンプルコードは次のとおりです。

var meshBody = new THREE.SkinnedMesh( geometry, materialTexture );

...

animate = function(){
    meshBody.bones[3].rotation.z += 0.1     
    meshBody.bones[3].matrixAutoUpdate = true;
    meshBody.bones[3].matrixWorldNeedsUpdate = true;
}
4

2 に答える 2

5

メッシュの構築中は、マテリアルのスキニング プロパティが に設定されていることを確認してくださいtrue

mesh = new THREE.SkinnedMesh (geometry, 
          new THREE.MeshBasicMaterial ({color: 0xaaaa00, skinning: true})
     );
于 2013-06-08T22:11:41.950 に答える
0

デフォルトではクォータニオン回転を使用します。meshBody.bones[i].useQuaternion = false;回転のパラメーターを設定してから変更するか、代わりにクォータニオンを使用してみてください。

于 2013-06-14T16:48:53.247 に答える