2014-02-18 2 views
0

전방으로 카메라를 움직이기를 원합니다. 전 세계를 카메라쪽으로 뒤로 움직이는 것과 같습니다. Glut을 사용하고 glTranslate가 작업을 수행하지만 내 질문은 어떻게 사용해야합니까?고정 된 카메라쪽으로 세계의 움직이는 물체

처음에 glLoadIdentity()로 시작한 다음 gluLookAt를 사용하여 포인트를 설정 한 다음 모델로 변환/회전을 수행했습니다. 이 경우 어떻게 glTranslate를 사용하여 세계의 객체를 번역하여 자신의 원점/좌표 대신 카메라와 관련하여 움직일 수 있습니까?

glGet을 사용하여 현재 행렬을 저장하고 Identity 행렬을로드 한 다음 원하는 변환을 수행 한 다음 glMultmatrix를 사용하여 이전 행렬을 다시 곱할 수 있다고 생각했습니다. 그러나 이것은 나를 위해 작동하지 않았다.

또한 glrotate를 사용하여 요/피치를 활성화하려면 어떻게해야합니까? (또한 회전 카메라로 세계를 회전시키는 의미에서)

불쌍한 표현이나 개념상의 실수가 있으면 죄송합니다. 나는 OpenGL과 그래픽 프로그래밍에 대해 전반적으로 매우 익숙하며 OpenGL 파이프 라인, 특히 매트릭스 부분을 완전히 이해하려고 노력 중이다. 그 자세한 설명은 크게 감사하겠습니다! 무엇을 당신이하려는 것은 고정 점에 대해 세계 (카메라)

당신이 올바른있는 동안을 다른 모든 개체를 변환하여 카메라의 움직임을 시뮬레이션처럼 질문을 읽는에서

답변

0

, 그것은 나에게 소리 카메라를 움직이면 실제로 세상의 다른 모든 것들을 움직이게된다고 말하면서 잘못된 방향으로 가고있는 것처럼 보입니다. 결국, 하나의 상자 만 움직이는 데 얼마나 어려움이 있는지보십시오. 이제 수백 마리가 있다고 상상해보십시오! 별로 재미 :)

다행히도, 당신을 도울 수있는 기능이 있습니다, 당신은 이미 그것을 사용하고 있습니다! gluLookAt (http://www.opengl.org/sdk/docs/man2/xhtml/gluLookAt.xml)가 당신의 녀석입니다. 후드 아래에서 행렬을 만드는 것은 행렬을 생성하는 것입니다. 행렬이 무엇인지 모르시겠습니까?이 값을 읽으십시오 : http://solarianprogrammer.com/2013/05/22/opengl-101-matrices-projection-view-model/) 세계의 모든 다른 점에 의해 곱해진다. 이 곱셈은 카메라를 기준으로 정확한 위치로 각 포인트를 변환합니다. 따라서 카메라를 움직이면 실제로 카메라를 기준으로 전체 세계가 움직이게된다는 점에서 옳습니다. 이렇게하면 수동으로 각 지점의 새 위치를 계산하지 않고도 한 번에 모두 수행 할 수 있습니다.

그래서 z 축에서 카메라를 앞으로 이동 하시겠습니까? gluLookAt를 호출하고 이전에 gluLookAt를 호출했을 때보 다 적은 값의 eyez를 전달하십시오. 예를 들면 다음과 같습니다.

gluLookAt(0,3,0,0,0,0,0,1,0);//This is out starting position, (0,3,0) 
    gluLookAt(0,2,0,0,0,0,0,1,0);//And this is out ending position. Notice that the eyez value has decreased by one 

회전하는 방법은 세 번째 매개 변수 인 "center"매개 변수의 두 번째 그룹을 살펴보십시오. 이들은 카메라의 중심에 어떤 점이 있는지, 즉 카메라가보고있는 점을 결정합니다. 이전 예에서 중심점은 (0,0,0)이었습니다. 이 점들을 움직여서 카메라를 회전시킬 수 있습니다. 어떻게 당신이 수학에 던져의 좋은 비트가 꽤 복잡한 주제 할 수 있지만 다음 링크는 조금 도움이 될 것입니다

http://ogldev.atspace.co.uk/www/tutorial15/tutorial15.html

http://www.fastgraph.com/makegames/3drotation/

http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation

하지 마세요 너무 어려워 보인다면 낙심하고, 계속 지키십시오! 이 답변에 대한 설명이 필요하면 언제든지 저에게 질문하십시오.내 사전에 이상 무엇보다도하지만 덕분에 많은 가서 얼마 동안

+0

이 걸릴 수 있습니다! 나는 아직도 어떤 것이 있으면 다음 질문을 게시 할 것이다 :) – user3321813

관련 문제