
## 언리얼 엔진 5.7: 나나이트 폴리지 & 프로시저럴 베지테이션 에디터를 활용한 식생 제작
안녕하세요, 에픽게임즈 코리아 권호찬입니다. 이번 에픽 라이브에서는 언리얼 엔진 5.7에 추가된 **나나이트 폴리지(Nanite Foliage)**와 **프로시저럴 베지테이션 에디터(Procedural Vegetation Editor)**를 활용하여 식생 베리에이션을 만드는 방법을 시연합니다.
* **나나이트 폴리지 & 프로시저럴 베지테이션 에디터 상세 내용:**
* 에픽게임즈 코리아 유튜브 채널의 언리얼 엔진 5.7 출시 웨비나 참고
### 1. 사전 세팅
나나이트 폴리지를 사용하기 위해 다음과 같은 사전 세팅이 필요합니다.
* **프로젝트 세팅:**
* `Nanite` 검색 후 **Nanite Foliage** 옵션 활성화
* **플러그인 창:**
* `Nanite` 검색 후 **Procedural Vegetation Editor** 및 **Dynamic Wind** 활성화
### 2. 퀵셀 메가 플랜츠 애셋 활용
* **프리셋 획득:**
* 팹(Fab)에서 **Quicksel Mega Plants** 애셋 다운로드
* 메가 플랜츠(MegaPlants): 특정 종의 식생을 구성하는 데 필요한 모든 애셋과 데이터 세트 패키지 (PVE를 통해 활용)
* 현재 팹에서 8종 다운로드 가능, 지속적으로 100여 종 이상 업데이트 예정
* **애셋 추가:**
* 팹에서 원하는 메가 플랜츠 검색 후 **프로젝트에 추가** 클릭
### 3. 프로시저럴 베지테이션 에디터(PVE) 활용
* **PVE 인터페이스:**
* **뷰포트:** 결과물 확인
* **그래프:** 노드 구성
* **디테일 창:** 선택한 노드의 파라미터 조절
* **작업 팁:**
* **뷰포트 잎 사라짐 문제 해결:**
* `Foliage Palette` 노드 선택
* 전체 폴리지 메시 선택 후 마우스 우클릭 > `Asset Actions` > `Property Matrix` > `Select`
* 열린 창의 `Nanite Settings` 탭에서 `Preserve Area` 옵션을 `Voxelize`로 변경 및 저장
* **크기 가늠:** 뷰포트 오른쪽 톱니바퀴 아이콘 > `Mannequin` 옵션 활성화
* **뷰포트 노드 고정:** 뷰포트에 표시하고 싶은 노드 선택 후 `Ctrl + L`
### 4. 베리에이션 제작
* **A 베리에이션 제작 (알렉포 소나무 예시):**
* **복제:** `Preset` 노드의 A에 연결된 노드들 복제 (`Ctrl-C`, `Ctrl-V`) 후 A 출력에 연결 (원본 유지 목적)
* **가지 솎아내기:**
* `Remove Branch` 노드 사용
* **기준:**
* `Length`: 가지 길이
* `Radius`: 반지름 (한계치 이하 가지 제거)
* `Light`: 빛의 양 시뮬레이션 기반 제거
* 노드들은 `Mesh Builder` 노드 앞에 연결
* **넓고 납작하게 만들기:**
* `Gravity` 노드 사용: Z축 아래로 가지 처짐
* `Gravity` 노드 추가: Z축 위로 가지 끝부분 올리기 (값 1, `Angle Collection` 조절)
* **모드:** `Phototropic` 옵션 (빛 반응으로 자연스러운 휨)
* **줄기 길이 조절:**
* `Curve` 노드 사용
* `From Bottom` 옵션: 밑동부터 줄기 축소
* `Length from Root`: 나무 밑동으로부터의 거리 기준 끝단 가지 제거
* `Z-Position`: 나무 절대 높이 기준 제거
* **기울기 적용:**
* `Slope` 노드 사용: 기울어진 땅에서 식생이 휘는 모양 반영 및 나무 형태 변형
* `Slope Angle`, `Slope Direction` 조절
* **전체 크기 조절:**
* `Scale` 노드 사용 (예: 0.9로 축소)
### 5. 지오메트리 메쉬 변환 (Mesh Builder)
* **재질(Material) 설정:**
* 기본 제공 재질에서 나무 껍질 모양 변경 가능
* `Index` 및 `X-Range` 조절 (생성 레벨에 따라 인덱스 순차 적용)
* **메시(Mesh) 설정:**
* `Point Removal`, `Segment Removal`: 나나이트 폴리지 사용 시 수정 불필요
* `Min/Max Division`: 가장 얇은/굵은 가지 면 분할 개수 지정
* **프로필(Profile) 설정:**
* 줄기의 전반적인 두께 조절
* `Profile Falloff Graph` 수정 (나무 밑동 굵기 조절)
* **디스플레이스먼트(Displacement) 설정:**
* 디스플레이스먼트 텍스처를 이용해 줄기 표면 굴곡 추가 (Scale, Bias 조절)
### 6. 본 최적화 (Bone Reduction)
* **Bone Reduction 노드:** 자동으로 생성되는 본(Bone) 수를 최적화
* 본 수 조절 (성능 유리)
* *참고:* `SOU`에서 공개된 `Fortnite` 언리얼 엔진 5 테크 데모: 평균 20만 그루 이상의 나무 동시 렌더링, 13만 개 이상 본 처리 (PS5에서 0.1ms 이하)
### 7. 식생 모양 결정 (Foliage Palette & Foliage Distributor)
* **Foliage Palette:** 줄기와 가지에 메시(Mesh)를 어떤 위치에 붙일지 지정
* **Foliage Distributor:** 폴리지 분포 방식 결정
* **Aethelene Limit:** 잎/줄기 늙음, 시듦, 떨어짐에 영향을 미치는 호르몬 (가지 전체 풍성함 또는 잎 떨어짐 표현)
* **Distribution Override:** 프리셋 베리에이션 기본값 사용 또는 해당 노드 파라미터로 덮어쓰기
* *주의:* 원본과 많이 달라 보일 수 있으므로 신중한 수정 필요
* **디버깅 팁:**
* 별도 `Foliage Palette`에 큐브 메시와 다른 색상 지정하여 디버깅용으로 사용
### 8. 베리에이션 확장 및 관리
* **B 베리에이션 제작 (예시):**
* 제작된 노드 복제 (`Ctrl-C`, `Ctrl-V`)
* 다른 `Preset` 베리에이션 (B)에 연결
* `Output` 노드 메시 이름 변경
* `Remove Branch` 노드 비활성화/활성화 (`E` 키)
* `Gravity`, `Slope`, `Curve` 등 **Spatial Node** 수정
* `Foliage Distributor` 파라미터 조절 (인스턴스 간격 등)
* `Output` 노드 선택 후 Export
* **통합 관리:** 생성된 다양한 베리에이션들은 하나의 `Procedural Vegetation` 에셋에서 통합 관리 가능
### 9. NPR 스타일 식생 제작
* **워크플로우 적용:** 극사실적 식생뿐만 아니라 NPR(Non-Photorealistic Rendering) 스타일 식생에도 적용 가능
* 폴리지 메시, 줄기 머티리얼을 툰(Toon) 스타일로 교체
* 파라미터 조절로 툰 스타일 식생 베리에이션 제작
### 10. PCG (Procedural Content Generation)를 이용한 레벨 배치
* **목적:** 앞에서 만든 나나이트 폴리지를 레벨에 대량 배치
* PCG 초심자도 좌절하지 않고 따라 하기
* **준비:** 기본 레벨 열기, PCG 모드로 변경
* **PCG 수정:**
* `Spline` 탭 > `Draw Spline Surface` > `Area Tool PCG`
* 엔진 폴더 파일은 복제하여 사용
* `Area Tool` 복사 및 이름 변경
* `Graph Settings` > `Detail` 창 > `Tool Data` > `Display Name` 수정
* `Graph Parameters` > `Spawn Actors`의 `VL` 값을 `True`로 변경
* `Actor Classes` 배열에 `Skeleton Mesh Object Reference` 타입, `Tris` 속성 추가
* `Match and Set Attribute` 노드에서 `Match Weight Attribute` 비활성화
* `Instanced Skinned Mesh Spawner` 추가 및 `Spawn Actor` 대신 연결
* `Mesh Attribute`를 `Tris`로, `Transform Provider`에 `Wind Transform Provider` 선택
* **레벨 배치:**
* PCG 모드에서 툴 선택 후 레벨에 드래그하여 스플라인 그리기
* `Tris`에 나나이트 폴리지 식생 추가
* **밀도 조절:** `Sampling` > `Points per Squared` 값을 0.01 정도로 낮춤
* **배치 설정:**
* `Global Transform` > `Absolute Global Rotation` 활성화 (Z축 항상 위)
* `Random Rotation Max` (Z축 360도)
* `Random Scale Factor` (Min/Max X축 0.8 - 1.1)
* `Snap to Surface` 활성화, `Max Distance` 10만 설정
* `Accept` 클릭하여 대량 배치
* **PCG 학습:** 추후 별도 세션을 통해 심층 학습 예정
---
지금까지 나나이트 폴리지와 프로시저럴 베지테이션 에디터를 활용한 식생 제작 및 PCG를 이용한 레벨 배치 방법을 알아보았습니다. 이 기능을 통해 여러분들의 프로젝트와 작업에 더 큰 매력과 경쟁력이 더해지기를 바랍니다.
감사합니다.