์šฐ๋ฆฌ๊ฐ€ 3D ๊ทธ๋ž˜ํ”ฝ์„ย ๋ Œ๋”๋ง ํ•˜๊ธฐ์œ„ํ•ด์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•ด์•ผํ•  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์ •์„ ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


๊ทธ๋ž˜ํ”ฝ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์„ ๋ฝ‘์•„๋‚ด๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ์œ ๋‹ˆํ‹ฐ๊ฐ™์€ ๊ฒŒ์ž„์—”์ง„์€ ์ด๋Ÿฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ณผ์ •์„ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๋„๋ก ๊ฐ€๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.






์ด์ค‘์— ๊ฐ€์žฅ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์˜ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์ •์ ํŒŒ์ดํ”„๋ผ์ธ ๊ณผ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.


์ •์ ํŒŒ์ดํ”„๋ผ์ธ ๊ณผ์ •์€ ์ •์ ์˜ ๋ณ€ํ™˜(Transform) ๊ณผ์ • ์ž…๋‹ˆ๋‹ค.

์ •์ ํŒŒ์ดํ”„๋ผ์ธ์€ ์‰ฝ๊ฒŒ๋งํ•˜๋ฉด ๊ฐ€์ƒ3D๊ณต๊ฐ„์„ ๋ชจ๋‹ˆํ„ฐ์˜ 2D๊ณต๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • ์ž…๋‹ˆ๋‹ค.



๋กœ์ปฌ์ขŒํ‘œ๊ณ„ -> ์›”๋“œ์ขŒํ‘œ๊ณ„ -> ์นด๋ฉ”๋ผ์ขŒํ‘œ๊ณ„ -> ํˆฌ์˜์ขŒํ‘œ๊ณ„ -> ๋ทฐํฌํŠธ


์—ฌ๊ธฐ์„œย  ์›”๋“œ์ขŒํ‘œ๊ณ„์˜ ๋ณ€ํ™˜์€ ์œ ๋‹ˆํ‹ฐ์˜ Transform ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ์™ธ ์นด๋ฉ”๋ผ๋ณ€ํ™˜, ํˆฌ์˜๋ณ€ํ™˜, ๋ทฐํฌํŠธ์˜ ๋ณ€ํ™˜์€ ์ „๋ถ€ Camera ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.



์ง€๊ธˆ ์•Œ์•„๋ณผ๊ฒƒ์€ ํŒŒ์ดํ”„๋ผ์ธ ๊ณผ์ •์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ World ์ขŒํ‘œ๊ณ„๋กœ์˜ ๋ณ€ํ™˜(Transform) ์ž…๋‹ˆ๋‹ค.





๋จผ์ € ์‚ดํŽด๋ณผ๊ฒƒ์€ ๋ณ€ํ™˜ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณ€ํ™˜์€ ๋ณ€ํ™˜ ํ–‰๋ ฌ ( Transform Matrix )๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ด๋™๋ณ€ํ™˜, ์Šค์ผ€์ผ๋ณ€ํ™˜, ํšŒ์ „๋ณ€ํ™˜์„ ๋ณ€ํ™˜ํ–‰๋ ฌ์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„ํ•ด ๋น ๋ฅธ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•จ ์ž…๋‹ˆ๋‹ค.

์ด๋™๋ณ€ํ™˜์€ ์ •๋ง์‰ฝ์Šต๋‹ˆ๋‹ค.ย ๋กœ์ปฌ์ขŒํ‘œ๊ณ„์—์„œ ์ด๋™ํ•  ์ขŒํ‘œ๋งŒํผ ๋”ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.




๊ทธ๋‹ค์Œ์€ Scale ๋ณ€ํ™˜ ์ž…๋‹ˆ๋‹ค. ์Šค์ผ€์ผ ๋ณ€ํ™˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ •๋ง ์‰ฝ์Šต๋‹ˆ๋‹ค.ย 

์Šค์ผ€์ผํ•  ๋น„์œจ๋งŒํผ ์ขŒํ‘œ๋ฅผ ๊ณฑํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.



