PCG 데이터 타입
Point, Spline, Surface, Volume, Polygon2D, Attribute Set 등 PCG 프레임워크의 핵심 데이터 구조를 학습합니다.
PCG 데이터 타입 체계
UPCGData를 기반으로 한 데이터 타입 계층 구조
PCG 프레임워크의 모든 데이터는 UPCGData를 기본 클래스로 합니다.
데이터는 Spatial(공간) 데이터와 Non-Spatial 데이터로 나뉘며, 각각 다른 노드에서 처리됩니다.
UPCGData // 최상위 기본 클래스
├── UPCGSpatialData // 공간 데이터 기본
│ ├── UPCGPointData // 포인트 배열
│ ├── UPCGSurfaceData // 서피스 (Landscape 등)
│ ├── UPCGSplineData // 스플라인 경로
│ ├── UPCGVolumeData // 3D 볼륨
│ ├── UPCGPolygon2DData // 2D 폴리곤 (5.7+)
│ ├── UPCGPrimitiveData // 프리미티브 (메시)
│ ├── UPCGTextureData // 텍스처 데이터
│ └── UPCGCompositeData // 복합 데이터
└── UPCGParamData // 파라미터 (Attribute Set)
Spatial 데이터는 3D 공간에서 위치를 가지는 데이터로, 포인트, 서피스, 스플라인 등이 해당합니다. Non-Spatial 데이터(Attribute Set)는 공간 정보 없이 속성값만 담은 테이블 형태의 데이터입니다.
Point Data 심화
PCG의 가장 핵심적인 데이터 타입
Point Data(UPCGPointData)는 PCG에서 가장 많이 사용되는 데이터 타입입니다.
각 포인트는 3D 공간의 위치와 함께 다양한 속성을 담고 있습니다.
포인트의 기본 속성 (Static Attributes)
| Attribute 이름 | 타입 | 접두사 | 설명 |
|---|---|---|---|
$Position |
FVector | $ | 월드 공간 위치 |
$Rotation |
FQuat | $ | 포인트 회전 (쿼터니언) |
$Scale |
FVector | $ | 포인트 스케일 |
$BoundsMin / $BoundsMax |
FVector | $ | 포인트 바운딩 박스의 최소/최대 범위 |
$Color |
FVector4 | $ | 포인트 색상 (R, G, B, A) |
$Density |
float | $ | 0~1 범위의 밀도 값. 포인트 존재 확률 |
$Steepness |
float | $ | 서피스 경사도 (0=평탄, 1=수직) |
$Seed |
int32 | $ | 포인트별 랜덤 시드. 결정적 랜덤에 사용 |
$ 접두사가 붙은 속성은 Static Attribute로, 포인트의 고정된 구조적 속성입니다.
Attribute 연산 노드에서 이 이름으로 직접 참조할 수 있습니다. 예: $Density를 기반으로 필터링.
Spatial 데이터 타입
Surface, Spline, Volume, Polygon2D 데이터의 특성과 활용
Surface Data
UPCGSurfaceData
Landscape나 Static Mesh의 표면을 나타냅니다. Surface Sampler의 입력으로 사용되며, 포인트가 서피스 위에 정확히 배치되도록 합니다.
입력: Get Landscape Data, Get Primitive Data
Spline Data
UPCGSplineData
스플라인 경로를 나타냅니다. 도로, 강, 울타리 등 경로 기반 생성에 핵심적입니다. Spline Sampler의 입력으로 사용됩니다.
입력: Get Spline Data, Create Spline
Volume Data
UPCGVolumeData
3D 볼륨 공간을 나타냅니다. Volume Sampler로 3D 공간에 포인트를 생성하거나, Intersection으로 영역 제한에 사용됩니다.
입력: Get Volume Data
Polygon2D Data
UPCGPolygon2DData (UE 5.7+)
2D 폴리곤 영역을 정의합니다. 닫힌 영역을 Surface나 Spline으로 변환할 수 있어 유연한 영역 정의가 가능합니다.
입력: Create Polygon 2D
데이터 변환 흐름
Surface ──→ Surface Sampler ──→ Points
Spline ──→ Spline Sampler ──→ Points
Volume ──→ Volume Sampler ──→ Points
Mesh ──→ Mesh Sampler ──→ Points
Points ──→ Create Spline ──→ Spline
Points ──→ Create Polygon2D ──→ Polygon2D
Polygon2D → Create Surface ──→ Surface
Spline ──→ Create Surface ──→ Surface (닫힌 스플라인)
// 범용 변환
Any Spatial → To Point ──→ Points
Any Spatial → Make Concrete ──→ Points
Attribute Set (Param Data)
공간 정보 없이 속성값만 담는 테이블 데이터
Attribute Set(UPCGParamData)은 공간적 위치 없이 순수한 키-값 쌍의 데이터를 담습니다.
DataTable 로드, 파라미터 전달, 설정값 관리 등에 사용됩니다.
Attribute Set 생성 노드
| 노드 | 입력 | 설명 |
|---|---|---|
Create Attribute |
수동 입력 | 단일 Attribute를 가진 Attribute Set을 생성 |
Load Data Table |
DataTable 에셋 | DataTable의 행을 Attribute Set으로 변환 |
Get Actor Property |
Actor 프로퍼티 | Actor의 프로퍼티 값을 Attribute Set으로 추출 |
Point To Attribute Set |
Point Data | 포인트 속성을 Attribute Set으로 변환 |
메타데이터 도메인
Attribute는 세 가지 도메인 중 하나에 속합니다.
@Data
데이터 전체에 대한 단일 값. 데이터셋 레벨의 메타정보를 담습니다.
@Points
각 포인트마다 개별 값. $Position, $Density 등 포인트별 속성입니다.
@Elements
Attribute Set의 각 엔트리에 대한 값. DataTable 행 데이터 등에 사용됩니다.
핵심 요약
- PCG 데이터는 Spatial(Point, Surface, Spline, Volume, Polygon2D)과 Non-Spatial(Attribute Set)로 나뉜다
- Point Data는 가장 핵심적인 타입으로, $Position, $Density, $Seed 등의 Static Attribute를 가진다
- Polygon2D는 UE 5.7에서 추가된 2D 폴리곤 타입으로, Surface나 Spline으로 변환이 가능하다
- 모든 Spatial 데이터는 Sampler 노드를 통해 Point Data로 변환할 수 있다
- Attribute Set은 공간 정보 없이 키-값 쌍만 담으며, 파라미터 전달이나 DataTable 연동에 사용된다
- 메타데이터 도메인은 @Data(데이터 전체), @Points(포인트별), @Elements(엔트리별) 세 가지이다
도전 과제
배운 내용을 직접 실습해보세요
Point Data, Spline Data, Volume Data를 각각 생성하고 Debug 노드로 시각화하세요. 각 타입을 Spawner에 연결했을 때의 차이를 관찰하세요.
Spline Data를 Spline Sampler로 Point Data로 변환하고, 스플라인을 따라 가로등이나 울타리를 배치하세요. Points Per Segment로 배치 간격을 제어하세요.
Landscape Data → Point Data → Volume Data → 최종 Mesh Spawn까지 여러 데이터 변환을 거치는 복합 파이프라인을 구축하세요. 지형 높이에 따라 바이옴을 분류하세요.