๐Ÿ“š Docs

๋งต ๋ชจ๋“œ: 4๋‹จ๊ณ„

์—…๋ฐ์ดํŠธ๋จ - 2023๋…„ 1์›”

๋ฒ„์ „ 4 ์—…๋ฐ์ดํŠธ

4๋‹จ๊ณ„ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด .map.txt์—์„œ ๋‹ค์Œ์„ ์ •์˜ํ•˜์‹ญ์‹œ์˜ค:

[map]
mapModVersion=4
useStandardShader=1
  • useStandardShader=1: ํ‘œ์ค€ ์…ฐ์ด๋”(๊ธฐ๋ณธ PBR)๋กœ ๊ฐœ์„ ๋œ ๊ทธ๋ž˜ํ”ฝ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • url=...: ์„ ํƒ ํ™”๋ฉด์— ํด๋ฆญ ๊ฐ€๋Šฅํ•œ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ ํ™”๋ฉด


์ž๋™ ๊ธฐ๋ณธ ๋‚˜๋ฌด

Blender์—์„œ _utree123_(์—ฌ๊ธฐ์„œ 123์€ ๊ธฐ๋ณธ ๋‚˜๋ฌด ID)์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๋นˆ ๊ฐ์ฒด(Empty ๋˜๋Š” Triangle)๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๊ธฐ๋ณธ ๋‚˜๋ฌด

  • ๋ณต์ œ๋œ 3D ๋ชจ๋ธ(Instancing)๋ณด๋‹ค ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค.
  • ์ž๋™ ๋ฌด์ž‘์œ„ ํšŒ์ „.

๋‚˜๋ฌด ID์˜ ์˜ˆ:

  • _utree0_์—์„œ _utree9_: ์ผ๋ฐ˜ ๋‚˜๋ฌด.
  • _utree10_: ์•ผ์ž์ˆ˜.
  • ๊ณต์‹ ๋ฌธ์„œ ๋˜๋Š” ํฌ๋Ÿผ์—์„œ ์ „์ฒด ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ธฐ๋ณธ ์žฌ์งˆ (PBR)

Blender์—์„œ ๋ณต์žกํ•œ ์…ฐ์ด๋”๋ฅผ ๊ตฌ์„ฑํ•  ํ•„์š” ์—†์ด ํ…์Šค์ฒ˜๋ฅผ ๊ธฐ๋ณธ ๊ฒŒ์ž„ PBR ์žฌ์งˆ(์•„์ŠคํŒ”ํŠธ, ๋ณด๋„)๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…์Šค์ฒ˜ ์˜†์— .config.txt ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ: street.png.config.txt.

[config]
replaceMaterial=1
material=asphalt/asphalt011
keepTexture=1
  • keepTexture=1: ์ƒ‰์ƒ/๊ทธ๋ฆผ์€ ์œ ์ง€ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์žฌ์งˆ์˜ ๊ด‘ํƒ/๋…ธ๋ฉ€ ๋งต์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • material: ๊ธฐ๋ณธ ์žฌ์งˆ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์žฌ์งˆ์„ ์‚ฌ์šฉํ•œ ์•„์ŠคํŒ”ํŠธ์˜ ์˜ˆ:

ํ˜„์‹ค์ ์ธ ์•„์ŠคํŒ”ํŠธ ์•„์ŠคํŒ”ํŠธ ๋””ํ…Œ์ผ


๋‚ ์”จ ํšจ๊ณผ

์ –์€ ํ‘œ๋ฉด

๋น„์— ์ –๊ฒŒ ํ•˜๋ ค๋ฉด 3D ๊ฐ์ฒด ์ด๋ฆ„์— _wetsurface_๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ํ˜„์‹ค์ ์ธ ๋ฐ˜์‚ฌ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ –์€ ํšจ๊ณผ

๋ˆˆ

snow.png๋กœ ๋๋‚˜๋Š” ํ…์Šค์ฒ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค(์˜ˆ: asphalt.png -> asphalt_snow.png). ๋ˆˆ์ด ์˜ค๋ฉด ๊ฒŒ์ž„์ด ์ž๋™์œผ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด 3D๋ฅผ ํŽธ์ง‘ํ•  ํ•„์š” ์—†์ด ๊ฒจ์šธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆˆ

๋ฌผ (ํ˜ธ์ˆ˜/๋ฐ”๋‹ค)

์ด๋ฆ„์ด _water1_์ธ ํ‰๋ฉด์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ํŒŒ๋„ ์Šค์ผ€์ผ: ์ด๋ฆ„์— _scale10_, _scale50_, _scale100_์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒŒ๋„ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ


ํ”„๋ฆฌํŒน (์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด)

ํ”„๋ฆฌํŒน ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐํ•˜ํ•™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜์ง€ ์•Š๊ณ  ๋ณต์žกํ•œ ๊ฐ์ฒด(๊ธฐ๋‘ฅ, ๋ฒค์น˜, ๊ฑด๋ฌผ ๋“ฑ)๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ํ•œ ๋ฒˆ ๋กœ๋“œ๋˜๊ณ  ๋ณต์ œ๋ฉ๋‹ˆ๋‹ค.

ํด๋”: ๋ชจ๋“œ ๋ฃจํŠธ์˜ prefabs. ๊ตฌ์กฐ:

ํ”„๋ฆฌํŒน ํด๋”

์ •์˜ ํŒŒ์ผ (name.txt):

[config]
useCulling=1

[prefab]
model1=objects/pole.3ds

์ง€๋„์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ”„๋ฆฌํŒน txt ํŒŒ์ผ ์ด๋ฆ„์„ ์ ‘๋‘์‚ฌ๋กœ ์‚ฌ์šฉํ•˜๋Š” Empty/Cube๋ฅผ ๋ฐฐ์น˜ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ: ํŒŒ์ผ์ด mypole.txt์ธ ๊ฒฝ์šฐ Blender์—์„œ ๊ฐ์ฒด ์ด๋ฆ„์œผ๋กœ mypole์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.


์ ˆ์ฐจ์  ์‹์ƒ (๋ฌด์ž‘์œ„ ์Šคํฌ๋„ˆ)

์ž”๋””๋‚˜ ๋‚˜๋ฌด๋กœ ์˜์—ญ์„ ์ž๋™์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค. tiles ์•ˆ์— vegetation ํด๋”๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ž๋™ ์‹์ƒ

๊ตฌ์„ฑ ํŒŒ์ผ์€ ๋ฐ€๋„, ๊ฐ„๊ฒฉ ๋ฐ ์‚ฌ์šฉํ•  ๊ฐ์ฒด(๊ธฐ๋ณธ ๋‚˜๋ฌด ๋˜๋Š” ํ”„๋ฆฌํŒน)๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

[random_vegetation]
keyword=onlygrass
spacing=10
useRandomSpacing=1
radius=50
  • keyword: ์˜์—ญ(๊ฒฝ๊ณ„)์„ ์ •์˜ํ•˜๋Š” Blender์˜ ๊ฐ์ฒด ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • spacing: ๊ฐ์ฒด ๊ฐ„์˜ ํ‰๊ท  ๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๊ฒŒ์ž„์€ bounds(๋ณด์ด์ง€ ์•Š๋Š” ํ๋ธŒ)๋กœ ์ •์˜๋œ ์˜์—ญ์„ ์Šค์บ”(Raycast)ํ•˜์—ฌ ๋•…์— ์‹๋ฌผ์„ ์‹ฌ์Šต๋‹ˆ๋‹ค.

์‹์ƒ ๊ฒฝ๊ณ„


์‚ฌ์šฉ์ž ์ง€์ • ๊ตํ†ต

aibuses_v1 ํด๋”์— ์ƒˆ ๋ชจ๋ธ์„ ๋ฐฐ์น˜ํ•˜์—ฌ ๊ตํ†ต ๋ฒ„์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ๊ตํ†ต

๋‹ค๋ฅธ ํšŒ์‚ฌ๋‚˜ ๋ฒ„์Šค ์œ ํ˜•์— ๋Œ€ํ•œ ํ•˜์œ„ ํด๋”๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตํ†ต์—๋Š” ๋‹จ์ˆœํ™”๋œ .bus ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์ฃผ์˜: ํœด๋Œ€ํฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜์ง€ ์•Š๋„๋ก ๋ชจ๋ธ ์ˆ˜๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ๋Š˜๋ฆฌ์ง€ ๋งˆ์‹ญ์‹œ์˜ค! ์ƒˆ๋กœ์šด ๋ฒ„์Šค ๋ชจ๋ธ ํ•˜๋‚˜ํ•˜๋‚˜๋Š” ๋งŽ์€ RAM์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

4๋‹จ๊ณ„ ๋!