예지의 테크 로그포스 (Yeji's Tech Log Force)
[Graphics Study] 변환 - 3D 본문
- Scaling
2차원의 축소확대인자 Sx, Sy에 Z좌표 개념 Sz를 추가해준다.
Sx * X, Sy * Y를 했던 것처럼 Sz * Z를 해주면 된다.
3D에서의 폴리건메쉬를 구성하는 모든 정점에 변환을 적용해주기만 하면 된다.
- Rotation
2차원에서 회전은 '점'을 중심으로 이루어 졌다.
3차원에서는 '축'을 중심으로 한다.(x, y, z축)
+ 축 중심의 회전에서는 해당 축이 나를 가리킨다고 생각하고 정면으로 바라본다고 상상하면 편하다.
예를 들어 x축 회전은 x축이 내 눈앞에서 나를 가리키고있고, 저 뒤편에 y, z가 반시계 방향으로 회전한다고 생각하면 쉽다.
* Z축을 중심으로 회전, Rz(θ)
z축을 기준으로 회전하면 x좌표는 당연히 그대로이고 x, y 만 이동할 것이다.
즉 z' = z이고 x, y의 경우 점을 기준으로 회전한 거랑 다를 바 없으니 2D에서 점을 기준으로 회전한 것처럼
x' = xcosθ - ysinθ
y' = xsinθ + ycosθ
* X축을 중심으로 회전, Rx(θ)
역시나 x축을 기준으로 회전했으니 x' = x일 것이다.
y, z 의 경우 z축 중심의 회전에서와 아이디어는 동일하다. z축 중심 회전에서 x->y로 회전했다면, x축 중심에서 y->z로 회전할 때 역할만 바뀌었을 뿐이기 때문이다.
즉, x', y'을 구하던 식에서 x를 y로, y를 z로 바꿔주기만 하면 된다.
y' = ycosθ - zsinθ
z' = ysinθ + zcosθ
* Y축을 중심으로 회전, Ry(θ)
x축 회전의 개념과 동일
+ 점 중심 회전에서 회전값θ는 반시계방향 회전 기준이었다. 시계방향은 -θ를 대입해야 했었다.
3D에서의 축 중심 회전도 마찬가지로 시계 방향의 회전은 음수각도 -θ를 써야 한다.
- Translation
2D에서 3x3 단위 벡터를 사용해 표현하고 연산했다면, 3D에서는 4x4 단위벡터(I)행렬로 표현한다.
'CS > Computer Graphics' 카테고리의 다른 글
그래픽 장치의 종류와 차이점(래스터, 벡터) + 래스터화 (0) | 2023.04.23 |
---|---|
그래픽스 구성요소, 그래픽 시스템 (0) | 2023.04.23 |
[Graphics Study] 변환 - 2D (0) | 2022.11.09 |
[Graphics Study] 모델링 (0) | 2022.10.17 |
[Graphics Study] 수학 기초 (0) | 2022.10.17 |