2012-05-27 1 views
3

세개의 webgl 애플리케이션이 있습니다. TrackballControls를 사용하여 카메라를 제어합니다. 장면을 리셋하기 위해 사용하고 싶은 버튼이있어서 카메라는 초기 상태로 가야합니다. 나는 현재이 (JQuery와)이 : 나는 위치와 회전을 로그인 할 때,TrackballControls 사용시 카메라 위치/회전 재설정

$('#reset').click(function() { 
    camera.position.set(0, 0 , 400); 
    camera.rotation.set(0, 0, 0); 
}); 

그러나 이상하게을, 그들이해야 그들이이없는 카메라가 올바른 위치에 있지. 내가 뭘 잘못하고 있는데, 더 좋은 방법이 있을까?

답변

6

버그가 수정 될 때까지 (Yuval Adam의 대답에 대한 의견보기) 작업 (그러나 더러운) 해결책은 장면에서 카메라를 제거한 다음 새 카메라를 만들고 컨트롤을 추가하고 새 카메라를 추가하는 것입니다 카메라를 현장에.

업데이트 : TrackballControls 지금 reset() 방법이있다. 트윈이 완료되고 모든 것이 잘되면 이것을 호출하십시오! (https://github.com/mrdoob/three.js/commit/4f800f61809560c434bbbf12e76c3931e8e8c0fb)

1

camera.position은 항상 최신이어야하며 오른쪽이 camera이고 범위를 벗어나지 않아야합니다. 이상적으로는 윈도우의 전역 변수 여야합니다. 카메라가 가지고있는 경우 camera.rotation에 관한

, 당신은 확인해야합니다 : 전제 조건으로 카메라에이 설정

camera.useQuaternion == true 

일부 컨트롤을. 이 경우 카메라 각도는 camera.rotation이 아니라 camera.quaternion으로 설정됩니다. 물론, TrackballControls에는이 동작이 없습니다 (적어도 r49 이상).


편집 :이 https://github.com/mrdoob/three.js/issues/821에서 보이는 것처럼 수동으로 TrackballControls 엉망 camera 조정 버그가 실제로 존재.

+0

장면에는 카메라가 하나 뿐이며 "카메라"변수를 통해 스크립트 내에 전역 범위가 있으므로 작동해야합니까? 여전히 그렇습니다. – SeeDoubleYou

+0

네가 무슨 뜻인지 알 겠어. 나는 이것을 http://mrdoob.github.com/three.js/examples/misc_camera_trackball.html에서 테스트했으며 분명히 버그가있다. https://github.com/mrdoob/three.js/issues/821을 확인해 보면 다른 가치가있을 것입니다. –

+0

버튼이 실제로 작동하지 않습니다 (w, a, s, d). 뭔가 일이 생기지 만, 실제로 일어나는 일은 뻔뻔 스러우며 명확하지 않습니다. – SeeDoubleYou