Search
🦾

Procedural Content Generation (PCG)

태그
Blueprint
1 more property

제작 의도

넓은 레벨의 구성과 편집을 빠르고 간편하게 하기 위해 연구 및 개발을 진행하고 정리했습니다.

영상

구성 / 설명

PCG

언리얼 엔진에서 제공하는 Procedural Content Generation은 자체적으로 프로시주얼 콘텐츠를 생성(절차적 콘텐츠 생성)할 수 있는 도구입니다.
Houdini와 같은 DCC 툴은 언리얼 엔진과 분리되어 있어 편집 비용이 증가합니다.
PCG 그래프와 블루프린트를 결합하여 실시간 편집과 확인 가능하며, 반복 작업을 최소화 시킬 수 있습니다.
아래 설명은 PCG를 사용하여 직접 레벨을 제작하며 진행한 R&D 내용과 2023 언리얼 페스트 내용 요약이 포함되어 있습니다.

PCG Setting Asset

PCG Setting Asset은 레벨을 하나의 노드로 PCG 그래프에 추가할 수 있습니다.
해당 레벨에 포함된 에셋들의 계층 구조, 태그, 메시 정보 등을 출력합니다.
영상 속의 길 표현에 사용되었습니다.

Tip

단축키 D / E / A 활용
D : 선택된 노드 디버그 뷰 토글
E : 선택된 노드 활성 / 비활성 토글
A : 선택된 노드에서 출력되는 포인트의 어트리뷰트 정보 표시
PCG 그래프 작업 시 적당한 넓이의 레벨에서 작업
블루프린트 액터 파라미터 수정 시 선택 해제된 상태로 수정하는 것이 용이 (디테일 창의 락 기능을 활용)
PCG 그래프 업데이트가 안되는 경우 → PCG 컴포넌트의 정리, 생성 버튼 실행
노드 삭제 후 Undo로 복구 시 디버그 모드 업데이트 안되는 경우 → 해당 노드 삭제 후 재배치
샘플러와 스포너는 수직으로 정렬하는 것이 노드 구조 파악 용이
자주 사용하는 PCG 그래프는 서브그래프로 통합 가능 (Material Function과 비슷한 기능)
Discard Points in Bumpy Areas
평평한 곳의 범위가 넓지 않아 에셋이 뜨는 현상을 방지하기 위해 에픽게임즈에서 제공하는 PCG 서브그래프 (SampleDistance 값 만큼 가로, 세로 떨어진 4개의 포인트를 구하고 원래 포인트와 비교하여 삭제 여부 결정) * NormalTreshold 값은 반드시 음수로 입력

최적화

PCG 영역을 제한하도록 박스 볼륨(ex. box collision) 사용 (레벨 내에서 PCG 영역 컨트롤)
스태틱 메시 스포너 설정
스태틱 메시 스폰 시 콜리전이 필요하지 않은 메시는 콜리전 프리셋을 NoCollision으로 설정
나나이트 메시 스폰 시 WPO Disable Distance를 적절하게 조절 (0으로 사용 시 무한)
Weight 값 조절로 스태틱 메시 스폰 비율 설정

Node 설명

Surface Sampler : 그리드 패턴으로 서피스 데이터에 포인트를 샘플링합니다.
Sampler 노드를 여러개 사용할 경우 Seed 값 조절로 서로 다른 값을 갖는 것이 좋음
Points Per Square Meter : 1평방미터당 몇 개의 포인트를 생성하는 값
Point Extents : 각각의 포인트들이 갖고 있는 바운드의 크기 값
Looseness : 포인트가 얼마나 넓게 퍼져있을지 결정하는 값
Get Actor Property : 블루프린트 변수 값을 가져와 사용할 수 있습니다.
Normal To Density : 현재 포인트의 노말 벡터 값을 Density 값에 오버라이드합니다.
Density Filter : 필터 범위를 기반으로 포인트에 필터를 적용합니다.
Break Transform Attribute : Transform 어트리뷰트를 3가지 컴포넌로 분류합니다.
Input Source를 입력받을 데이터로 선택 필수
Break Vector Attribute : Vector 어트리뷰트를 X, Y, Z, W 컴포넌트로 분류합니다.
Attribute Noise : 각 포인트에 대한 타겟 어트리뷰트의 값을 계산합니다.
Mode와 Min, Max 값 설정
Transform Points : 무작위로 포인트 트랜스폼을 변경합니다.
Absolute Rotation 활성화 시 지면 기울기와 상관없이 생성
Self Pruning : 포인트가 겹치는 지점을 정리합니다.
Point Filter : 입력 받은 포인트를 오퍼레이터에 따라 범위를 나눠서 출력합니다.
Bound Modifier : 포인트의 바운드 크기를 수정합니다.
Distance : 입력된 Source와 Target의 거리를 계산합니다.
Set Density 활성화 시 해당 값을 Density로 오버라이드
Create Points Grid : 정해진 포인트를 중심으로 그리드 포인트를 생성합니다.
Cull Points Outside Volume 활성화 시 볼륨 안에서만 작동
Copy Points : 타겟의 포인트당 소스 입력에 있는 모든 포인트를 복사합니다.
Projection : 소스를 타겟으로 프로젝션합니다.
Difference : 입력 받은 두 소스의 차이를 출력합니다.
나무 생성 포인트
바위, 돌, 자갈 생성 포인트
작은 식생 생성 포인트
흙더미 생성 포인트
낙엽 생성 포인트
잔디 생성 포인트
밀, 나무 생성 포인트 (Spline 활용)
도로 생성 포인트 (Spline, PCG Setting Asset 활용)
나무 생성
바위, 돌, 자갈 생성
작은 식생 생성
흙더미 생성
낙엽 생성
잔디 생성
밀, 나무 생성 (Spline 활용)
도로 생성 (Spline, PCG Setting Asset 활용)
PCG 전체 활성화 전경

참고

사이트
영상