관리 메뉴

Enjoy what you do!

opengl 좌표계변환, 물체변환 순서 본문

컴공 여러가지/OpenGL

opengl 좌표계변환, 물체변환 순서

쵸코맛 비비빅 2018. 4. 24. 15:02

오픈지엘에서는 변환 순서가 거꾸로 적용된다

오픈지엘에서 변환은 곧 세계좌표계와 모델 좌표계의 분리이다.


변환 시에 CTM 에 변환행렬들을 곱해서 메트릭스를 만들고( 이게 좌표계변환 )
CTM에 모델메트릭스를 곱해서 물체변환 해준다.

자, 설명들어간다 입벌려라

CTM = I 에서
translate 하고 rotate 한다고 치면

CTM = I*T*R 이 된다.
즉 좌표계변환은 T하고 R한다.
좌표계변환은 함수호출 순서대로 적용된다.


점 p 를 p’로 옮겼을때

P’ = T*R*P 가 된다  ( P’ = CTM*P 이므로 ) 

( 이게 물체 변환이다.

CTM 만든게 좌표계변환.

CTM에 현재 행렬을 곱해서 물체 변환해주면 이게 모델 변환. )


그러니까 p가 있는 오른쪽 부터 행렬을 계산(곱)하니
Rotate부터 되고 Translate 되는거다

나는 옮기고 회전을 하였지만 실제로는 회전되고 옮겨진다.

소스코드 상에서

gltranslatef();
glrotatef();

라고 작성했다면 (이런 순서로 함수호출 했다면)

위에서 부터 순차 실행이니 옮겨지고 회전하겠지라고 생각 할수 있는데

실제론 거꾸로 변환이 된다. 회전하고 옮겨지는거다


정리하면 좌표계 변환은 함수 호출 순으로 되고 (그러니까 코딩 순서대로)

물체 변환은 반대로 되는거다.(함수 호출 순서의 반대)

그리고 물체 변환할때 

변환 함수를 먼저 써주고(호출하고) 물체를 그려준다.

그래야 거꾸로 적용되니 물체가 그려지고 변환되는거다.

반대로 쓴다면 변환되고 물체가 그려지니 물체가 변환이 적용 안된다.

'컴공 여러가지 > OpenGL' 카테고리의 다른 글

opengl api 한글번역  (0) 2018.05.03
읽어볼거  (0) 2018.05.02
opengl glMatrixMode 모드 3가지  (0) 2018.04.11
OpenGL 3D 회전  (0) 2018.04.11
선형 독립, 차원, span, 기저  (0) 2018.04.04
Comments