2017-05-11 12 views
1

fov을 내 perspective camera에 THREE.JS로 수동으로 설정했습니다. 그것은 예상대로 작동합니다. 그러나 나중에 scene과 상호 작용하려고 시도하면 TrackBall Controls을 통해 검은 색 화면 만 표시되고 오류는 표시되지 않습니다.트랙볼 컨트롤 (THREEJS)로 수동으로 카메라 위치 및 fov 설정

JS Fiddle

관련 코드 :

var bbox = new THREE.Box3().setFromObject(scene); 
var center = bbox.getCenter(); 
var size = bbox.getSize(); 

// update some controls properties 
controls.target.set(center.x, center.y, center.z); 

// position the camera on the y axis 
camera.position.set(center.x, center.y - size.y, center.z); 

// fit FOV 
var dist = size.y/2; 
var fov = 2 * Math.atan(size.z/(2 * dist)) * (180/Math.PI); 

camera.fov = fov; 

camera.updateProjectionMatrix(); 

어떤 단계 나는 다음 scene

감사

==== 편집을 적절하게 상호 작용할 수 있도록하기 위해 실종

워 궁극적 인 대답을 기반으로 킹 바이올린 : Fiddle

답변

2

카메라의 "위"위치가 카메라 위치 및 대상에 의해 정의 된 벡터와 평행 한 경우 올바르게 투영 할 수 없다고 생각합니다. 카메라 위쪽 위치는 카메라 위치에서 대상까지의 벡터와 직각을 이루는 평면에서 뷰의 방향을 지정하는 방법을 지정해야하지만 해당 평면의 camera.up 구성 요소가 0이면 작동하지 않습니다. 당신의 코드에서 :

  • 카메라 "가"위치는 (0,1,0)는 카메라 대상에 카메라 위치에서 벡터 (0, size.y, 0)
  • 입니다 기본이다

    간단한 수정 즉, "최대"다른 카메라를 지정 아마

    camera.up = new THREE.Vector3(0,0,1.); 
    

    또는 다른 벡터는 y 방향에 평행하지.

  • +0

    고마워요! 답변에 질문에 새 파일 추가 - – Nicolas