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 ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค.