Procedural Terrains
요약
Procedural Terrains는 React, Vite, Three.js 기반의 GPU 지형 제작 툴로, Unity 및 Blender와 네이티브 통합 기능을 제공합니다. CPU 높이맵에 의존하지 않고도 라이브 편집이 가능한 절차적 지형을 생성하며, 다양한 엔진으로의 프로덕션 내보내기 프리셋을 지원하여 개발 워크플로우를 강화합니다.
핵심 포인트
- Unity 및 Blender와 네이티브 통합 기능을 제공하는 GPU 기반 툴입니다.
- CPU 높이맵 의존 없이 라이브 편집 가능한 절차적 지형 생성이 가능합니다.
- 열 침식, 절차적 TerrainLayers 등 고급 디테일 기능이 추가되었습니다.
- 메쉬, 텍스처 등을 포함한 프로덕션 내보내기 프리셋을 지원합니다.
Procedural Terrains
브라우저용 GPU 기반 지형 제작 툴이며, Unity 및 Blender와 네이티브 통합 기능을 제공합니다.

Procedural Terrains는 React + Vite + Three.js를 사용한 지형 스튜디오입니다. 높이(Height), 법선 벡터(Normals), 생물군계 색상(Biome colors)을 GPU에서 평가하므로, 베이크된 CPU 높이맵에 의존하지 않고도 라이브 뷰가 편집 가능한 상태로 유지됩니다.
새로운 기능 (What’s new)
- Unity 통합 0.4.0-alpha.1 — Unity Editor 내에서 시드(seeded) 지형을 직접 생성하고, 타일화된
TerrainData를 생성하며, 이웃 연결 및 저장된 레시피 재생성이 가능합니다. 버전 0.4에서는 세밀한 디테일, 열 침식(thermal erosion), 절차적(procedural) TerrainLayers, 그리고 제작 및 임포트를 위한 라이브 플레이스홀더 물 기능을 추가했습니다. - Blender 확장 기능 0.4.0 — Blender 5.2에서 편집 가능한 절차적 메쉬를 생성하고, 검증된 내보내기 패키지를 임포트하며, 소스 메타데이터를 보존하고, 임포트된 어셈블리를 크기 조정할 수 있습니다. 버전 0.4에서는 밀도 인식 디테일(density-aware detail), 열 침식, 편집 가능한 절차적 표면 노드(procedural surface nodes), 그리고 독립적으로 토글 가능한 플레이스홀더 물 기능을 추가했습니다.
- 실제 세계 지형 모드 (Real-world terrain mode) — 위치를 검색하고, 지리적 고도 및 이미지를 미리 본 후, 에디터에 로드할 수 있습니다.
- 프로덕션 내보내기 프리셋 (Production export presets) — 메쉬, 텍스처, 마스크, 물 데이터, 메타데이터가 포함된 Unity, Unreal, Godot, Blender, Three.js 패키지를 준비합니다.
- 로컬 우선 프로젝트 (Local-first projects) — 계정 로그인이 필요 없이 브라우저에서 버전 관리되는 프로젝트, 썸네일, 템플릿 및 최근 프로젝트 기록을 저장할 수 있습니다.
주요 기능 요약 (Features at a glance)
| 기능 | 설명 |
|---|---|
| Tile | 청크(chunk)별 LOD를 갖는 고정 지형 보드를 페인팅, 조립 및 내보내기할 수 있습니다. |
| ... |
사용 예시 (See it in action)
지형 스튜디오 (Terrain studio)

이 에디터는 여러 월드 모드, 라이브 셰이더 파라미터, 설정 검색, 카메라 프리셋, 성능 제어, 실행 취소/다시 실행(undo/redo), 프로젝트 저장/로드 기능을 지원합니다.

