๊ณผ์ ํ๋ค๊ฐ ์ค๋๋ง์ ๋ค์ ์์ ํด๋ดค์ด
๋ณต์กํ๋ฐ ๋ด ๋จธ๋ฆฌ๋ ์ ๋ฆฌํ ๊ฒธ ์ ์ด๋ณด๋ ค๊ณ
๋ฐ ์ฌ์ง๋ค์ ์ ๋ถ ๋ค ์ ํํ ๋ฐ์ด์ด์ ๊ฒฝ๊ณ์ ์์์ ์ฐ์ ์คํฌ๋ฆฐ์ท.
๋ฐ์ด์ด๋ง๋ค ์ ๋ถ ๋ค๋ฅธ ๋ ธ์ด์ฆ๊ฐ์ ์ฌ์ฉํ๋๊ฒ ์น๊ณ ๊ฐ์ชฝ๊ฐ์ง?
2D๋ ธ์ด์ฆ์ 3D๋ ธ์ด์ฆ์ ํผํฉ์ธ๋ฐ, 3D๋ ์ฃผ๋ก ์งํ์์ฑ ์์ฒด์ ์ฐ์๊ณ , 2D๋ ๋ฐ์ด์ด ๋ฐ ์ถ๊ฐ ๋ณด์ ๊ฐ์ ๊ตฌํ๋๋ฐ ์ฐ์์ด.
์ฐ์ ๋ฐ์ด์ด์ 27๊ฐ๋ก ๋๋๋ ๋ฐฉ๋ฒ์ 3๊ฐ์ ๋ ธ์ด์ฆ ํจ์๋ฅผ ์ด์ฉํด์, ๊ฐ ๋ ธ์ด์ฆ ํจ์์ ๋ฒ์์ ์กฐํฉ์ ๋ฐ๋ผ ๋ฐ์ด์ด์ ๋๋ ์ฃผ๋ฉด ๋ผ.
๋ ธ์ด์ฆํจ์ A,B,C(2D๋ ธ์ด์ฆ)๊ฐ ์์ผ๋ฉด
A : 0.2, B 0.2, C 0.2 ๋ ํ์ง, A : 0.5, B 0.2, C 0.2 ๋ ์ค์, A : 0.5, B 0.5, C 0.8์ ์ฒ ,ย ์ด๋ฐ์์ผ๋ก.
๊ทธ๋ฐ๋ฐ ์ด๋ฌ๋ฉด ๋ฐ์ด์ด์ ๊ฒฝ๊ณ์ ์ด ๋๋ฌด ๋จ์กฐ๋ก์์, ์ฌ๊ธฐ์ ์ถ๊ฐ ๋ ธ์ด์ฆ๊ฐ์ ์ ์ฉํด์ย ๊ตด๊ณก์ง ๊ฒฝ๊ณ๋ฉด์ ๋ง๋ค์ด๋ดค๋๋ฐ ์๋ชป ์ ์ฉํ๊ฑด์ง ํฐ ํจ๊ณผ๋ ์๋ ๊ฒ ๊ฐ์
A ๋์ A + a, B ๋์ B + a, C ๋์ C + a๋ฅผ ์ฌ์ฉํ์ด.
์ฌ๊ธฐ์ ๋ด C ๋ ธ์ด์ฆ ๊ฐ์ ๋์ด๋ฅผ ๋ด๋นํ๋ ๋ ธ์ด์ฆ๊ฐ์ด์ผ.
๋ฐ์ด์ด์ด ๊ฒฐ์ ๋๋ ๊ธฐ์ค์ "๋์ด"๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์, ๋ฐ์ด์ด ์ฌ์ด์ ๋์ด์ฐจ์ด๋ฅผ ๊ตฌํํ๊ธฐ๊ฐ ์ฌ์.
์ฐ์ด๋ ๋ฐ๋ค๊ฐ ๊ฐ์ ๋์ด์ ์กด์ฌํ๋ฉด ๋ง์ด ์ด์ํ๊ฒ ์ง? ๊ทธ๋ฐ ๋ฌธ์ ์ ์ ํด๊ฒฐํด์ค ์ ์์ด.
์ด๊ฑธ ์ค๋ช ํ๊ธฐ ์ ์ 3D ๋ ธ์ด์ฆ ํจ์๋ก ์ํ๋ ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์งํ์ ์์ฑํ๋ ๋ฒ๋ถํฐ ์ค๋ช ํ ๊ฒ.
n์ 3D ๋ ธ์ด์ฆ ํจ์์์ ๋์จ ๊ฐ์ด๋ผ๊ณ ํ ๊ฒ. n์ -1~1์ฌ์ด์ ๊ฐ์ด์ผ.
value = n * Range + ๊ธฐ์ค๋์ด - ํ์ฌ ์ฒดํฌ์ค์ธ ๋ธ๋ก์ ๋์ด
value > 0์ธ ๊ฒฝ์ฐ์ ๋ธ๋ก ์ค์น, value <= 0์ธ ๊ฒฝ์ฐ์ ๊ณต๊ธฐ ์ค์น.
Range๋ฅผ 30์ผ๋ก ์ก์๋ณด์. n * Range๋ -30~30์ ๊ฐ์ด์ผ.
๊ธฐ์ค๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ ์ฒดํฌ์ค์ธ ๋ธ๋ก์ ๋์ด๊ฐ 30 ์ด์ ๋ฎ๋ค๋ฉด ๋ฌด์กฐ๊ฑด 0๋ณด๋ค ์ปค์ ธ์ ๋ธ๋ก์ ์ค์นํด.
(๊ธฐ์ค๋์ด - ์ฒดํฌ๋์ด >= 30)์ด ๋๋๊น ์ฌ๊ธฐ์ n*Range๋ฅผ ์๋ฌด๋ฆฌ ๋ํด๋ดค์ ์์๊ฐ ๋์์.
๋ง์ฐฌ๊ฐ์ง๋ก ์ฒดํฌ์ค์ธ ๋ธ๋ก์ ๋์ด๊ฐ 30 ์ด์ ๋๋ค๋ฉด ๋ฌด์กฐ๊ฑด 0๋ณด๋ค ์์์ ธ์ ๊ณต๊ธฐ๋ง ์ค์น๊ฐ ๋ผ.
๋ค์๋งํด ๊ธฐ์ค๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก +-30๋งํผ์ ๊ตด๊ณก์ย ์ง๋ ์งํ์ด ์์ฑ๋ผ.
๊ทธ๋ฐ๋ฐ ์ด๊ฒ ๋์ด ์๋์ผ. ์ด๋ ๊ฒ ๋ง๋ฌด๋ฆฌ ์ง์ผ๋ฉด, ๊ทน์ ์ธ ์งํ์ ๋ํ๋์ง ์์.ย
์๋๋ก ๋ด๋ ค๊ฐ์๋ก ๋ธ๋ก์ด ์ค์น๋ ํ๋ฅ ์ด ๋๊ณ , ์๋ก ์ฌ๋ผ๊ฐ์๋ก ๋ฎ์์ ธ์ 3D ๋ ธ์ด์ฆ์ ํน์ง์ ์ ๋๋ก ์ด๋ฆฌ๊ธฐ๊ฐ ํ๋ค์ด.
์ด๋ฐ ์งํ
ํ๋์ (x,z)์ขํ์์ y๊ฐ์ ๋ด๋ฆฌ๋ฉด์ ๋ธ๋ก์ ์ค์นํ๋์ง ์ฒดํฌํ๋ค๊ณ ์น ๋,
์์ ์ ์ด๋ ๊ณ์ฐ์์์ (์ฒดํฌํ๋ ๋ธ๋ก์ y๊ฐ)์ ์ต๋ํ ๊ธฐ์ค๋์ด์ ์ ์ฌํ๊ฒ ๋ณด์ ํด์ฃผ๋ฉด ๋ผ.
(์ฒดํฌํ๋ ๋ธ๋ก์ y๊ฐ)์ด ๊ธฐ์ค๋์ด์ ์ผ์นํ ๋ 3D๋ ธ์ด์ฆ ๋ณธ์ฐ์ ์งํ์ด ๊ตฌํ๋๊ฑฐ๋ .
์๋ฅผ ๋ค๋ฉด ๊ธฐ์ค๋์ด๊ฐ 50์ด๊ณ ์ฒดํฌํ๋ ๋์ด๊ฐ 60์ด๋ค, ์ด๋ฌ๋ฉด ์ฒดํฌํ๋ y๊ฐ์ ๋ค์ด๊ฐ๋ ๋ณ์๋ฅผ ๋์ถฉ 52์ ๋๋ก ๋ฃ์ด์ฃผ๋ฉด ๋๊ฒ ์ง.
์ด๋ฌ๋ฉด ์ต๋ํ ๋ง์ ๋ฒ์๊ฐ "๊ธฐ์ค๋์ด"์ ์ ์ฌํ๊ฒ ๋์ด ๋์ ๋ฒ์์ ๊ฑธ์ณ์ 3D๋ ธ์ด์ฆ ์งํ์ ์ํ์ ์ด๋ฆด์๊ฐ ์์ด.
์ด์ "๋์ด"๋ฅผ ๊ณ ๋ คํ ๋ฐ์ด์ด ์์ฑ์ ๋ํด์
๋์ด ๋ ธ์ด์ฆ ํจ์์ ๊ฐ์ด 1~2 ์ฌ์ด๋ฉด ๋ฐ๋ค, 2~3 ์ฌ์ด๋ฉด ์ฒ, 3~4 ์ฌ์ด๋ฉด ์ฐ์ผ๋ก ์ค์ ํด์คฌ๋ค๊ณ ์น์.
์ด๊ฒ ๋์ด์ผ.
์งํ์ ์์ฑํ ๋ "๊ธฐ์ค๋์ด"๋ฅผ ์ ๋ ธ์ด์ฆ ํจ์์ ๊ฐ์ n์ ๊ณฑํ ๊ฐ์ผ๋ก ์ค์ ํ๋ฉด ๋ผ.
๋๋ 50์ ๊ณฑํ๊ธฐ ๋๋ฌธ์, ์ฐ์ ๋๋ต 150 ๋์ด์ ์กด์ฌํ๊ณ , ์ฒ์ 100, ๋ฐ๋ค๋ 50์ ์กด์ฌํด.
์ฌ๊ธฐ์ ํ๊ฐ์ง ๋ฌธ์ ์ ์ด ์์์ด. ์๊น ๋ฐ์ด์ด ๋ ธ์ด์ฆํจ์๋ฅผ ์ด์ฉํ ๋ C + a๋ฅผ ์ด์ฉํ๋ค๊ณ ํ์์.
์ด๋ ๊ฒ ๋๋ฉด a์ ๋ฒ์๋งํผ ์งํ์ ๋์ด๊ฐ ์ธํ๋ถํํด์ ธ์ ์ด์ํด์ ธ. ๊ทธ๋์ ๋ฐ์ด์ด ๊ตฌ๋ถ์ C+a๋ก ํ๊ณ , ๋์ด๊ฐ ๊ตฌํ๋ ํจ์๋ C๋ง ์ด์ฉํ์ด.
์ด์ฐจํผ ๋ฐ์ด์ด์ด ๋ค๋ฅด๋ฉด ์ฌ์ฉ๋๋ ์งํ์์ฑ ๋ ธ์ด์ฆ์ ํจ์๊ฐ ์ ํ ๋ฌ๋ผ์ง๊ฑฐ๋ผ ๊ฝค ๊ด์ฐฎ์ ๊ฒ ๊ฐ์.
๊ทธ๋ฐ๋ฐ ์ด๋ฌ๋ฉด ๋ ๋ฐ์ด์ด๊ณผ ๋ฐ์ด์ด์ ๊ฒฝ๊ณ๋ฉด์ ๋์ด๊ฐ ํญ์ 100, 150์ผ๋ก ์ผ์ ํด์ ์ธ์์ ์ธ ๋๋์ด ๊ฐํ๋๋ผ.
๊ทธ๋์ ๋๋ค๋ฅธ heightmap ๋ ธ์ด์ฆ(2D)๋ฅผ ์ด์ฉํด์ ๋ชจ๋ (x,z)์ขํ์ "๊ธฐ์ค๋์ด"๋ฅผ ๊ตฌํ ๋ ์ฌ๊ธฐ์ ์ด heightmap์ ๊ฐ์ ๋ํด์คฌ์ด.
์ฐ์์ ์ธ ๊ทธ๋ํ + ์ฐ์์ ์ธ ๊ทธ๋ํ = ์ฐ์์ ์ธ ๊ทธ๋ํ.
์ฌ๊ธฐ๊น์ง ๊ฐ๋จํ๊ณ ์ด์ ์ด๋ ค์ ๋ ๋ถ๋ถ.
์ ํ ๋ค๋ฅธ ๋ ธ์ด์ฆ๊ฐ์ ์ง๋ ๋ฐ์ด์ด๋ค์ ์ด๋ป๊ฒ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐ์ํค๋๊ฐ.
๋ฐ์ด์ด์ด ๋ค๋ฅธ ๋ฐ์ด์ด๊ณผ ๊ฐ๊น์์ง์๋ก, ์งํ์์ฑ ํจ์์ n *Range์ ๊ฐ์ด 0์ ๊ฐ๊น์์ง๋ฉด ๋ผ.
๋ชจ๋ n*Range๊ฐ 0์ด๋ผ๋ฉด, ๊ฒฐ๊ตญ "๊ธฐ์ค๋์ด"๋ฅผ 2D heightmap์ผ๋ก ์ด์ฉํ๋ ์ํฉ๊ณผ ๊ฐ์์ง๊ฑฐ๋ .
๊ทธ๋ฆฌ๊ณ "๊ธฐ์ค๋์ด"๋ ์ ์ฒด ์๋์์ ์ฐ์์ ์ธ ๊ฐ์ด๋๊น, ์ด์ด์ง๊ฒ ์ง.
๊ทธ๋ฐ๋ฐ ์์ฐ์ค๋ฝ๊ฒ ์ ํํ๋๊ฒย ํ๋ค๊ณ , ์์ง๋ ๊ฐ์ ํด์ผ ํ ๋ถ๋ถ์ด ๋ง์.
์งํ์์ฑ ํจ์์ n*Range๋ฅผ n*Range* biomeMultiplier๋ก ์ ๊ทธ๋ ์ด๋ ์์ผฐ์ด.
biomeMultiplier๋ ๋ฐ์ด์ด์ ๊ฐ์ฅ์๋ฆฌ์ ๊ฐ๊น์์ง์๋ก 0์ด๋๊ณ , ์ค์์ผ์๋ก 1์ด ๋๋ ๊ฐ์ด์ผ.
์ด ๊ฐ์ ๊ตฌํ๋๊ฑด ๊ฐ๋จํด.
์๊น ๋ ธ์ด์ฆํจ์ A,B,C๋ฅผ ๋ค์ ๊ฐ์ ธ์๋ณผ๊ฒ.
A,B,C์ ๊ฐ์ย 0~3 ์ฌ์ด์ด๊ณ 0~1, 1~2, 2~3 ์ผ๋ก ๋ฐ์ด์ด์ ๋๋ .
(0~1 ์ฌ์ด์ ์์๊ฐ 0.5์ ๊ฐ๊น์ธ์๋ก 1,ย 0 ๋๋ 1์ ๊ฐ๊น์ธ์๋ก 0์ ๋ฐํํ๋ ํจ์)์ A,B,C๋ฅผ ๋ฃ์ด์ ๋์จ ๊ฐ๋ค์ ์ ๋ถ ๊ณฑํ๊ฐ์ด ์ผ๋จ ๊ธฐ๋ณธ multiplier์ผ.
๊ทผ๋ฐ ์ด ๊ฐ์ ๋ณด์ ํด์ฃผ์ง ์์ผ๋ฉด, biomeMultiplier๊ฐ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ๋๊ณ , ์งํ์ ์ค๊ฐ๋ถํฐ ์ด๋ฏธ ํํํ๊ณ , ์งํ์ ๋์ ๊ฐ์๋ก ๋ ํํํด์ ธ์ ์ด์ํด์ ธ.
์ด๋ฒ์ ์๊น์ ๋ณด์ ๊ณผ๋ ๋ค๋ฅด๊ฒย
์ด๋ฐ์์ผ๋ก ๋ฐ์ด์ด์ ๊ฒฝ๊ณ์ ์ ๋ค๊ฐ๊ฐ๋ฉด ๋ถ๋๋ฝ๊ฒ ์ ํ๋์ง๋ง, ๊ทธ์ธ์ ๋ถ๋ถ์์๋ ์ต๋ํ 1์ ๊ทผ์ ํ ๊ฐ์ผ๋ก ์ ์ง์์ผ์ฃผ๋๋ก ํด์ผ ํด.
๋ฐ์ด์ด์ ์ค์๋ถ๋ถ์์๋ ์ต๋ํ 1์ ๊ฐ๊น๊ฒ, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ์๋ฆฌ๋ก ๊ฐ๋ฉด ๊ธ๊ฒฉํ ์ค์ด๋ค๋ค๊ฐ ๋ถ๋๋ฝ๊ฒ ์ ๋ฐ์ด์ด์ผ๋ก ์ ํ๋๋๋ก.
๋ 2์ฐจํจ์ 4๊ฐ๋ฅผ ์ด์ด๋ถ์์ด.ย
๋ณ๊ณก์ ์ด๋ผ๊ณ ํ๋๊ฐ? ๊ทธ ๋ถ๋ถ์ ๋ํ ์์น๋ฅผ ์กฐ์ ํ๋ฉด์ ์ ์ ํ ๊ฐ์ ์ฐพ์์ผ ํ๊ฑฐ๋ .
์ ์ฌ๊ธฐ์ ๋ง์ง๋ง ๋ ธ์ด์ฆ๊ฐ.
์ ๋ณ๊ณก์ ์ ์์น๋ฅผ ๋ ธ์ด์ฆ๊ฐ์ผ๋ก ๋ณํ๋ฅผ ์คฌ์ด.
์ฝ๊ฒ ๋งํ๋ฉด, ๋ฐ์ด์ด์ด ๊ฐ์ฅ์๋ฆฌ๋ก ๊ฐ์๋ก ๊ธ๊ฒฉํ ๋์ด๊ฐ ์กฐ์ ๋๋ ๊ตฌ๊ฐ์ ๊ธธ์ด๊ฐ ๋ ธ์ด์ฆ๊ฐ์ ์ํด ๋ณํํ๋๊ฑฐ์ผ.
๊ทธ๋ฆฌ๊ณ ํ์ฌ ๋ด ์งํ์ 5๊ฐ์ ๋ค๋ฅธ ๋ ธ์ด์ฆ๋ก ๊ตฌ์ฑ์ด ๋๋๋ฐ, ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ผ์น๋ 1๋ฒ ๋ ธ์ด์ฆ์ ๋๋จธ์ง 2,3,4,5๋ฒ ๋ ธ์ด์ฆ๋ ์๋ก ๋ค๋ฅธ biomeMultiplier๊ฐ์ ์ด์ฉํด.
์ ์ฒด์ ์ธ ์งํ(1)์ ์ต๋ํ ์๋งํ๊ฒ, ๋๋จธ์ง ์์ ๊ตด๊ณก(2,3,4,5)๋ค์ ๊ฒฝ๊ณ์ ๊ทผ์ฒ์์๋ ์ข ๊ณต๊ฒฉ์ ์ผ๋ก ๋ํ๋๊ฒ
(๊ณผ๊ฑฐ ์ฌ์ง)
๋ฐ์ด์ด์ด ๊ฒฝ๊ณ์ ์ผ๋ก ์ฌ๋ผ๊ฐ ๋,ย ์ด๋ฐ ํํ๋ก ์ฌ๋ผ๊ฐ์ง ์๋๋ก ์กฐ์ ํด์ค๊ฑฐ์ผ.
๋ฒ๊ทธ๊ฐ ๋๊ฑด์ง ์ด์ง ์์ํ ๋ถ๋ถ์ด ์๊ธด ์๋๋ฐ ์๋ฌดํผ,
์ด์ ์ด๋ฐ ์๋ฐฉํฅ ๊ฒฝ์ฌ๋ฉด์ด ๋๋ฌผ๊ฒ ๋ํ๋๊ณ , ์ด๋ฐ ํ์์ ๊ธธ์ด๊ฐ ์งง๊ณ , ๋ด์ค๋ง ํด.
์ด์ํ ๋ถ๋ถ์ ๋์ค์ ๋ค์ ํ์ธํด๋ด์ผ์ง.
์ด์ ์ฌ๊ธฐ์ ๋์ด์ ๋ฐ๋ผ Range์ ๊ฐ์ ๋ณด์ ํด์ค ์๊ฐ์ด์ผ.
biomeHeight๊ฐ ๋ฎ์์ง์๋ก Range์ ์๋ซ๋ฒ์๋ฅผ ๊ฐ์์ํค๊ณ ๋์์ง์๋ก ์ ๋ฒ์๋ฅผ ๊ฐ์์์ผ์ฃผ๋๋ก.
์ด๋ฌ๋ฉด ์ข ๋ ๋ฐ์ด์ด์ ์๋ง๋ ๋์ด๋ก ์งํ์ด ์์ฑ๋๋ฉฐ ์ด๋ฐ ํ์์ด ๋ง์ดย ์ค์ด๋ค๊ฑฐ์ผ. ์ ์ด๋ ๋ด ์์์์์๋ ๊ทธ๋.
์ฌ์ค ๋ ธ์ด์ฆ ํจ์๋ ์ฌ๊ธฐ ๋ง๊ณ ๋ ์ฐ์ธ๋ฐ๊ฐ ๊ฝค ์์ด.
๋ด ๋ธ๋ก์ ์ด 4๊ฐ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋์ด์์ด.
1. ๋งจ์๋ธ๋ก(์๋ ๋ฑ)
2. ๋ชจ๋ ๋๋ ํ ๊ฐ์ ๋ธ๋ก
3. ์ฌ์ ๋ฑ
4. ๋
์ด๋ฐ์์ผ๋ก ๋์ด์๋๋ฐ, ๊ฐ ์ธต์ ๋์ด๊ฐ ์ญ์ ๋ ธ์ด์ฆ๋ก ๊ฒฐ์ ํด.
๊ณ์ ํ ์ธต์ ๋์ด ๋ฑ์ด ๋ฌ๋ผ์ง๋๋ก.
์ง์ง ํ๋ ๋ฐ ๋ฟ๋ฏํ๋ค.
์์ธํ ๊ตฌํํ ์๋ก ๊ทธ๋ฅ ๋ ธ์ด์ฆ ํจ์์ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋ ๋จ์ํ ๋ฌธ์ ๊ฐ ์๋๋๋ผ.
์ด์ ๋ ๊ณผ์ ํ๋ฌ ๊ฐ.
ใทใทใทใท ์ฐจ์์ด๋ฌ๋ผ..
์๋ค๋ธ๋ก