[DX] SRT 변환 행렬

vector·2025년 11월 5일

DirectX11 — SRT 변환 행렬 (Scale · Rotation · Translation)

DirectX11에서 3D 객체의 변환(Transformation) 은
기본적으로 SRT(Scale, Rotation, Translation) 세 가지 단계로 구성된다.

즉,
크기를 조절(Scale) → 회전(Rotation) → 이동(Translation)
의 과정을 통해 모델의 최종 위치와 방향을 결정한다.

1. 변환 행렬(Transformation Matrix)이란?

행렬(Matrix)은 3D 공간의 점(Vector)을
이동, 회전, 확대/축소 시키는 수학적 도구.

DirectX11에서 한 객체를 화면에 표시하기 위해
보통 다음의 세 행렬을 순서대로 곱한다:

World Matrix = Scale × Rotation × Translation

2. Translation (이동 행렬)

이동 행렬은 물체를 좌표(x, y, z)에서 지정된 좌표(X, Y, Z)로 이동시킵니다.

3. Scale(크기 변환 행렬)

4. Rotation (회전 행렬)

X축 회전

| 1      0       0    0 |
| 0     cosθ    sinθ  0 |
| 0    -sinθ    cosθ  0 |
| 0      0       0    1 |
XMMATRIX rotX = XMMatrixRotationX(angle);

Y축 회전

| cosθ   0  -sinθ  0 |
| 0      1   0     0 |
| sinθ   0   cosθ  0 |
| 0      0   0     1 |
XMMATRIX rotY = XMMatrixRotationY(angle);

Z축 회전

| cosθ   sinθ   0  0 |
| -sinθ  cosθ   0  0 |
| 0        0     1  0 |
| 0        0     0  1 |
XMMATRIX rotZ = XMMatrixRotationZ(angle);

5. SRT 순서의 중요성

💬 “Scale → Rotation → Translation”
변환 순서를 반드시 지켜야 합니다!

행렬 곱셈은 교환법칙이 성립하지 않기 때문에,
순서에 따라 완전히 다른 결과가 나옵니다.

예시

XMMATRIX world = scale * rotation * translation;
순서의미결과
Scale → Rotation → Translation✅ 올바른 변환 순서물체의 크기 → 회전 → 이동이 올바르게 적용
Translation → Rotation → Scale❌ 잘못된 순서회전 중심점이 달라지고 비정상적인 위치로 이동
profile
게임 클라이언트 프로그래머 준비중 (공부 및 기록용)

0개의 댓글