반사되는 물, 대기 조명, 구름, 산맥 실루엣이 있는 예시 지형 장면입니다.
엔진 플러그인 (Engine plugins)
| Unity | Blender |
|---|---|
![]() | ![]() |
두 통합 방식 모두 동일한 렌더러 중립적인(renderer-neutral) .ptrterrain 런타임 문서를 가져오고 프로덕션 ZIP 내보내기(production ZIP exports)를 할 수 있습니다. 또한 호스트 애플리케이션에 네이티브 절차적 생성(procedural generation) 기능을 노출합니다. 이 스크린샷들은 Playwright를 사용하여 로컬 앱에서 1600 × 900 뷰포트로 생성되었습니다.
빠른 시작 (Quick start)
npm install
npm run dev
http://localhost:6061을 열어보세요. Vite는 모든 인터페이스에서 수신하고 LAN URL을 출력합니다. 포트 6061이 사용 중인 경우, 다음 사용 가능한 포트를 선택합니다.
다음 명령어로 프로덕션 빌드를 생성하세요:
npm run build
npm run preview
옵션 계정 API (Optional accounts API)
에디터는 로컬 우선(local-first) 방식으로, 계정 없이도 완전히 사용할 수 있습니다. 로그인 및 등록 기능은 독립적이며 자체 호스팅이 가능한 Node.js/MySQL 서비스가 api/에서 제공합니다.
cp .env.example .env
cp api/.env.example api/.env
npm --prefix api install
...
MySQL 설정이 완료되면 npm run migrate:api를 한 번 실행하세요. Linux, PM2, MySQL, Nginx에 대한 배포 가이드는 api/README.md에서 확인할 수 있습니다.
Unity 및 Blender 플러그인 (Unity and Blender plugins)
최신 아카이브는 앱에서 이용 가능하며 public/downloads/plugins/에 체크되어 있습니다.
| 통합 방식 | 버전 | 요구 사항 | 소스 | 다운로드 |
|---|---|---|---|---|
| Unity | 0.4.0-alpha.1 | Unity 6000.3+ | plugins/unity/Packages/com.zyfou.procedural-terrains | Unity ZIP |
| Blender | 0.4.0 | Blender 5.2+ | plugins/blender/procedural_terrains | Blender ZIP |
Unity 워크플로우 (Unity workflow)
- Unity ZIP을 다운로드하거나 Unity Package Manager를 통해 로컬 패키지를 추가합니다.
- Procedural Terrains에서 Unity Terrain 내보내기 프리셋을 선택합니다.
- Unity에서 Window > Procedural Terrains > Terrain Importer를 엽니다.
- ZIP을 가져오거나, Create를 사용하여 네이티브하게 시드된 지형을 생성합니다.
이 패키지는 네이티브 TerrainData, 콜라이더(colliders), 연결된 타일 이웃(connected tile neighbors), TerrainLayers, 그리고 영구적인 생성 레시피 에셋을 만듭니다. 현재 제한 사항 및 릴리스 세부 정보는 Unity package README와 Unity changelog를 참조하세요.
Blender 워크플로우
procedural-terrains-blender-0.4.0.zip을 다운로드합니다.- Blender 5.2에서 Edit > Preferences > Get Extensions > Install from Disk를 엽니다.
- 확장 기능을 활성화하고 3D View > Sidebar > Terrain을 엽니다.
- 네이티브 절차적 지형을 위해 Create를 사용하거나, ZIP/
.ptrterrain내보내기를 위해 Import를 사용합니다.
이 확장 기능은 UV, 소스 메타데이터(source metadata), 공유 타일 경계(shared tile borders), 그리고 Blender 되돌리기 지원(Blender undo support)을 갖춘 일반적인 편집 가능한 메시 객체를 생성합니다. 설치, 좌표 매핑 및 성능 가이드는 Blender extension README를 읽어보세요.
월드 모드(World modes)
| 모드 | 최적의 용도 | 세부 정보 |
|---|---|---|
| Tile | 제작 및 내보내기 | 고정된 지형 보드, 다중 타일 레이아웃, 페인트 브러시, 근거리 디테일. |
| ... | ||
| 타일 모드는 또한 사각형 또는 원형 레이아웃, 방사형 벽(radial walls), 실제 세계 높이맵 가져오기(real-world heightmap import), 생물 군계 페인팅(biome painting), 강 도구(river tools), 그리고 절차적 소품 페인팅(procedural prop painting)을 포함합니다. |
내보내기 파이프라인(Export pipeline)
Export 패널은 빠른 스크린샷과 높이맵(heightmaps) 외에도 다음 항목에 대한 제작 프리셋을 제공합니다:
- Unity Terrain
- Unreal Landscape
- Godot Terrain3D
- Blender Scene
- Three.js 뷰어 에셋
전체 ZIP 내보내기에는 다음이 포함될 수 있습니다:
- GLB/GLTF 또는 OBJ 지형 메시(terrain meshes)로 구성되며, 해상도, 스커트(skirts), 기본 슬랩(base slabs)을 설정할 수 있습니다.
- 베이크된 색상(color), 노멀(normal), 높이맵(heightmap), 생물군계 스플랫(biome splat), 충돌 맵(collision maps).
- 물 표면 메시 및 깊이, 해안선(shoreline), 거품 마스크(foam masks).
- 다운스트림 도구용
terrain.json,project.ptrterrain, 그리고 프리셋 메타데이터.
Production Check는 GPU 베이크 전에 선택 사항을 검증하고 메모리가 많이 필요한 맵이나 누락된 물 마스크를 알려줍니다.
컨트롤(Controls)
타일 카메라(Tile camera)
- 왼쪽 드래그(Left-drag) — 보드 위로 이동(pan)
- 오른쪽 드래그(Right-drag) — 궤도 회전(orbit)
- 스크롤(Scroll) — 확대/축소(zoom)
- 하단 도구 모음 — 탑다운, 각도형, 그리고 카메라 보기 초기화
탐색(Exploration)
- 하단 도구 모음의 탐색(Explore) — 걷기(Walk) 또는 평면(Plane) 선택
- 탐색 중에는 모바일에서 터치 컨트롤을 사용할 수 있습니다.
바로가기 키(Shortcuts)
Ctrl+K— 설정 검색Ctrl+Z/Ctrl+Y— 실행 취소(undo) / 다시 실행(redo)Ctrl+Shift+P— 성능 오버레이
아키텍처(Architecture)
WebGL 엔진은 src/engine/에서 프레임워크에 구애받지 않습니다. React 에디터는 src/components/에 위치하며, 두 계층은 Engine 메서드와 콜백 객체를 통해 통신합니다.
| 영역 | 주요 파일 |
|---|---|
| 핵심(Core) | src/engine/Engine.js — 렌더러, 씬, 유니폼, 저장/불러오기, 실행 취소 상태 |
| ... |
기술적 속성(Technical properties)
- 결정론적(Deterministic): 지형은 월드 좌표, 시드(seed), 그리고 매개변수의 순수 함수입니다.
- 레이어 노이즈(Layered noise): 지정된 레이어는 코드 생성되어 지형 셰이더에 포함되고 프로젝트와 함께 저장됩니다.
- 균열 없는 LOD(Crack-free LOD): 스커트 링은 다른 디테일 레벨의 청크 간 전환을 숨깁니다.
- 실시간 편집(Live editing): 대부분의 컨트롤은 지오메트리를 재구축할 필요 없이 셰이더 유니폼을 업데이트합니다.
- 카메라 독립적 지형(Camera-independent terrain): 카메라는 LOD에 영향을 주지만, 생성된 높이 필드에는 영향을 주지 않습니다.
- 실행 취소/다시 실행(Undo/redo): 프로젝트 매개변수, 타일 레이아웃, 페인트 레이어는 함께 추적됩니다.
- 성능 컨트롤(Performance controls): GPU 등급 감지, 품질 프리셋, LOD 예산, 렌더러 옵션, 그리고 실시간 오버레이를 제공합니다.
노멀(Normals)은 낮은 기하학적 LOD(Geometric LOD)에서도 멀리 떨어진 지형을 선명하게 유지하기 위해 프래그먼트별로 유한 차분화(finite-differenced)됩니다. 성능이 약한 GPU의 경우, 픽셀 비율을 낮추거나, 오크테이브(octaves) 또는 레이어 카운트를 줄이거나, 더 가벼운 워터 품질 모드를 선택하세요. 추가적인 프로파일링 참고 사항은 docs/PERFORMANCE.md에 있습니다.
프로젝트 구조 (Project structure)
src/ React UI, 엔진(engine), 익스포터(exporters), 및 에디터 상태(editor state)
plugins/ Unity 패키지 및 Blender 확장 기능(extension)
public/downloads/ 다운로드 가능한 플러그인 아카이브
...
라이선스 (License)
핵심 프로젝트는 MIT License 하에 공개되었습니다. 플러그인 라이선스는 해당 소스 패키지 옆에 문서화되어 있습니다: Unity는 MIT 라이선스를 따르며, Blender 확장 기능은 GPL-3.0-or-later입니다.
스타 히스토리 (Star History)
<a href="https://www.star-history.com/?repos=zyfou%2Fproceduralterrains&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=zyfou/proceduralterrains&type=date&theme=dark&legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=zyfou/proceduralterrains&type=date&legend=top-left" /> <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=zyfou/proceduralterrains&type=date&legend=top-left" /> </picture> </a>AI 자동 생성 콘텐츠
본 콘텐츠는 개발 자료 GitHub · 53f6f5ad의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
