์ง€๋‚œ๋ฒˆ์— ๋งŒ๋“ค๋˜ ์ฒญํฌ ๊ธฐ๋ฐ˜ LOD๋Š” ๋ ‰ ์•ˆ๊ฑธ๋ฆฌ๊ฒŒ ์ž˜ ๋งˆ๋ฌด๋ฆฌ ์ง€์–ด๋’€์ง€๋งŒ, ์˜ฅํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์•Œ๊ฒŒ ๋œ ์ดํ›„๋กœ ์†์ด ์•ˆ๊ฐ.





์˜ฅํŠธ๋ฆฌ๋Š” ์ฟผ๋“œํŠธ๋ฆฌ์™€ ๋น„์Šทํ•˜์ง€๋งŒ, 3D๊ณต๊ฐ„์„ 8๊ฐœ๋กœ ๊ท ์ผํ•˜๊ฒŒ ๋‚˜๋ˆ„๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž„.


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec85fa11d028318672c324147e3f6f5673e300cbe4092f2bdc415b9fa8f7297b12fb2287969a3a7dc34f20fd22fbe5ad05f372fcc9d991f697b0



์ฃผ๋กœ ์ด์šฉ๋˜๋Š” ์ด์œ ๋Š” ํšจ์œจ์ ์œผ๋กœ ๊ณต๊ฐ„์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ๊ฑธ๋กœ ์•Ž.


ํŠนํžˆ SVO(sparse voxel octree)๋Š” ๊ณต๊ฐ„์„ 8๋ถ„ํ•  ํ•˜๋‹ค๊ฐ€, ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ณต๊ฐ„์ด ๋‚˜์˜ค๋ฉดย nullptr์„ ๋‘๊ธฐ ๋•Œ๋ฌธ์—,

๋น„์–ด์žˆ๋Š” ๊ณต๊ฐ„(๋˜๋Š” ๋™์ผํ•œ ๋ธ”๋ก๋งŒ ์žˆ๋Š” ๊ณต๊ฐ„)์—๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ „ํ˜€ ๋“ค์–ด๊ฐ€์ง€ ์•Š์„ ๋ฟ๋”๋Ÿฌ,ย 

์›”๋“œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ํ•œ๋ฒˆ์— ๋งŽ์€ ๊ณต๊ฐ„์„ ์Šคํ‚ตํ•  ์ˆ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฝค ๋งŽ์ด ์“ฐ์ด๋Š” ๊ตฌ์กฐ์ž„.

๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ์—์„œ ์—ฐ์‚ฐ๋Ÿ‰์„ ์–ด๋งˆ์–ด๋งˆํ•˜๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๋‚œ ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Œ.



๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๋ฅ˜ ๊ฒŒ์ž„์„ ๋งŒ๋“œ๋Š”๋ฐ ์˜ฅํŠธ๋ฆฌ๋Š” ์ „ํ˜€ ์“ฐ์ผ ์ด์œ ๊ฐ€ ์—†์Œ. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ  ๊ณต๊ฐ„์„ ์ˆœํšŒํ•˜๋Š” ๊ณ„์‚ฐ๋„ ์—†์œผ๋‹ˆ๊น.

๊ตฌ๊ธ€์—์„œ ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ์ œ์ž‘ ๊ด€๋ จ ๊ธ€๋“ค ์ฐพ์•„๋ณด๋ฉด ์˜ฅํŠธ๋ฆฌ ๊ด€๋ จํ•ด์„œ ๋ง์ด ๋งŽ์€๋ฐ,ย 

์‚ฌ์‹คย ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ์„ ์ œ์™ธํ•˜๋ฉด ์•„๋ฌด ์ด๋“์—†์ด ๊ตฌ์กฐ๋งŒ ๋ณต์žกํ•ด์ ธ์„œ ๊ทธ๋ƒฅ ์ฒญํฌ๋ฅผ 3์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ ํ•ด์‰ฌ๋งต์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ํŽธํ•จ.

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ LOD๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ด์ œ ์˜ฅํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ด์œ ๊ฐ€ ์ƒ๊น€.

์ง€๊ธˆ๊ป lod์—์„œ ์˜ฅํŠธ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ด์šฉํ•˜๋ผ๋Š”๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ๊ณ , ์•„๋ฌด๋ฆฌ ์ฐพ์•„๋„ ์•„๋ฌด๋„ ์•ˆ์•Œ๋ ค์ค˜์„œ ๋„˜์–ด๊ฐ”๋Š”๋ฐ, ๊ฐ‘์ž๊ธฐ ์ดํ•ดํ•ด๋ฒ„๋ ธ์Œ.


