구면의 한 점에 중심을 둔 3D 카메라가 있습니다. 그것은 구의 기둥을 제외하고는 그 주위를 완벽하게 따라 다니고 회전합니다. 구체는 실제로 위치 좌표를 쉽게 관리 할 수 있도록 구형으로 투영 된 입방체입니다.구형 극을 감싸고있는 카메라
물체가 구 주위로 수평으로 움직이면 카메라는 의도 한대로 작동합니다. 그러나 물체가 구체의 상단 또는 하단 극을 향해 이동하면 카메라가 극을 감 쌉니다. 직선이 극을 통과하면 180도 회전하는 것처럼 보입니다.
저는 왜 이런 일이 벌어 지는지 이해합니다. 카메라가 자신을 방향을 잡는 방법을 알기 위해서는 전역적인 업 벡터가 있어야합니다. 오른쪽 방향과 같이 다른 방향으로 벡터를 변경하면 카메라가 더 이상 상단 또는 하단 극 주위를 뒤집지 않고 대신 구의 왼쪽 및 오른쪽 극점에서 동일한 동작을 보입니다.
내 질문은 내 카메라의 동작을 변경하여 이것이 발생하지 않도록하는 것입니다. 카메라가 일정한 위치에있는 것처럼 느끼고, 구를보고, 구가 X 축과 Z 축으로 회전하는 것처럼 카메라가 느끼고 싶습니다.
"잘못된"방향이 발생할 수 있음을 알았습니다. 예를 들어, 사용자가 구면에서 시작하여 위로 올라간 다음 왼쪽으로 가면 구의 왼쪽에서 끝납니다. 카메라는 Z 축에서 90도 회전하고, 정면에서 시작하여 직접 왼쪽면으로 이동하면 회전이 없습니다. 카메라가 얼굴을 가로 질러 카메라의 로컬 회전을 천천히 "고정"하거나 사용자가 카메라를 잠금 해제 할 수 있고 카메라 각도를 직접 처리 할 수 있기 때문에 괜찮습니다. 참고로
, 내 카메라는 현재이 문제의 솔루션을 사용하여 계산하고 있습니다 : Camera rotation aligned to arbitrary plane
모든 통찰력을 주시면 감사하겠습니다!
SketchUp의 회전 모델을 살펴보십시오. 그들은 극을 넘어갈 때 위쪽 방향을 바꿉니다. –
어떻게 구체 주변을 회전시키고 있습니까? 행렬 또는 쿼터니언? – Kobunite