๊ฒ์ ๊ฐ๋ฐ์ ์งํํ ๋, ์ฒ์์๋ ๋ณ ๋ฌธ์ ์์ด ์ ์งํ๋๋ค๊ฐ ๋ง์ง๋ง์ ํ ์คํธ๋ฅผ ํ ๋ ๋ฌธ์ ๊ฐ ๋ง์ด ๋ฐ์ํ๋ค๊ณ ํ๋ค.
๊ทธ ์ค ํ๋๊ฐ ๋ฐ๋ก ์ต์ ํ ๋ฌธ์ ์ด๋ค. ๋ณดํต ์ฑ๋ฅ์ด ์ข์ ์ปดํจํฐ์์ ์ ๋ํฐ๋ฅผ ํตํด ๊ฐ๋ฐ์ ์งํํ๊ธฐ ๋๋ฌธ์ ํ๋ ์ ๋๋์ด๋ ์๋ ์ธก๋ฉด์์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ ์์์ฐจ๋ฆฌ๊ธฐ๋ ์ด๋ ต๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๋์ค์ ๋ฒ ํ ํ ์คํธ ๊ธฐ๊ฐ๋์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ์ปดํจํฐ๋ ๋ชจ๋ฐ์ผ์์ ๊ตฌ๋ํ์ ๋ ๋ฌธ์ ๊ฐ ์์์ ๊นจ๋ซ๊ฒ ๋๋ค๊ณ ํ๋ค.
๊ทธ๋์ ๊ทธ ์ค, ๊ทธ๋ํฝ์ ์ํด ๋ฐ์ํ๋ ํ๋ ์ ๋๋์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ดค๋ค.
๊ทธ๋ํฝ ์ต์ ํ๋ฅผ ํ๋ ๊ธฐ๋ฒ๋ค
1. 3D ๋ชจ๋ธ๋ง์ ํด๋ฆฌ๊ณค(Polygon) ๊ฐ์๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ (๋์์ธ ์์ญ)
๋์์ด๋ ๋ถ๋ค์ด 3D ๋ชจ๋ธ๋ง ์์ ์ ํ ๋, ํด๋ฆฌ๊ณค(Polygon)์ ํตํด 3D ๋ชจ๋ธ ๊ฐ์ฒด์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ค.
์ด ํด๋ฆฌ๊ณค ๊ฐ์์ ๋ฐ๋ผ ๋ฌผ์ฒด ํ๋ฉด ์ฌ์ง์ ์ธ๋ฐํ ์ ๋๋ ์ ๋ฐ์ ์ธ ํ๋ฆฌํฐ๊ฐ ๊ฒฐ์ ๋๋ค.
ํ๋, ํด๋ฆฌ๊ณค ๊ฐ์๊ฐ ๋ง๋ค๋ ๊ฒ์ ๊ทธ๋งํผ GPU๊ฐ ์ฐ์ฐํ ์์ด ๋ง์์ ๋ปํ๊ณ ํ๊ณ์น๋ฅผ ๋์ด์๋ฉด ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์๋ค. ๊ทธ๋์, ๊ฒ์ ์งํ์ ํฌ๊ฒ ์๊ด์๋ ์ค๋ธ์ ํธ (Ex. ๋ฐฐ๊ฒฝ์ผ๋ก ์๋ ์ฑ ์์ ์กด์ฌํ๋ ์ฐํ ๋ฑ๊ณผ ๊ฐ์ ํ๋ ์ด์ด์๊ฒ ์ ๋์ ๋์ง ์๋ ์์ ๋ฌผ์ฒด)๋ ๋ก์ฐ ํด๋ฆฌ๊ณค(Low Polygon)์ผ๋ก ๋ง๋ค์ด์ ์ต์ ํ๋ฅผ ํ๊ธฐ๋ ํ๋ค.
ํ์ง๋ง, ๋์์ด๋์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ก ์ธ์ฐ๊ฒ ๋ ์ ์๋ ๋ถ๋ถ์ด๋ผ ์กฐ์ฌ์ค๋ฝ๊ฒ ์ ๊ทผ์ ํด์ผ ํ๋ค๊ณ ํ๋ค.
2. ์นด๋ฉ๋ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ๋ ๋๋ง ์ฌ๋ถ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ (Clipping)
์นด๋ฉ๋ผ ์ปดํฌ๋ํธ ์์ฑ์ ๋ณด๋ฉด, Clipping Planes๊ฐ ์๋ค. ์นด๋ฉ๋ผ๋ก๋ถํฐ ๊ฑฐ๋ฆฌ๊ฐ Near๋ณด๋ค ๊ฐ๊น์ด ์๊ณ , Far๋ณด๋ค ๋ฉ๋ฆฌ ์๋ ์ค๋ธ์ ํธ๋ ๋ ๋๋งํ์ง ์๋ ์ต์ ์ด๋ค.
๋ง์ธํฌ๋ํํธ ํ๊ฒฝ์ค์ ์์ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ๋ ๋๋ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์ต์ ์ด ์ด ๋ถ๋ถ์ ์กฐ์ ํ๋ ๊ฑฐ๊ฒ ๊ตฌ๋ ์๊ฐ์ด ๋ค์๋ค.
๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ๋ ๋๋ง์ ํ์ง ์์์ผ๋ก์จ, ์ต์ ํ๋ฅผ ํ ์๋ ์๋ค.
3. Occlusion Culling
๋ค๋ฅธ ์ค๋ธ์ ํธ์ ๊ฐ๋ ค์ ธ, ์นด๋ฉ๋ผ์ ๋ณด์ด์ง ์๋ ์ค๋ธ์ ํธ๋ค์ ๋ ๋๋งํ์ง ์๋ ๋ฐฉ๋ฒ์ด๋ค.
์์ ๊ฐ์ ์ํฉ์ผ ๋, ๊ฐ๋ ค์ ธ์ ๋ณด์ด์ง ์๋ ๋ ธ๋์ ์ค๋ธ์ ํธ๊น์ง ์ ๋ถ ๋ ๋๋งํด์ฃผ๋ ๊ฒ์ ๋ฆฌ์์ค ๋ญ๋น์ด๋ฏ๋ก ์ด๋ด ๋ Occlusion Culling ๊ธฐ๋ฒ์ ํตํด ์ต์ ํ๋ฅผ ํ ์ ์๋ค. ์ด Occlusion Culling ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ธฐ ์ํด์ , ์นด๋ฉ๋ผ ์ปดํฌ๋ํธ์ Occlusion Culling ์์ฑ์ด ์ฒดํฌ๋์ด ์์ด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ , ๊ฐ๋ฆด ์ค๋ธ์ ํธ(Occluder)์ ๊ฐ๋ ค์ง ์ค๋ธ์ ํธ(Occludee)๋ฅผ ์ ํด์ค์ผ ํ๋ค.
1. ๊ฐ๋ฆด ์ค๋ธ์ ํธ์ ๊ฐ๋ ค์ง ์ค๋ธ์ ํธ ์ง์ ํด์ฃผ๊ธฐ
๋นจ๊ฐ์ ๋น๋ฉ ์ค๋ธ์ ํธ๋ ์นด๋ฉ๋ผ๋ก๋ถํฐ ๋ค์ ์๋ ๋ ธ๋์ ์ฃผํ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ๋ฆฌ๋ ์ค๋ธ์ ํธ๋ค. ๊ทธ๋์ ๋นจ๊ฐ์ ๋น๋ฉ ์ค๋ธ์ ํธ๋ค์ ์ ํํ๊ณ , Inspector ์ฐฝ์์ Static → Occluder Static์ผ๋ก ์ง์ ํด์ฃผ์๋ค.
2. ์ ๋ํฐ ์๋ํฐ Window → Rendering → Occlusion Culling ์ ํ
๊ทธ๋ฌ๋ฉด Inspector ์ฐฝ์์ Occlusion ํญ์ด ๋์จ๋ค. Bake ํญ์ ์ ํํด์ Bake๋ฅผ ํด์ค๋ค. ์ ์ ์์ ์ง์ ํ๋ Occluder์ Occludee์ ๋ํ ์ ๋ณด๋ค์ ์ ์ฅ์ ํ๋ ํ์๋ผ๊ณ ๋ณผ ์ ์๋ค.
Bake๋ฅผ ํ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด Scene์ด ๊ตฌ์ฑ๋๋ค. Visibility Lines๋ฅผ ์ฒดํฌํ๋ฉด, ์นด๋ฉ๋ผ ๋ ๋๋ง ์์ญ์ ์ด๋ก์ ์ ์ผ๋ก ๋ํ๋ด์ด ์ค๋ค.
3. ์นด๋ฉ๋ผ ๋ ๋๋ง ์์ญ์ ๋ฐ๊ฟ๋ณด๋ฉฐ ํ ์คํธํ๊ธฐ
์ข ๋ ์ ์ฒด์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด, Scene์ ์์์ ๋ด๋ ค๋ค๋ณด๊ฒ ํ๋ค. ํ ๋ฒ ์นด๋ฉ๋ผ๋ฅผ ์์ง์ฌ๋ณด๋ฉฐ ์ดํด๋ณด์.
Occlusion Culling ์ฌ์ฉ ์ ์ฃผ์์ฌํญ
ํ์ฌ ์ฌ(Scene)์์ Occlusion Culling์ ์ฌ์ฉํ๋ค๋ฉด, Scene ํด๋์ ํ์ฌ ์ฌ์ ๋ํ ํด๋๊ฐ ์์ฑ๋๊ณ , ๊ทธ ์์OcclusionCullingData ํ์ผ์ด ์๋ ์์ฑ๋๋ค.
Bake๋ฅผ ํ๋ฉด์ Occlusion Culling์ ํ์ํ ๋ฐ์ดํฐ๋ค์ ์ด ํ์ผ ์์ ์ ์ฅ์ ํด๋์ ๊ฒ์ด๋ค.
ํด๋น ํ์ผ์ด ๋ฐ๋์ ์์ด์ผ Occlusion Culling์ ์ ์ฉํ ์ ์๋ค. ํจ๋ถ๋ก ์ง์ฐ์ง ๋ง์!
์์ฝ
- ๊ทธ๋ํฝ ๋ ๋๋ง ์ต์ ํ ๋ฐฉ๋ฒ์๋ Low Polygon, Clipping Planes, Occlusion Culling ๋ฑ์ด ์๋ค.
- Low Polygon์ ๋์์ด๋๊ฐ 3D ๋ชจ๋ธ๋ง์ ํด๋ฆฌ๊ณค ๊ฐ์๋ฅผ ์ ๊ฒ ์ฌ์ฉํ์ฌ ์ต์ ํํ๋ ๊ธฐ๋ฒ์ด๋ค.
- Clipping Planes๋ ์นด๋ฉ๋ผ๋ก๋ถํฐ ์ค๋ธ์ ํธ๊น์ง์ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ๋ ๋๋ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ๋ฒ์ด๋ค.
- Occlusion Culling์ ์นด๋ฉ๋ผ ๋ ๋๋ง ์์ญ์ ์์ ๋๋ง ์ค๋ธ์ ํธ๋ฅผ ๋ ๋๋งํ๋ ๊ธฐ๋ฒ์ผ๋ก, ๋ฒฝ ๋ค์ ๊ฐ๋ ค์ง๋ ์ค๋ธ์ ํธ๊ฐ ๋ง๊ณ ์์ ์ด 1์ธ์นญ(FPS)์ธ ๊ฒ์์์ ์ ์ฉํ๊ฒ ์ฐ์ธ๋ค. (ํ๋ค์ด ๋ทฐ ์์ ์์๋ ๊ทธ๋ฆฌ ํจ์จ์ ์ด์ง ์์)