프로시저럴 콘텐츠 생성(Procedural Content Generation, PCG) 프레임워크는 프로시저럴 노드 그래프를 활용하여 에디터와 런타임 모두에서 프로시저럴 콘텐츠를 생성합니다. 머티리얼 에디터와 유사한 포맷을 사용하여 공간 데이터가 레벨의 PCG 컴포넌트에서 그래프로 이동하며, 포인트 생성에 사용됩니다. 포인트는 아래에 나열된 일련의 노드를 통해 필터 적용 및 수정됩니다.
블루프린트
| 노드 | 설명 |
|---|---|
Execute Blueprint | 지정된 커스텀 블루프린트 클래스를 Execute 또는 Execute With Context 메서드를 사용하여 |
컨트롤 플로
| 노드 | 설명 |
|---|---|
Branch | 부울 어트리뷰트를 기반으로 두 출력 중 하나를 선택합니다. 이렇게 하면 그래프에서 오버라이드할 수 있는 부울 값에 따라 제공된 데이터를 '출력 A' 또는 '출력 B'로 전달할 수 있습니다. 특정 상황(무언가의 유무, 플랫폼 실행 등)에 따라 그래프의 일부 다른 부분이 실행되도록 그래프의 실행 플로를 제어합니다. 아무 데이터도 없는 브랜치는 더 효율적인 수행을 위해 실행에서 컬링됩니다. |
Select | 부울 어트리뷰트를 기반으로 두 입력 중 하나를 선택하여 단일 출력에 전달합니다. 이를 통해 특정 상황(무언가의 유무, 플랫폼 실행 등)에 따라 그래프의 일부 다른 부분이 실행되도록 그래프에서 실행 플로를 제어합니다. Select 노드의 브랜치(입력)는 현재로서는 실행에서 컬링되지 않지만 향후 버전에서 컬링될 수 있습니다. |
Select(Multi) | 정수, 열거형 또는 문자열 기반으로 설정할 수 있는 Select 노드의 다중 입력 버전입니다. 이 노드는 서로 다른 데이터를 선택할 때 그래프에서 더 명확하게 표현할 수 있어 특히 유용합니다. '매직넘버'처럼 보이는 인상을 어느 정도 없애주며, 선택할 수 있는 입력이 두 개 이상인 경우 유용합니다. |
Switch | 정수, 열거형 또는 문자열 기반으로 선택할 수 있는 Branch 노드의 다중 출력 버전입니다. 이 노드는 서로 다른 데이터를 선택할 때 그래프에서 더 명확하게 표현할 수 있어 특히 유용합니다. '매직넘버'처럼 보이는 인상을 어느 정도 없애주며, 선택할 수 있는 입력이 두 개 이상인 경우 유용합니다. |
디버그
| 노드 | 설명 |
|---|---|
디버그(Debug) | 그래프에서 이전 노드를 디버그하지만 일시적이지 않습니다. 이 노드에 데이터를 제공하는 노드에서 디버그를 활성화하는 것과 동일하게 작동합니다. 디버그 파라미터는 일시적이더라도, 이 노드는 일시적이지 않기 때문에 그래프에 영구적인 디버그 포인트를 두는 데 유용합니다. 에디터 빌드가 아닌 경우에는 실행되지 않습니다. |
Sanity Check Point Data | 입력 데이터 포인트에 주어진 범위의 값이 있는지 검사합니다. 범위를 벗어나면 이 노드가 오류 로그를 작성하고 생성을 취소합니다. 그래프에서 가정을 검증하려고 할 때 유용하지만 그래프의 좋은 구성 요소로 간주해서는 안 됩니다. |
Print String | 접두사가 붙은 메시지를 선택적으로 로그, 노드 및 화면에 출력하는 메시지를 인쇄합니다. 이는 출시 빌드에서 패스스루 노드 역할을 하므로, 이 시점에서는 접두사가 붙은 메시지를 출력하지 않습니다. 이 노드는 컨트롤 플로 노드 다음에 나오는 데드 브랜치 등의 그래프에서 가정을 디버깅하고 검증하는 데 유용합니다. |
밀도
| 노드 | 설명 |
|---|---|
Curve Remap Density | 포인트 데이터에 있는 각 포인트의 밀도를 제공된 커브에 따라 다른 밀도 값으로 리매핑합니다. 이 노드는 일부 상황에서 밀도를 연계하여 더 멋진 그레이디언트를 만들거나 다운스트림에서 더 복잡한 처리를 수행하는 데 사용할 수 있습니다. 별도의 데이터 오브젝트에 의존하기 때문에 PCG 외부에서 더 쉽게 변경할 수 있습니다. 최종 밀도 = 커브 리매핑(입력 밀도) |
Density Remap | 선형 트랜스폼을 포인트 밀도에 적용합니다. 입력 범위를 벗어나는 값에 영향을 미치지 않도록 설정할 수 있습니다. D' = (Out_Max - Out_Min) * (D - In_min) / (In_max - In_min) + Out_Min |
Distance to Density | 레퍼런스 포인트에서 각 포인트의 거리에 따라 포인트 밀도를 설정합니다. 타깃 포인트에 대한 밀도 그레이디언트를 계산하는 데 사용되며, 더 세밀한 제어를 가능하게 합니다. 대부분의 의도와 목적에 따라 이 노드는 더 일반화되고 훨씬 더 효율적인 네이티브 거리(Distance) 노드로 대체됩니다. |
필터(Filter)
| 노드 | 설명 |
|---|---|
Attribute Filter | 어트리뷰트 및 프로퍼티에 대한 범용 필터링입니다. 포인트 데이터(Point Data)와 어트리뷰트 세트(Attributes Set) 모두에 작동합니다. 데이터를 구분하여 포인트를 컬링하거나 별도의 처리를 통해 베리에이션을 도입하는 데 사용됩니다. 이 필터는 상수, 또 다른 공간 데이터(입력이 공간 데이터인 경우 같은 포인트를 샘플링하거나 ToPoint 버전에서 샘플링하는 것처럼 필터를 적용할 수 있음) 또는 어트리뷰트 세트일 수 있습니다. |
Attribute Filter Range | 입력 데이터(포인트 데이터 또는 어트리뷰트 세트)가 범위 안의 데이터와 범위 밖의 데이터로 구분되는 범위 기반 Attribute Filter 버전입니다. 데이터를 구분하여 포인트를 컬링하거나 별도의 처리를 통해 베리에이션을 도입하는 데 사용됩니다. 이 필터는 상수, 또 다른 공간 데이터(입력이 공간 데이터인 경우 같은 포인트를 샘플링하거나 ToPoint 버전에서 샘플링하는 것처럼 필터를 적용할 수 있음) 또는 어트리뷰트 세트일 수 있습니다. |
Density Filter | 밀도와 제공된 필터 범위를 기반으로 포인트에 필터를 적용합니다. 이 노드는 Attribute Filter 노드로 완전히 대체되지만, 보다 전문화되어 있고 효율적입니다. 이 노드는 퍼포먼스가 주요 관심사이거나 그래프에서 이러한 방식으로 의도를 더 쉽게 전달할 수 있는 경우에 사용해야 합니다. |
Discard Points on Irregular Surface | 주어진 소스 포인트 주변의 여러 포인트를 테스트하여 같은 평면에 있는지 확인합니다. 다음은 PCG 서브그래프 사용의 예시로 Electric Dreams 데모에서 사용됩니다. |
Filter Data By Attribute | 지정된 메타데이터 어트리뷰트가 있는지 여부에 따라 데이터(콘텐츠가 아님)를 구분하여 어트리뷰트가 있는 데이터는 내부 필터 출력에, 나머지는 외부 필터 출력에 표시합니다. 이는 특정 어트리뷰트의 존재에 의존하는 서브그래프 섹션에서 오류 및 경고를 방지하는 데 사용됩니다. 월드의 액터로부터 데이터를 가져올 때와 같은 일부 상황에서는 이러한 특정 어트리뷰트의 존재가 보장되지 않을 수 있기 때문입니다. |
Filter Data by Index | 인덱스와 세팅에 제공된 필터를 기반으로 데이터(콘텐츠가 아님)를 구분합니다. 이 필터는 쉼표로 구분된 개별 인덱스나 범위가 포함된 문자열로 구성됩니다. 음수도 지원되며, 지원 방식은 Python 범위의 작동 방식과 유사합니다. 예를 들어, 크기가 10(0~9 사이의 값)인 배열에서 선택한 인덱스 0, 2, 4:5, 7:-1에는 인덱스 0, 2, 4, 7, 8이 포함됩니다. 이는 그래프에 일부 데이터를 정확하게 허용하는 매우 잘 알려진 파라미터가 있지만 일반적으로 첫 번째 또는 마지막 인덱스가 가장 일반적으로 선택되는 인덱스일 가능성이 높은 경우에 사용됩니다. |
Filter Data By Tag | 태그에 따라 데이터(콘텐츠가 아님)를 구분합니다. 필터를 적용할 태그의 쉼표로 구분된 목록을 지정할 수 있습니다. 이 노드는 월드에서 데이터를 가져오고 PCG에서 데이터 간의 관계를 구축할 때 유용합니다. 예를 들어, Get Actor Data 노드는 주어진 태그가 있는 모든 액터를 반환한 다음 이 중 일부를 포함하거나 제외할 수 있습니다. 그런 다음 Filter Data By Tag 노드를 사용하면 데이터를 구분하여 그래프에서 유용한 위치로 전달할 수 있습니다. |
Filter Data By Type | 타깃 타입에 지정된 대로 타입에 따라 데이터(콘텐츠가 아님)를 구분합니다. 세팅에서 외부 필터(Outside Filter) 핀이 표시될 수 있다는 점에 유의하세요. 이 노드는 그래프에서 자동으로 필터링하는 방법으로 사용되지만, 제공된 데이터 타입에 따라 그래프에서 동작을 결정하는 데 유용하게 쓰이는 경우도 있습니다. 이런 경우 Count Data 노드와 함께 사용할 수 있습니다. |
Point Filter | In 포인트 데이터에 포인트별 필터를 적용합니다. 필터는 상수, 공간 데이터(같은 포인트 또는 ToPoint 버전에서 샘플링하는 것처럼 필터를 적용할 수 있음) 또는 어트리뷰트 세트일 수 있습니다. |
Point Filter Range | 포인트 데이터에 범위 기반 필터를 적용합니다. |
Self Pruning | 같은 포인트 데이터의 포인트 간 교차점을 제거하여 세팅(Large to Small 등)을 기반으로 데이터 우선순위를 지정합니다. 반경이 비슷한 포인트는 무작위 정리를 사용하여 무작위로 선택되어 패턴 발생을 방지합니다. |
Generic
| 노드 | 설명 |
|---|---|
Add Tags | 쉼표로 구분된 태그 목록을 기반으로 제공된 데이터에 태그를 추가합니다. 이는 Filter Data By Tag 노드와 함께 더 복잡한 그래프에서 데이터 트래킹을 개선하는 데 사용됩니다. |
Apply On Actor | 어트리뷰트 세트에 제공된 프로퍼티에 따라 액터에 프로퍼티를 설정합니다. 프로퍼티가 설정된 후(있는 경우) 액터에서 파라미터가 없는 함수를 호출하는 데에도 사용할 수 있습니다. 액터가 제공되지 않으면 PCG 컴포넌트의 오너(파티셔닝된 그래프의 PCG 파티션 액터)에 적용됩니다. Spawn Actor 노드의 스폰된 액터 프로퍼티 오버라이드 설명과 사용법이 비슷합니다. 이 Apply On Actor 노드는 액터의 변경사항을 PCG에서 되돌릴 수 없으므로 주의해서 사용해야 합니다. 이 노드를 활용하는 예시로는, PCG에서 직접 데이터를 업데이트하는 자동화된 프로세스를 구현하는 경우처럼, PCG에서 계산된 일부 데이터를 PCG에서 생성되거나 생성되지 않을 수 있는 일부 액터에 유연한 방식으로 푸시하는 것이 있습니다. |
Delete Tags | 이 노드는 쉼표로 구분된 목록에 대해 일치하는 모든 태그 또는 제공된 목록에 없는 태그를 입력 데이터에서 제거합니다. 이 노드는 다운스트림에서 처리할 수 있도록 데이터의 태그를 정규화하는 데 사용할 수 있으며, 정리 노드에 가깝습니다. 그러나 동일한 처리가 여러 번 수행될 수 있는 워크플로에서 데이터를 처리 중인 것으로 표시하는 방법으로도 사용할 수 있습니다. |
Gather | 모든 입력을 가져와서 모든 입력 데이터를 보유한 단일 컬렉션을 생성합니다. 주로 정리 용도로 사용됩니다. 중요한 경우의 시퀀스 실행에 대한 Dependency Only 핀이 포함되어 있습니다(예: World Ray Hit Query 대 주어진 그래프에 생성된 콘텐츠). 이 핀에 제공된 모든 데이터가 출력으로 전달되는 것은 아닙니다. |
Get Data Count | 입력 핀으로 전달된 데이터 수가 포함된 어트리뷰트 세트를 반환합니다. 빈 포인트 데이터를 무시하지 않습니다. 이는 필요할 때만 일부 처리를 수행하기 위해 논리 연산과 함께 사용하거나 분기 노드에서 직접 부울로 사용할 수 있습니다. |
Get Entries Count | 어트리뷰트 세트 내 항목 수를 반환합니다. Get Attribute Set From Index 및 Loop 노드와 함께 사용하여 서브그래프에서 일어나는 일을 세밀하게 제어할 때 유용합니다. |
Get Loop Index | 루프 서브그래프 내에서 실행되는 경우 현재 루프 인덱스가 포함된 어트리뷰트 세트를 반환합니다. 직접 서브그래프의 인덱스만 반환하며 가장 가까운 루프를 찾기 위해 그래프 계층구조를 거슬러 올라가지는 않습니다. 재귀 패턴 또는 로깅 목적으로 반복작업 데이터를 계산하는 데 사용할 수 있습니다. |
Proxy | 그래프 실행 중 동적 오버라이드를 허용하는 대체용 자리표시자 노드입니다. 프로토타입(기본값)을 설정하여 적절한 노드 핀을 표시할 수 있지만, 실행 중인 노드는 파라미터 오버라이드를 통해 제어될 수 있습니다. 이는 특정 노이즈 타입 노출과 같이 사전 빌드된 노드에서 일부 인스턴스별 제어를 허용하는 데 특히 유용합니다. |
Replace Tags | 입력 데이터의 태그를 일치하는 태그로 대체합니다. 이 노드는 쉼표로 구분된 목록을 사용하여 1:1, N:1 또는 N:N 관계의 태그 대체를 지원합니다. |
Sort Attributes | 입력 데이터(포인트 데이터 및 어트리뷰트 세트)를 지정된 어트리뷰트별로 오름차순 또는 내림차순으로 정렬합니다. 이 노드는 다운스트림 노드에서 예측할 수 있는 방식으로 데이터를 정렬하는 데 사용할 수 있습니다. 예를 들어, 우선순위에 따라 일부 값을 정렬한 다음 다운스트림에서 이를 기준으로 작업을 수행할 수 있습니다. |
Sort Points | Sort Attributes의 에일리어스입니다. |
헬퍼
| 노드 | 설명 |
|---|---|
Spatial Data Bounds To Point | 경계를 계산하고 공간 데이터의 경계를 나타내는 단일 포인트를 반환합니다. 이는 표시 목적으로나, 같은 타입의 다른 데이터와 병합할 수 있는 데이터를 더 간단하게 표현하는 데 유용합니다. |
계층형 생성(Hierarchical Generation)
| 노드 | 설명 |
|---|---|
Grid Size | 어떤 그리드 크기로 다운스트림 노드를 실행할지 지정합니다. Hierarchical Generation과 함께 사용됩니다. |
Input Output
| 노드 | 설명 |
|---|---|
Data Table Row to Attribute Set | 데이터 테이블에서 어트리뷰트 세트로 단일 행을 추출합니다. 이는 Load Data Table보다 유연성은 떨어지지만, 여전히 유용할 수 있는 데이터 테이블에 대한 단일 행 액세스 방식입니다. |
Load Alembic File | Alembic 파일을 PCG 포인트 데이터로 로드합니다. 이 노드는 Alembic 파일을 포인트 데이터 포맷으로 임포트하여 처리하는 데 사용됩니다. Alembic 파일에는 포인트만 있는 것이 아니라 다른 데이터 타입도 있지만, 현재 이 노드에서는 지원하지 않습니다. 이 노드는 반복작업 중인 그래프에서는 실행할 수 없습니다. 대신 EUW를 통해 이 변환을 수행하고 Alembic을 PCG 에셋으로 한 번만 저장하여 반복 사용하는 것이 더 효율적입니다. Procedural Content Generation (PCG) External Data Interop 플러그인이 필요합니다. |
Load Data Table | UDataTable을 PCG 포인트 데이터로 로드합니다. 이 노드는 테이블을 포인트 데이터 또는 어트리뷰트 세트로 임포트할 수 있습니다. 이 기능은 PCG 그래프를 보지 않고도 PCG를 데이터 기반으로 만들 수 있어 매우 유용합니다. 데이터 테이블의 변경사항은 파일이 저장될 때 PCG로 전파됩니다. |
Load PCG Data Asset | 동기식 또는 비동기식으로 PCG 데이터 에셋 오브젝트를 로드하고 그래프에서 해당 데이터를 다운스트림으로 전달합니다. |
Metadata
| 노드 | 설명 |
|---|---|
Add Attribute | 포인트 데이터 또는 어트리뷰트 세트에 어트리뷰트를 추가합니다. |
Attribute Noise | 포인트 데이터 세트의 각 포인트에 대한 타깃 어트리뷰트의 새 값을 계산합니다. 포인트 데이터와 어트리뷰트 세트 모두에 작동합니다. 값은 선택한 입력 어트리뷰트인 Mode, Noise Min, Noise Max에 따라 달라집니다. 이는 연속적인 파라미터에 베리에이션을 추가하는 데 유용합니다. |
Attribute Partition | 선택한 어트리뷰트에 따라 입력 데이터(포인트 데이터 또는 어트리뷰트 세트 또는 필요한 경우 포인트 데이터로 변환할 기타 공간 데이터)를 파티션으로 분할합니다. 선택한 각 어트리뷰트에 대해 동일한 값을 가진 모든 요소는 동일한 출력 데이터로 묶입니다. 이는 메시 샘플러를 사용하여 메시의 포인트를 샘플링하고 포인트 복사(Copy Points)를 통해 이러한 포인트를 '올바른' 포인트에 전파하는 등, 특정 상황에서 동일한 어트리뷰트 값에 대해 처리해야 하는 경우 Loop 노드로 들어오는 데이터를 구분하는 데 유용합니다. |
Attribute Rename | 기존 어트리뷰트의 이름을 바꿉니다. 이 노드는 다운스트림 처리에 특정 어트리뷰트가 존재해야 할 때 사용됩니다. 데이터를 서브그래프에 전달할 때 유용합니다. |
Attribute Select | 선택한 축의 최솟값(Min), 최댓값(Max) 또는 중앙값(Median)을 계산합니다. 축이 있는 내적 계산과 유사합니다. |
Attribute String Op | 스트링 관련 어트리뷰트 연산(예: 스트링 덧붙이기)을 수행합니다. 이 노드는 Print String 노드 및 Create Target Actor 노드와 함께 사용됩니다. |
Break Transform Attribute | Transform 어트리뷰트를 이동(Translation), 회전(Rotation) 및 스케일(Scale) 컴포넌트로 분류합니다. |
Break Vector Attribute | 벡터 어트리뷰트를 X, Y, Z, W 컴포넌트로 분류합니다. |
Copy Attribute | 어트리뷰트(Attribute) 핀 또는 입력 자체에서 새 포인트 데이터로 어트리뷰트를 복사합니다. 이 노드는 일부 값을 다른 어트리뷰트로 이동하고, 더 복잡한 연산을 수행하고, 필요한 경우 궁극적으로 원본 어트리뷰트로 다시 쓸 수 있다는 점에서 유용합니다. |
Create Attribute | 단일 어트리뷰트가 포함된 어트리뷰트 세트를 생성합니다. |
Delete Attributes | 어트리뷰트 세트 또는 공간 데이터에서 쉼표로 구분된 어트리뷰트에 필터를 적용(유지 또는 제거)합니다. 이 노드는 다운스트림에서 유용하지 않은 어트리뷰트를 제거하는 데 사용됩니다. 일부 경우에는 임시 어트리뷰트로 출력 데이터를 오염시키지 않기 위해 이렇게 하는 것이 좋을 수도 있고, 포인트 복사(Copy Points)와 같은 일부 연산은 어트리뷰트별로 비용이 많이 들기 때문에, 그리고 사 중인 세팅에 따라 이렇게 하는 것이 좋을 수 있습니다. |
Density Noise | Attribute Noise의 에일리어스입니다. |
Filter Attributes by Name | 어트리뷰트 세트 또는 공간 데이터에서 쉼표로 구분된 어트리뷰트에 필터를 적용(유지 또는 제거)합니다. Delete Attributes의 에일리어스입니다. |
Get Attribute from Point Index | 별도의 어트리뷰트 세트에 있는 포인트 데이터와 해당 어트리뷰트에서 단일 포인트를 얻습니다. 이 노드는 파티셔닝된 데이터의 루프 내부에서 공통 어트리뷰트 값을 쉽게 얻기 위해 자주 사용됩니다. |
Make Transform Attribute | 제공된 세 가지 이동(Translation), 회전(Rotation), 스케일(Scale) 어트리뷰트에서 트랜스폼(Transform) 어트리뷰트를 생성합니다. |
Make Vector Attribute | 출력 타입(Output Type)을 기반으로 2~4개의 어트리뷰트에서 벡터(Vector) 어트리뷰트를 생성합니다. |
Match And Set Attributes | 제공된 어트리뷰트 세트 테이블(일치 데이터)에서 항목을 선택하고 해당 값을 입력 데이터(포인트 데이터 또는 어트리뷰트 세트)에 복사합니다. 이 노드는 Point Match and Set 노드를 대체합니다. 입력 데이터의 어트리뷰트(입력 어트리뷰트)와 일치 데이터의 어트리뷰트(일치 어트리뷰트)를 일치시켜 값이 일치하는 경우에만 일치 데이터의 항목에서 값을 복사하는 방식으로 선택이 이루어집니다. 데이터의 어트리뷰트가 일치하지 않는 경우, 일치 데이터의 모든 항목은 유효한 일치 항목으로 간주됩니다. 또한 일치 데이터에서 일치하지 않는 항목을 유지하거나 삭제할 수 있는 옵션이 있습니다. 일치 데이터에 잠재적 일치 항목이 여러 개 있는 경우, 가중치를 부여할 수도 있으며(일치 가중치 어트리뷰트), 그렇지 않으면 무작위로 한 항목이 선택됩니다. 입력 가중치 어트리뷰트 사용(Use Input Weight Attribute) 및 입력 가중치 어트리뷰트(Input Weight Attribute) 필드를 사용하여 입력 데이터의 [0 - 1] 값과 일치 데이터의 정규화된 가중치를 상관시킬 수 있습니다. 이를 통해 이전에 계산된 공간 노이즈에서 무작위 선택을 유도할 수 있습니다. 마지막으로, 어트리뷰트를 일치시킬 때 동일한 값이 없는 경우 가장 가까운 값으로 일치시킬 수 있습니다. 일치 여부를 결정하는 최대 거리 한계치를 설정할 수도 있지만, 이는 합리적인 거리 메트릭이 있는 연속 값 타입에만 적용됩니다. 참고로, 벡터의 거리는 엔진 단위의 유클리드 거리, 로테이터의 거리는 도 단위, 쿼터니언의 거리는 라디안 단위입니다. 일치 작업 중에 사용된 모든 어트리뷰트는 출력 데이터로 전파되지 않으므로, 일치 데이터의 일치 어트리뷰트 및/또는 가중치 어트리뷰트는 출력에 복사되지 않습니다. 이 노드는 포인트와 어트리뷰트 세트에 데이터를 삽입하는 데 매우 유연하며, 값 일치 기능을 통해 복잡한 데이터 세트를 빌드할 수 있게 해 줍니다. 이 노드는 데이터 테이블 또는 데이터 자산 목록을 로드한 다음 한 번의 작업으로 적절한 데이터를 포인트에 쉽게 복사할 수 있으므로, 데이터 기반 그래프에서 핵심적인 역할을 합니다. |
Merge Attributes | 여러 어트리뷰트 세트를 연결 순서대로 병합합니다. 일반적이지 않은 어트리뷰트는 이러한 어트리뷰트가 없는 항목에서 각각의 기본값(어트리뷰트 생성 시 기준)으로 설정됩니다. |
Point Match and Set | 타입 일치 및 설정(Match And Set Type) 옵션을 사용하여 선택 기준을 기반으로 각 포인트에 대한 일치 항목을 찾은 다음, 값을 어트리뷰트에 적용합니다. 일반적인 사용 사례는 어트리뷰트 기준(By Attribute) 선택 툴로 Static Mesh Spawner 노드에서 다운스트림에 사용되는 메시를 선택하는 것입니다. |
Transfer Attribute | 데이터 세트 크기가 같은 동일한 타입(공간-공간 또는 포인트-포인트)의 오브젝트에서 어트리뷰트를 설정합니다. 이는 동일한 데이터 세트에서 일부 처리가 수행되지만 어트리뷰트의 서브셋만 유지해야 하거나 데이터에 1:1 관계가 존재하는 경우에 유용합니다. |
어트리뷰트 비트 연산(Attribute Bitwise Op)
| 노드 | 설명 |
|---|---|
And | 두 어트리뷰트 사이의 비트 연산 AND의 결과를 계산합니다. |
Not | 두 어트리뷰트 사이의 비트 연산 NOT의 결과를 계산합니다. |
Or | 두 어트리뷰트 사이의 비트 연산 OR의 결과를 계산합니다. |
Xor | 두 어트리뷰트 사이의 비트 연산 XOR(배타적 OR)의 결과를 계산합니다. |
어트리뷰트 부울 연산(Attribute Boolean Op)
| 노드 | 설명 |
|---|---|
And | 두 어트리뷰트 사이의 부울 AND의 결과를 계산합니다. |
Not | 두 어트리뷰트 사이의 부울 NOT의 결과를 계산합니다. |
Or | 두 어트리뷰트 사이의 부울 OR의 결과를 계산합니다. |
Xor | 두 어트리뷰트 사이의 부울 XOR(배타적 OR)의 결과를 계산합니다. |
어트리뷰트 비교 연산(Attribute Compare Op)
| 노드 | 설명 |
|---|---|
Equal | 두 어트리뷰트 사이의 비교 Equal To 결과를 부울 어트리뷰트에 기록합니다. |
Greater | 두 어트리뷰트 사이의 비교 Greater Than 결과를 부울 어트리뷰트에 기록합니다. |
Greater or Equal | 두 어트리뷰트 사이의 비교 Greater Than or Equal To 결과를 부울 어트리뷰트에 기록합니다. |
Less | 두 어트리뷰트 사이의 비교 Less Than 결과를 부울 어트리뷰트에 기록합니다. |
Less or Equal | 두 어트리뷰트 사이의 비교 Less Than or Equal To 결과를 부울 어트리뷰트에 기록합니다. |
Not Equal | 두 어트리뷰트 사이의 비교 Not Equal 결과를 부울 어트리뷰트에 기록합니다. |
어트리뷰트 수학 연산(Attribute Maths Op)
| 노드 | 설명 |
|---|---|
Abs | Absolute Value 수학 연산의 값을 계산합니다. 입력 어트리뷰트 값을 양수 값으로 변환하고 결과를 어트리뷰트에 기록합니다. |
더하기(Add) | Add 수학 연산의 값을 계산합니다. 2개의 입력 값을 가져와 더하고, 결과를 어트리뷰트에 기록합니다. |
Ceil | Ceiling 수학 연산의 값을 계산합니다. 입력 값을 가져와 다음 정수로 올립니다. |
Clamp | Clamp 수학 연산의 값을 계산합니다. 입력 값을 가져와 특정 범위로 제한합니다. |
Clamp Max | Clamp 수학 연산의 최댓값을 제공합니다. |
Clamp Min | Clamp 수학 연산의 최솟값을 제공합니다. |
Divide | Divide 수학 연산의 값을 계산합니다. 2개의 입력을 가져와 첫 번째 입력을 두 번째 입력으로 나누고, 결과를 어트리뷰트에 기록합니다. |
Floor | Floor 수학 연산의 값을 계산합니다. 두 입력 값을 가져와 가장 가까운 정수로 내리고, 결과를 어트리뷰트에 기록합니다. |
Frac | Frac 수학 연산의 값을 계산합니다. 입력 값을 가져와 이 값의 소수점 부분을 반환합니다. 예를 들어, 입력값이 X이면 결과는 X에서 X의 Floor를 뺀 값이 됩니다. 출력값의 범위는 0~1로, 하한값은 포함하지만 상한값은 포함하지 않습니다. |
Lerp | Linear Interpolate 수학 연산의 값을 계산합니다. 이 표현식은 두 포인트 사이에 선을 긋고 세 번째 Ratio 값을 사용하여 그 선을 따르는 포인트의 값을 결정합니다. 그런 다음 이 값을 어트리뷰트에 기록합니다. |
최대(Max) | 어트리뷰트에서 Max 수학 연산의 값을 계산하고 결과를 어트리뷰트에 기록합니다. 이 연산은 2개의 입력 값을 가져와 더 높은 값을 출력합니다. |
Min | 어트리뷰트에서 Min 수학 연산의 값을 계산하고 결과를 어트리뷰트에 기록합니다. 이 연산은 2개의 입력 값을 가져와 더 낮은 값을 출력합니다. |
Modulo | Modulo 수학 연산의 값을 계산합니다. 2개의 입력 값을 가져와 첫 번째 값을 두 번째 값으로 나눕니다. 이후 나머지를 반환하고 이를 어트리뷰트로 기록합니다. |
곱하기(Multiply) | Multiply 수학 연산의 값을 계산합니다. 2개의 입력 값을 가져와 곱하고, 결과를 어트리뷰트에 기록합니다. |
One Minus | 어트리뷰트에서 One Minus 수학 연산의 값을 계산하고 결과를 어트리뷰트에 기록합니다. 이 표현식은 입력 값 X를 가져와 1-X를 출력하고 결과를 어트리뷰트로 기록합니다. |
Pow | Power 수학 연산의 값을 계산합니다. 이 표현식은 밑과 지수 값 2개를 가져옵니다. 밑 값을 지수로 거듭제곱하고 결과를 어트리뷰트로 기록합니다. |
Round | Round 수학 연산의 값을 계산하고 결과를 어트리뷰트에 기록합니다. 이 표현식은 입력 값을 가져와 가장 가까운 정수로 반올림합니다. |
Set | 출력 어트리뷰트를 제공된 어트리뷰트의 값으로 설정합니다. |
Sign | Sign 수학 연산의 값을 계산하고 결과를 어트리뷰트에 기록합니다. 입력 값을 평가하고 양수, 음수 또는 정확히 0인지 여부를 나타냅니다.
|
Sqrt | Square Root 수학 연산의 값을 계산하고 결과를 어트리뷰트에 기록합니다. |
Subtract | Subtract 수학 연산의 값을 계산합니다. 이 표현식은 2개의 입력을 가져와 첫 번째 값에서 두 번째 값을 뺍니다. |
Truncate | Truncate 수학 연산의 값을 계산하고 결과를 어트리뷰트에 기록합니다. 이 표현식은 정수는 그대로 두고 소수점 부분을 버려 값을 자릅니다. 예를 들어 1.4는 1로 잘립니다. |
어트리뷰트 축소 연산(Attribute Reduce Op)
| 노드 | 설명 |
|---|---|
Average | 그래프가 작동할 수 있는 앙상블 정보를 수집합니다. 예를 들어, 포인트 데이터의 모든 포인트에 대해 스케일 조절을 위한 좋은 피벗으로 사용할 평균 위치를 찾을 수 있습니다. |
최대(Max) | 그래프가 작동할 수 있는 앙상블 정보를 수집합니다. 예를 들어, 포인트 데이터의 모든 포인트에 대해 스케일 조절을 위한 좋은 피벗으로 사용할 평균 위치를 찾을 수 있습니다. |
Min | 그래프가 작동할 수 있는 앙상블 정보를 수집합니다. 예를 들어, 포인트 데이터의 모든 포인트에 대해 스케일 조절을 위한 좋은 피벗으로 사용할 평균 위치를 찾을 수 있습니다. |
어트리뷰트 로테이터 연산(Attribute Rotator Op)
| 노드 | 설명 |
|---|---|
Combine | 두 회전 값을 결합하고 결과를 어트리뷰트로 기록합니다. A를 먼저 결합한 다음 B를 결합합니다. |
Inverse Transform Rotation | 제공된 트랜스폼의 반전으로 로테이터를 트랜스폼합니다. |
Invert | 제공된 로테이터의 반전을 찾고 결과를 어트리뷰트로 기록합니다. |
Lerp | Ratio를 기반으로 2개의 로테이터 입력 A와 B 사이를 선형보간합니다. Ratio가 0이면 A의 100%를 적용하고 Ratio가 1이면 B의 100%를 적용합니다. |
Normalize | 각도를 -180~180 범위로 제한하고 결과를 어트리뷰트로 기록합니다. |
Transform Rotation | 주어진 트랜스폼에 따라 회전을 트랜스폼합니다. 이 노드는 회전을 입력으로 가져오고 주어진 트랜스폼을 적용합니다. |
어트리뷰트 트랜스폼 연산(Attribute Transform Op)
| 노드 | 설명 |
|---|---|
Compose | 두 개의 트랜스폼을 순서대로 구성합니다(A B). 순서는 트랜스폼 구성 시 중요합니다. A B는 모든 후속 트랜스폼에 먼저 A를 적용한 다음 B를 적용하는 트랜스폼을 만듭니다. 결과는 어트리뷰트에 기록됩니다. |
Invert | 입력 트랜스폼을 반전시키고 새 트랜스폼을 어트리뷰트로 기록합니다. |
Lerp | Ratio를 기반으로 2개의 트랜스폼 입력 A와 B 사이를 선형보간합니다. Ratio가 0이면 A의 100%를 적용하고 Ratio가 1이면 B의 100%를 적용합니다. |
어트리뷰트 삼각함수 연산(Attribute Trig Op)
| 노드 | 설명 |
|---|---|
Acos | 입력의 역코사인(arccos)을 반환하고 결과를 어트리뷰트에 기록합니다. |
Asin | 입력의 역사인(arcsin)을 반환하고 결과를 어트리뷰트에 기록합니다. |
Atan | 입력의 역탄젠트(arctan)를 반환하고 결과를 어트리뷰트에 기록합니다. |
Atan 2 | 2개 입력(B/A)의 역탄젠트(arctan2)를 반환하고 결과를 어트리뷰트에 기록합니다. |
Cos | 입력의 코사인(cos)을 반환하고 결과를 어트리뷰트에 기록합니다. |
Deg to Rad | 입력(각도)을 기반으로 라디안 값을 반환하고 결과를 어트리뷰트에 기록합니다. |
Rad to Deg | 입력(라디안)을 기반으로 각도 값을 반환하고 결과를 어트리뷰트에 기록합니다. |
Sin | 입력의 사인(sin)을 반환하고 결과를 어트리뷰트에 기록합니다. |
Tan | 입력의 탄젠트(tan)를 반환하고 결과를 어트리뷰트에 기록합니다. |
어트리뷰트 벡터 연산(Attribute Vector Op)
| 노드 | 설명 |
|---|---|
Cross | 입력 벡터 2개의 외적을 출력합니다. |
거리(Distance) | 입력 벡터 2개 사이의 거리를 계산합니다. |
Dot | 입력 벡터 2개의 내적을 반환합니다. |
Inverse Transform Direction | 입력 트랜스폼의 반전으로 방향 벡터를 트랜스폼하지만 길이를 바꾸지는 않습니다. 결과는 어트리뷰트에 기록됩니다. |
Inverse Transform Location | 입력 트랜스폼의 반전으로 위치를 트랜스폼합니다. 결과는 어트리뷰트에 기록됩니다. |
Length | 입력 벡터에 저장된 벡터의 길이를 반환합니다. |
Normalize | 길이 기반 정규화가 가능하도록 벡터의 정규화된 복사본을 출력합니다. 벡터 길이가 안전하게 정규화하기에 너무 짧은 경우 0 벡터를 반환합니다. |
Rotate Around Axis | 축의 각도를 따라 회전한 벡터 A 결과를 계산하여 반환합니다. |
Transform Direction | 제공된 트랜스폼에 따라 입력 방향 벡터를 트랜스폼합니다. 길이를 변경하지 않습니다. 결과는 어트리뷰트에 기록됩니다. |
Transform Rotation | 입력 트랜스폼에 따라 로테이터 또는 쿼터니언을 트랜스폼합니다. 결과는 어트리뷰트에 기록됩니다. |
어트리뷰트 로테이터 연산(Attribute Rotator Op)
| 노드 | 설명 |
|---|---|
Make Rot from Angles | 입력 Roll, Pitch 및 Yaw 값을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. |
Make Rot from Axis | Forward, Right 및 Up 축에서 생성된 레퍼런스 프레임을 사용하여 로테이터를 반환합니다. |
Make Rot from X | X축만을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. Y와 Z 축은 지정되지 않지만 직교합니다. |
Make Rot from XY | X 및 Y축을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. X 축은 고정된 상태가 유지되고 Y 축은 직교를 위해 최소한으로 변경될 수 있습니다. 또한 Z 값을 계산합니다. |
Make Rot from XZ | X 및 Z축을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. X 축은 고정된 상태가 유지되고 Z 축은 직교를 위해 최소한으로 변경될 수 있습니다. 또한 Y 값을 계산합니다. |
Make Rot from Y | Y축만을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. X와 Z 축은 지정되지 않지만 직교합니다. |
Make Rot from YX | Y 및 X축을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. Y 축은 고정된 상태가 유지되고 X 축은 직교를 위해 최소한으로 변경될 수 있습니다. 또한 Z 값을 계산합니다. |
Make Rot from YZ | Y 및 Z축을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. Y 축은 고정된 상태가 유지되고 Z 축은 직교를 위해 최소한으로 변경될 수 있습니다. 또한 X 값을 계산합니다. |
Make Rot from Z | Z축만을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. X와 Y 축은 지정되지 않지만 직교합니다. |
Make Rot from ZX | Z 및 X축을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. Z 축은 고정된 상태가 유지되고 X 축은 직교를 위해 최소한으로 변경될 수 있습니다. 또한 Y 값을 계산합니다. |
Make Rot from ZY | Z 및 Y축을 사용하여 생성된 로테이터 어트리뷰트를 반환합니다. Z 축은 고정된 상태가 유지되고 Y 축은 직교를 위해 최소한으로 변경될 수 있습니다. 또한 X 값을 계산합니다. |
파라미터
| 노드 | 설명 |
|---|---|
Get Actor Property | PCG 컴포넌트를 보유한(또는 오브젝트 계층구조에서 높은 위치에 있는) 액터에서 프로퍼티를 가져옵니다. 기본적으로 액터 레벨 프로퍼티를 조회하지만(블루프린트 변수에 유용함) 컴포넌트 선택(Selected Component) 옵션을 사용하여 컴포넌트 프로퍼티도 조회할 수 있습니다. 이 프로퍼티는 배열이 없는 구조체와 같은 '플랫' 구조체를 가지거나 지원되는 유효한 타입의 배열을 가질 수 있습니다. 배열의 경우 출력은 여러 항목이 있는 어트리뷰트 세트가 됩니다. 이 노드는 Get Actor Data와 동일한 인터페이스를 사용하여 그래프에서 인스턴스별로 제어할 수 있도록 월드의 액터(자체 액터나 다른 액터)에서 데이터를 얻는 데 유용합니다. 예를 들면, 머티리얼 스폰 등을 위한 스태틱 메시 목록을 얻을 수 있습니다. |
Get Property From Object Path | PCG 컴포넌트를 보유한(또는 오브젝트 계층구조에서 높은 위치에 있는) 액터에서 프로퍼티를 가져옵니다. 어트리뷰트 세트를 통해 액터 레퍼런스(소프트 오브젝트 경로)를 가져올 수 있다는 점을 제외하면 Get Actor Property 노드와 유사합니다. 이 노드는 데이터 기반 사용 사례에 유용합니다. 이 경우 데이터 테이블이 액터에 대한 레퍼런스를 보유할 수 있어 액터 선택에 의존하지 않고도 필요에 따라 여기서 프로퍼티를 쉽게 얻을 수 있습니다. |
Point To Attribute Set | 모든 포인트 프로퍼티를 삭제하고 포인트 어트리뷰트만 유지하여 포인트 데이터를 어트리뷰트 세트로 변환합니다. 입력 포인트 데이터에 어트리뷰트가 없으면, 어트리뷰트 세트가 출력되지 않습니다. 이 노드는 특정 경우에 처리 또는 메모리를 최적화하거나 그래프 전체에서 데이터 유형을 동질화하는 데 유용할 수 있습니다. |
포인트 연산(Point Ops)
| 노드 | 설명 |
|---|---|
Apply Scale to Bounds | 입력 포인트 데이터의 각 포인트에 대해 최소 및 최대 바운드에 스케일을 곱한 후 스케일이 1로 리셋되지만 음수 값은 유지됩니다. |
Bounds Modifier | 제공된 포인트 데이터에서 포인트의 바운드 프로퍼티를 수정합니다. 이 노드는 입력 포인트 데이터의 바운드에 간단한 방식으로 영향을 주는 데 사용됩니다. 예를 들면, Self Pruning 노드나 Intersections 또는 Differences를 처리하기 전에 최종 결과를 미세조정하는 데 유용할 수 있습니다. |
Build Rotation From Up Vector | |
Combine Points | 각 입력 포인트 데이터에 대해 해당 포인트 데이터의 모든 포인트를 포괄하는 단일 포인트가 포함된 새 포인트 데이터를 출력합니다. 이를 통해 포인트 데이터를 재계산하고 특정 트랜스폼을 설정할 수 있습니다. 이 노드는 일부 경우에 몇몇 데이터에 대한 최적화나 더 높은 수준의 뷰를 제공하는 데 사용됩니다. |
Duplicate Point | 각 포인트에 대해 포인트를 복제하고 방향으로 정의된 축을 따라 이동한 다음 새 포인트에 트랜스폼을 적용합니다. 반복작업으로 지정된 횟수만큼 이 과정을 반복합니다. '상대적 스페이스에 적용된 방향(Direction applied in relative space)'을 선택하면, 디스플레이스먼트 축이 새 포인트에서 반복적으로 선택됩니다. 이 노드는 많은 포인트를 빠르게 배치하고 프랙탈과 같은 패턴을 생성하는 데 사용됩니다. |
Extents Modifier | 바운드를 조작하여 포인트 데이터에서 각 포인트의 규모를 수정합니다. |
Split Points | 각 포인트에 대해 지정된 '축 분할' 및 '위치 분할'을 따라 경계가 분할된, '분할 전'과 '분할 후'로 나뉜 두 개의 포인트를 생성합니다. 예를 들어 분할 위치가 0.5이면, 각 포인트는 중간에서 잘리며 양쪽 절반은 각기 다른 출력이 됩니다. 이는 세분화를 지원하여 더 복잡한 포인트 어셈블리를 수행하는 데 사용할 수 있습니다. |
Transform Points | 기본 무작위 규칙을 사용하여 포인트 트랜스폼을 변경합니다(포인트 자체에 적용하거나 Apply to Attribute를 사용해 어트리뷰트에 적용). 트랜스폼(이동, 회전, 스케일)의 각 컴포넌트는 더 구체적인 컨트롤이 가능하도록 상대(Relative) 대신 절대(Absolute)로 설정될 수 있습니다. 다음과 같은 옵션이 있습니다. 균등 스케일(Uniform Scale): 동일한 X, Y, Z 비율로 포인트 데이터를 스케일 조절합니다. 시드 재계산(Recompute Seed): 새 월드 포지션에 따라 포인트 시드 업데이트를 강제합니다. 예시: Transform Points 노드 사용 시 Absolute Rotation을 선택하고 회전 Z를 0으로 설정하면 포인트가 Z축 위를 가리키게 됩니다. 그러면 랜드스케이프에서 샘플링 후 포인트가 위를 향하게 됩니다. 이 노드는 입력 포인트 데이터를 제어하여 공간 베리에이션을 생성하는 데 유용합니다. 자연스러운 모습의 데이터를 생성하는 그래프에서 중요한 역할을 합니다. |
Sampler
| 노드 | 설명 |
|---|---|
Copy Points | 타깃의 포인트당 소스(Source per point in the Target) 입력에 있는 모든 포인트의 인스턴스를 복사합니다. 스페이스 프로퍼티 상속에 사용할 옵션은 여러 개지만 이 노드의 퍼포먼스에 가장 큰 영향을 미치는 것은 어트리뷰트 상속(Attribute Inheritance)입니다. 이 노드를 사용하여 중첩된 루프 복사를 수행할 수 있으므로 두 개의 타깃과 두 개의 출력이 있는 하나의 소스 또는 두 개의 타깃과 네 개의 출력이 있는 두 개의 소스를 가질 수 있습니다. 이 노드는 로컬 스페이스에서 생성된 포인트 데이터를 인스턴스화하는 데 자주 사용됩니다(예: PCG 어셈블리/에셋). 월드 위치에서 포스트 프로세싱 전에 사용됩니다. |
Mesh Sampler | 지정된 스태틱 메시에서 포인트를 샘플링합니다. 이 작업은 비용이 많이 듭니다. PCG Geometry Script Interop 플러그인과 Geometry Script 플러그인이 필요합니다. |
Texture Sampler | 각 포인트에서 텍스처의 UV를 샘플링합니다. 텍스처 입력이 주어졌을 때 '텍스처 데이터에서 평면(Planar From Texture Data)' 텍스처 매핑 메서드를 사용하면 Get Texture Data 노드를 기반으로 UV 좌표를 변환하고 포인트 입력으로 텍스처를 샘플링합니다. '명시적 포인트 UV 좌표 사용(Use Explicit Points UV Coordinates)' 텍스처 매핑 메서드를 사용하면, UV 좌표는 0~1이며, 고급 타일링을 사용하여 래핑할 텍스처를 지정하거나 0~1로 범위제한하는 옵션과 더불어 UV에 사용되는 어트리뷰트를 결정하는 옵션을 추가로 사용할 수 있습니다. |
Select Points | 주어진 포인트가 선택될지 여부에 대한 확률을 사용하여 입력 포인트 데이터에서 포인트의 서브셋을 선택합니다. 즉, 실제로 0.5의 비율을 사용하면 입력 포인트의 대략 절반이 선택되지만 정확히 절반이 될지는 보장되지 않습니다. 포인트 선택 여부는 독립적으로 결정되므로 정규 분포를 따릅니다. |
Spline Sampler | 소스 머티리얼로 스플라인을 사용하여 포인트를 샘플링합니다. 스플라인에서 샘플링하면 스플라인 커브에 직접 샘플링하게 되고, 수평(Horizontal), 수직(Vertical) 및 볼륨(Volume) 옵션을 사용하면 Y/Z축의 컨트롤 포인트 반경에 따라 스플라인 볼륨에 샘플링하게 됩니다. 스플라인 내부에서 샘플링하려면 스플라인이 닫혀 있어야 합니다. |
Surface Sampler | 일반 그리드 패턴으로 서피스 데이터에 포인트를 샘플링합니다. 이 노드에는 다음 옵션이 포함됩니다.
|
Volume Sampler | 제공된 공간 데이터를 일반 3D 그리드에 샘플링합니다. '복셀과 유사한' 동작을 보여주며 대용량 데이터 또는 높은 밀도에서는 비용이 커질 수 있습니다. |
Spatial
| 노드 | 설명 |
|---|---|
Attribute Set To Point | 어트리뷰트 세트의 항목당 하나의 기본 포인트를 생성하여 어트리뷰트 세트를 데이터 포인트로 변환합니다. 결과 포인트 데이터는 원본 어트리뷰트 세트와 동일한 어트리뷰트를 갖습니다. |
Create Points | 포인트의 정적 설명에서 포인트가 포함된 포인트 데이터를 생성합니다. 이 노드는 일반적으로 단일 포인트를 생성하여 월드 위치 등이 필요한 다른 프로세스에 제공하는 데 사용됩니다. |
Create Points Grid | 세팅에 의해 정의된 간단한 포인트 그리드가 포함된 포인트 데이터를 생성합니다. 이 노드는 로컬 스페이스 모드에서 Copy Points 노드와 함께 여러 소스 주위에 그리드를 생성하는 데 사용됩니다. |
Create Spline | 입력 포인트 데이터에서 스플라인을 생성합니다. 다음을 생성하는 옵션이 포함되어 있습니다.
|
Create Surface From Spline | 닫힌 스플라인에서 묵시적 표면을 생성합니다. 이 표면은 Surface Sampler, Difference, Intersection 등의 다른 표면처럼 사용할 수 있습니다. 이 노드는 현재로서는 스플라인의 이산화에 의존하므로 매우 큰 스플라인에서는 작동하지 않을 수 있습니다. 그런 경우에는 이 노드를 사용하기 전에 스플라인을 먼저 샘플링한 다음 Create Spline 노드를 사용하여 새 스플라인을 생성하는 것이 좋습니다. |
Cull Points Outside Actor Bounds | 현재 컴포넌트(파티션 액터 또는 원본) 바운드에 따라 입력 포인트 데이터에서 포인트를 컬링하며, 바운드 확장을 위한 추가 제어가 가능합니다. 필요한 경우 일부 오버랩을 허용하면서 입력 데이터가 현재 처리와 관련이 있는지 확인하는 데 사용할 수 있습니다. |
Difference | 소스의 집합에 대한 각 소스의 차이 결과를 출력합니다. 이 노드에는 다음과 같은 옵션이 있습니다. 밀도 함수(Density Function): 연산 완료 이후 사용할 밀도 함수를 제어합니다. 다음과 같은 옵션이 있습니다.
모드(Mode): 구체적 공간 데이터와 연속 데이터(분포 함수와 유사한 다른 타입)의 차이가 있을 때의 동작을 제어합니다. 구체적 엘리먼트를 선택하고자 하는 경우 별개(Discrete)로 설정해야 하고, 그 외에는 그에 따른 밀도 함수가 평평할 수 없습니다. 다음과 같은 옵션이 있습니다.
|
거리(Distance) | 첫 번째 입력의 각 포인트에 대해 두 번째 입력에서 가장 가까운 포인트까지의 거리를 계산하고 한 포인트 데이터 세트에서 같은 포인트 데이터 세트로의 거리를 계산할 때는 자동으로 무시합니다. 또는 거리 벡터를 어트리뷰트로 출력할 수 있습니다. 이 노드는 포인트 데이터에서 거리 필드를 시뮬레이션하거나 거리 기반 그레이디언트를 생성하는 데 사용됩니다. 숲 가장자리에 있는 나무나 개울에 너무 가까이 있는 나무의 스케일을 미세조정하는 데 사용할 수 있습니다. |
Find Convex Hull 2D | 각 포인트의 위치만(경계는 사용하지 않음) 사용하여 입력된 포인트 데이터에서 2D 컨벡스를 계산합니다. 이 노드는 Create Spline 노드와 함께 사용하여 모든 포인트를 포함하는 스플라인을 생성하고, 생성된 노드를 Create Surface From Spline 노드에 전달할 수도 있습니다. |
Get Actor Data | Get … Data 노드의 일반 버전. 액터 필터(Actor Filter) 및 모드(Mode)를 사용하여 액터에서 데이터를 읽습니다. 다음과 같은 옵션이 있습니다. 액터 필터(Actor Filter): 액터 데이터를 가져올 때 어떤 액터를 고려할지 결정합니다. 자손 포함(Include Children): 입력의 자손 액터를 고려할지 여부를 결정합니다. 모드(Mode): 다음과 같은 옵션이 있습니다.
PCG 데이터를 얻을 때 추가 옵션:
이 노드는 특히 루트 그래프에서 PCG의 데이터에 액세스하는 가장 일반적인 방법입니다. |
Get Bounds | 주어진 공간 데이터의 월드 스페이스 바운드(최소 및 최대)를 포함하는 어트리뷰트 세트를 생성합니다. 이 노드는 더 많은 타입에 대한 바운드를 반환하므로 Combine Points 노드보다 더 일반적입니다. 이 노드는 그래프에서 더 큰 규모의 처리를 수행하기 위한 더 높은 수준의 구성 요소로 사용할 수 있습니다. |
Get Landscape Data | Get Actor Data 노드의 특수화된 버전으로, 적절한 타입과 구조로 랜드스케이프 데이터를 반환합니다. |
Get PCG Component Data | Get Actor Data 노드의 특수화된 버전으로, 선택한 액터 PCG 컴포넌트에서 생성된 출력만 반환합니다. |
Get Points Count | 제공된 입력 포인트 데이터 내 포인트 수를 반환합니다. 입력 수와 관계없이 하나의 어트리뷰트 세트가 생성되며, 해당 어트리뷰트 세트에 입력 포인트 데이터당 하나의 항목이 포함됩니다. |
Get Primitive Data | Get Actor Data 노드의 특수화된 버전으로, 적절한 타입의 필터링된 프리미티브 데이터를 반환합니다. |
Get Spline Data | Get Actor Data 노드의 특수화된 버전으로, 적절한 타입의 필터링된 스플라인 데이터를 반환합니다. |
Get Texture Data | 표면 데이터로 텍스처를 로드합니다. 대부분의 압축된 텍스처 유형에 대해 GPU가 실행되어야 합니다. 이 노드는 압축된 텍스처 샘플링, UTexture2DArray에서 인덱스를 통해 원하는 UTexture2d를 선택하여 수행하는 샘플링, 모든 UTexture의 Availability 프로퍼티를 사용하여 생성할 수 있는, CPU에서 사용 가능한 텍스처 샘플링을 지원하며, 이중선형 필터링 대신 포인트 필터링을 지원합니다. 또한 이 노드에서는 에디터 전용 옵션으로 CPU 샘플링을 강제할 수도 있습니다. 이를 통해 CPU에서 볼 수 있는 압축되지 않은 타깃 텍스처의 복제본을 생성하여 샘플링합니다. 따라서 GPU 샘플링으로 인한 압축 아티팩트가 방지됩니다. |
Get Volume Data | Get Actor Data 노드의 특수화된 버전으로, 적절한 타입의 필터링된 볼륨 데이터를 반환합니다. |
Inner Intersection | 핀과 무관하게 노드에 제공된 모든 데이터 사이의 내부 교차점을 계산합니다. 예시: 입력에 [A, B, C] 포함 결과: A ∩ B ∩ C |
Intersection | 프라이머리 소스(Primary Source) 핀에 제공된 각 데이터에 대해 외부 교집합을 계산합니다. 이 경우 결과는 프라이머리 소스 핀의 데이터별로 각각의 다른 소스(Source) 핀에 있는 데이터의 합집합과의 교집합이 하나씩 계산됩니다. 예시: Primary Source에 [A, B] 포함 Source 1에 [C, D] 포함 Source 2에 [E] 포함. 결과: A ∩ (C ∪ D) ∩ E, B ∩ (C ∪ D) ∩ E |
Make Concrete | 컴포짓 데이터 타입(교집합, 차집합, 합집합)을 포인트 데이터로 축소합니다. 이미 구체적인 데이터의 경우 효과가 없습니다. 이 노드는 일반적으로 직접 사용되지는 않지만 특정 노드로 변환하는 단계로 사용됩니다. |
Merge Points | 여러 입력 포인트 데이터를 단일 포인트 데이터로 결합합니다. 어트리뷰트가 병합되고 공통적이지 않은 어트리뷰트는 기본적으로 필요합니다. |
Mutate Seed | 입력 포인트 데이터의 각 포인트의 시드를 위치, 이전 시드, 이 노드의 시드 및 컴포넌트의 시드에 따라 변경합니다. 이 노드는 포인트를 복제하는 일부 연산을 수행한 후, 시드에 영향을 미치지 않더라도 무작위 동작을 분리하는 데 유용합니다. |
Normal To Density | 포인트 노멀과 제공된 세팅(노멀(Normal), 오프셋(Offset), 강도(Strength), 밀집도 모드(Density Mode))을 기반으로 포인트 데이터 밀도를 계산합니다. 이는 내적(dot product)과 유사하지만 좀 더 유연합니다. 이 노드는 특정 축과 가장 잘 정렬된 포인트에 영향을 주거나(예: 일부 나무를 더 크게 만들기) 가장 덜 정렬된 포인트에 영향을 주는 데(예: 가파른 경사에서 나무를 제거) 자주 사용됩니다. |
Point Neighborhood | 검색 거리(엔진 단위)에 따라 이웃 기반 값을 계산하여 입력 포인트 데이터에 설정합니다. 이 값에는 중앙까지의 거리, 평균 이웃 중앙, 평균 밀도 및 평균 색상이 포함됩니다. 이 노드는 포인트 간의 밀도나 값을 부드럽게 하는 데 사용할 수 있으며, 주로 자연스러운 절차적 프로세스에 유용합니다. |
Point From Mesh | 제공된 스태틱 메시의 바운드가 포함된 하나의 포인트가 있는 포인트 데이터와 해당 메시에 대한 레퍼런스를 빌드합니다. 이 노드는 잠재적 메시 선택이 미리 이루어진 후 이러한 바운드를 포인트로 이동(주로 파티션 노드 + 루프 노드 + Point From Mes 조합을 통해)할 때 유용하며, 교차점 테스트나 셀프 정리를 수행하기 전에 사용됩니다. |
Projection | 소스 데이터에서 타깃으로 투영할 투영 데이터를 생성합니다. 해당 소스 데이터에서 해당 타깃 데이터로의 특수 투영 표현이 없는 경우 데이터를 포인트로 변환합니다. 이 노드는 그래프에서 일부 조작을 한 후 표면에 포인트를 재투영하는 데 매우 자주 사용됩니다. 예를 들어, Copy Points 노드 뒤에 종종 사용되어 해당 환경의 적절한 위치로 포인트를 대체합니다. |
Spatial Noise | 공간상 일관적인 노이즈 패턴(예: 펄린 노이즈)을 구성하고 이를 지정된 어트리뷰트에 기록합니다. 이 노드는 입력 기반 가중치를 설정해 Match and Set Attributes 노드와 함께 사용하여 선택 항목에 공간 노이즈를 적용할 수 있습니다. 일반적으로 이 노드는 보다 자연스러운 분포를 얻는 데 유용합니다. |
To Point | 이미 있는 경우 포인트 데이터로 데이터를 보내거나 공간 데이터를 포인트 데이터로 이산화합니다. |
Union | 배포 함수 관점에서 데이터 간의 논리적 결합을 생성합니다. 선택한 밀도 함수 옵션에 따라 결과가 다릅니다. 밀도 함수(Density Function): 연산 완료 이후 사용할 밀도 함수를 제어합니다. 다음과 같은 옵션이 있습니다.
|
World Ray Hit Query | 피직스 월드에 레이 캐스트를 수행하는 서피스와 같은 데이터를 생성합니다. 서피스 데이터가 필요한 모든 노드로 데이터를 전달할 수 있습니다. 기본적으로 레이의 크기와 방향은 소스 컴포넌트의 액터 프로퍼티(대체로 볼륨)에 따라 달라지지만 레이 프로퍼티는 오버라이드가 가능합니다. 다음과 같은 옵션이 있습니다. 랜드스케이프에서 메타데이터 적용(Apply Metadata From Landscape): 레이캐스트가 랜드스케이프에 히트하는 경우 랜드스케이프 레이어 값을 구합니다. 이때 약간의 퍼포먼스 비용이 발생합니다. PCG 히트 무시(Ignore PCG Hits): 모든 PCG 생성 에셋을 무시합니다. 월드에서 강제 또는 기타 노드(또는 기타 그래프)의 데이터 생성 순서가 없는 경우 유용합니다. 선택에 따라 피지컬 머티리얼과 액터 히트를 반환할 수 있습니다. 필터링 엘리먼트가 미세 제어에 사용되어 히트를 무시하거나 일부 히트만 유지합니다. |
World Volumetric Query | 현실에서 포인트를 수집하는 볼륨과 같은 데이터를 생성합니다. 서피스 데이터가 필요한 모든 노드로 데이터를 전달할 수 있습니다. 중복 검색 확인을 통해 중복이 포인트로 반환되는지 또는 중복되지 않는 쿼리(필터링 대상)만 반환되는지 여부를 제어합니다. 볼륨에서 '찾은' 액터만 반환할 수도 있습니다. |
Spawner
| 노드 | 설명 |
|---|---|
Create Target Actor | 템플릿에서 스태틱 메시 스포너처럼 PCG 아티팩트를 기록하는 타깃으로 사용할 수 있는 빈 액터를 생성합니다. |
Point from Player Pawn | 현재 플레이어 폰 위치에 포인트를 생성합니다. 런타임 생성 도중 사용됩니다. |
Spawn Actor | 제공된 입력 데이터에서 액터의 콘텐츠 또는 포인트당 액터를 스폰합니다. 액터는 템플릿 액터 클래스나 인스턴스화된 템플릿 액터 또는 세팅의 어트리뷰트에 따라 달라집니다. 다음과 같은 옵션이 있습니다. 템플릿 액터 클래스(Template Actor Class): 프로젝트에서 사용 가능한 액터 목록입니다. 옵션(Option):
병합 없음(No Merging)의 경우, '스폰된 액터 프로퍼티 오버라이드 설명(Spawned Actor Property Override Descriptions)'을 통해 포인트의 어트리뷰트에서 액터에 프로퍼티를 설정할 수 있습니다. 어태치(Attach) 모드:
이 노드는 파티션과 같은 액터를 생성하고 플레이 시 제대로 스트리밍될 수 있는 액터의 아티팩트(비주얼 아티팩트 및 기타 아티팩트)를 수집하는 데 사용할 수 있습니다. |
Static Mesh Spawner | 제공된 포인트 데이터의 포인트당 1개의 스태틱 메시를 스폰합니다. 스태틱 메시 옵션이 메시 항목 배열에 추가되고 각 항목의 가중치를 사용하여 선택됩니다. 이는 모든 가중치 값의 합산을 구하고 이를 각 항목의 퍼센티지로 변환하면서 이루어집니다. 예를 들어 배열에 4개의 항목이 있고 각각의 값이 1인 경우 합산 값은 4입니다. 이후 각 항목의 가중치를 합산으로 나누고 퍼센티지로 변환합니다. 따라서 각 항목의 스폰 확률은 25%입니다. 스태틱 메시 선택은 선택한 메시 선택 툴 타입(Mesh Selector Type) 옵션을 기반으로 베리에이션을 사용하여 이루어집니다. 다음과 같은 옵션이 있습니다.
선택한 메시가 출력 포인트 데이터의 어트리뷰트에 기록되고, 선택한 메시의 바운드가 포인트 바운드로 푸시됩니다. 생성된 각 메시 프로퍼티 오버라이드에 대해 생성될 때 ISM의 템플릿 디스크립터의 프로퍼티 타깃에 적용할 어트리뷰트를 선택할 수 있습니다. |
Subgraph
| 노드 | 설명 |
|---|---|
루프(Loop) | 루프 핀의 데이터당 한 번씩 다른 그래프를 서브그래프로 실행합니다. 루프가 아닌 핀은 그대로 전달됩니다. 핀 프로퍼티는 각 그래프의 입력 및 출력 노드에 설정됩니다. 핀의 사용은 루프에서 실행될 때 그 동작을 결정합니다. 피드백 핀은 출력에서 같은 이름의 다른 핀과 짝을 이루어야 하는 특별한 동작을 갖습니다. 실행 중 첫 번째 반복에서는 호출 그래프에서 피드백 핀의 데이터를 받지만, 이후 반복에서는 이전 반복의 데이터를 받습니다. 이 노드는 같은 종류의 데이터에 대한 로컬 처리를 단순화하는 데 매우 중요합니다. 예를 들어, Mesh Sampler 노드를 사용하여 단일 메쉬에서 샘플링한 후, 해당 데이터를 관련 데이터에만 복사하는 데 사용됩니다. 또한 선택 및 제외 시퀀스와 같이 상호 의존성이 있는 데이터 세트 등을 빌드하는 데에도 사용됩니다. |
서브그래프(Subgraph) | 다른 그래프를 서브그래프로 실행합니다. 그래프는 재귀적으로 자신을 호출할 수 있다는 점에 유의하세요. 즉, 그래프는 이 서브그래프 노드가 제어 흐름 노드로 인해 실행에서 컬링되거나 입력 데이터가 없을 때까지 실행됩니다. 서브그래프 노드는 그래프 복잡도를 줄이고 재사용을 극대화하는 주요 요소입니다. 또한 일부 상황에서 유용할 수 있는 재귀성을 지원합니다. |
미분류
| 노드 | 설명 |
|---|---|
Add Comment | 그래프를 분류하고 정리하는 데 시각적 도움을 줍니다. 이는 실제 노드가 아닙니다. |
Add Reroute Node | 그래프 정리 툴로, 그래프에서 에지에 컨트롤 포인트를 추가하여 더 보기 좋게 만들 수 있습니다. |
Add Named Reroute Declaration Node | Named Reroute 노드는 Reroute 노드와 비슷하지만 시각적 에지가 없습니다. 이 노드는 큰 그래프에서 매우 긴 에지나 복잡한(스파게티) 에지를 제거하는 데 사용됩니다. 이름을 변경하여 여러 위치에서 사용할 수 있지만, 그래프의 한 위치에서만 정의할 수 있습니다. |