*์ธํ๋ฐ <๊ฒ์ ์์ง์ ์งํฑํ๋ ๊ฒ์์ํ, ์ด๋์ฐ ๊ต์๋> ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๊ธ์ ๋๋ค.
*์ฌ๊ธฐ์ ๋์ค๋ ์์๋ค์ ์ค๋ฅธ์ ์ขํ๊ณ์ Y-up ์ฒด๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
1. 3์ฐจ์ ๊ณต๊ฐ
์ผ์ ์ขํ๊ณ์ ์ค๋ฅธ์ ์ขํ๊ณ
2์ฐจ์ ๊ณต๊ฐ์ \(x, \ y\) ์ถ 2๊ฐ๋ง ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์์๋๋ฐ, 3์ฐจ์ ๊ณต๊ฐ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ถ(\(z\))์ด ํ๋ ๋ ๋์ด๋๊ฒ ๋ฉ๋๋ค. 3๊ฐ์ ์ถ์ผ๋ก ๊ตฌ์ฑ๋ 3์ฐจ์ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ์ค๊ณํ๋์ง์ ๋ฐ๋ผ, ์์ผ๋ก ์ ๊ฐํ ์ํ์์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๊ฒ ๋๋ฏ๋ก, ์ด ์ฒด๊ณ๋ฅผ ํ์คํ๊ฒ ์ก๋ ๊ฒ๋ถํฐ ๋จผ์ ์์ํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์ฒด๊ณ์๋ ์ผ์ ์ขํ๊ณ์ ์ค๋ฅธ์ ์ขํ๊ณ๊ฐ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋ฅผ ๋ฐ๋ผ๋ดค์ ๋, ์ค๋ฅธ์ชฝ์ \(x\) ์ถ, ์์ชฝ์ \(y\) ์ถ์ผ๋ก ๊ณ ์ ํด๋๋ ํธ์ธ๋ฐ, ์ด ๋๋จธ์ง \(z\) ์ถ์ด ๋ชจ๋ํฐ ์ ์ชฝ ๋๋จธ๋ก ๋ค์ด๊ฐ๋ฉด ์ผ์ ์ขํ๊ณ, ์์ชฝ์ผ๋ก ๋น ์ ธ๋์ค๋ฉด ์ค๋ฅธ์ ์ขํ๊ณ์ ๋๋ค.
์ผ์ ์ขํ๊ณ๋ \(z\) ์ถ์ด ๋ชจ๋ํฐ ๋๋จธ๋ฅผ ํฅํ๊ณ ์๊ธฐ์ ๋ฐฐ๊ฒฝ์ ๊ด์ฐฐํ๋ ๋ฐ์ ์ ํฉํ๊ณ , ์ค๋ฅธ์ ์ขํ๊ณ๋ \(z\) ์ถ์ด ๋ชจ๋ํฐ ์๋ฉด์ ํฅํ๊ณ ์๊ธฐ์ ๋ฌผ์ฒด๋ฅผ ๊ด์ฐฐํ๋ ๋ฐ์ ์ ํฉํฉ๋๋ค.
์๋ฐฉํฅ(Up) ์ถ์ผ๋ก ๋ฌด์์ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ?
์๋ฐฉํฅ(Up) ์ถ์ ์ฃผ์ด์ง ๋ฒกํฐ๋ก๋ถํฐ ํ์ ํ๋ ฌ์ ๋ง๋ค ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ฏ๋ก, ์ด ์ถ์ ๋ฌด์์ผ๋ก ํ ์ง ์ ํ๋ ๊ฒ ๋ํ ์ค์ํฉ๋๋ค. ๋ค์ ์ฌ์ง์ ์ฐ๋ฆฌ ์ฃผ๋ณ์ ์๋ง์ ์์ฉํ๋ก๊ทธ๋จ๋ค์ด ์ผ์์ขํ๊ณ์ ์ค๋ฅธ์ ์ขํ๊ณ, ์๋ฐฉํฅ ์ถ์ ์ด๋ค ๊ฑธ ์ฐ๋ ์ง์ ๋ํด ์ ๋ฆฌํด ๋์ ๊ฒ์ ๋๋ค.
2. 3์ฐจ์์ ํธ๋์คํผ ์ค์
2์ฐจ์์์ 3์ฐจ์์ผ๋ก ํ์ฅํ ๋, ์ด๋(T)๊ณผ ํฌ๊ธฐ(S) ๋ณํ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ฐ ์ถ์ด ์๋ก ์ง๊ตํ๊ธฐ ๋๋ฌธ์ ์ฐจ์์ ์ถ๊ฐํด ํด๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ํ์ง๋ง, ํ์ (R) ๋ณํ์ ๊ฐ ์ถ์ด ์๋ก ์ฐ๊ด๋์ด ์๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์ฐจ์์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก๋ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด ๋ด์ฉ์ ์ถํ ์ค์ผ๋ฌ ๊ฐ์ ๋ฐฐ์ธ ๋, ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํ์ ์ ๋งค์ปค๋์ฆ
๊ฐ์ฒด ๋ณํ(Rigid Transformation)์ด๋ ์ฉ์ด๋ฅผ ์ฐ์ ์์์ผ ํ๋๋ฐ, ์ด๊ฒ์ 3์ฐจ์์ ์ด๋ฃจ๋ ์ธ ๊ธฐ์ ๋ฒกํฐ๊ฐ ํฌ๊ธฐ ๋ณํ์์ด ์๋ก ์ง๊ตํ ์ํ๋ฅผ ๊ทธ๋๋ก ์ ์งํ๋ ๊ฒ์ ๋งํฉ๋๋ค. 3์ฐจ์์ด๋ \(z\) ์ถ๊น์ง ํฌํจ๋ \( 3 \times 3\) ํ์ ๋ณํ ํ๋ ฌ์ด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ ๊ฒ๋๋ค.
๋ณํ๋ ํ์ค ๊ธฐ์ ๋ฒกํฐ๋ฅผ ๊ฐ๊ฐ \(x', \ y', \ z' \) ๋ผ๊ณ ํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์์ต๋๋ค.
$$ x' = (x'_x, \ x'_y, \ x'_z) $$
$$ y' = (y'_x, \ y'_y,, \ y'_z) $$
$$ z' = (z'_x, \ z'_y, \ y'_z) $$
์ด์ ๋ฐ๋ผ, 3์ฐจ์ ๊ณต๊ฐ์ \(TRS\) ํ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
$$ S = \begin{bmatrix} s_x & 0 & 0 & 0 \\ 0 & s_y & 0 & 0 \\ 0 & 0 & s_z & 0 \\ 0 & 0& 0 & 1 \end{bmatrix} $$ $$ R = \begin{bmatrix} x'_x & y'_x & z'_x & 0 \\ x'_y & y'_y & z'_y & 0\\ x'_z & y'_z & z'_z & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} $$
$$ T = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} $$
๋ฐ๋ผ์, ์ ์ธ ํ๋ ฌ์ ์์์ ๋ง๊ฒ ๋ฏธ๋ฆฌ ๊ณฑํ ๋ชจ๋ธ๋ง ํ๋ ฌ \(M\) ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์์ต๋๋ค.
$$ M = T \cdot R \cdot S = \begin{bmatrix} x'_x s_x & y'_x s_y & z'_x s_z & t_x \\ x'_y s_x & y'_y s_y & z'_y s_z & t_y \\ x'_z s_x & y'_z s_y & z'_z s_z & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} $$
3. 3์ฐจ์ ๊ณต๊ฐ์ ์นด๋ฉ๋ผ ์์คํ
์นด๋ฉ๋ผ ๊ด์ ์์ ์๋๋ฅผ ๋ฐ๋ผ๋ณด๊ธฐ
์ด ๊ธ ๋งจ ์์์ Y-up ์ค๋ฅธ์ ์ขํ๊ณ์ ๊ดํ ์์ ๋ก ์ค๋ช ํ๋ค๊ณ ํ๋ ๊ฒ๊ณผ ๊ฐ์ด, ์นด๋ฉ๋ผ ๋ํ Y-up ์ค๋ฅธ์ ์ขํ๊ณ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ํด๋น ์ขํ๊ณ์์๋ \(Z\) ์ถ์ด ๋ชจ๋ํฐ ์์ผ๋ก ๋น ์ ธ๋์ค๋ ๋ฐฉํฅ์ด๋ฏ๋ก, ์๋ ๊ณต๊ฐ์ ์์ ์ ๋ฌผ์ฒด๋ฅผ ๋๋ฉด ํด๋น ๋ฌผ์ฒด๊ฐ ๋ชจ๋ํฐ๋ฅผ ๋ฐ๋ผ๋ณด๋ ์ฐ๋ฆฌ ์ชฝ์ ํฅํ๊ฒ ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํด๋น ๋ฌผ์ฒด๋ฅผ ๊ด์ฐฐํ๋ ค๋ฉด ์์ \(z\) ๋ฐฉํฅ์๋ค๊ฐ ์นด๋ฉ๋ผ๋ฅผ ๋๊ณ 180๋ ๋๋ ค์ผ ํ๋ฏ๋ก, ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์นด๋ฉ๋ผ์ ๋ฌผ์ฒด๊ฐ ์๋ก ๋ง์ฃผ๋ณด๋ ์ํฉ์ ๋ง๋ค๊ฒ ๋ ๊ฒ๋๋ค.
๊ทธ๋ฐ๋ฐ, ์นด๋ฉ๋ผ์ \(X\) ์ถ ๋ฐฉํฅ์ด ๋ฌผ์ฒด์ ๋ฌ๋ฆฌ, ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ด ์๋๋ผ ์ผ์ชฝ ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๋ ๊ฒ(\(Z\) ์ถ ์์์ ๋ฐ๋ผ๋ดค์ ๋)์ ๋ณผ ์ ์์ต๋๋ค. ๋ณดํต ์ผ๋ฐ์ ์ผ๋ก๋ ํ๋ฉด์์ ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ \(X\) ์ถ์ ์ค๋ฅธ์ชฝ์ผ๋ก ํฅํ๊ธฐ๋ก ์ฝ์ํ์๋๋ฐ, ๋ฐ๋์ด๋ค ๋ณด๋ ๋ณด๋ ์ฌ๋์ด ๋ค์ง์ด์ ธ์ ๋ณด์ธ๋ค๋ ๋ฌธ์ ๊ฐ ์๊น๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, \(Y\) ์ถ์ 180๋ ํ์ ์ํค๋ฉด ๋ฉ๋๋ค. ์ฆ, ์นด๋ฉ๋ผ๊ฐ \(-Z\) ์ถ ๋ฐฉํฅ์ ๋ฐ๋ผ๋ณด๋๋ก ๋ง๋๋ ๊ฑฐ์ฃ .
์ด๋ ๊ฒ ํ๋ฉด ์นด๋ฉ๋ผ๋ \(-Z\) ๋ฐฉํฅ์ ์ ๋ฉด์ผ๋ก ๋ฐ๋ผ๋ณด๊ฒ ๋์ง๋ง, ๋ชจ๋ํฐ ํ๋ฉด์ \(X, \ ,Y\) ์ถ์ ์ฐ๋ฆฌ์๊ฒ ์ต์ํ ๋ฐ์นด๋ฅดํธ ์ขํ๊ณ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์, ์นด๋ฉ๋ผ์ ์ ๋ฉด ๋ฐฉํฅ์ ๊ตฌํ๋ ค๋ฉด ์นด๋ฉ๋ผ ํ๋ ฌ์ \(Z\) ๋ฒกํฐ์ ์์๋ฅผ ๊ณฑํด์ค์ผ ํ์ฃ .
*์ผ์ ์ขํ๊ณ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ์ด์ ๊ฐ์ ๋ณ๋ ์ฒ๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์๊ฒ ๋ฉ๋๋ค.
์๋ฌดํผ ์์ ๊ฐ์ด ์ฒ๋ฆฌํ ์ขํ๊ณ๋ฅผ ๋ทฐ ์ขํ๊ณ(View Coordinate)๋ผ๊ณ ํ๊ณ , ์ด๋ฌํ ๋ทฐ ์ขํ๊ณ๋ ์นด๋ฉ๋ผ๊ฐ ๊ฐ์ง๋ ๋ก์ปฌ ํธ๋์คํผ์์ \(X, \ Z\) ์ถ์ ๋ฐ์ ์ํค๋ ๊ฒ์ ํตํด ๊ตฌํ ์ ์์ต๋๋ค.
๋ทฐ ํ๋ ฌ ์ ์
2์ฐจ์ ๊ณต๊ฐ์์ ๋ทฐ ํ๋ ฌ์ ์นด๋ฉ๋ผ ํธ๋์คํผ์ ์ญํ๋ ฌ์ ํตํด ๊ตฌํ ์ ์์์ต๋๋ค.
$$ V = (TR)^{\ -1} = R^{\ -1}T^{\ -1} $$
3์ฐจ์์์๋ ๋์ผํ๊ฒ \(R\) ์ ์ญํ๋ ฌ์ ์ ์น ํ๋ ฌ์ด๊ธฐ ๋๋ฌธ์, ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์์ต๋๋ค.
$$ R=\left[\begin{matrix}x_x&y_x&z_x&0\\x_y&y_y&z_y&0\\x_z&y_z&z_z&0\\0&0&0&1\\\end{matrix}\right] \ \rightarrow \ R^{-1}=\left[\begin{matrix}x_x&x_y&x_z&0\\y_x&y_y&y_z&0\\z_x&z_y&z_z&0\\0&0&0&1\\\end{matrix}\right] $$
\(T\) ์ ์ญํ๋ ฌ์ ๊ทธ๋ฅ ์๋ ๊ธธ ๊ทธ๋๋ก ๋ค์ ๋๋์๊ฐ๋ฉด ๋๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
$$ T^{-1}=\left[\begin{matrix}1&0&0&-t_x\\0&1&0&{-t}_y\\0&0&1&{-t}_z\\0&0&0&1\\\end{matrix}\right] $$
๋ฐ๋ผ์, \(R^{\ -1}T^{\ -1}\) ํ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์์ต๋๋ค.
$$ R^{-1} T^{-1}=\left[\begin{matrix}x_x&x_y&x_z&-x\cdot t\\y_x&y_y&y_z&-y\cdot t\\z_x&z_y&z_z&-z\cdot t\\0&0&0&1\\\end{matrix}\right] $$
์ฌ๊ธฐ์ \(X, \ Z\) ์ถ์ ๋ฐ์ ์ํค๋ฉด, ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ทฐํ๋ ฌ \(V\) ๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
$$ V=\left[\begin{matrix}-x_x&-x_y&-x_z&x\cdot t\\y_x&y_y&y_z&-y\cdot t\\-z_x&-z_y&-z_z&z\cdot t\\0&0&0&1\\\end{matrix}\right] $$
๋ทฐ ํ๋ ฌ์ ์ ์ฉํด 3์ฐจ์ ํ๋ธ๋ฅผ ํํํ ๊ฒฐ๊ณผ
1. ๋ฌผ์ฒด์ ์์น๋ฅผ \((0, \ 0,\ 0) \) ์ ๋ฐฐ์น
2. ๋ฌผ์ฒด๋ฅผ \(y\) ์ถ์ ์ค์ฌ์ผ๋ก \( 45\)º, \(x\) ์ถ์ ์ค์ฌ์ผ๋ก \(-60\)º ํ์
3. ์นด๋ฉ๋ผ์ ์์น๋ฅผ \((0,\ 0,\ 500)\) ์ ๋ฐฐ์น
4. ์นด๋ฉ๋ผ๋ฅผ \(y\) ์ถ์ผ๋ก \(180\)º ํ์
'๐ฎGame Development > Game Mathemathics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฒ์ ์ํ] #19 | ๋ฒกํฐ์ ์ธ์ (Cross Product) (2) | 2023.12.05 |
---|---|
[๊ฒ์ ์ํ] #18 | ์ค์ผ๋ฌ ๊ฐ(Euler angle) (2) | 2023.12.04 |
[๊ฒ์ ์ํ] #16 | ๋ทฐ ๊ณต๊ฐ(View Space) (2) | 2023.11.29 |
[๊ฒ์ ์ํ] #15 | ๊ฒ์ ์์ง(Game Engine) (1) | 2023.11.28 |
[๊ฒ์ ์ํ] #14 | ํ ์ค์ฒ ๋งคํ(Texture Mapping) (0) | 2023.11.28 |