2017-12-01 4 views
0

すべてのレンダリング/アニメーション関数呼び出しでインポートされたオブジェクト(.obj)を移動したいとします。 したがって、loader.loadの外にアクセスするためにオブジェクトのコピーを作成しましたが、companion.positionと呼び出すたびにこのエラーが発生します。またThree.js | loader.loadの外でインポートされたオブジェクトプロパティにアクセスできません

enter image description here

companionがグローバル変数である)、Iは、関数をレンダリングでobject.traverseを試して、私は(トラバースがエラー位置に置き換えてしまった)同じエラーを得ました。

助けてください。前もって感謝します。

ここでは、objをロードしてcompanionにコピーしています。

var mtlLoader = new THREE.MTLLoader(); 

mtlLoader.setPath('obj/'); 
mtlLoader.load('satellite.mtl', function(materials) { 

    materials.preload(); 

    var objLoader = new THREE.OBJLoader(); 
    objLoader.setMaterials(materials); 
    objLoader.setPath('obj/'); 
    objLoader.load('satellite.obj', function(object) { 

     object.position.z = 300; 
     object.scale.set(0.25, 0.25, 0.25); 
     object.rotation.y = Math.PI; 

     object.traverse(function(child) { 

      if (child instanceof THREE.Mesh) { 

       child.castShadow = true; 
       if (child.material !== undefined) child.material.side = THREE.DoubleSide; 

      } 
     }); 

     companion = object; 
     scene.add(object); 
    }); 

}); 

答えて

1

次のパターンを使用することができます

parent.position.x = .... 
+0

:ロード・コードでは

var parent = new THREE.Group(); scene.add(parent); 

// companion = object; // scene.add(object) // with parent.add(object); // will add the object to the parent but also to the scene 

を交換、その後、あなたのanimate()機能であなたのような何かを行うことができますあなたのアプローチは助けになりました。しかし、「THREE.Group」の代わりにObject3Dを使用しました。 Yayyありがとう:D –

関連する問題