2016-09-27 11 views
0

私はthree.jsを初めて使い、colladaオブジェクトを読み込む際に問題があります。私はhome.daeにブラウザでレンダリングすることはできません。colladaオブジェクトをthree.jsにロードするにはどうすればよいですか?

回答に基づいてSECOND UPDATEのコードを更新しました。

 // INITIAL 

     var scene = new THREE.Scene(); 
     var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); 

     var renderer = new THREE.WebGLRenderer(); 
     renderer.setSize(window.innerWidth, window.innerHeight); 
     document.body.appendChild(renderer.domElement); 

     var loader = new THREE.ColladaLoader(); 
     loader.load('home.dae', function(collada){ 
      scene.add(collada); 
     }); 

     function render() { 
      renderer.render(scene, camera); 
     } 

     render(); 


     // SECOND UPDATE 

     var scene = new THREE.Scene(); 
     var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); 
     camera.position.set(0,1,4); 
     camera.lookAt(scene.position); 

     var renderer = new THREE.WebGLRenderer(); 
     renderer.setSize(window.innerWidth, window.innerHeight); 
     document.body.appendChild(renderer.domElement); 

     var loader = new THREE.ColladaLoader(); 

     loader.load('home.dae', function(collada){ 
      scene.add(collada.scene); 
     }); 

     function render() { 
      requestAnimationFrame(render); 
      renderer.render(scene, camera); 
     } 

     render(); 

答えて

1

レンダー機能は1回だけ呼び出されます。試してみてください -

function render() { 
    requestAnimationFrame(render); 
    renderer.render(scene, camera); 
} 

ファイルパスが有効かどうかを確認してください。

+0

私はそれを試みましたが、まだレンダリングされていません。 daeファイルは、htmlファイルと同じディレクトリにあります。 – Jon

1
頭に浮かぶ

いくつかのこと:

  • @Rasheduzzamanは、すでに述べたように、レンダリング機能を使用すると、render()を呼び出すときに、scene.add(collada);コールが起こっていることができない代わりに、彼の回答を使用してください(早すぎると呼ばれています。
  • collada-loaderは少し違って動作します。ドキュメントはこれについては明確ではありませんが、返されるオブジェクトはcollada-fileにあった可能性のあるすべてのものです。https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/ColladaLoader.js#L181-L204 (また:browser-devtoolsのデバッガを使ってそこにあるデータを調べてください)scene.add(collada.scene)やsim ilar。
  • あなたはカメラの位置を設定していないので、それは(0,0,0)にあります。これは良い考えではないかもしれませんが、camera.position.set(0,1,4)などを試してみてください。
  • あなたは何を期待するかを知る必要があります:あなたがロードしているモデルのサイズは?それはどこに置かれますか?カメラを指すようにしてください(camera.lookAt(object.position)を使用できます)。それに応じてnearPlaneとfarPlaneを調整してください。
+0

上記の2番目のアップデートのような意味ですか? – Jon

+0

画像とdaeファイルは、ブラウザの開発者ツールの[ネットワーク]タブに表示されますが、オブジェクト自体はブラウザに表示されません。 – Jon

+0

okだから、カメラは(0,1,4)から(0,0,0)まで見えますが、オブジェクトはそれよりもちょうどちょうど大きかったり、別の場所にあるかもしれません。あなたのシーンに 'THREE.OrbitControls()'を追加して、ちょっと移動してみてください。 (https://github.com/mrdoob/three.js/blob/master/examples/js/controls/OrbitControls.js)、そのコラージュオブジェクトをコンソールからアクセス可能にするか、デバッガで検査することもできます( 'geometry.boundingBox'と他のプロパティを探します)。 –

関連する問題