2017-05-12 23 views
0

私はアニメーション化した3D jsonモデルのコピーを作成しています。シーンに1つのモデルしかない場合は動作します。Threejsメッシュの複製アニメーション

しかし、私はいくつかのコピーを作成しようとしているとき、次のエラー表示されます。

捕捉されない例外TypeErrorを:プロパティ「0」未定義のを読み取ることができません。

for(i =0; i < enemics_generats; i++){ 

    var enemic = dolent.clone(true); //Clone from original model 
    enemic.name = i.toString(); 
    if (i > 5){//set 5 visible, the rest invisble 
     enemic.visible = false; 
    } 
    else{ 
     enemic.visible = true; 
    } 

    enemic.box = new THREE.Box3().setFromObject(enemic);//Box collider 
    enemic.box_helper = new THREE.BoxHelper(enemic); //Box to be displayed on the scene 

    //ERROR IS ON THIS 2 FOLLOWING LANES 

    enemic.mixer = new THREE.AnimationMixer(enemic); 
    enemic.mixer.clipAction(enemic.animations[ 0 ]).play(); //HERE IS WHERE THE ERROR APPEARS 

    enemics.push(enemic);//Add to the array 

    scene.add(enemic);//Add to scene 
    scene.add(enemic.box_helper); 
} 

お時間をありがとう:エラーがに参照しているところ

次関数です。

+0

。 –

+0

JSONローダーは、ファイルからアニメーションを読み取り、アニメーションプロパティに保存します。 –

+0

"dolent"(元の読み込まれたモデル)は、内部にアニメーションを持っています。 –

答えて

0

Object3D.cloneは、アニメーション配列をコピーしません。 THREE.jsオブジェクトに関連するプロパティのみをコピーします。クローンオブジェクト内のアニメーション配列を手動でコピー(または参照)する必要があります。あなたのアニメーションのプロパティまたは関数が定義されている

var obj1 = new THREE.Object3D(); 
 
obj1.someProperty = "test"; 
 
var obj2 = obj1.clone(); 
 
console.log(obj2.someProperty); // undefined
<script src="https://threejs.org/build/three.js"></script>

+0

ご存知のとおり、元のアニメーションを参考にします。 ありがとう –

関連する問題