PART 1 · 강의 2/3

PCG 그래프와 컴포넌트

PCG Graph의 구조, PCG Component의 설정, PCG Volume의 활용법을 체계적으로 학습합니다.

01

PCG Graph 구조

노드 기반 그래프 에디터와 데이터 연결

PCG Graph(UPCGGraph)는 PCG 프레임워크의 핵심 에셋입니다. Content Browser에서 우클릭 > PCG > PCG Graph로 생성하며, 더블클릭으로 그래프 에디터를 엽니다.

그래프 에디터 구성

영역 설명
그래프 캔버스 노드를 배치하고 연결하는 메인 작업 영역. 우클릭으로 노드 추가
Details 패널 선택한 노드의 파라미터를 편집. 각 노드별 고유 설정 표시
Palette 사용 가능한 노드 카탈로그. 카테고리별 정리 및 검색 지원
Attributes 패널 선택한 노드의 출력 데이터에 포함된 Attribute 목록 표시

핀(Pin) 시스템

노드 간 데이터는 핀을 통해 연결됩니다. 핀 색상은 데이터 타입을 나타냅니다.

핀 타입 설명 예시 노드
Spatial (파란색) Point, Spline, Surface 등 공간 데이터 Surface Sampler의 출력
Param (주황색) Attribute Set, 파라미터 데이터 Get Actor Property 출력
Concrete (보라색) 특정 타입으로 제한된 데이터 Point 전용 입력
노드 비활성화

그래프에서 노드를 선택한 후 D 키를 누르면 해당 노드를 비활성화할 수 있습니다. 비활성화된 노드는 실행에서 제외되어 디버깅에 유용합니다.

02

PCG Component 상세

그래프 실행을 관리하는 핵심 컴포넌트

PCGComponent(UPCGComponent)는 어떤 Actor에든 추가할 수 있는 컴포넌트로, PCG Graph의 인스턴스를 실행하고 결과를 관리합니다.

주요 프로퍼티

프로퍼티 타입 설명
Graph UPCGGraphInterface* 실행할 PCG Graph 또는 Graph Instance 에셋
Generation Trigger EPCGComponentGenerationTrigger 생성 트리거 모드 (Generate On Load, Generate On Demand, Generate at Runtime)
Is Partitioned bool Partitioned Generation 활성화 여부. World Partition 통합에 필수
Seed int32 랜덤 시드 값. 동일 시드는 동일 결과를 보장 (결정적 생성)
Input Type EPCGComponentInput 입력 소스 (Actor, Landscape, 또는 두 가지 모두)

Generation Trigger 모드

Generate On Load

레벨이 로드될 때 자동으로 PCG를 실행합니다. 에디터에서 저장 시 결과가 레벨에 포함됩니다.

Generate On Demand

수동으로 Generate 버튼을 눌러야 실행됩니다. 무거운 그래프에서 유용합니다.

Generate at Runtime

게임 실행 중 동적으로 생성합니다. 런타임 PCG 생성에 필수입니다.

C++ PCGComponent 설정
// Blueprint 또는 C++에서 PCGComponent 접근 UPCGComponent* PCGComp = MyActor->FindComponentByClass<UPCGComponent>(); if (PCGComp) { // 시드 변경 PCGComp->Seed = 42; // 수동 재생성 트리거 PCGComp->Generate(); // 생성 결과 정리 PCGComp->Cleanup(); }
03

PCG Volume과 PCG Actor

다양한 PCG 호스트 Actor 활용법

PCG Volume (APCGVolume)

PCG Volume은 PCGComponent가 미리 내장된 Volume Actor입니다. 볼륨의 크기가 PCG 생성 범위를 결정하며, 가장 빠르게 PCG를 시작할 수 있는 방법입니다.

호스트 타입 입력 범위 적합한 용도
PCG Volume 볼륨 바운드 영역 넓은 영역의 환경 생성 (숲, 초원, 도시 블록)
일반 Actor + PCGComponent Actor 위치 기준 특정 위치 기반 생성 (건물 주변 장식, 오브젝트 세트)
Spline Actor + PCGComponent 스플라인 경로 경로 기반 생성 (도로, 울타리, 강변 식생)
Landscape + PCGComponent Landscape 전체 지형 전체에 걸친 대규모 환경 생성

