3D graphics - kuimoani/defold GitHub Wiki
3D graphics
Defold๋ 3D ์์ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. 2D ๋ฉํฐ๋ฆฌ์ผ์ ์ฌ์ฉํ๋๋ผ๋ ๋ชจ๋ ๋ ๋๋ง์ 3D๋ก ์ฒ๋ฆฌ๋์ง๋ง ํ๋ฉด์๋ ์ง๊ต(orthographic)๋ก ํฌ์๋์ด 2D ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ฉ๋๋ค. ์ด ๋งค๋ด์ผ์ ์ด๋ป๊ฒ 3D ๋ชจ๋ธ, ์ค์ผ๋ ํค, ์ ๋๋ฉ์ด์ ์ ๊ฒ์์ ๋ถ๋ฌ์ค๋์ง ์ค๋ช ํฉ๋๋ค.
Defold๋ 3D ์์ ์ด๋ ๋ชจ๋ธ์ ์ปฌ๋ ์ ์ ํฌํจํด์ 3D ์ปจํ ์ธ ๋ฅผ ์์ ํ๊ฒ ํ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. 3D ์์ ๋ง์ ์ฌ์ฉํด์ ์์ ํ 3D ๊ฒ์์ ๋ง๋ค ์๋ ์๊ณ 2D ์ปจํ ์ธ ์ ์์ด์ ๊ฐ๋ฐ ํ ์๋ ์์ต๋๋ค.
Defold resources
Model
๋ชจ๋ธ ์ปดํฌ๋ํธ๋ ์ค๋ธ์ ํธ ๋ฉ์ฌ(mesh), ์ค์ผ๋ ํค(skeleton), ์ ๋๋ฉ์ด์ (animation)์ ํฌํจํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์๊ฐ์ ์ปดํฌ๋ํธ๋ค ์ฒ๋ผ ๋ฉํฐ๋ฆฌ์ผ(material)๊ณผ ์ฎ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Animation Set
์ ๋๋ฉ์ด์ ์ธํธ ํ์ผ์ ์ ๋๋ฉ์ด์ ์ ์ฝ๊ธฐ ์ํด .dae ํ์ผ์ ๋ชฉ๋ก์ ํฌํจํ๊ณ ์์ต๋๋ค. ๋ํ ์ ๋๋ฉ์ด์ ์ธํธ์ .animationset ํ์ผ์ ์ถ๊ฐ ํ ์๋ ์์ผ๋ฉฐ, ์ด๋ ์ฌ๋ฌ ๋ชจ๋ธ๋ค ์ฌ์ด์ ๋ถ๋ถ ์๋๋ฉ์ด์ ์ธํธ๋ฅผ ๊ณต์ ํ๋ ๊ฒฝ์ฐ ํธ๋ฆฌํฉ๋๋ค.
Model ๋ฌธ์๋ 3D ์์ ์ ์ํฌํธํ๊ณ ๋ชจ๋ธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
Animation ๋ฌธ์๋ 3D ๋ชจ๋ธ์ ์๋๋ฉ์ด์ ์ฒ๋ฆฌ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
Collada support
Defold์ 3D ์ง์์ ์ํด์๋ ๋ชจ๋ธ, ์ค์ผ๋ ํค, ์ ๋๋ฉ์ด์ ๋ฐ์ดํฐ๋ฅผ Collada ๋ผ๋ ํฌ๋ฉง์ผ๋ก ์ ์ฅํ๊ณ ์ต์คํฌํธ ํด์ผ ํฉ๋๋ค. ์ด ํฌ๋ฉง์ ๋๋ถ๋ถ 3D ๋ชจ๋ธ๋ง ์ํํธ์จ์ด์์ ๊ด๋ฒ์ํ๊ฒ ์ง์๋๊ณ ์๋ ํฌ๋ฉง์ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ง์ผ, 3D๋งฅ์ค, ๋ธ๋ ๋, ์ค์ผ์น์ ๋ฑ์ ์ ๋ช ํ ์ํํธ์จ์ด๋ก ์์ ์ ์์ฑํ๊ณ Defold๋ก ๊ฒฐ๊ณผ ํ์ผ์ ๋ถ๋ฌ์ฌ ์ ์๊ฒ ํด์ผ ํฉ๋๋ค.
Defold๋ ํ์ฌ ํ์ฌ ๋ฒ ์ดํฌ ์ ๋๋ฉ์ด์ (baked animations)๋ง ์ง์ํฉ๋๋ค. ์ ๋๋ฉ์ด์ ์ ํคํ๋ ์๋ง๋ค ๊ฐ๊ฐ์ ์ ๋๋ฉ์ด์ ๋ณธ(animated bone)์ ์ํ ๋ฉํธ๋ฆญ์ค๋ฅผ ๊ฐ์ ธ์ผ ํ๋ฉฐ ์์น, ํ์ , ์ค์ผ์ผ์ ๋ณ๋์ ํค๋ก ๊ฐ์ง์ง ๋ง์์ผ ํฉ๋๋ค.
๋ํ ์ ๋๋ฉ์ด์ ์ ์ ํ์ ์ผ๋ก ๋ณด๊ฐ(linearly interpolated)๋ฉ๋๋ค. ๊ณ ๊ธ ๊ณก์ ๋ณด๊ฐ(curve interpolation)์ ํ๋ ค๋ฉด ์ ๋๋ฉ์ด์ ์ ์ต์คํฌํฐ(exporter)์์ ๋ฏธ๋ฆฌ ๊ตฌ์(prebake)์ผ ํฉ๋๋ค.
Collada์ ์ ๋๋ฉ์ด์ ํด๋ฆฝ(Animation clip)์ ์ง์ํ์ง ์์ต๋๋ค. ๋ชจ๋ธ๋ณ๋ก ๋ค์์ ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ฐ๊ฐ ๋ณ๋์ .dae ํ์ผ๋ก ์ต์คํฌํธ ํ๊ณ Defold์ .animationset ํ์ผ๋ก ํฉ์ณ์ผ ํฉ๋๋ค.
Materials and textures
์ผ๋ฐ์ ์ผ๋ก 3D ์ํํธ์จ์ด์์๋ ์ค๋ธ์ ํธ๊ฐ ์ผ๋ง๋ ๋น๋๊ฑฐ๋ ํฌ๋ช ํ๊ฒ ํ ์ง ํน์ ์ค๋ธ์ ํธ๊ฐ ํธ์ด ํ๋ ๋ฆฌ๋์ง ์นด๋ฉ๋ผ๋ฅผ ์ด๋์ ๋ฐฐ์นํ ์ง ์นด๋ฉ๋ผ ๋ ์ฆ๋ฅผ ์ด๋ป๊ฒ ํ ์ง ๋ฑ์ ๊ณ ๊ธ ๋ฉํฐ๋ฆฌ์ผ ์์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ ์ ๋ณด๋ 3D ์ํํธ์จ์ด์์ ์ต์คํฌํธํ๋ Collada .dae ํ์ผ์ ์ ์ฅ๋๋ฉฐ ์คํ๋ผ์ธ์ผ๋ก ์ค๋ธ์ ํธ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. Defold ๊ฐ์ ์ค์๊ฐ ๊ฒ์ ์์ง์์๋ ์ด๋ ๊ฒ ๋ง์ ์ ๋ณด๋ ํ์ํ์ง ์์ผ๋ฏ๋ก Defold๋ ์์ ํ์ผ์ ์ฝ์ ๋ ์ด ์ ๋ณด๋ค์ ๋ฌด์ํฉ๋๋ค. ๊ฒ์์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ์ ํ๊ณ ํจ๊ณผ์ ์ธ ๋ฉํฐ๋ฆฌ์ผ์ ์ ํ ํน์ ์์ฑ ํด์ผ ํ๋ฉฐ, ์๋๋ ๊ฒ์ํ๋ ์ด๋ก ๋์ํ๊ฒ๋ ๊ฒ์ ์นด๋ฉ๋ผ๋ฅผ ๋์์ธํ๊ณ ๊ตฌํํด์ผ ํฉ๋๋ค.
๋น์ ์ Defold ํ๋ก์ ํธ๋ ๋ ๋ ์คํ๋ผ์ดํธ, ํ์ผ, ํํฐํด, GUI๋ ธ๋์ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง ๋ด์ฅ ๋ฉํฐ๋ฆฌ์ผ(built-in material)์ ๊ฐ์ง๊ณ ์์ต๋๋ค. 3D ๋ชจ๋ธ์ ์ํ ์ ํฉํ ๋ด์ฅ ๋ฉํฐ๋ฆฌ์ผ์ ์์ผ๋ฏ๋ก ์ง์ ์ ์ํด์ผ ํฉ๋๋ค. ํ์ง๋ง ์ฑ ๋ชจ๋ธ์ ์ํด์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ "textured.material" ์์ ๊ฐ ์์ต๋๋ค.
๋ฉํฐ๋ฆฌ์ผ์ด ์๋๋๋ ๋ฐฉ๋ฒ๊ณผ, ์ง๊ฐ์ด ์ ํ์ง 3D ๋ชจ๋ธ๋ก ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์๊ณ ์ถ๋ค๋ฉด Material ๋ฌธ์๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
Rendering
๋ชจ๋ธ์ ๊ฒ์์ ์ ์ฉํ๊ธฐ ์ํ ๋ง์ง๋ง ์์ ์ ํ๋ก์ ํธ์ Render Script๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ ๋ ๋ ์คํฌ๋ฆฝํธ๋ 2D ๊ฒ์์ ์ํด ๋ง์ถฐ์ ธ ์์ผ๋ฉฐ 3D ๋ชจ๋ธ์๋ ๋์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ๊ธฐ๋ณธ ๋ ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์ฌํด์ Lua ์ฝ๋ ๋ช ์ค์ ์ถ๊ฐํด์ 3D ๋ชจ๋ธ์ด ๋ ๋๋ง ๋๊ฒ ํ ์ ์์ต๋๋ค. ์ํ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ด ๋ ๋ ์คํฌ๋ฆฝํธ๊ฐ ์ ํ ๋์ด ์์ต๋๋ค.
๋ ๋ ์คํฌ๋ฆฝํธ๊ฐ ๋์ํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด Rendering ๋ฌธ์๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋๋ค.