DirectX11에서 3D 객체의 변환(Transformation) 은
기본적으로 SRT(Scale, Rotation, Translation) 세 가지 단계로 구성된다.
즉,
크기를 조절(Scale) → 회전(Rotation) → 이동(Translation)
의 과정을 통해 모델의 최종 위치와 방향을 결정한다.
행렬(Matrix)은 3D 공간의 점(Vector)을
이동, 회전, 확대/축소 시키는 수학적 도구.
DirectX11에서 한 객체를 화면에 표시하기 위해
보통 다음의 세 행렬을 순서대로 곱한다:
World Matrix = Scale × Rotation × Translation
이동 행렬은 물체를 좌표(x, y, z)에서 지정된 좌표(X, Y, Z)로 이동시킵니다.







| 1 0 0 0 |
| 0 cosθ sinθ 0 |
| 0 -sinθ cosθ 0 |
| 0 0 0 1 |
XMMATRIX rotX = XMMatrixRotationX(angle);
| cosθ 0 -sinθ 0 |
| 0 1 0 0 |
| sinθ 0 cosθ 0 |
| 0 0 0 1 |
XMMATRIX rotY = XMMatrixRotationY(angle);
| cosθ sinθ 0 0 |
| -sinθ cosθ 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
XMMATRIX rotZ = XMMatrixRotationZ(angle);
💬 “Scale → Rotation → Translation”
변환 순서를 반드시 지켜야 합니다!
행렬 곱셈은 교환법칙이 성립하지 않기 때문에,
순서에 따라 완전히 다른 결과가 나옵니다.
예시
XMMATRIX world = scale * rotation * translation;
| 순서 | 의미 | 결과 |
|---|---|---|
| Scale → Rotation → Translation | ✅ 올바른 변환 순서 | 물체의 크기 → 회전 → 이동이 올바르게 적용 |
| Translation → Rotation → Scale | ❌ 잘못된 순서 | 회전 중심점이 달라지고 비정상적인 위치로 이동 |