3차원 공간에 있는 오브젝트의 가장 기본적인 물리적 연산 세가지가 바로 Translation(이동), Rotation(회전), Scaling(크기 변환)이다.
그동안 앞선 글들에서 우리는 이 세가지의 기본 연산을 행렬곱으로 표현할 수 있음을 배웠다. 그렇다면 이 변환들을 해주는 행렬들을 미리 다 곱해놓으면 단 한 번의 행렬곱으로 모든 물리적 연산을 표현할 수 있지 않을까?
실제로도 그렇다. 그러나 여기서 주의해야 하는 것은 어떤 연산을 먼저 하는지가 중요하다는 점이다.
위 사진처럼 물체를 이동시킨 후 회전시키고 그 다음 크기를 변화시키면 우리가 원하는 결과가 나오지 않았음을 알 수 있다.
때문에 우리는 항상 Scaling, Rotation, Translation의 순서로 연산을 해주어야 한다.
이 연산은 각각 한 번씩 총 세 번의 행렬곱으로 표현될 수 있고, 그 행렬곱에 사용되는 행렬들을 먼저 곱해서 하나의 행렬곱으로 나타낼 수 있다.
이 하나의 행렬곱에 사용되는 행렬을 우리는 TRS 행렬이라고 부른다. TRS행렬은 거창할 것 없이 우리가 앞에서 다뤄왔던 T,R,S에 필요한 변환 행렬들을 TRS의 순서로 곱해준 것이다.
주의: 아까 연산 순서(SRT)와 이름이 반대인 것을 알 수 있는데, 그 이유는 행렬곱의 특성상 먼저 연산되어야 되는 행렬이 뒤쪽으로 가기 때문이다.
(TRS • v 하면 S • v가 먼저 계산된다)
'mathematics > game mathematics' 카테고리의 다른 글
[Mathematics] 14. Line-Plane Intersection (0) | 2022.04.03 |
---|---|
[Mathematics] 13. 선형변환의 기하학적 의미 (0) | 2022.02.21 |
[Mathematics] 11. Translation (0) | 2022.02.21 |
[Mathematics] 10. Rotation (1) | 2022.02.16 |
[Mathematics] 9. Scaling (0) | 2022.02.07 |