PCG Volume 스케일링

PCG Volume 설정 가이드
// Volume 크기 설정 팁 [소규모] 100x100m → 정원, 소규모 장식 영역 [중규모] 500x500m → 마을, 숲 구역 [대규모] 2000x2000m → 오픈 월드 지역 (Partitioned 권장) [초대형] 전체 Landscape → World Partition + Hierarchical 필수 // 대규모에서는 반드시 Is Partitioned = true 설정 // PCGWorldActor의 Partition Grid Size를 적절히 조정
Volume 크기 주의

비파티셔닝 모드에서 매우 큰 Volume을 사용하면 모든 메시가 하나의 Actor에 생성되어 메모리와 렌더링 성능에 심각한 영향을 줍니다. 대규모 영역에서는 반드시 Partitioned Generation을 활성화하세요.

04

Graph Instance와 Parameters

그래프 재사용과 파라미터 오버라이드 시스템

PCG Graph Instance

Graph Instance는 머티리얼 인스턴스와 유사한 개념입니다. 원본 그래프의 로직을 공유하면서 파라미터만 다르게 설정할 수 있어, 하나의 그래프로 다양한 변형을 만들 수 있습니다.

Graph Instance 생성
// Content Browser에서: // 1. 우클릭 > PCG > PCG Graph Instance // 2. Parent Graph 선택 // 3. 오버라이드할 파라미터만 수정 // 또는 기존 그래프에서: // PCG Graph 에셋 우클릭 > Create Graph Instance

Graph Parameters

PCG Graph에 사용자 정의 파라미터를 추가하면 외부에서 값을 오버라이드할 수 있습니다.

파라미터 타입 용도 예시
Float 밀도, 스케일, 거리 등 연속적 값 TreeDensity = 0.5
Int32 카운트, 인덱스 MaxTrees = 100
Bool 기능 토글 bSpawnRocks = true
Vector 위치, 크기 범위 ScaleRange = (0.8, 1.2, 1.0)
SoftObjectPath 에셋 참조 TreeMesh = SM_Oak_01
파라미터 설계 전략

하나의 "ForestGenerator" 그래프를 만들고, TreeDensity, TreeType, UnderGrowthEnabled 등의 파라미터를 노출하면 침엽수림, 활엽수림, 혼합림 등 다양한 변형을 Graph Instance로 만들 수 있습니다.

SUMMARY

핵심 요약

  • PCG Graph는 노드를 연결하여 프로시저럴 로직을 정의하는 에셋이며, 핀 색상으로 데이터 타입을 구분한다
  • PCG Component는 Actor에 부착되어 그래프를 실행하며, Generation Trigger로 실행 시점을 제어한다
  • Generation Trigger는 On Load(자동), On Demand(수동), At Runtime(게임 중) 세 가지 모드가 있다
  • PCG Volume은 PCGComponent가 내장된 간편 Actor로, 볼륨 크기가 생성 범위를 결정한다
  • 대규모 영역에서는 반드시 Is Partitioned를 활성화하여 그리드 기반 분할 생성을 사용해야 한다
  • Graph InstanceParameters를 활용하면 하나의 그래프를 다양한 상황에 재사용할 수 있다
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: PCG Graph 기본 노드 연결

Get Landscape Data → Surface Sampler → Density Filter → Static Mesh Spawner 파이프라인을 구성하세요. 각 노드의 출력을 Debug 노드로 확인하며 데이터 흐름을 이해하세요.

실습 2: PCG Component 프로퍼티 설정

PCG Component의 Generate On Load, Generation Trigger, Is Partitioned 등 주요 프로퍼티를 변경하며 동작 차이를 관찰하세요. 수동/자동 Generate를 비교하세요.

심화 과제: 다중 PCG Component 계층 구성

하나의 Actor에 여러 PCG Component를 구성하세요. 부모 PCG가 대지형을, 자식 PCG들이 세부 식생/바위/소품을 추가하는 계층적 생성 파이프라인을 설계하고 구현하세요.