์šฐ์„  ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๊ฐ™์€ ๊ฒŒ์ž„์—์„œ ์˜ฅํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์Œ.


์ฒญํฌ๋ฅผ ์˜ฅํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ๋ธ”๋ก ๋ฐ์ดํ„ฐ๋Š” 3์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌ

์ฒญํฌ๋ฅผ ์˜ฅํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ฒญํฌ ๋‚ด์˜ ๋ธ”๋ก ๋ฐ์ดํ„ฐ ์—ญ์‹œ ์˜ฅํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌ

์ฒญํฌ ๊ตฌ๋ถ„ ์—†์ด ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์˜ฅํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌ


์˜ฅํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๋น ๋ฅธ ์†๋„๋กœ lod๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ• ๊ฑฐ๋ผ๋ฉด, ๋ธ”๋ก ๋ฐ์ดํ„ฐ ์—ญ์‹œ ์˜ฅํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ๋จ.

๊ทธ๋Ÿฌ์ง€ ์•Š๊ณ , ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ์“ธ๊ฑฐ๋ฉด ๊ตณ์ด ๋ธ”๋ก๋ฐ์ดํ„ฐ๋ฅผ ์˜ฅํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๋Š” ์—†์Œ.


์ฒญํฌ๋ฅผ ์˜ฅํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๊ฑด, LOD์—ย ๋„ˆ๋ฌด๋‚˜๋„ ์ ํ•ฉํ•จ.

ํŠนํžˆ, ์˜ฅํŠธ๋ฆฌ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ์›”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์˜ฅํŠธ๋ฆฌ ํ•˜๋‚˜์— ์ฒญํฌ 2^n,2^n,2^n๊ฐœ์”ฉ ํ• ๋‹นํ•ด๋†“๋Š” ๊ตฌ์กฐ.(๋‚˜๋Š” 32x32x32)


ํ”Œ๋ ˆ์ด์–ด์™€์˜ ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ์„œ ์˜ฅํŠธ๋ฆฌ๋ฅผ ๋ถ„ํ• ์‹œ์ผœ์„œ, ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ๊ณต๊ฐ„์ด ๋งŽ์ด ๋ถ„ํ• ๋˜์–ด์žˆ๊ณ , ๋ฉ€๋ฆฌ ์žˆ์„์ˆ˜๋ก ๊ณต๊ฐ„์ด ํ•ฉ์ณ์ ธ์žˆ์Œ.


๊ณต๊ฐ„์„ ๋ถ„ํ• ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€, ๊ทธ๋ƒฅ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ง€ ์ƒ๊ฐ๋งŒ ํ•ด๋’€๋Š”๋ฐ,ย ์ตœ๋Œ€ lod๋ ˆ๋ฒจ์„ 5๋กœ ๋‘๋ฉด,

lod5 ๋…ธ๋“œ๋ฅผ ์ˆœํšŒ, ์ด ๋…ธ๋“œ์˜ lod๊ฐ€ 5๋ ˆ๋ฒจ์ด์—ฌ์•ผ ํ•˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ๊ทธ ๋ฐ‘์œผ๋กœ ๋ถ„ํ• ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊ตฌํ•จ.

๋ ˆ๋ฒจ5์—ฌ์•ผ ํ•œ๋‹ค๋ฉด, ์ž์‹๋…ธ๋“œ๊ฐ€ ์žˆ์„ ๋•Œ ์ž์‹๋…ธ๋“œ ์ „๋ถ€ ์ œ๊ฑฐ.

๋ถ„ํ• ๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด ์ž์‹ ์ด ๋‹จ๋ง๋…ธ๋“œ์˜€๋‹ค๋ฉด, ๋…ธ๋“œ ๋ฐ‘์— lod4๋ ˆ๋ฒจ 8๊ฐœ๋ฅผ ์ƒ์„ฑ์‹œ์ผœ์คŒ.

๊ทธ ๋‹ค์Œ์€ ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ lod4๋ ˆ๋ฒจ์„ ํฌํ•จํ•œ lod4 ๋…ธ๋“œ ์ „์ฒด๋ฅผ ์ˆœํšŒ, ์ด ๋…ธ๋“œ๊ฐ€ lod4์—ฌ์•ผ ํ•˜๋Š”์ง€, ๋ถ„ํ• ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊ตฌํ•จ.

