๐ŸŽฎGame Development/Game Mathemathics ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 21๊ฑด

*์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ๊นŠ์ด ๋ฒ„ํผ(Depth Buffer) ๊นŠ์ด ๋ฒ„ํผ(Depth Buffer)๋Š” ์นด๋ฉ”๋ผ๋กœ๋ถ€ํ„ฐ ์–ผ๋งˆ๋‚˜ ๊นŠ์€ ๊ณณ์— ์žˆ๋Š”์ง€๋Š” ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3์ฐจ์› ๊ณต๊ฐ„์—์„œ ๋‹ค์ˆ˜์˜ ๋ฌผ์ฒด๋“ค์„ ๊ทธ๋ฆด ๋•Œ, ๊ทธ๋ฆฌ๋Š” ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ค ๋ฌผ์ฒด๊ฐ€ ์•ž์— ์žˆ๊ณ  ๋’ค์— ์žˆ๋Š”์ง€ ๊ตฌ๋ถ„ํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•ž์— ์žˆ์–ด์•ผ ํ•  ๋ฌผ์ฒด(1)๊ฐ€ ๋จผ์ € ๊ทธ๋ ค์ง€๊ณ , ๋’ค์— ์žˆ์–ด์•ผ ํ•  ๋ฌผ์ฒด(2)๊ฐ€ ๋‚˜์ค‘์— ๊ทธ๋ ค์ง€๋ฉด, ์‚ฌ์‹ค์ƒ ์šฐ๋ฆฌ ๋ˆˆ์œผ๋กœ ๋ดค์„ ๋•Œ๋Š” (1) ๋ฌผ์ฒด๊ฐ€ (2) ๋’ค์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๊ฐ ๋ฌผ์ฒด๋งˆ๋‹ค ์นด๋ฉ”๋ผ๋กœ๋ถ€ํ„ฐ ์–ผ๋งŒํผ ๋’ค์— ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๊ธฐ์ค€์น˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์น˜๋ฅผ ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๊นŠ์ด ๋ฒ„ํผ๋ผ๋Š” ๊ฒƒ์„ ๋„์ž…ํ–ˆ์œผ๋ฉฐ, ์ด ๊นŠ์ด ๋ฒ„ํผ ๊ฐ’์— ๋”ฐ๋ผ ๋’ค์—..

*์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜(Perspective Projection Transformation) ๋ง›์žˆ๋Š” ์Œ์‹์ด ๋‚˜์™”์„ ๋•Œ, ์นดํŽ˜์— ๊ฐ€์„œ ๋””์ €ํŠธ์™€ ์Œ๋ฃŒ๋ฅผ ์‹œ์ผฐ์„ ๋•Œ ๋“ฑ๋“ฑ ์ผ์ƒ ์ƒํ™œ ์†์—์„œ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์ˆœ๊ฐ„ ์นด๋ฉ”๋ผ๋กœ ์‚ฌ์ง„์„ ์ฐ๊ณค ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ˜„์‹ค ์„ธ๊ณ„๋Š” 3์ฐจ์›์ด๊ณ  ์นด๋ฉ”๋ผ๋กœ ์ฐ๊ฒŒ ๋˜๋Š” ์‚ฌ์ง„์€ 2์ฐจ์›์ธ๋ฐ ์–ด๋–ป๊ฒŒ ์šฐ๋ฆฌ๊ฐ€ ์ด์งˆ๊ฐ์„ ๋Š๋ผ์ง€ ์•Š๊ณ  ์žˆ๋Š” ์‚ฌ์‹ค ๊ทธ๋Œ€๋กœ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ์š”? ๋ฐ”๋กœ ์›๊ทผ๊ฐ์ด ํ˜•์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ, ๊ฐ€์ƒ ์„ธ๊ณ„๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์šฐ๋ฆฌ ๋˜ํ•œ ์ด ์›๊ทผ๊ฐ์„ ํ˜•์„ฑํ•ด์ฃผ๋Š” ์ž‘์—…์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋˜๋ฉฐ, ์˜ค๋Š˜์€ ์ด๋Ÿฌํ•œ ์ž‘์—…์— ๋Œ€ํ•œ ์›๊ทผํˆฌ์˜ ๋ณ€ํ™˜์„ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์˜ ์›๋ฆฌ 3์ฐจ์› ๊ณต๊ฐ„์€ 3๊ฐœ์˜ ์ถ•์ด ์„œ๋กœ ์ง๊ตํ•˜๋Š” ํ˜•ํƒœ..

