32x32x32 ํฌ๊ธฐ์ ์ฅํธ๋ฆฌ๋ก ๋ง๋ ๋ฉ์ฌ
64x64x64 ์ฅํธ๋ฆฌ์์ LoD1๋ก 2x2x2๋ฅผ ํ๋์ ๋ณต์ ๋ก ์ผ์ ๋ง๋ ๋ฉ์ฌ
https://github.com/nickgildea/DualContouringSample/blob/master/DualContouringSample/octree.cpp
์ด๊ฒ ์ธํฐ๋ท์ ์กด์ฌํ๋ ์ฅํธ๋ฆฌ ํํ์ ๋ณต์ ๋ฐ์ดํฐ์์ ๋์ผ ์ปจํฌ์ด๋ง ๋ฉ์ฌ๋ฅผ ๋ง๋๋ ์ฝ๋์.
์ฅํธ๋ฆฌ์ ์ ๋ณด๊ฐ ์ ๋ถ ๋ค์ด์๋ ์ํฉ์์ ContourCellProc์ ์คํ์ํค๋ฉด ์ฌ๊ท์ ์ผ๋ก ์ฅํธ๋ฆฌ๋ฅผ ๋๋ฉด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ชจ์๋ฆฌ๋ฅผ ํ๊ณ ์ง๋๊ฐ.
์ด๊ฑธ ๋ด๊ฐ ์ง์ ๊ตฌํํด์ผ ๊ณ์ ์งํ ํ ์ ์๋ ์์ ๊ฐ์ด ๋์ฌ ๊ฒ ๊ฐ์์.
๊ทธ๋ฌ๊ธฐ ์ํด์ ์ดํดํด์ผ ํ๋๋ฐ, ์กฐ๊ธ ๊ณ ์ํจ.
์ฐ์ ContourCellProc, ContourFaceProc์ ๊ฒฝ์ฐ์๋, ์ธ๊ณฝ์ ์ ์กด์ฌํ๋ ๋ชจ์๋ฆฌ๋ ๋ฌด์ํ๊ณ , ๋ด๋ถ์ ๋ค์ด์๋ ๋ชจ์๋ฆฌ๋ง ๊ตฌํ๋ ํจ์์.
ContourCellProc์ ๋ ธ๋ nxnxnํฌ๊ธฐ ๋ด๋ถ์ ์กด์ฌํ๋ ๋ชจ์๋ฆฌ๋ฅผ ๊ตฌํ๊ณ ,
ContourFaceProc์ ๋ ธ๋์ ํ์ชฝ ๋ฉด nxn ๋ด๋ถ์ ์กด์ฌํ๋ ๋ชจ์๋ฆฌ๋ฅผ ๊ตฌํจ.
๋ง์ง๋ง์ผ๋ก ContourEdgeProc์ ๋ชจ์๋ฆฌ ํ๋ ์์ ์กด์ฌํ๋ ๋ชจ์๋ฆฌ๋ฅผ ๊ตฌํจ. (๋ ธ๋๊ฐ ๋ถํ ๋๋ฉด ๋ชจ์๋ฆฌ ํ๋์์ 2๊ฐ์ ์์ ๋ชจ์๋ฆฌ๊ฐ ๋์ด)
ContourCellProc์ด ์ต์ด์ ๋ ธ๋๋ฅผ ๋ฐ์์, 8๊ฐ์ ์์์๊ฒ์ ContourCellProc์ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํด์ค.
์์์๊ฒ์ ContourCellProc์ด ์ ๋ถ ๋์๋ค๊ณ ๊ฐ์ ํ๋ฉด,
๋จ์ ๋ชจ์๋ฆฌ๋ ํด๋น ์์ 8๊ฐ ์ฌ์ด์ ์กด์ฌํ๋ ๋ฉด 12๊ฐ, ๋ชจ์๋ฆฌ 6๊ฐ๊ฐ ์ ๋ถ์.
๋ฉด 12๊ฐ์์ ContourFaceProc์ ํธ์ถํด์ฃผ๊ณ , ๋ชจ์๋ฆฌ 6๊ฐ์์ ContourEdgeProc์ ํธ์ถํด์ค.
ContourFaceProc์ ๋ฉด์ ๋ฐ๋๋ฐ, ์ค์ ๋ก ๋ฐ๋ ๋ฐ์ดํฐ๋ ํด๋น ๋ฉด์ ๊ณต์ ํ๋ ๋ ๋ ธ๋์, ๋ฉด์ ๋ฐฉํฅ(x/y/z)์.
ContourFaceProc์ ๋ฐ์ ๋ ธ๋๊ฐ ๋ถํ ๋์ด์๋ค๋ฉด, ํด๋น ๋ฉด์์ ๋์ฌ ์ ์๋ 4๊ฐ์ ๋ฉด์์ ๋ค์ ์ฌ๊ท์ ์ผ๋ก ContourFaceProc์ ํธ์ถํด์ค
๊ทธ๋ฆฌ๊ณ ํด๋น ๋ฉด์์ ๋์ฌ ์ ์๋ ๋ชจ์๋ฆฌ 4๊ฐ์์ ContourEdgeProc์ ํธ์ถํด์ค.
ContourEdgeProc์ ๋ชจ์๋ฆฌ๋ฅผ ๋ฐ๋๋ฐ, ์ค์ ๋ก ๋ฐ๋ ๋ฐ์ดํฐ๋ ํด๋น ๋ชจ์๋ฆฌ๋ฅผ ๊ณต์ ํ๋ 4๊ฐ์ ๋ ธ๋์, ๋ชจ์๋ฆฌ์ ๋ฐฉํฅ์.
๋ฐ์ 4๊ฐ์ ๋ ธ๋ ์ค ๋ถํ ๋ ๋ ธ๋๊ฐ ํ๋๋ผ๋ ์๋ค๋ฉด, ๋ชจ์๋ฆฌ๋ฅผ 2๊ฐ๋ก ๋ถํ ํด์ ContourEdgeProc์ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํด์ค.
๊ฐ๋ ์ ์ด๋ ต์ง ์์๋ฐ, ๊ฒฝ์ฐ๋ฅผ ๊ตฌํด๋๋๊ฒ ์์ฒญ ํท๊ฐ๋ฆผ.
์๋ฅผ๋ค์ด x๋ฐฉํฅ์ผ๋ก ๋ ธ๋1์ ๋ ธ๋2๊ฐ ๋ง๋์ ๋ฉด์ด ์๊ฒผ์ ๋,
๋ ธ๋1์ ์์๋ ธ๋a๊ณผ ๋ ธ๋2์ ์์๋ ธ๋b ์ฌ์ด์์ ๋ฉด์ด ๋ฐ์ํ๊ณ ,
๋ ธ๋1์ ์์๋ ธ๋c๊ณผ ๋ ธ๋2์ ์์๋ ธ๋d ์ฌ์ด์์ ๋ฉด์ด ๋ฐ์ํ๊ณ ,
๋ ธ๋1์ ์์๋ ธ๋e๊ณผ ๋ ธ๋2์ ์์๋ ธ๋f ์ฌ์ด์์ ๋ฉด์ด ๋ฐ์ํ๊ณ ,
๋ ธ๋1์ ์์๋ ธ๋g๊ณผ ๋ ธ๋2์ ์์๋ ธ๋h ์ฌ์ด์์ ๋ฉด์ด ๋ฐ์ํ๋ ๋ฑ์ ์ซ์๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํด๋ฌ์ผ ํจ.
์๋๋ฉด ํญ์ ์ ํด์ง ๊ฐ๋ค์ด๋๊น. ๊ทธ๊ฒ ๊นํ ์ฝ๋ ์์ ์๋ ๋ฐ์ดํฐ ํ ์ด๋ธ์.
ํ๋์ ์ฅํธ๋ฆฌ ๊ตฌ์กฐ ์ง๋ค๊ฐ, ๋์ ํ ์ฅํธ๋ฆฌ ์์์ ๋ฉ์ฌ๋ฅผ ๋ง๋ค ์์ ์ด ์์ด์ ๋ฏธ๋ฃจ๋ค๊ฐ, ์ค๋ ๋ ๋ฑ ๊ฐ๊ณ ๊ตฌํํ์.
์์งํ ์ ๊ธฐ ์์ ๋ฐ์ดํฐํ ์ด๋ธ์ ์ดํดํ๋๊ฑด ๋ง๋ ์๋๊ณ , ๋ด๊ฐ ์ง์ ๊ตฌํํ๊ธฐ๋ก ํ์.
์ ์ฝ๋๋ ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ ธ๋ ์ธ๋ฑ์ค ์์๊ฐ ๋ฌ๋ผ์ ์ ๋ถ ๋จธ๋ฆฟ์์ ๊ทธ๋ ค๊ฐ๋ฉฐ ์ ์ฉํจ.
์ด์ ์ด ๋ฐฉ๋ฒ ๋ง๊ณ ์๋ก์ด ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ์๋ฆฌ๋ฅผ ์ํํด๋ณผ ์์ ์.
๋ชจ๋ ๋ชจ์๋ฆฌ๋ฅผ ์ํํ ํ์ ์์ด, ํ์ชฝ ๊ผญ์ง์ ์ด ๊ณต๊ธฐ์ด๊ณ , ๋ฐ๋์ชฝ ๊ผญ์ง์ ์ด ๋ ์ผ ๋, ๊ทธ ๋ชจ์๋ฆฌ๋ค๋ง ์ํํ๋ฉด ๋๋๋ฐ, ์ด ๋ชจ์๋ฆฌ๋ค์,
์ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฑ์๋ฃ์ผ๋ฉด์ ๊ตฌํด๋ ์๊ฐ ์์. ์ด ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์๊ฒ ๊ฐ์์ ๋ณด๋ฅํ์๋๋ฐ, ์ด๋ป๊ฒ ํ๋ฉด ๋ ์ง ๋ฐฉํฅ์ด ๋ณด์.
์ผ๋จ ํ์ฌ ๊ตฌํํ ๋ฐฉ์๋ 7ms๋ก ์ถฉ๋ถํ ๋น ๋ฅด๊ธด ํ๋ฐ ๋ญ๊ฐ ๋ ๋น ๋ฅผ์ง๋ ๋ชจ๋ฅด๊ฒ ์.
์ ๋ณด๊ฐ ๋๋ฌด ํฌ๋ฐํด์ ํ๋ฌ.
์ ๋ณต์ ์๋ฌด๋ ์ํ์ง
ใทใท ๊ฒ์ฒ์ฌ - dc App
ํ๋ก๊ฒ์ด์ถ