프로시저럴 콘텐츠 생성(Procedural Content Generation, PCG) 프레임워크는 언리얼 엔진에서 자체 프로시저럴 콘텐츠와 툴을 제작할 수 있는 툴세트입니다. 이 프레임워크에는 PCG를 사용하여 대규모 월드를 쉽게 생성할 수 있는 여러 가지 PCG 생성 모드가 포함되어 있습니다. 생성 모드는 PCG 컴포넌트의 생성 도메인을 그리드로 분할하며, 각 셀에는 자체 로컬 PCG 컴포넌트가 포함됩니다.
비탈에 나무와 풀, 기타 지면을 덮는 요소를 스폰하는 PCG 숲 예시입니다.
큰 그리드에서는 나무와 바위처럼 시각적으로 눈에 잘 띄는 커다란 메시를 생성할 수 있습니다. 작은 그리드에서는 풀과 꽃, 돌처럼 더 작은 디테일을 생성할 수 있습니다. 이러한 접근 방식을 통해 PCG 툴을 더 세밀하게 제어하여 실행할 수 있으며 대규모 영역을 다루는 툴의 퍼포먼스를 미세 조정할 수 있습니다.
PCG 생성 모드에는 다음과 같은 4가지가 있습니다.
파티셔닝된 생성 사용하기
기본적으로 PCG 컴포넌트에 의해 생성되는 모든 메시는 볼륨 같은 컴포넌트의 도메인 내에 포함되거나 스플라인에 묶여 있습니다. 이 모드는 작은 PCG 에셋에는 적합하지만, 대규모 영역을 덮는 에셋에 사용하면 퍼포먼스 문제가 발생할 수 있습니다. 파티셔닝된 생성(Partitioned Generation)은 사용자 정의 그리드 전체에 걸쳐 결과 메시를 생성합니다. 데이터가 각 셀 간에 분할되므로 월드 파티션 및 레벨 인스턴싱 같은 다른 시스템을 사용하여 더 쉽게 스트리밍할 수 있습니다.
파티셔닝된 PCG 컴포넌트의 예시입니다.
그래프에서 파티셔닝 활성화
PCG 컴포넌트에서 파티셔닝된 생성을 토글하는 방법은 다음과 같습니다.
PCG 볼륨 디테일 패널에서 PCG 파티셔닝된 생성을 토글합니다.
- 레벨에서 PCG 에셋을 선택합니다.
- 디테일(Details) 패널의 파티셔닝됨 여부(Is Partitioned) 옆에 있는 체크박스를 클릭합니다.
파티션 그리드 크기 환경설정
파티션 그리드의 크기는 PCGWorldActor 의 파티션 그리드 크기(Partition Grid Size) 옵션으로 정의합니다.
PCGWorldActor에서 파티션 그리드 크기를 환경설정합니다.
그리드 크기를 환경설정하는 방법은 다음과 같습니다.
- 아웃라이너(Outliner) 에서 PCGWorldActor 를 선택합니다.
- 파티션 그리드 크기(Partition Grid Size) 옵션의 값을 조정합니다.
- 레벨에서 각 PCG 에셋을 선택하고 디테일(Details) 패널에서 클린업(Cleanup) 을 선택합니다.
- 생성(Generate) 버튼을 클릭하여 결과를 재생성합니다.
계층형 생성 사용하기
계층형 생성(Hierarchical Generation)은 여러 스케일에서 PCG를 사용한 메시 생성을 지원합니다. 이 타입의 생성은 Grid Size 노드를 사용하여 파티셔닝된 생성에서 사용되는 파티션 그리드 크기를 오버라이드하며 메시 생성을 미세 조정할 수 있는 기능을 제공합니다.
작은 그리드 크기로 생성된 하이라이트된 바위를 보여주는 예시입니다.
Grid Size 노드는 다운스트림에서 생성되는 모든 데이터에 대한 생성 그리드의 크기를 커스터마이징하며, 샘플러 노드 앞에 배치해야 합니다.
그래프에서 계층형 생성 활성화
PCG 그래프에서 계층형 생성을 활성화하는 방법은 다음과 같습니다.
PCG 그래프 세팅에서 PCG 계층형 생성을 토글합니다.
- PCG 그래프를 열고 그래프 세팅(Graph Settings)을 클릭합니다.
- 계층형 생성 사용(Use Hierarchical Generation) 옆에 있는 체크박스를 클릭합니다.
- HiGen 디폴트 그리드 크기(HiGen Default Grid Size)에 대한 드롭다운 박스를 열고 값을 선택합니다.
- PCG 그래프를 저장합니다.
계층형 생성을 사용하려면 PCG 컴포넌트가 파티셔닝되어야 합니다. 이 기능을 사용하기 전에 파티셔닝된 생성이 레벨에서 활성화되어 있는지 확인하세요.
그리드 크기 세팅 환경설정
Grid Size 노드를 사용하여 PCG 그래프에서 메시 생성을 커스터마이징하는 방법은 다음과 같습니다.
Grid Size 노드를 사용하여 계층형 생성 그리드 크기를 설정합니다.
- Grid Size 노드를 검색해 디폴트 계층형 생성 그리드 크기를 오버라이드하려는 PCG 그래프의 각 분기에서 샘플러 노드 앞에 추가합니다.
- Grid Size 노드를 클릭하고 HiGen 그리드 크기(HiGen Grid Size) 세팅을 조정합니다.
- 그래프를 저장합니다.
- 레벨에서 결과를 재생성합니다.
메시의 크기를 사용하여 그래프에서 적절한 그리드 크기를 결정할 수 있습니다. 대형 메시는 소형 메시보다 수가 적을 때가 많으며 용이하게 스트리밍하려면 상대적으로 큰 그리드에 배치해야 합니다. 소형 메시는 수가 더 많으며 상대적으로 크기가 작은 그리드에 배치해야 합니다.
계층형 생성은 다음 실행 가이드라인을 사용합니다.
- PCG 그래프에서 Grid Size 노드를 따르지 않는 노드는 HiGen 디폴트 그리드 크기 세팅에 정의된 값을 사용하여 데이터를 생성합니다.
- 큰 그리드 크기에서 생성된 데이터는 작은 그리드를 실행하는 동안 캐시된 데이터로 사용할 수 있습니다. 큰 그리드 크기에서 작은 그리드 크기로는 그래프가 캐스케이드되어 내려가지만, 작은 그리드에서 큰 그리드로는 캐스케이드되지 않습니다.
- 노드에 여러 그리드 크기의 데이터를 사용하는 입력이 여러 개 있는 경우, 출력은 가장 작은 그리드 크기를 사용하여 생성됩니다.
언바운드 그리드 크기 사용
아래 예시에서 Mesh Sampler 노드는 PCG 볼륨 전반에서 바위 메시를 샘플링합니다.
언바운드 그리드 크기 사용을 보여주는 예시입니다.
샘플러는 HiGen 디폴트 그리드 크기 로 볼륨 콘텐츠를 샘플링하며 볼륨의 그리드 셀당 하나씩 네 번의 퍼포먼스 집약적인 작업을 실행합니다. 이 그래프 구성을 사용하면 볼륨 크기가 커질수록 퍼포먼스가 저하됩니다.
이런 상황에서는 언바운드(Unbounded) 그리드 크기를 사용하는 것이 좋습니다. 언바운드는 PCG 컴포넌트에 대한 그리드 제한을 없애고 한 번만 이 그리드 크기를 사용하여 노드를 실행합니다. 그런 다음, Grid Size 노드를 사용하여 그리드 제한을 적용할 수 있습니다.
PCG 서브그래프는 그리드 크기가 비활성화되어 있으며 입력 데이터 또는 부모 그래프의 그리드 크기를 사용합니다.
큰 그리드에서 작은 그리드로 데이터를 전달할 때 중복 포인트 데이터가 생성될 수 있습니다. 중복 포인트 데이터는 큰 그리드에 대해 생성된 데이터가 작은 그리드의 모든 그리드 셀에서 리플리케이트될 때 발생하며 퍼포먼스에 심각한 영향을 줍니다. Cull Points Outside Actor Bounds 노드를 사용하여 작은 그리드 셀 외부에 있는 포인트 데이터에서 포인트를 제거하면 중복 데이터를 제거할 수 있습니다.
PCG 그래프에서 그리드 크기 시각화하기
디버그(Debug) 드롭다운 메뉴를 사용하여 PCG 그래프의 각 노드에서 사용되는 그리드 크기를 시각화할 수 있습니다.
PCG 그래프에서 그리드 크기를 시각화하는 방법은 다음과 같습니다.
- 디버그(Debug) 드롭다운 메뉴를 엽니다.
- 로컬 PCG 컴포넌트를 선택합니다. 각 컴포넌트 이름에는 그리드 크기가 포함되어 있습니다. 예를 들어,
PCGPartitionActor_12800_1_5_0/PCGComponent_1/NewPCGGraph는 12,800cm 그리드의 일부입니다.
계층형 생성 그리드 크기의 시각화를 보여주는 예시입니다.
위의 예시에서는 바위 메시를 스폰하는 컴포넌트가 선택되었습니다(1). 나무 메시(2)를 스폰하는 노드는 하이라이트되지만 회색으로 표시되어, 해당 노드가 더 큰 그리드 크기로 나무를 스폰하고 있으며 바위 노드 전에 실행된다는 것을 보여줍니다. 맨 아랫줄에 있는 노드는 풀 메시(3)를 스폰하며 회색으로 표시되어, 더 작은 그리드 레벨로 메시를 스폰하고 있으며 바위 노드가 실행된 후에 실행된다는 것을 보여줍니다.