카메라로 위치 벡터와 오일러 각 피치와 요 (x와 y 회전)로 구성된 FPS 스타일 카메라를 구현했습니다. 투영 행렬을 설정 한 후, 그때 카메라 위치의 역으로 변환 한 후, 회전하여 카메라의 좌표로 변환 :위치와 오일러 각에서 lookat 벡터를 계산합니다.
// Load projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Set perspective
gluPerspective(m_fFOV, m_fWidth/m_fHeight, m_fNear, m_fFar);
// Load modelview matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Position camera
glRotatef(m_fRotateX, 1.0, 0.0, 0.0);
glRotatef(m_fRotateY, 0.0, 1.0, 0.0);
glTranslatef(-m_vPosition.x, -m_vPosition.y, -m_vPosition.z);
는 지금은 자신의 카메라 설정 몇 뷰포트, 각있어 , 모든 카메라에서 다른 카메라의 위치를 렌더링합니다 (단순한 상자로). 위치와 오일러 각에서 룩업 벡터를 계산하는 방법에 대한 단서가 없다는 점을 제외하고는이 카메라에 대한 뷰 벡터도 그려야합니다. 원래 카메라 벡터 (0, 0, -1)에 카메라 회전을 나타내는 행렬을 곱하려고 시도했습니다 ( ). 변형 된 벡터에 카메라 위치를 추가했으나 전혀 작동하지 않습니다. 'm way off base) :
vector v1(0, 0, -1);
matrix m1 = matrix::IDENTITY;
m1.rotate(m_fRotateX, 0, 0);
m1.rotate(0, m_fRotateY, 0);
vector v2 = v1 * m1;
v2 = v2 + m_vPosition; // add camera position vector
glBegin(GL_LINES);
glVertex3fv(m_vPosition);
glVertex3fv(v2);
glEnd();
카메라에서부터 방향을 향해 선분을 그리는 것이 좋습니다. 예를 들어 보았지만 아무 것도 찾을 수없는 것 같습니다.
고맙습니다.
궁금한 점이 있나요? 짐발 자물쇠를 다룰 준비가 되셨습니까? – FrustratedWithFormsDesigner
아니, 나는 거기에 있다는 것을 안다. 숨어있다.) 나는 쿼터니언을 나중에 시험해 보겠다. 그러나 나는 이것을 먼저 알아 내고 싶다. – Jaap
카메라를 회전 할 때 실제로 전 세계를 반대 방향으로 회전합니다. 따라서 카메라로 이동하는 대신 벡터에 같은 변형을 적용하면 반대 방향으로 더 많이 회전시킵니다. 행렬의 역행렬을 사용하여보기를 회전시킵니다. – Ivan