2012-07-25 5 views
1

카메라를 장면의 X 축을 중심으로 회전하려고합니다. 이 시점에서
내 코드는 다음과 같다 :X 축을 중심으로 카메라 회전 (3 개 .js)

rotation += 0.05; 
camera.position.y = Math.sin(rotation) * 500; 
camera.position.z = Math.cos(rotation) * 500; 

이 카메라가 뒤집, 또는 그것은 다음과 같은 것 가상 원의 일부를 건너 뛰고 중 발생하는 주변하지만 이상한 회전 뭔가 동안 카메라 이동을합니다.

답변

5

코드 스 니펫 만 제공 했으므로 내가하는 일에 대해 몇 가지 가정을해야합니다.

이 코드 :

rotation += 0.05; 
camera.position.x = 0; 
camera.position.y = Math.sin(rotation) * 500; 
camera.position.z = Math.cos(rotation) * 500; 
camera.lookAt(scene.position); // the origin 

이 카메라는 "최대 오른쪽"을 유지하려고하기 때문에 참조 "뒤집기"의 원인이되며, 그것은 "북극 통과로 빠르게 방향을 변경합니다 . " 카메라의 오프셋 경우

,과 같이 X를 좌표

camera.position.x = 200; 

카메라 동작은 더 자연스러운 것입니다.

+0

nop, 불행히도 작동하지 않습니다.하지만 카메라의 "위쪽"벡터에 맞다고 생각합니다. 장면 주위를 회전해야하기 때문에 위로 벡터가 + y에서 -y 축으로 바뀌어야하고, 어떻게해야하는지 잘 모릅니다. – Dimitris

3

Three.js는 카메라를 위로 향하게하려고합니다. z 축을 따라 0을 전달하면 카메라의 회전을 "고정"합니다. 카메라의 각도를 수동으로 확인하고 재설정 할 수 있습니다.

camera.lookAt(scene.position); // the origin 
if (camera.position.z < 0) { 
    camera.rotation.z = 0; 
} 

나는이 최선의 해결책이 아니라 확신하지만, (난 그냥 그랬던 것처럼) three.js를 재생하는 동안 다른 사람이 질문을 통해 실행하는 경우, 그것은 한 단계를 줄 것이다.

관련 문제