*์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ๋ฒกํ„ฐ์˜ ์™ธ์ (Cross Product) ๋ฒกํ„ฐ์˜ ์™ธ์  ์—ฐ์‚ฐ์€ 3์ฐจ์› ๊ณต๊ฐ„์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์œผ๋กœ, ์Šค์นผ๋ผ ๊ฐ’์„ ๊ฒฐ๊ณผ๋กœ ๋‚ด๋ฑ‰์—ˆ๋˜ ๋‚ด์ ๊ณผ ๋‹ฌ๋ฆฌ, ์™ธ์ ์€ 3์ฐจ์› ๋ฒกํ„ฐ๋ฅผ ๊ฒฐ๊ณผ๋กœ ๋ฐฐ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฒกํ„ฐ์˜ ์™ธ์  ์—ฐ์‚ฐ์€ ๋‹ค๋ฅธ ์ถ• ์š”์†Œ๋“ค๋กœ๋งŒ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ง„๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3์ฐจ์› ๋ฒกํ„ฐ \(u, \ v\) ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, $$ u = (u_x, \ u_y, \ u_z), \ \ v = (v_x, \ v_y, \ v_z) $$ ์ด ๋‘ ๋ฒกํ„ฐ์— ๋Œ€ํ•œ ์™ธ์  ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. $$ u \times v = (u_y v_z - v_y u_z, \ u_z v_x - v_z u_x, \ u_x v_y - v_x u_y)$$ ์œ„ ์‹์„ ๋ณด๋ฉด, \( (x, \ ..

*์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ํšŒ์ „ ํ–‰๋ ฌ ๊ตฌํ˜„์—์„œ์˜ ๋ฌธ์ œ์  3์ฐจ์› ๊ณต๊ฐ„์—๋Š” ์„ธ ๊ฐœ์˜ ํ‘œ์ค€ ๊ธฐ์ € ๋ฒกํ„ฐ \(e_1\), \(e_2\), \(e_3\) ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ธ ๊ฐœ์˜ ๊ธฐ์ € ๋ฒกํ„ฐ๋ฅผ ํ†ตํ•ด ํšŒ์ „์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด, ์„œ๋กœ ์ง๊ตํ•˜๊ณ  ์žˆ๋˜ ์›๋ž˜ ์ƒํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ ์ฑ„๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•˜๊ณ , ๋ณ€ํ™”๋œ ๊ธฐ์ € ๋ฒกํ„ฐ๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’(\(x_{local}, \ y_{local}, \ z_{local}\)) ์„ ํ†ตํ•ด ํšŒ์ „ ํ–‰๋ ฌ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฐฉ๋ฒ•์€ ๋ถˆํŽธํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ๋ฌผ์ฒด๋ฅผ Y์ถ•์œผ๋กœ 30๋„ ํšŒ์ „ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•  ๋•Œ, Y์ถ•์œผ๋กœ 30๋„ ํšŒ์ „ํ–ˆ์„ ๋•Œ์˜ ๊ฐ ๋กœ์ปฌ์ถ•์˜ ๊ฐ’์ด ์–ผ๋งˆ์ธ์ง€ ๊ตฌํ•ด์•ผ ํšŒ์ „์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” 30๋„ ํšŒ์ „ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ  ์‹ถ์€๋ฐ, ๊ทธ๋Ÿฌ๊ธฐ ์œ„..

*์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. *์—ฌ๊ธฐ์— ๋‚˜์˜ค๋Š” ์˜ˆ์‹œ๋“ค์€ ์˜ค๋ฅธ์† ์ขŒํ‘œ๊ณ„์— Y-up ์ฒด๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. 1. 3์ฐจ์› ๊ณต๊ฐ„ ์™ผ์† ์ขŒํ‘œ๊ณ„์™€ ์˜ค๋ฅธ์† ์ขŒํ‘œ๊ณ„ 2์ฐจ์› ๊ณต๊ฐ„์€ \(x, \ y\) ์ถ• 2๊ฐœ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, 3์ฐจ์› ๊ณต๊ฐ„๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ถ•(\(z\))์ด ํ•˜๋‚˜ ๋” ๋Š˜์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 3๊ฐœ์˜ ์ถ•์œผ๋กœ ๊ตฌ์„ฑ๋œ 3์ฐจ์› ๊ณต๊ฐ„์„ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๋Š”์ง€์— ๋”ฐ๋ผ, ์•ž์œผ๋กœ ์ „๊ฐœํ•  ์ˆ˜ํ•™์‹์ด๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‚ฌ์šฉ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๋ฏ€๋กœ, ์ด ์ฒด๊ณ„๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ์žก๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋จผ์ € ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฒด๊ณ„์—๋Š” ์™ผ์† ์ขŒํ‘œ๊ณ„์™€ ์˜ค๋ฅธ์† ์ขŒํ‘œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๋ฐ”๋ผ๋ดค์„ ๋•Œ, ์˜ค๋ฅธ์ชฝ์„ \(x\) ์ถ•, ์œ„์ชฝ์„ \(y\) ์ถ•์œผ๋กœ ๊ณ ์ •ํ•ด๋‘๋Š” ํŽธ์ธ๋ฐ, ์ด ๋‚˜๋จธ์ง€ \(z\) ์ถ•์ด ๋ชจ๋‹ˆํ„ฐ ์•ˆ ์ชฝ ๋„ˆ๋จธ๋กœ..

*์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ์นด๋ฉ”๋ผ(Camera) ๊ฒŒ์ž„์ด๋ž€ ์ฝ˜ํ…์ธ ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํ…Œ์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋Œ€๋ณ€ํ•˜๋Š” ์•„๋ฐ”ํƒ€๊ฐ€ ๊ฒŒ์ž„ ๊ณต๊ฐ„(์›”๋“œ ๊ณต๊ฐ„)์„ ํƒํ—˜ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ์•„๋ฐ”ํƒ€๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์‹œ์•ผ ์˜์—ญ ๋‚ด์˜ ๋ชจ์Šต๋“ค์ด ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ, ์ด๋Š” ์›”๋“œ ๊ณต๊ฐ„์˜ ์ผ๋ถ€๋ถ„์„ ํ™”๋ฉด์— ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋‚ด์šฉ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ฐ”ํƒ€๊ฐ€ ๋ณด๋Š” ์‹œ์•ผ๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์–ด๋–ค ๊ฐ€์ƒ์˜ ์นด๋ฉ”๋ผ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์นด๋ฉ”๋ผ์— ๋ณด์ด๋Š” ๋ชจ๋“  ๋ฌผ์ฒด๋“ค์ด ์นด๋ฉ”๋ผ ์‹œ์•ผ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์žฌํ•ด์„๋˜์–ด ๋ Œ๋”๋ง ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์นด๋ฉ”๋ผ์— ๋ณด์ด๋Š” ๋ฌผ์ฒด๋“ค์€ ์นด๋ฉ”๋ผ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์›”๋“œ ๊ณต๊ฐ„์— ์žฌ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ๊ณต๊ฐ„์„ ๋ทฐ ๊ณต๊ฐ„(View Space)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค...