이제 실제 쓰이는 예시를 보자.
유니티를 사용해본적이 있다면 이해할 수 있다.
교실 같은 3차원 공간을 예시로 들 수 있다.
교실 공간을 먼저 만들어야할 것이며 강의실 안에는 책상과 의자와 같은 것들을 Polygon mesh로 만들어야할 것이다.
처음에 만들어질 때 특정 좌표계를 기준으로 만들어질것이고 원점 가까이 놓여있을 것이다.
단일한 공간에 배치를 해야하는데 의자와 책상이 겹쳐있으면 안 될 것이다.
이러한 것을 해결하기 위해서 변환이 쓰인다.
Coordinate System을 두가지로 구분하는데 Object를 만드는데 쓰인 공간인 Object Space, 단일한 게임 공간인 World Space이다.
World Space 에 만들어진 모든 Polygon mesh가 배치되어야한다.
Object Space에서 World Space로 옮겨갈때 Transform이 필요할 것이다.
이때 사용되는 것이 World Transform이다.
아래 예제의 구를 먼저 살펴보면
Object Space에서 반지름이 1인 상태로 만들어졌다.
크기를 2로 키우고 싶다면?
중심은 그대로 원점이기에 필요한 변환은 Scaling하나다.
반지름이 2이므로 Scaling Factor를 모두 2로 설정한 Scaling 변환 하나만 필요하다.


주전자의 예시를 살펴보면
주전자는 원점에 놓여있고 주둥이가 z축을 향하고 있다.
하지만 뒤에 이동된 것을 알 수 있다.
회전과 이동의 Translation이 필요하다는 것을 알 수 있다.

Y축을 중심으로한 Ratation 행렬은 다음과 같다.

Translation은 x축으로 7만큼 이동하며 행렬은 다음과 같다.


2차원과 마찬가지로 교환법칙은 성립하지않는다.
마지막 행은 0 0 0 1이 된다.

모든 변환을 단일한 하나의 행렬로 만들 수 있는데
마지막 행렬을 빼고나면 3x4 [L | t] 가 된다.

Rotation and Object space Basis
Object Space Basis와 Rotation의 관계는?
물체를 만들게 되면 그때 그 좌표계를 사용할 것이고 그것이 object space다.
모델링이 끝나면 Polygon mesh의 정점은 불변이다.
그때 그 물체는 object space와 붙어있어서 같이 움직인다라고 이해하자.
Object와 Object Space는 항상 붙어있다.
그림을 통해 회전의 경우를 먼저 살펴보자.
초기 조건은 Object Space와 World Space가 같다.
World Space는 항상 Standard Basis를 기준으로 세개의 축을 기준으로 정의된 {e1, e2, e3}라고 한다.
Object Space는 {u, v, n}으로 표현하는 것이 관례다.
따라서 초기조건에서는 u = e1, v = e2, n = e3인 것이다.
그런데 물체를 회전시킨다면?
물체와 object space는 붙어서 간다. 그렇다면 원래 e1, e2, e3와 같았던 u,v,n이 달라졌다는 것이 보일것이다.
회전된 물체는 방향이 바뀐다. 물체와 Object Space는 붙어있다. 그렇다면 물체의 방향은 Object Space Basis 방향으로 특정지을 수 있다는 것이다.

원래 u는 e1과 같았다. Rotation에 의해 다른 방향을 가지게 되었다.
그 결과는 e1에 Ratation을 적용하면 u가 될 것이다.

v와 n에 대해서도 동일하다.

그래서 우리는 세가지 식을 얻게 된다.
통합된 식을 만들어 내면 다음과 같으며 R의 행렬을 구할 수 있다는 것을 발견하게 된다.

x,y,z축이 아닌 임의의 축을 기준으로 회전한다면?
마찬가지로 회전이며 3x3으로 표현될 것이다.
u,v,n이 어떻게든 알 수 있다면 그 행렬을 바로 구할 수 있을 것이다.
거꾸로 회전변환을 바로 알 수 있다면 u,v,n을 바로 구할 수 있을 것이다.


참고
opengl es를 이용한 3차원 컴퓨터 그래픽스 입문
'Computer Graphics' 카테고리의 다른 글
컴퓨터 그래픽스 - Rasterizer(2), ViewPort (1) | 2024.01.16 |
---|---|
컴퓨터 그래픽스 - Rasterizer(1) (0) | 2024.01.13 |
컴퓨터 그래픽스(3) - Affine Transform (1) | 2024.01.07 |
컴퓨터 그래픽스(2) - Transform composition (0) | 2024.01.07 |
컴퓨터 그래픽스(1) - 모델링 (5) | 2024.01.06 |
댓글