๋ฐ˜๋ณต.


์ตœ๋Œ€ lod๋ถ€ํ„ฐ ๋‚ด๋ ค์˜ค๊ธฐ ๋•Œ๋ฌธ์—, lod4 8๊ฐœ๊ฐ€ lod5๋กœ ํ•ฉ์ณ์ ธ์•ผ ํ•˜๋Š”์ง€๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋จ.ย 

ํ•ด๋‹น ์ƒํ™ฉ์€, lod5์—์„œ lod4์˜ ์ž์‹ 8๊ฐœ๋ฅผ ์ „๋ถ€ ์ œ๊ฑฐํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌ ๋จ.



์˜ฅํŠธ๋ฆฌ์˜ ๋‹จ๋ง๋…ธ๋“œ๋งŒย ํ™œ์„ฑํ™” ๋ฉ”์‰ฌ๋กœ ๋‘”๋‹ค๋ฉด ๋งค์šฐ ํšจ์œจ์ ์ž„.

์ฒญํฌ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ๋ฉ”์‰ฌ๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ,ย 

๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ์ตœ๋Œ€ 32x32x32๊ฐœ์˜ ์ฒญํฌ๋ฅผ ํ•˜๋‚˜์˜ ๋ฉ”์‰ฌ๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์—, ๋กœ๋“œ๊ฑฐ๋ฆฌ๊ฐ€ ๊ธธ์–ด์ ธ๋„ ๋ฉ”์‰ฌ๊ฐ€ ํฌ๊ฒŒ ๋Š˜์ง€ ์•Š์Œ.


lod๋ ˆ๋ฒจ์ด ๋†’์„์ˆ˜๋ก ์˜ฅํŠธ๋ฆฌ์—์„œ ์ƒ์œ„ ๋…ธ๋“œ๋ผ์„œ ๋ฒ”์œ„๊ฐ€ ๋„“์Œ.

๋””ํ…Œ์ผ์ด 2x2x2๋ฐฐ ๋–จ์–ด์ง„๋‹ค๋ฉด, ๋ฉ”์‰ฌ์˜ ํฌ๊ธฐ๊ฐ€ 2x2x2๋ฐฐ ์ปค์ง.ย 

๋ชจ๋“  ๋ฉ”์‰ฌ์˜ ๋ฉ”๋ชจ๋ฆฌ์ƒย ํฌ๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ๊ท ์ผํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์•ˆ์ •์ ์ž„.


lod๋ ˆ๋ฒจ์ด 0์ด๋ฉด, 32x32x32๋ฒ”์œ„๋ฅผ 1x1x1๋ธ”๋ก๋งˆ๋‹ค ๊ณ„์‚ฐํ•˜๊ณ ,

lod๋ ˆ๋ฒจ์ด 1์ด๋ฉด, 64x64x64๋ฒ”์œ„๋ฅผ 2x2x2๋ธ”๋ก๋งˆ๋‹ค ๊ณ„์‚ฐํ•จ.




์˜ฅํŠธ๋ฆฌ๋กœ ์ฒญํฌ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ, ์›”๋“œ๊ฐ€ ๋ฌดํ•œํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ •๋ณด๊ฐ€ ๋ณ„๋กœ ์—†์–ด์„œ ๊ณ ๋ฏผํ•ด๋ดค์Œ.

๋‚ด๊ฐ€ ํ•  ๋ฐฉ์‹์ฒ˜๋Ÿผ, ๋งŽ์€ ์ฒญํฌ๋ฅผ ํ•ฉ์ณ๋‘” ์˜ฅํŠธ๋ฆฌ๋ฅผ ๊ธฐ์กด ์ฒญํฌ ๊ด€๋ฆฌํ•˜๋“ฏ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ , ์•„๋‹ˆ๋ฉด ์˜ฅํŠธ๋ฆฌ๋ฅผ ์กฐ์ •์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Œ.

ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์˜ฅํŠธ๋ฆฌ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด, ํ•ด๋‹น ๋ฐฉํ–ฅ์œผ๋กœ ๋ฃจํŠธ๋…ธ๋“œ ์œ„์— ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜ ๋‘ฌ์„œ ์˜ฅํŠธ๋ฆฌ๋ฅผ ํ™•์žฅ์‹œํ‚ค๊ณ ,ย 

ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ๋‹นํ•œ ๋ฒ”์œ„์— ๋“ค์–ด์˜ค๋ฉด, ๋‹ค์‹œ ๋ฃจํŠธ๋…ธ๋“œ๋ฅผ ์—†์• ์„œ ์ถ•์†Œ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•.