๊ทธ๋‹ค์Œ ํšŒ์ „๋ณ€ํ™˜์„ ์•Œ์•„๋ด์•ผ ํ•˜๋Š”๋ฐ, ํšŒ์ „๋ณ€ํ™˜์„ ๋ณด๊ธฐ์ „ ์ž ๊น ์‚ผ๊ฐํ•จ์ˆ˜๋ฅผ ๋ณด๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ผ๊ฐํ•จ์ˆ˜๋Š” ์‚ผ๊ฐ๋น„์— ์˜ํ•ด ์ •์˜๋˜๋Š”๋ฐ ์œ„์™€ ๊ฐ™์ด ํ‘œํ˜„ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์–ด๋–ค์ ์ด ๋ฐ˜์ง€๋ฆ„ r์„ ์ง€๋‚˜๋Š” ์›์— ์œ„์น˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ, ํ•ด๋‹น ์ ์˜ ์ขŒํ‘œ๋Š” rcos(โˆ‚) , rsin(โˆ‚) ์ž…๋‹ˆ๋‹ค.ย ย 

๋ฐ˜์ง€๋ฆ„์ด 1์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉดย cos(โˆ‚) , rsin(โˆ‚)์ด ๋˜๋Š”๊ฒƒ์ด์ง€์š”. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ–‰๋ ฌ์„ ์œ ๋„ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ผ๋‹จ ํšŒ์ „ํ–‰๋ ฌ์„ ์œ ๋„ํ•˜๊ธฐ ์•ž์„œ์„œ ์‚ผ๊ฐํ•จ์ˆ˜์˜ ๋ง์…ˆ์ •๋ฆฌ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ผ๊ฐํ•จ์ˆ˜์˜ ๋ง์…ˆ์ •๋ฆฌ๋Š” ์ด๊ณผ์ƒ๋“ค์€ ๋ฐฐ์šฐ์…จ์ฃ ~?

์—ฌ๊ธฐ์„œ ๋ง์…ˆ์ •๋ฆฌ ์œ ๋„๋Š” ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

์œˆ์ ์ด x,y๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„๋–„ t๋„ ๋งŒํผย ๋งŒํผ ์ „์„ ์‹œํ‚ค๋ ค๋ฉด ์œ„์™€๊ฐ™์ด ์œ ๋„ํ• ์ˆ˜ ์ž‡์Šต๋‹ˆ๋‹ค.



๊ฒฐ๊ตญ ํšŒ์ „๋ณ€ํ™˜ ํ–‰๋ ฌ์€ ์œ„์™€๊ฐ™์ด ๋งŒ๋“ค์–ด ์ง‘๋‹ˆ๋‹ค.



๊ฒฐ๊ตญ ์›”๋“œ ๋ณ€ํ™˜ ํ–‰๋ ฌ์€ ๊ฐ ๋ณ€ํ™˜ ํ–‰๋ ฌ์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ์ฃผ์˜ํ• ์ ์€ ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ์—ฐ์‚ฐ์€ ๊ตํ™˜๋ฒ•์น™์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์ฆ‰ ๊ณฑ์…ˆํ•˜๋Š” ํ–‰๋ ฌ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„ Scale -> Rotation -> Translate ์ˆœ์„œ๋Œ€๋กœ ๊ณฑํ•˜๋Š”๋ฐ ์ด์œ ๋Š” ์•„๋ž˜์— ์„ค๋ช…๋“œ๋ฆฝ๋‹ˆ๋‹ค.




๋‘ ์‚ฌ๋ก€๋ฅผ ๋ณด์ž๋ฉด, ์ด๋™์„ ๋จผ์ €ํ•˜๊ณ  ์Šค์ผ€์ผ์„ ํ•˜๋ฉด, ์Šค์ผ€์ผ ์—ฐ์‚ฐ์ž์ฒด๊ฐ€ ์œ„์น˜๋ฅผ ํฌ๊ฒŒ ๋ณ€๊ฒฝ ๋ฌธ์ œ์ ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ฆ‰ ์˜๋„๋Š” (1,1) ๋งŒํผย ์ด๋™์ด์ง€๋งŒ,

