์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ ์ ์์ต๋๋ค.
๋ฐ์ํ
๊ทธ๋ํฝ์ค ์์
5๋ฒ์งธ ๊ณผ์ ์ธ 3D Viewing์
๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ๊ตฌํํ์ต๋๋ค.
[1] 3D objects๋ค์ด ์ ์งํ๊ณ ์๋ ์ํ์์
1. ์นด๋ฉ๋ผ๊ฐ ์ ์๋ฆฌ์์ ํ์
2. ์นด๋ฉ๋ผ๊ฐ VPN์ ๊ณ ์ ์ํจ ์ฑ๋ก ์์ผ๋ก ์ด๋
3. ์ ์งํ ์นด๋ฉ๋ผ์ ์ค์ธ, ์ค์์
4. ์นด๋ฉ๋ผ๊ฐ ํน์ ํ ๋ฌผ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ํ์ ํ๋ฉด์ ๊ทธ ๋ฌผ์ฒด๋ฅผ ๋ฐ๋ผ๋ณด๋ฉฐ ์นด๋ฉ๋ผ๊ฐ ํ์ ์ด๋ํ๋ ๊ฒฝ์ฐ
[2] ์นด๋ฉ๋ผ์ ๋ฌผ์ฒด๊ฐ ๋์์ ์ด๋ํ๋ ๊ฒฝ์ฐ
๋จ์ํ ์๋์ขํ๊ณ๊ธฐ์ค์์ X,Y,Z ์ถ ํ์ ์ ํ๋ ๊ฒ์ธ์ง ์นด๋ฉ๋ผ์ ๋ทฐ์์ขํ์ ๊ธฐ์ค์ผ๋ก X,Y,Z์ถ์ธ์ง ๋ช ์๋์ด์์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋์ขํ๊ธฐ์ค์์ "๋ฌผ์ฒด๋ฅผ ๋ฐ๋ผ๋ณด๋ฉฐ ์ด๋ํ์ "์ ํ๋๊ฒ์ด๋ฉด ๊ทธ๋ฆผ1(Z์ถ๊ธฐ์ค ํ์ ์ ๊ถค์ ๊ทธ๋ฆผ์ ์๋ตํ์ต๋๋ค) ๊ณผ ๊ฐ์ด ์นด๋ฉ๋ผ๊ฐ ๊ถค์ ์ ๊ทธ๋ฆฌ๊ฒ ๋์ง๋ง ์นด๋ฉ๋ผ์ ๋ทฐ์์ขํ์์ ์ด๋ํ์ ์ ํ๊ฒ๋๋ฉด ๊ทธ๋ฆผ2(Y์ถ๊ธฐ์ค ํ์ ์ ๊ถค์ ๋ง ๋ช ์ํ์ต๋๋ค)์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ทฐ์์ขํ๊ธฐ์ค์ผ๋ก ํ์ ์ ํ๋ ค๋ฉด ๋ค์ glLookatํจ์์ ๋ด๋ถ๊ตฌํ, ์ฆ, Cross Product๋ฑ์ ์ฐ์ฐ์ ํตํด ๋ทฐ์์ขํ๋ฅผ ์์๋ด์ผ ํ์ผ๋ฉฐ, ํ์ ์์๋ ํจ์ฌ ๋ ๋ณต์กํ ์ฐ์ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. ์ฐ์ฐ ์ค์ฐจ ๋๋ฌธ์ธ์ง ๊ทธ๋ฆผ2์ ๊ฐ์ด ๊ตฌํ์ ํ๊ฒ ๋๋ฉด ํผํฌ๋จผ์ค๊ฐ ๋จ์ด์ก์ต๋๋ค.(Center<๋ฐ๋ผ๋ณด๋์ >์ ์ขํ๊ฐ ๊ณ์ ๋ฐ๋๋๊ตฐ์ ๋น๋์ค์บก์ณ ๋ง์ง๋ง๋ถ๋ถ์ "์คํ์ ํฌ์ค"์ฒ๋ผ ์์ง์ด๋ ์ฅ๋ฉด์ค๋ช ์์ ์์ธํ ๋ณด๋ฉด ๋ฐ๋ผ๋ณด๋์ ์ด ์กฐ๊ธ์ฉ ์์ง์ด๋ ๊ฑธ ๊ด์ฐฐํ ์ ์์ต๋๋ค.) ๊ทธ๋์ ๋ง์ฐ์ค๋ชจ์ ์ค์ ์ ๊ทธ๋ฆผ2์ ๊ฐ์ด, ํค๋ณด๋ ์ค์ ์ ๊ทธ๋ฆผ1. ๊ณผ ๊ฐ์ด ๊ตฌํํ์์ต๋๋ค. ์ด๋ 3D์์์์ ํ์ ์ด์ง๋ง 2D ์ธ๋ถ๋ถ์ผ๋ก ๋ถํ ํ์ฌ ๊ฐ๋จํ 2Dํ์ ๋ณํ ๊ณต์์ ํตํด ๊ตฌํํ ์์์์ต๋๋ค.
๊ทธ ์ธ์ 3D๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด๋ค ๋ณด๋, ์ ๊ฐ ๋์์์ ๋ง๋ค์ด ๋๊ณ ๋ ์ด๋ป๊ฒ ์๋๋๋ ๊ฒ์ธ์ง ๋๋ฌด ํผ๋์ค๋ฌ์์ x,y,z์ขํ๋ฅผ ๊ทธ์๊ณ ๋๋ถ์ด xy,yz,xzํ๋ฉด์๋ ๋ฒํฐ์ปฌ ์ฒ๋ผ ์ค์ ์ ๋๋ฌธ๋๋ฌธ ๊ทธ์์ต๋๋ค(๋นฝ๋นฝํ ์ฑ์ฐ๋ฉด CPU์ ์ ์จ์ด ๋๋ฌด ๋์์ ธ์ ํผํฌ๋จผ์ค๊ฐ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ํ์ต๋๋ค.)
์ฌ๋ฏธ์ผ์ "์นด์ดํฐ์คํธ๋ผ์ดํฌ"๋ "์คํ์ ํฌ์ค"์ ๊ฐ์ FPS 3D๊ฒ์์์์ ์กฐ์์ ๋น๋์ค์บก์ณ ๋ง์ง๋ง ๋ถ๋ถ์์ Demonstrationํ์์ต๋๋ค.
์ด๋ฒ ๊ณผ์ ๋ฅผ ํตํด ์์ ์๊ฐ์ ์ด๋ก ์ผ๋ก ๋ฐฐ์ ๋ ๋ถ๋ถ์ ์ข ๋ ๋ช ํํ๊ฒ ์ดํดํ ์ ์์๊ณ 3D๊ฒ์์ ์์ ํ๊ณ ์ถ์ ๋ง์์ด ๋ค ์ ๋๋ก ํฅ๋ฏธ๋ก์ด ๊ณผ์ ์์ต๋๋ค. ^^
๊ทธ๋ฆผ1. ์๋์ขํ ๊ธฐ์ค
๊ทธ๋ฆผ2. ์นด๋ฉ๋ผ์ ๋ทฐ์์ขํ ๊ธฐ์ค
*์ฃผ์์์ค์ฝ๋
- ์ธ์ ์ ๋์์ ๊ณ์ฐ(Algebraic operation of cross product)
- 3D์ขํ์์์์ Vector ํด๋์ค ์ ์
- ๋ทฐ์์ขํ ๊ณ์ฐ
1. ๋ทฐ์์ขํ์ Z์ถ์ ์นด๋ฉ๋ผ์ EyeX,Y,Z ์์ CenterX,Y,Z์ ์ฐจ๋ฅผ ๊ณ์ฐํ๋ฉด ๋์ต๋๋ค.(์นด๋ฉ๋ผ์์น์์ ์นด๋ฉ๋ผ๊ฐ ๋ณด๋ ์ ๋นผ๊ธฐ)
2. View-Up Vector๋ ๋จ์ํ ์๋์ขํ์์ Y์ถ(0,1,0)์ ํด๋นํ๊ฒ ๊ตฌ์...
3. VUP๊ณผ Z๋ฅผ ์ธ์ ํ๋ฉด X์ถ์ ๊ตฌํ ์ ์๊ณ
4. ๋ค์ z์ถ๊ณผ X์ถ์ ์ธ์ ํ๋ฉด Y์ถ์ ๊ตฌํ ์ ์์ต๋๋ค.
* ๋จ์๋ฒกํฐ๋ ๊ทธ๋ฅ ์ฐ์ฐ์์ ํฌ๊ธฐ๋ฅผ ๋๋ ์ฃผ๋ฉด ๋ฉ๋๋ค.
*๊ตฌํ๋ ๊ฒฐ๊ณผ์ ๋น๋์ค ์บก์ณ (์์ฑ ์ค๋ช
ํฌํจ)
Discussion
์ด๋ฒ ๊ณผ์ ์์ ์ ์ผ ๊ณ ์ฌํ๋ ๋ถ๋ถ์ด "์นด๋ฉ๋ผ ์ ์๋ฆฌ ํ์ " ๋ฐ "๋ฌผ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ํ์ "ํ๋ ๋ถ๋ถ์ ๊ตฌํํ๋ ๊ฒ ์ด์์ต๋๋ค.๋จ์ํ ์๋์ขํ๊ณ๊ธฐ์ค์์ X,Y,Z ์ถ ํ์ ์ ํ๋ ๊ฒ์ธ์ง ์นด๋ฉ๋ผ์ ๋ทฐ์์ขํ์ ๊ธฐ์ค์ผ๋ก X,Y,Z์ถ์ธ์ง ๋ช ์๋์ด์์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋์ขํ๊ธฐ์ค์์ "๋ฌผ์ฒด๋ฅผ ๋ฐ๋ผ๋ณด๋ฉฐ ์ด๋ํ์ "์ ํ๋๊ฒ์ด๋ฉด ๊ทธ๋ฆผ1(Z์ถ๊ธฐ์ค ํ์ ์ ๊ถค์ ๊ทธ๋ฆผ์ ์๋ตํ์ต๋๋ค) ๊ณผ ๊ฐ์ด ์นด๋ฉ๋ผ๊ฐ ๊ถค์ ์ ๊ทธ๋ฆฌ๊ฒ ๋์ง๋ง ์นด๋ฉ๋ผ์ ๋ทฐ์์ขํ์์ ์ด๋ํ์ ์ ํ๊ฒ๋๋ฉด ๊ทธ๋ฆผ2(Y์ถ๊ธฐ์ค ํ์ ์ ๊ถค์ ๋ง ๋ช ์ํ์ต๋๋ค)์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ทฐ์์ขํ๊ธฐ์ค์ผ๋ก ํ์ ์ ํ๋ ค๋ฉด ๋ค์ glLookatํจ์์ ๋ด๋ถ๊ตฌํ, ์ฆ, Cross Product๋ฑ์ ์ฐ์ฐ์ ํตํด ๋ทฐ์์ขํ๋ฅผ ์์๋ด์ผ ํ์ผ๋ฉฐ, ํ์ ์์๋ ํจ์ฌ ๋ ๋ณต์กํ ์ฐ์ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. ์ฐ์ฐ ์ค์ฐจ ๋๋ฌธ์ธ์ง ๊ทธ๋ฆผ2์ ๊ฐ์ด ๊ตฌํ์ ํ๊ฒ ๋๋ฉด ํผํฌ๋จผ์ค๊ฐ ๋จ์ด์ก์ต๋๋ค.(Center<๋ฐ๋ผ๋ณด๋์ >์ ์ขํ๊ฐ ๊ณ์ ๋ฐ๋๋๊ตฐ์ ๋น๋์ค์บก์ณ ๋ง์ง๋ง๋ถ๋ถ์ "์คํ์ ํฌ์ค"์ฒ๋ผ ์์ง์ด๋ ์ฅ๋ฉด์ค๋ช ์์ ์์ธํ ๋ณด๋ฉด ๋ฐ๋ผ๋ณด๋์ ์ด ์กฐ๊ธ์ฉ ์์ง์ด๋ ๊ฑธ ๊ด์ฐฐํ ์ ์์ต๋๋ค.) ๊ทธ๋์ ๋ง์ฐ์ค๋ชจ์ ์ค์ ์ ๊ทธ๋ฆผ2์ ๊ฐ์ด, ํค๋ณด๋ ์ค์ ์ ๊ทธ๋ฆผ1. ๊ณผ ๊ฐ์ด ๊ตฌํํ์์ต๋๋ค. ์ด๋ 3D์์์์ ํ์ ์ด์ง๋ง 2D ์ธ๋ถ๋ถ์ผ๋ก ๋ถํ ํ์ฌ ๊ฐ๋จํ 2Dํ์ ๋ณํ ๊ณต์์ ํตํด ๊ตฌํํ ์์์์ต๋๋ค.
๊ทธ ์ธ์ 3D๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด๋ค ๋ณด๋, ์ ๊ฐ ๋์์์ ๋ง๋ค์ด ๋๊ณ ๋ ์ด๋ป๊ฒ ์๋๋๋ ๊ฒ์ธ์ง ๋๋ฌด ํผ๋์ค๋ฌ์์ x,y,z์ขํ๋ฅผ ๊ทธ์๊ณ ๋๋ถ์ด xy,yz,xzํ๋ฉด์๋ ๋ฒํฐ์ปฌ ์ฒ๋ผ ์ค์ ์ ๋๋ฌธ๋๋ฌธ ๊ทธ์์ต๋๋ค(๋นฝ๋นฝํ ์ฑ์ฐ๋ฉด CPU์ ์ ์จ์ด ๋๋ฌด ๋์์ ธ์ ํผํฌ๋จผ์ค๊ฐ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ํ์ต๋๋ค.)
์ฌ๋ฏธ์ผ์ "์นด์ดํฐ์คํธ๋ผ์ดํฌ"๋ "์คํ์ ํฌ์ค"์ ๊ฐ์ FPS 3D๊ฒ์์์์ ์กฐ์์ ๋น๋์ค์บก์ณ ๋ง์ง๋ง ๋ถ๋ถ์์ Demonstrationํ์์ต๋๋ค.
์ด๋ฒ ๊ณผ์ ๋ฅผ ํตํด ์์ ์๊ฐ์ ์ด๋ก ์ผ๋ก ๋ฐฐ์ ๋ ๋ถ๋ถ์ ์ข ๋ ๋ช ํํ๊ฒ ์ดํดํ ์ ์์๊ณ 3D๊ฒ์์ ์์ ํ๊ณ ์ถ์ ๋ง์์ด ๋ค ์ ๋๋ก ํฅ๋ฏธ๋ก์ด ๊ณผ์ ์์ต๋๋ค. ^^
๊ทธ๋ฆผ1. ์๋์ขํ ๊ธฐ์ค
๊ทธ๋ฆผ2. ์นด๋ฉ๋ผ์ ๋ทฐ์์ขํ ๊ธฐ์ค
* ์์ค๋ ํ๊ธฐ ๋งํฌ์ ์์ต๋๋ค.
๋ฐ์ํ