장면을 보는 방법 중 하나는 gluLookAt를 사용하거나 사용자 정의보기 루틴을 만드는 것입니다. 책의 비행 시뮬레이터에서이 사용자 지정보기 루틴을 보았습니다.OpenGL 사용자 정의 루틴 비행 시뮬레이터
void pilotView(GLdouble planex, GLdouble planey,
GLdouble planez, GLdouble roll,
GLdouble pitch, GLdouble heading)
{
glRotated(roll, 0.0, 0.0, 1.0);
glRotated(pitch, 0.0, 1.0, 0.0);
glRotated(heading, 1.0, 0.0, 0.0);
glTranslated(-planex, -planey, -planez);
}
시계 방향으로 카메라를 x도 회전하면 대상 물체를 반 시계 방향으로 x도 회전시키는 것과 같습니다. 따라서 예를 들어 "롤"각도를 지정하면 "glRotated (roll, 0.0, 0.0, 1.0)"대신 "glRotated (-roll, 0.0, 0.0, 1.0)"을 쓰지 않아야합니까?
정확합니다. 그게 내 질문이다. "카메라"는보기 작업을 시각화하는 방법 일뿐입니다. 비행기에 z 축을 중심으로 각도 "롤"만큼 회전 시키려면 glRotate 호출을 glRotated (-roll, 0.0, 0.0, 1.0)해서는 안된다는 것이 나의 질문입니다. 그것이 glTranslate 호출에 대해 수행 한 작업입니다. 우리는 glTranslated (planex, planey, planez) 대신 glTranslated (-planex, -planey, -planez)를 썼습니다. 왜냐하면 planex, planey 및 planez로 지정된 양만큼 눈 좌표에서 객체를 멀리 이동시키기 때문입니다. – chinu3d
@ user1903168 답변이 업데이트되었지만 더 정확하게하려면 시뮬레이터에서 좌표계가 설정되는 방법에 대한 세부 정보를 제공해야합니다. – Vasaka