๊ฒฐ๊ณผ๋Š” (2,2) ๋งŒํผ ์ด๋™ํ•œ๊ฒƒ์ด ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. (x *sx, y *sy) ๋งŒํผ ์ด๋™ํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด์ง€์š”.

๋”ฐ๋ผ์„œ S, R, T ์ˆœ์„œ๊ฐ€ ๊ฐ€์žฅ ์ •ํ™•ํ•˜๋ฉฐ, ๋ณดํ†ต์€ ์œ„ ์ˆœ์„œ๋Œ€๋กœ ํ–‰๋ ฌ์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.




3์ฐจ์›์˜ ๋ณ€ํ™˜ํ–‰๋ ฌ์€ ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋™๋ณ€ํ™˜ํ–‰๋ ฌ์ด ์กฐ๊ธˆ ๋‹ค๋ฅด๊ธดํ•œ๋ฐ, ์ด๊ฒƒ์€ ๋ Œ๋”๋Ÿฌ ์ขŒํ‘œ๊ณ„์— ๋”ฐ๋ผ ์กฐ๊ธˆ ๋‹ค๋ฅผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย 

(์œ„ ํ–‰๋ ฌ๋“ค์€ย DirectXย ๊ธฐ์ค€ ์ž…๋‹ˆ๋‹ค.)



Transform์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์œ ๋‹ˆํ‹ฐ ๊ฐ™์€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋ฉด ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ค์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—”์ง„์— ์ „์ ์œผ๋กœ ์˜์กด๋งŒํ•˜๊ณ  ์›๋ฆฌ๋ฅผ ๋ชจ๋ฅด๋ฉด ์•ˆ๋˜๊ฒ ์ฃ ~?


์œ ๋‹ˆํ‹ฐ์—์„œ๋„ Transform์€ ์™„๋ฒฝํžˆ ์ง€์›ํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ๋‹ค๋ฃจ๊ธฐ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋„ ์ถฉ์‹คํ•˜์ง€๋งŒ,

์ž์ฒด ํ–‰๋ ฌ ๊ตฌ์กฐ์ฒด๋„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‘์šฉํ•ด์„œ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.






์ด ํ…Œ์ŠคํŠธ ์˜ˆ์ œ๋Š” ๋ฐฉํ–ฅ๋ฒกํ„ฐ๋ฅผ y์ถ•์œผ๋กœ Rotation ํ•ด๋ณผ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋Š” Debug.DrawRay ํ•จ์ˆ˜๋กœ ์”ฌ์œˆ๋„์šฐ์— ๊ทธ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.





์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” Matrix4x4 ๋ผ๋Š” ์ž์ฒด ์ž๋ฃŒํ˜•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ–‰๋ ฌ์„ ๋งŒ๋“ค์ˆ˜ ์žˆ์œผ๋ฉฐ ์ง์ ‘ ๋ณ€ํ™˜๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


y์ถ•์— 30๋„ ํšŒ์ „ํ–‰๋ ฌ, -30๋„ ํšŒ์ „ํ–‰๋ ฌ์„ ๋งŒ๋“ค๊ณ  DrawRay๋กœ ํ™•์ธํ•ด๋ณด๋Š” ์ฝ”๋“œ ์ž…๋‹ˆ๋‹ค.



๊ฒฐ๊ณผ๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์œ ๋‹ˆํ‹ฐ์—์„œ ๋ฐฉํ–ฅ๋ฒกํ„ฐ ์ž์ฒด๋ฅผ ํšŒ์ „์‹œํ‚ค๋Š” ๋ฉ”์†Œ๋“œ๋Š” ์—†๋Š”๋ฐ์š”.ย 

์ด๋ฅผ ์‘์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.~ ๋‚˜์ค‘์— ๊ผญ ๊ธฐ์–ตํ•˜์‹œ๊ณ  ํ™œ์šฉํ•ด๋ณด์‹œ๋ฉด ์–ด๋–จ๊นŒ์š”~?





ย