2016-09-27 7 views
0

나는 three.js를 처음 사용하고 있으며 콜라주 객체를로드하는 데 문제가 있습니다. 나는 브라우저에 렌더링 할 집에 도착할 수 없다.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

렌더링 기능은 한 번만 호출됩니다. 사용해보기 -

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

파일 경로가 올바른지 확인하십시오. 마음에 와서

+0

나는 그것을 시도했지만 여전히 렌더링되지 않습니다. dae 파일은 html 파일과 동일한 디렉토리에 있습니다. – Jon

1

몇 가지 :

  • @Rasheduzzaman 이미 언급 한 바와 같이, 렌더링 기능은 사용자가 render()를 호출 할 때 scene.add(collada); 호출이 일어날 수 없다 (너무 일찍 호출하는 대신 자신의 대답을 사용합니다..
  • collada-loader는 약간 다르게 작동합니다. 설명서는 이에 대해 명확하지 않지만 반환 된 객체는 collada 파일에있을 수있는 모든 항목의 모음입니다. 목록은 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

위의 두 번째 업데이트와 같은 의미입니까? – Jon

+0

브라우저의 개발자 도구 아래에있는 네트워크 탭에서 이미지와 dae 파일을 볼 수 있지만 개체 자체가 브라우저에서 렌더링되지 않습니다. – Jon

+0

좋아요, 카메라를 (0,1,4)에서 (0,0,0)까지 보았습니다.하지만 객체가 그보다 더 큰 크기 일 수도 있습니다. 장면에 'THREE.OrbitControls()'를 추가하고 조금 둘러보십시오. (https://github.com/mrdoob/three.js/blob/master/examples/js/controls/OrbitControls.js), 콜라주 객체를 콘솔에서 액세스 가능하게 만들거나 디버거에서 검사 할 수도 있습니다 ('geometry.boundingBox'와 다른 속성들을 찾으십시오). –