์˜ฅํŠธ๋ฆฌ๋กœ ๊ณต๊ฐ„์„ ๋‚˜๋ˆด๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ๊ณต๊ฐ„์„ ์ˆœํšŒํ•˜๋ฉด์„œ lod์ˆ˜์ค€์„ ์—…๋ฐ์ดํŠธํ•ด๋„ ํฌ๊ฒŒ ๋ฌด๋ฆฌ๊ฐ€ ๊ฐ€์ง€ ์•Š์Œ.

๋˜ํ•œ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์—, ๊ฑฐ๋ฆฌ๋ฅผ ๋”์šฑ ๋Š˜๋ฆฌ๊ธฐ๊ฐ€ ์‰ฌ์›Œ์ง.


์—ฌ๊ธฐ์„œ ์กฐ๊ธˆ ๋” ์‘์šฉํ•œ๋‹ค๋ฉด, ํ”Œ๋ ˆ์ด์–ด ์ฃผ๋ณ€๋งŒ lod์ˆ˜์ค€์„ 0์œผ๋กœ ๋งž์ถ”๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ,ย 

ํŠน์ • ๊ฑด๋ฌผ ๋˜๋Š” npc๊ฐ€ ์กด์žฌํ•˜๋Š”๊ณณ์€ ๊ฐ•์ œ๋กœ lod์ˆ˜์ค€์„ ๋‚ฎ์ถฐ๋ฒ„๋ ค์„œ ๋ฉ€๋ฆฌ์—์„œ๋„ ์ œ๋Œ€๋กœ ๋ Œ๋”๋ง ๋˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ.


์ฐธ๊ณ ๋กœ ์ด๊ฑด ๋ธ”๋กํ˜• ๋ณต์…€์—๋งŒ ์ ์šฉ๋˜๋Š”๊ฒŒ ์•„๋‹˜.


๋‚ด๊ฐ€ ๊ณ ๋ ค์ค‘์ธ๊ฒŒ ์žˆ๋‹ค๋ฉด dual contouring ์•Œ๊ณ ๋ฆฌ์ฆ˜.

์ด ๋ฐฉ๋ฒ•์€ ๋ถ€๋“œ๋Ÿฌ์šด ์ง€ํ˜•์„ ํ‘œํ˜„ํ•˜๋ฉด์„œ ๋ธ”๋ก ์—ญ์‹œ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•จ. ๋Œ€์‹  ์–ด๋ ต๋‹ค๊ณ  ์†Œ๋ฌธ๋‚จ.


์—ฌ๊ธฐ ์„ค๋ช… ์ž˜ํ•ด๋‘ .

https://web.archive.org/web/20160305101254/https://upvoid.com/devblog/2013/05/terrain-engine-part-1-dual-contouring/




๋งŒ๋“ค ๊ฒŒ์ž„์˜ ์„ค๊ณ„๋ฅผ ํ•˜๋Š” ์ค‘์ž„.

ํ•œํ•™๊ธฐ ํœดํ•™ํ•˜๊ณ  ๊ณต์ต๊ฐˆ๊ฑฐ๋ผ ์‹œ๊ฐ„ ๋งŽ์„ ๋“ฏ. ๊พธ์ค€ํžˆ ํ•ด์•ผ์ง€

๊พธ์ค€ํžˆ ์˜ค๋žซ๋™์•ˆ ํ•˜๋ฉด ์•„๋ฌด๋ฆฌ ์–ด๋ ค์›Œ๋„ ์–ด๋–ป๊ฒŒ๋“  ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ


์˜ฌํ•ด ์ง„์งœ ์—ด์‹ฌํžˆ ์‚ฐ๊ฒƒ ๊ฐ™์Œ. ์ผ๋…„ ์ค‘ ์ตœ์†Œ 9~10๊ฐœ์›”๋™์•ˆ ์‰ฌ์ง€์•Š๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋งŒ ํ•œ ๋“ฏ.

๋‹ค๋งŒ ๋’ค๋กœ ๊ฐˆ์ˆ˜๋ก ํˆด์„ ๋‹ค๋ฃจ๊ธฐ๋ณด๋‹จ ํ•˜๋ฃจ์ข…์ผ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ์•ˆ์—์„œ๋งŒ ๋™๋™๊ฑฐ๋ ธ๋˜๊ฒŒ ์‚ด์ง ๊ฑธ๋ฆผ.