Coordinates
•
World Coordinate: 물체의 본래 좌표계
•
View Coordinate: 카메라 기준 좌표계 (View Transform)
•
Clip Coordinate: 3차원 unit cube 로 한정 지은 좌표계 (Projection Transform)
•
Window Coordinate: 화면 좌표계 (Screen Transform)
Basic Transformations
•
Linear Transformations
◦
Linearity 를 만족하면 연산이 간편함.
◦
Linear Transformation 의 composition 은 Linear Transformation 임.
◦
Line → Line 으로 대응되면 Linear Transformation 임.
◦
Scale, Rotation, Reflection, Shear 은 Linear Transformation 임.
◦
Translation 은 Affine 임 (Linear + Translation = Affine)
•
Transformations 들을 Composite 하여 많이 사용할 수 있고, 한 Transformation 은 다양한 순서의 Transformation 의 조합으로 표현할 수 있음.
•
보통 object 를 translation 을 통해 원점으로 가져온 뒤에 rotate 하고 다시 반대로 translation 을 하는 방법을 사용함.
•
Euclidean Transformation (Isometries) 는 원래 length 를 보존하는 Transformation.
◦
Translation, Rotation, Reflection 이 포함됨.
•
Rigid Body Transformation 은 length 와 orientation 까지 보존하는 Transfromation.
◦
Translation, Rotation 이 포함됨.
Representing Transformations in Coordinates
•
좌표계가 달라지면 같은 점이더라도 점의 위치가 달라짐.
•
Linear Transformation 은 matrix multiplication 으로 표현할 수 있어서 좋음.
•
한 좌표계에서 한 점은 basis vector 에 대한 left multiplication 될 matrix 하나로 정의할 수 있음.
•
Scaling
•
Rotation
•
Shear
•
Translation 을 Linear 하게 표현하기 위해 (GPU 최적화, 다른 연산과의 composite 편의성) 2D-Homogenous Coordinate 를 사용할 수 있음.
◦
원래 Transformations 들에는 마지막 행에 을 추가하고 남은 부분을 0 으로 채워 matrix 로 변환하면 됨.
◦
Translation 은 Identity matrix 에서 마지막 열을 을 바꾸면 됨.
•
1D-Homogeneous 에서 Translation 은 2D 에서 Shear 와 같음.
•
Homogenous Coordinate 은 Translation 에 영향을 받지 않는 특별한 점을 가짐.
•
Moving to 3D: 2D 에서 차원만 높여주면 됨.
•
3차원에서 Rotation 은 자유도가 3개이기 때문에 순서가 중요함.
◦
축으로 돌리는 것을 euler angle 이라고 함.
◦
한 번 돌리면 축이 달라지기 때문에… 순서가 중요함.
◦
Axis-Angle Rotation 과 Quaternion 방법이 있음!
Chains of Transformations
•
Chain of Transformations 을 쓰면 cube person 과 같은 것을 만들고 움직이게 할 수 있음.
◦
실제론 Rigging 이라고 하는, tree 형태의 뼈대를 사용하여 움직임을 구현함.
•
Hierarchical Representation
◦
손의 움직임은 어깨의 transformation 에 윗팔의 transformation 에 아랫팔의 transformation 에 본인의 transformation 이 곱해진 형태로 정의할 수 있음.
Perspective Transformation
•
멀리 있는 것은 작게 보이고, 가까이 있는 것은 크게 보이는 이미지의 특징을 반영하는 Transformation
•
평행한 선은 Horizon 에서 만남.
•
3차원을 2차원에 표현할 때 깊이감을 나타낼 수 있음.
•
하지만, Perspective Transformation 을 무시하는 Orthographic Projection 를 일부러 쓰는 경우도 있음.
◦
멀리 있는 것이 작아보이지 않게 하여 전체적으로 보고 싶을 경우
◦
물체의 길이감 같은 걸 정확히 보고 싶은 경우
•
Perspective Matrix
•
Orthographic Matrix
•
View Frustum
◦
Screen 의 크기에 맞게 top / bottom / left / right plane 이 결정됨.
◦
너무 먼 지점과 너무 가까운 지점들은 잘라냄. (Clipping)
◦
Near / Far Plane Clipping 은 너무 숫자가 작거나 크게 될 경우 오류가 쌓이는 것들을 방지할 수 있음.
◦
이렇게 잘려진 공간은 사이의 cube 인 normalized coordinate system 이 됨.
◦
Normalized Coordinate System (Normalized Device Coordinate, NDC) 을 Orthographic Projection 에서는 identity matrix 로, Perspective Projection 에서는 z 로 나눌 수 있도록 matrix 를 구현함.
•
NDC Coordinate 로 바뀐 후, z 를 날려버린 뒤에 을 pixel coordinate 로 (screen size 에 맞게) 변환이 됨.