๊ฑ ์ผ๊ธฐ์ฅ์
๊ฒฐ๊ตญ GreedyMeshing์ ์งํํ ๋
์ธ์ ๋ณต์ ์ด ์๊ธฐ์ ๋ค๋ฅด๋ค๋ฉด ๋ณํฉ์ ํ์ง ์๋๋ฐ,
์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ์ ํน์ฑ ๋๋ฌธ์ ์๊ธฐ๋ ๋ฌธ์ ๊ฐ ์์์
๋ง์ธํฌ๋ํํธ์์๋ ๋ณต์ ์ ์ ๋น์ธํธ๋ ๋น์ ๋ฉ์ฌ์ ์ง์ ๊ตฌ์๋ฃ๋๋ฐ ์ด๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํจ
๊ทผ๋ฐ GreedyMeshing์ ์ฌ์ฉํ๋ฉด
1. ๋น ์๋ ๋ฉ์ฌ ๋ง๋ค๊ธฐ
2. ๋น ์ ๋ณด๊ฐ ์์ผ๋ฉด ๋น ์ ๋ณด์ ํจ๊ป ๋ฉ์ฌ ๋ง๋ค๊ธฐ
๋ก '๋๋ฒ' ๋ฉ์ฌ๋ฅผ ๋ง๋ค๊ฒ๋จ
๊ทผ๋ฐ, ๊ทธ๋ฅ ์๋ณด์ด๋๋ฉด ์ปฌ๋งํ๋ ๋ฐฉ๋ฒ์ ์ฐ๋ฉด
1. ๋น ์๋ ๋ฉ์ฌ ๋ง๋ค๊ธฐ
2. ๋ฉ์ฌ ๋ฒํ ์ค๋ ์ธ๋ฑ์ค๋ฅผ ๊ทธ๋๋ก ์ด ์ํ๋ก ๊ทธ๋ฅ ๋ฒํ ์ค ์นผ๋ผ๋ง ๋ฐ๊พธ๊ธฐ
๊ฐ ๊ฐ๋ฅํด์ ๋ฉ์ฌ๋ฅผ 'ํ๋ฒ'๋ง ๋ง๋ค์ด๋๋จ
Greedy Meshing์ ๋ฉ์ฌ์ ์ผ๊ฐํ ์ซ์๋ฅผ ๋ฌด์ฒ ๋ง์ด ์ค์ฌ์ฃผ์ง๋ง ์ ์ฝ์ด ๋ง๋ค๋๊ฑธ ์๊ฒ๋๋ค.
๋
Greedy Meshing ๊ด๋ จํด์ ์ฒ์ ๋ดค์๋ ๋ค์๋ ๊ถ๊ธ์ฆ์ธ๋ฐ, ์ด๊ฑฐ ํ ์ค์ณ๋ ์ด๋ป๊ฒ ์ ํ๋์?
'ํํํํ๋ฌผํ'์ ํํ๋ก ์งํ์ด ๋ฐฐ์น๋์ด ์๋ค๋ฉด ๊ทธ๋ฆฌ๋ ๋ฉ์ฑ์ผ๋ก ํด์ฃผ๋ฉด ํํํํ/๋ฌผ/ํ๋ก ๋๋์ด์ ์ผ๊ฐํ 2๊ฐ์ฉ ์ด 6๊ฐ๋ฉด ํด๊ฒฐ์ด ๋๊ฒ ์ง๋ง, ํ ์ค์ณ๋ ์ด๋ป๊ฒ ์ ํ์ฃ ? ํํํํ์ ํ๋๋ก ํฉ์น๋ฉด ๊ธฐ๋ค๋ ํ ํ ์ค์ณ๊ฐ ์ ํ์ง๋๊ฒ ์๋์ง
๊ณ ๊ฑด ์ฌ์ UV๋ฅผ ๊ทธ๋งํผ ๋๋ฆฌ๋ฉด ๋ผ (0,0) ~ (4,1) ์ด๋ฐ์์ผ๋ก ๊ทธ๋ค์ Texture๋ฅผ Repeat์ธ๊ฐ๋ก ์ํ๋งํ๋ฉด ๋จ
Texture Atlas ์ฌ์ฉํ๋๊ฑฐ๋ฉด ์์ด๋์์๋ ๋ง์ ธ์ค์ผํด์ ์กฐ๊ธ ๋ ๊น๋ค๋กญ๊ธด ํ๋ฐ, ๊ทธ๋ฅ Offset์ผ๋ก ๋ ธ๋๊ฑฐ๋ผ ๋ง์ด ์ด๋ ต์ง๋ ์์
๊ทธ๋ฌ๋๊น ๋ ์ํ๋ผ์ค์์ ์ฐ๋๊ฑธ ๋ฌผ์ด๋ณธ ๊ฑฐ์์. ใ ใ ์ํ๋ผ์ค์์ ์ฐ๋๊ฑฐ๋ฉด uv ์ขํ๋ฅผ ๋ฐ์์ gpu์๊ฒ ๋ณด๋ด์ค์ผ ํ ํ ๋ฐ ์ด์ฐํ๋ ๊ถ๊ธํด์. ์ด๊ฑธ ๋ฒํ ์ค ์์ด๋์์ ๋ฐ์ ๊ผญ์ง์ ์ ๋์ด๋ฅผ ๊ณ์ฐํ ๋ค์์, ๋์ด ๋งํผ uv๋ฅผ ์ฌ๋ฌ๋ฒ ๋ฐ์ค๋๋ก ํด์ค์ผ ํ๋๊ฑด์ง
๊ธ๊ณ ๋ณด๋ ๋ด๊ฐ ์์ ์ ๋ง๋ค์๋ ์ ์ฌ ๋ณต์ ์ ๋ชจ๋ ๋ฉด์ด ์ฌ๊ฐํ์ด๋ผ๊ณ ํ ์๋ ์์์ผ๋ ์ด๊ฒ๋ ์ ๋จนํ๊ฒ ๊ตฐ. ์๋ถ๋ .
๋ง์นญํ๋ธ๊ฐ์๊ฑฐ ๋๋ฆฐ ๋ณต์ ์ ์ ๋ฐ ์ต์ ํ๊ฐ ํ๋ฌ ๊ทธ๋ฅ LOD๊ฐ์๊ฑธ๋ก ํด์๋ ๋ฎ๊ฒ ๋ฝ๋์๋ฐ์ gpu์ ๋ณด๋ด๋๊ฑฐ๋ Unity ๊ธฐ์ค์ผ๋ก ์๋ฅผ๋ค๋ฉด ์ ๋ํฐ๋ c#์ฝ๋๋ก ๋งค์ฌ๋ฅผ ์์ฑํ ๋ float4๋ฅผ ์ ๋ฌํ ์ ์์ ๊ทธ๋ผ (x, y, offset_x, offset_y) ๋ก ๋ณด๋ด์ฃผ๋ฉด ์์ด๋์์ ์ฌ์ฉ๊ฐ๋ฅ
์ธ๋ฆฌ์ผ๋ก ๊ตฌํํ ๋๋ ๊ฑ UV1์ ์ค์ผ์ผ๋งํ uv ๋ณด๋ด์ฃผ๊ณ UV2์๋ค๊ฐ offset๊ฐ ๋ฃ์ด์คฌ์
์ํ. ์ฐพ์๋ณด๋ ์ ๋ํฐ์์ setuvs์์ float4 ๋ฐฐ์ด๋ก ๋๊ธธ ์๊ฐ ์๊ตฌ๋. ์ง์์ด ๋์๋ค. ์ธ์ ๋ mesh.uvs์ ์ง์ vector2[]์ ๊ผฌ๋ผ๋ฐ์์๊ธฐ ๋๋ฌธ์ ์ ํ ๋ชฐ๋๋ค.