2011-01-07 4 views
1

3D 공간에서 카메라를 번역하고 회전하는 데 약간의 문제가 있습니다. Direct3D9에서 카메라는 위치, 보면서 위로 (3d 벡터로) 정의됩니다. 그래서 나는 카메라의 회전과 위치를 저장했고, 새로운 프레임을 위해 카메라를 정의 할 때, 나는 회전에 의해 벡터와 회전 축을 회전시키고 위치를 설정했다. 카메라를 번역 할 때, 나는 번역본을 가져 와서 회전 시켰고, 카메라의 위치와 그것을 바라 보는 벡터를 번역했습니다. 그러나 얼마 후, 바라보기 벡터와 새 번역이 정렬되지 않습니다. 즉, 번역 벡터가 앞으로를 정의하는 원래의 보 기 벡터의 직선 배수 일 때 카메라는 더 이상 앞으로 이동하지 않습니다. 나는 왜 이것이 발생하는지 - 어떤 제안을 이해할 수 없는가?3D 공간에서 카메라 회전 및 변환

답변

1

Gimbal Lock이 발생 했습니까? 이것은 저에게 전에 일어나고 그래서 나는 벡터를 버리고 Quaternions로 움직였다.

+0

나는 그렇게 생각하지 않는다. 뷰 매트릭스를 생성하는 D3DX 함수는 D3DXVECTOR3s만을 사용한다. 나는 쿼터니언들과 일할 수 없다. – Puppy

+0

@DeadMG의 경우 D3DXVECTOR3에 D3DXQUATORNION을 곱할 수 있습니다 (문제가있는 경우). 그것은 확실히 비슷하게 들린다. –

+0

@ Moo-Juice : 왜 LookAt 벡터가 번역 벡터와 같은 짐벌 잠금을 가지고 있지 않습니까? 또한 D3DXVATORNION에 의해 ​​D3DXVECTOR3을 곱하는 함수를 찾지 못했으며 연산자 오버로드도 확인했습니다. – Puppy