-
[컴퓨터 그래픽스] Spaces and Transforms컴퓨터그래픽스 2024. 2. 16. 13:47
1. Scaling, Rotation, translation
세 개념 모두 Transform의 범주이다. 책에서는 2차원과 3차원을 따로 설명하고 있는데 난 3차원만 정리할 것이다!


Scaling
Scaling은 위 사진과 같은 행렬식을 갖는다. 너무 간단해서 설명은 사진으로 대신하겠다 ㅋㅋ.
x,y,z 축이 모두 균등하게 커지는 것을 Uniform Scaling, 불규칙하게 커지는 것을(사진의 맨 오른쪽 처럼) Non-Uniform Scaling 이라 한다.
실제 모델링에는 오른쪽과 같이 4X4 행렬식을 사용한다.
Translation은 단순한 평행이동이다. 식은 다음과 같다

Rotation은 설명할 내용이 좀 많다. 먼저 x,y,z 축을 기준으로 한 회전부터 각기 다 행렬식이 다르다. 시험 볼 때는 이거 외우느라 짜증났다.


Z축 기준 회전


X축 기준 회전

Y축 기준 회전
한 점을 기준으로 회전을 한다는 것은 말이 안된다. (회전 방향이 무한함) 때문에 위 사진들과 같이 하나의 축을 기준으로 회전을 하게 된다.
실은 x,y,z 기준으로 회전을 하는 경우보단 임의의 축을 기준으로 회전하는 경우가 더 많다. 이는 다음과 같은 행렬식으로 표현된다.

위 식같은 경우는 임의의 축 p1p2을 기준으로 물체를 60도 돌리는 회전이다. 식을 살펴보면 다음 순서로 계산이 진행된다.
1 - 임의의 축(이하p1p2)을 원점을 지나도록 위치시킨다.
2 - p1p2을 n으로 하는 기저 u,v,n을 만들어 R로 활용한다. 이 회전행렬 R은 기저 uvn을 xyz에 맞춰준다. (따로 추가설명을 뒤에 하겠지만 아주 중요한 개념이다!)
3 - Z축을 기준으로(p1을 n에 맞추었기 때문) 60도 회전한다.
4 - 2의 역과정
5 - 1의 역과정
Transpose, Scaling, Rotation의 역행렬을 구하는 내용은 뒤에 나온다.
어쨌든 저 복잡한 과정을 그림으로 표현하면 다음과 같다. 한정현 교수님의 그림은 어려운 개념을 쉽게 이해시켜주는 전공책 그림계의 GOAT다.

식에서 T(p1)과 T(-p1)을 제외한 중심부는 쿼터니언(Quaternions)이란 개념으로 아주 간단하게 표현할 수 있다. 나중에 정리할 예정이다 ㅎㅎ
참고로 주어진 회전 각도가 양수이면 축을 기준으로 반시계방향, 음수이면 시계방향으로 회전한다.
Rotation도 Scaling,Translation과 마찬가지로 실제 계산 시에는 4X4행렬을 사용한다.

2. Affine Transform

축소확대, 회전, 이동 세 가지의 변환 중 이동을 제외한 나머지 두 변환을 선형 변환 이라 한다.
선형변환과 이동이 함께 나타나는 변환을 Affine Transform 이라 한다. 아핀 행렬은 마지막 행이 꼭 0001로 고정되어야 한다.
행렬에서 빨간색으로 표시된 부분은 선형변환(축소확대와 회전)의 누적을, 파란색으로 표시된 부분은 이동의 누적을 나타낸다.
위 식과 같이 축소확대가 나타나지 않고, 회전과 이동만 누적되어 있으면 이를 강체 변환(rigid motion)이라 한다. 이 변환은 물체의 방향과 위치를 변경시키지만, 물체의 외양에는 영향을 미치지 못한다. 아핀 변환을 [L|t]로 표현한 것처럼 강체 변환은 [R|t] 으로 표기하고, R은 누적된 회전, t는 누적된 이동이다.
3. 월드 변환
하나의 물체를 모델링하는 데 사용되는 좌표계를 오브젝트 공간이라 한다. 이들을 하나로 통합할 때 쓰는 좌표계를 월드 공간이라 한다.

스케일링이나 이동은 위 그림과 같이 간단한데 회전은 좀 복잡하다.

위 그림에서 e1,e2,e3는 월드 공간의 기저이고, uvn은 오브젝트 공간의 기저이다. 처음에는 두 기저가 일치하는데, 물체가 회전하게 되면 오브젝트 공간 기저 uvn은 월드공간의 기저와 달라지게 된다.
여기서 중요한 점은 오브젝트 공간 기저 uvn이 주어지게 되면 그 회전 행렬을 즉각 정의할 수 있다는 것이다. 마찬가지로 회전 행렬이 주어지면 바로 오브젝트 공간 기저를 정의할 수 있다. 회전 행혈은 uvn이 순서대로 열을 이루는 행렬이 된다. (위 그림에서 R에 해당함)
R은 오브젝트 공간에서 월드 공간으로의 변환, R의 역행렬은 월드 공간에서 오브젝트 공간으로의 변환 이라 생각해도 무방할 것 같다.
4. 변환들의 역행렬

이동 행렬의 역

축소확대 행렬의 역
rotation의 역은 위에 설명했으니 따로 적지 않겠다! (그냥 행렬을 transpose 하면 된다)
'컴퓨터그래픽스' 카테고리의 다른 글
[컴퓨터 그래픽스] Lighting (0) 2024.02.16 [컴퓨터 그래픽스] Image Texturing (0) 2024.02.16 [컴퓨터 그래픽스] Rasterizer (0) 2024.02.16 [컴퓨터 그래픽스] Vertex Processing (0) 2024.02.16 [컴퓨터 그래픽스] Modeling(polygon mesh) (0) 2024.02.16