PCG 바이옴 코어 및 샘플 플러그인은 어트리뷰트 세트 테이블, 피드백 루프, 재귀 서브그래프 및 런타임 계층형 생성 등의 PCG 프레임워크 기능 사용법에 대한 예시입니다.
레퍼런스
용어집
툴 및 이 문서 내에서 사용된 용어와 그 정의 목록입니다.
용어 | 정의 |
---|---|
바이옴 코어(Biome Core) | 커스터마이징할 수 있는 단계를 통해 논리적 섹션으로 구성된 고정 파이프라인을 제공하는 체계적인 접근 방식으로 제작된 데이터 중심 바이옴 생성 툴입니다. PCG 바이옴 코어 플러그인에는 바이옴을 절차적으로 생성하는 데 사용되는 PCG 그래프 및 서브그래프 컬렉션이 포함되어 있습니다. |
바이옴 샘플(Biome Sample) | PCG 바이옴 샘플 플러그인에는 바이옴 코어를 이용해 바이옴을 절차적으로 생성하는 데 사용되는 레벨, 데이터 에셋 및 커스텀 PCG 그래프가 포함되어 있습니다. |
바이옴 액터(Biome Actors) | 바이옴 코어와 함께 사용할 수 있는 블루프린트 액터로, 월드에서 바이옴 구성에 사용됩니다. 여기에는 바이옴 볼륨(Volume)/스플라인(Spline) 및 바이옴 구성(Biome Setup) 액터가 포함됩니다. |
바이옴(Biome) | 바이옴 정의(Biome Definition) 및 바이옴 에셋(Biome Asset) 목록에 의해 정의된 공간의 볼륨입니다. |
제너레이터(Generator) | 바이옴 에셋 항목이 참조하는 타입(Type), 우선순위(Priority) 및 제너레이터 그래프(Generator Graph) 프로퍼티를 보유한 데이터 에셋입니다. |
제너레이터 그래프(Generator graph) | 월드에 에셋을 배치하는 데 사용되는 루트 포인트를 생성하는 PCG 그래프입니다. |
바이옴 에셋(Biome Asset) | 바이옴 코어가 스폰할 에셋 프로퍼티가 포함된 데이터 에셋입니다. |
바이옴 캐시(Biome Cache) | 월드에 바이옴을 저장하는 데 사용되는 3D 포인트 그리드 구조체입니다. |
필터(Filters) | 필터 그래프 목록입니다. |
필터 그래프(Filter graph) | 포인트를 처리하고 로직 또는 텍스처 투영에서 정의된 필터 어트리뷰트에 기록하는 PCG 그래프입니다. |
트랜스폼 그래프(Transform graph) | 제너레이터 또는 부모 트랜스폼 포인트에서 포인트를 가져와 프로퍼티를 변경하는 PCG 그래프입니다. 자손 포인트 생성 및 배치에 사용됩니다. |
주입된 데이터(Injected Data) | 포인트를 제외하거나 추가하기 위해 바이옴 코어의 다양한 스테이지에 주입되는 외부 데이터입니다. 파이프라인 내 엔트리 포인트에 따라 제외(Exclusions), 타입 지정(Typed), 특정(Specific), 커스텀(Custom) 등, 다양한 바이옴 데이터 타입으로 구분됩니다. |
파티셔닝(Partitioning) | 볼륨과 프로세싱을 그리드로 분할하여 로컬 업데이트 속도를 높이고 출력을 개별적으로 스트리밍할 수 있는 별도의 액터로 분할합니다. |
계층형 생성(Hierarchical Generation) | 볼륨과 프로세싱을 PCG 그래프의 일부가 실행되는 다양한 크기의 그리드로 분할합니다. 계층형 생성은 다양한 크기의 그리드로 컴퓨팅을 분산하여 로컬 업데이트 속도를 높이고 개별적으로 스트리밍할 수 있는 별도의 액터로 데이터를 출력합니다. 자세한 내용은 PCG 생성 모드 사용하기를 참조하세요. |
런타임 계층형 생성(Runtime Hierarchical Generation) | PCG 그래프에 구성된 각 그리드 크기의 생성 반경을 사용하여 스트리밍 소스 또는 PCG 생성 소스 컴포넌트를 기반으로 런타임 시 그리드 셀을 생성합니다. 계층형 생성과 같은 멀티 레벨 그리드 크기 접근 방식을 사용합니다. 자세한 내용은 PCG 생성 모드 사용하기를 참조하세요. |
바이옴 코어 런타임(Biome Core Runtime) | 바이옴 코어 런타임은 런타임 시 카메라 주변의 디테일한 에셋 생성에 사용되는 별도의 PCG 컴포넌트와 그래프입니다. |
런타임 에셋(Runtime Assets) | 바이옴 코어 런타임이 스폰할 에셋의 프로퍼티가 포함된 데이터 에셋입니다. |
어셈블리(Assembly) | 에셋 액션(Asset Action) > 레벨에서 PCG 에셋 생성(Create PCG Assets from Level(s)) 을 사용하여 레벨에 있는 모든 스태틱 메시와 인스턴스드 스태틱 메시로부터 생성하고 익스포트한 PCG 포인트 데이터인 PCG 데이터 에셋(PCG Data Asset)입니다. |
에셋 옵션(Assets options) | 에셋 옵션은 별도의 구조체로 만들어진 프로퍼티의 서브 카테고리입니다. 디폴트 에셋 옵션은 디버그 옵션(Debug Options), 에셋 옵션(Asset Options), 메시 옵션(Mesh Options), 어셈블리 옵션(Assembly Options), 필터 옵션(Filter Options) 및 런타임 옵션(Runtime Options) 입니다. |
글로벌 파라미터(Global parameters) | 글로벌 행동에 영향을 주는 바이옴 코어 그래프 파라미터입니다. 필터 그래프, 디버그 캐시 디스플레이, 바이옴 블렌딩 범위 및 선택적 바이옴 맵 투영이 포함됩니다. |
루트 포인트(Root points) | 제너레이터 및 제너레이터 그래프에서 제공하는 모든 포인트입니다. |
자손 포인트(Child points) | 자손 에셋을 스폰하기 위해 재귀 트랜스폼에서 생성된 모든 포인트입니다. |
코어 그래프 개요
바이옴 코어 그래프는 바이옴 생성 툴의 두뇌이자 PCG 프레임워크를 사용하여 모든 처리가 이루어지는 곳입니다.
아래에 주요 처리 단계가 순서대로 나와 있습니다.
-
모든 바이옴 액터 및 선택적 바이옴 텍스처 투영에서 바이옴 캐시를 계산합니다.
-
월드 내에서 바이옴 에셋이 참조하는 제너레이터 그래프가 바이옴 캐시에 의해 처리되고 바인딩되어, 사용된 제너레이터별로 고유한 루트 포인트 데이터를 생성합니다.
-
생성된 루트 포인트 데이터에 바이옴이 적용됩니다. 월드 내 모든 바이옴의 모든 에셋으로부터 루트 에셋 테이블이 빌드됩니다. 바이옴, 제너레이터 타입, 서브타입 및 가중치에 따라 각 포인트에 루트 에셋 테이블 어트리뷰트가 할당됩니다.
-
이 단계에서는 각 제너레이터 루트 포인트 데이터 세트 간의 우선순위 기반 차이가 수행됩니다. 제너레이터 우선순위(Generator Priority) 프로퍼티에 따라 작업 순서가 결정되며, 이는 필요에 따라 우회할 수 있습니다.
-
바이옴 코어 액터의 루트 포인트 필터 글로벌 파라미터에서 제공하는 PCG 그래프를 사용하여 필터가 적용됩니다. 템플릿 바이옴 에셋 클래스에는 에셋 항목별 필터링 행동을 제어하는 옵션이 있으며, 필요에 따라 확장할 수 있습니다.
-
트랜스폼 그래프 및 자손 에셋 레퍼런스를 사용하여 에셋별로 재귀 트랜스폼이 적용됩니다. 이러한 에셋 레퍼런스의 계층구조를 통해 각 루트 포인트에 대한 자손 포인트 데이터를 생성하고 최대 깊이 글로벌 파라미터로 제한할 수 있습니다.
-
스태틱 메시 및 액터를 스폰합니다. 프로퍼티 오버라이드, 어셈블리 및 콜리전 프리셋이 지원됩니다.
-
글로벌 파라미터에서 바이옴 코어 런타임에 데이터를 출력하도록 설정할 수 있습니다. 런타임 생성에 사용된 것으로 표시된 모든 에셋이 익스포트됩니다. 필요에 따라 메시를 오프라인에서 샘플링하여 최소 비용으로 바이옴 코어 런타임에 포인트를 제공할 수 있습니다.
하이 레벨 콘셉트
바이옴 캐시
바이옴 캐시(Biome Cache) 는 월드에 바이옴 정의 데이터를 공간적으로 저장하는 데 사용되는 PCG 포인트의 그리드입니다.
-
바이옴 볼륨, 바이옴 스플라인 및 바이옴 텍스처와 관련된 바이옴 정의 컬러는 월드 스페이스에서 각 바이옴을 식별할 수 있도록 이 3D 그리드에 투영되고 저장됩니다.
-
바이옴 캐시는 3D 구조체이므로 바이옴 위에 바이옴을 스태킹하거나 지하 동굴 위에 스태킹하는 등의 수직성이 지원되며, 기다란 기둥 같은 포인트를 제공하는 방식으로 2D도 가능합니다.
-
캐시 해상도는 바이옴 코어 PCG 컴포넌트의 바이옴 캐시 셀 크기(Biome Cache Cell Size) 벡터 파라미터로 제어합니다.
-
캐시의 각 포인트는 한 번에 하나의 바이옴 컬러 값만 저장할 수 있습니다.
-
바이옴 우선순위 지정(Biome prioritization) - 어떤 바이옴이 오버랩되는 다른 바이옴보다 우선하는지를 지정하며, 바이옴 캐시에 바이옴 컬러를 저장할 때 발생합니다.
-
캐시는 바이옴 코어 액터 바운드에서 초기화되며, 랜드스케이프가 발견되면 최적화를 위해 해당 표면을 사용하여 그리드에서 셀을 제거합니다.
* 볼륨 및 스플라인은 랜드스케이프 없이 월드에서 바이옴을 정의할 수 있으며, 이러한 경우 제너레이터는 월드 레이 히트 쿼리(World Ray Hit Query)를 사용하여 지오메트리를 샘플링해야 합니다.
* 랜드스케이프가 존재하는 경우 필요에 따라 바이옴 텍스처를 캐시에 투영할 수 있습니다.
-
제너레이터 그래프에서 표면 샘플러를 사용하여 포인트를 생성할 때, 바이옴 캐시를 바운딩 셰이프(bounding shape) 로 사용하여 월드에서 바이옴이 제너레이터를 사용하지 않는 부분의 랜드스케이프나 다른 표면이 샘플링되지 않도록 합니다.
-
마지막으로, 캐시는 루트 에셋 테이블의 바이옴 에셋을 제너레이터 그래프에서 생성된 포인트와 일치시키기 전에 바이옴을 해석하는 데 사용됩니다.
루트 에셋 테이블
루트 에셋(Root Assets) 은 에셋 계층구조의 최상위 레벨에 있습니다. 바이옴 구성, 볼륨 또는 스플라인에 할당된 데이터 에셋이 루트 에셋을 제공하며, 제너레이터, 메시, 트랜스폼, 바운드, 렌더링 및 콜리전 옵션 같은 프로퍼티가 포함되어 있습니다.
이러한 에셋 프로퍼티는 루트 에셋 테이블(Root Asset Table) 이라고 하는 PCG 어트리뷰트 세트 테이블에 저장됩니다. 테이블의 각 항목은 고유한 에셋 ID(AssetID) 어트리뷰트를 사용하여 식별됩니다.
제너레이터 그래프가 생성한 포인트에 바이옴 캐시로부터 바이옴이 할당되면 루트 에셋 테이블에서 해당 항목에 해당하는 에셋 ID 어트리뷰트가 부여됩니다.
이 루트 에셋 테이블 구성을 사용하면 생성된 각 포인트에 에셋의 모든 프로퍼티가 직접 할당되지 않으므로 포인트 어트리뷰트 레이아웃이 간소화되고 최적화됩니다. 포인트에 에셋 ID가 할당되면, 해당 포인트는 에셋 ID 어트리뷰트만 보유하면 됩니다. 다른 어트리뷰트는 필요할 때 루트 에셋 테이블에서 쉽게 액세스할 수 있습니다.
제너레이터
제너레이터는 루트 포인트 제공자이며 시스템이 작동하는 데 필수적인 요소입니다.
바이옴 제너레이터(Biome Generator) 데이터 에셋 은 고유한 이름 식별자인 제너레이터 타입(Generator Type), 바이옴 에셋이 할당될 포인트 출력을 위해 바이옴 코어가 실행하는 제너레이터 그래프(Generator Graphs), 제너레이터 우선순위(Generator Priority) 를 제공해야 합니다.
제너레이터 그래프(Generator Graphs) 는 원하는 커스텀 로직을 사용하여 모든 종류의 요구에 맞게 제작된 독립형 PCG 그래프로, 포인트만 제공하면 됩니다. 제너레이터 그래프의 PCG 그래프 인스턴스는 완벽하게 지원되며 비슷한 사례 각각에 대해 새로운 커스텀 그래프를 빌드하지 않고도 그래프 파라미터에서 쉽게 커스터마이징하는 데 사용됩니다. /Script/PCG.PCGGraph'/PCGBiomeCore/BiomeGenerators/Graphs/BiomeGenerator_Template.BiomeGenerator_Template'
에 있는 BiomeGenerator_Template 그래프에서 시작하는 것이 좋습니다.
제너레이터 우선순위(Generator Priority) 는 레이어링에 사용됩니다. 이는 여러 제너레이터가 서로에 대한 레이어링 순서를 정하기 위한 우선순위 기반 차이에 영향을 줍니다. 우선순위 값이 낮을수록 우선순위가 높습니다. 생성된 포인트 데이터 간의 우선순위에 따른 차이는 각 포인트에 에셋이 할당된 후에 수행되므로 이러한 차이 작업 중에 메시 바운드에 액세스할 수 있습니다. 우선순위에 따른 차이는 필요에 따라 BiomeGenerator 에셋 내에서 GeneratorAllowOverlap 옵션을 활성화하여 우회할 수 있습니다.
각 바이옴 에셋(Biome Assets) 항목에는 제너레이터에 대한 레퍼런스가 있습니다. 이 링크는 에셋을 할당할 포인트 데이터를 정의하는 데 필요합니다. 바이옴 에셋은 제너레이터 서브타입에 매핑될 수도 있는데, 이 내용은 고급 구성 섹션에서 다룹니다.
예시:
-
같은 소스 그래프를 공유하면서 다른 그래프 인스턴스 파라미터 값을 사용하여 랜드스케이프 샘플링에서 나무와 바위에 대한 포인트를 생성합니다. 바위 제너레이터는 우선순위 0, 나무는 우선순위 1로 설정합니다. 나무의 바운드가 바위와 오버랩되면 나무가 자동으로 제거됩니다.
-
월드 레이 히트 쿼리(World Ray Hit Query)로 지오메트리 표면을 샘플링하여 스태틱 메시 위의 평평한 영역에 POI 어셈블리를 스폰하기 위한 포인트를 생성합니다.
-
호수 또는 강 스플라인 경계 근처에 포인트를 생성하고 이러한 포인트를 랜드스케이프에 재투영합니다.
-
바이옴과 일치하는 사운드 볼륨 또는 나이아가라 시스템에 대한 포인트를 생성합니다.
바이옴 및 에셋 매핑
바이옴은 바이옴 정의 및 바이옴 에셋에서 생성됩니다. 바이옴이 월드에 존재하려면 두 데이터 에셋이 모두 필요하며, 이러한 에셋을 루트 포인트에 할당하려면 바이옴 제너레이터가 필요합니다.
바이옴 정의와 바이옴 에셋 간의 매핑은 바이옴 코어 실행 내에서 발생합니다. 월드의 바이옴 볼륨, 스플라인 또는 구성 액터에 있는 각각의 고유한 바이옴 정의에 대해, 같은 바이옴 정의를 공유하는 모든 액터 내에서 참조되는 모든 바이옴 에셋 목록이 수집되며 처리 중에 특정 바이옴에 연결됩니다.
루트 에셋 테이블은 모든 바이옴 에셋 및 해당 에셋이 속한 바이옴으로 빌드되며, 이를 적절하게 필터링하고 해당 바이옴 내에 생성된 포인트에 매핑할 수 있습니다.
몇 가지 상황별 예시:
-
고유 바이옴 정의와 여러 에셋이 있는 단일 바이옴 볼륨은 이 볼륨에 대한 고유 바이옴이 됩니다.
-
바이옴 정의는 같지만 에셋 목록은 다른 여러 바이옴 볼륨 및 스플라인은 하나의 공통 에셋 목록이 있는 단일 바이옴이 됩니다.
-
고유 바이옴 정의, 여러 에셋, 그리고 같은 바이옴 정의를 공유하는 여러 볼륨 또는 스플라인이 있는 바이옴 구성 액터의 경우: 바이옴 구성 클래스는 단일 글로벌 환경설정 소스를 제공하기 위해 만들어졌으므로, 단일 구성 액터를 사용하여 바이옴을 빌드하고 다른 바이옴 볼륨이나 스플라인에 해당 바이옴 정의의 레퍼런스를 추가할 수만 있습니다. 선택적 바이옴 텍스처 투영을 사용하는 경우, 바이옴 텍스처 컬러당 하나의 바이옴 구성 액터가 필요합니다.
BiomeSampleLevel에서 ConiferousForest BP_PCGBiomeSetup
액터를 사용하여 ConiferousForest 바이옴(파란색)을 글로벌하게 정의합니다. 레벨의 BP_PCGBiomeVolume
은 같은 바이옴 정의를 참조하지만, 선택적으로 사용한 BiomeMap 텍스처에는 바이옴 컬러가 정확히 같은 커다란 섹션이 있습니다. 두 경우 모두 BiomeSetup에는 에셋 목록이 포함되며 두 입력 모두 ConiferousForest 바이옴을 생성합니다.
프로젝트에 사전 환경설정된 바이옴 구성, 볼륨 및 스플라인에 대한 자손 블루프린트 클래스를 생성할 수 있으며 이러한 방식을 권장합니다. 이렇게 하면 같은 월드나 여러 월드에서 바이옴을 빠르고 쉽게 재사용할 수 있을 뿐 아니라 콘텐츠를 글로벌하게 조정하기도 쉽습니다.
우선순위 기반 차이
제너레이터는 개별적으로 처리되며, 제너레이터 에셋 내에서 설정된 제너레이터 우선순위 값을 사용하여 출력, 즉 루트 포인트를 서로 레이어링할 수 있습니다. 레이어링은 각 포인트 데이터가 BiomeCoreDifferenceByPriority 피드백 루프 내에서 처리될 때 발생합니다. 가장 중요한 항목(가장 작은 제너레이터 우선순위 값)부터 가장 덜 중요한 항목(가장 높은 제너레이터 우선순위 값) 순서로 정렬됩니다.
피드백 루프 그래프 내에서 현재 반복작업의 들어오는 데이터와 이전 루프 반복작업의 남은 포인트 간에 바이너리 차이가 순차적으로 적용됩니다. 루프 완료 시 제너레이터에 같은 우선순위 값이 있거나 GeneratorAllowOverlap 옵션이 활성화된 경우가 아니라면 어떠한 포인트도 오버랩되지 않습니다. 입력 포인트 바운드는 할당된 에셋 메시/어셈블리 바운드와 일치하며 더 잘 제어하기 위해 에셋 옵션 내에서 오버라이드할 수 있습니다.
제너레이터 우선순위가 높은 바위(빨간색)와의 레이어링이 수행되어 오버랩된 나무가 제거됩니다.
GeneratorAllowOverlap 옵션을 사용하여 레이어링을 우회한 결과 바위와 나무가 오버랩됩니다.
필터링
우선순위 기반 차이에 따른 레이어링 외에도, 완전히 커스터마이징할 수 있는 계산 그래프 또는 텍스처 투영 목록에서 루트 포인트와 자손 포인트를 모두 필터링할 수 있습니다. 기본적으로 바이옴 코어 액터는 높이(Height), 밀도(Density) 및 워터 디스턴스(Water Distance) 필터로 환경설정되어 있습니다. 바이옴 에셋 필터 옵션에는 이러한 각 디폴트 필터에 대해 노출된 범위가 있습니다.
밀도 필터는 제너레이터, 트랜스폼 또는 필터 그래프에서 포인트의 $Density
프로퍼티에 설정된 밀도를 기반으로 하므로, $Density
에 기록하는 모든 계산을 사용할 수 있습니다. 높이 필터는 $Position.z
프로퍼티를 사용하며 워터 디스턴스 필터는 정의된 워터 레벨 이하의 포인트와 남은 포인트 사이의 거리를 사용하여 작동합니다.
바이옴 코어의 루트 포인트와 자손 포인트에 대한 필터링 단계에서는 다이내믹 그래프 기능을 사용하여 실행 중인 그래프를 파라미터화할 수 있으며, 이 경우 다이내믹 서브그래프 배열을 통해 더 유연하게 필터링할 수 있습니다. 필터 배열 정의, 필터 그래프 생성 및 필터 옵션 구조체 커스터마이징 방법에 대한 자세한 내용은 필터를 참조하세요.
바이옴 샘플 예시는 추가 텍스처 투영 필터 및 커스텀 필터 옵션으로 구성되어 있습니다. 제공되는 두 개의 텍스처인 흐름(Flow) 텍스처와 태양 노출(Sun Exposure) 텍스처는 둘 다 타일별로 투영된 다음 각 에셋 내에서 설정된 해당 최솟값/최댓값으로 필터링되는 2D 텍스처 배열입니다.
흐름 맵 투영의 디버그 디스플레이.
흐름 맵 투영에서 0부터 0.33까지 에셋을 필터링한 경우.
흐름 맵 투영에서 0.66부터 1까지 에셋을 필터링한 경우.
재귀 및 트랜스폼
자신을 호출하는 BiomeCore_ChildTransformLoop 서브그래프의 스크린샷.
바이옴 코어에서 루트 에셋은 자손 에셋을 보유할 수 있습니다. 자손 에셋(Child assets) 은 부모와 같은 에셋 타입을 공유하며, 자체적으로 자손을 보유하여 에셋 계층구조를 형성할 수 있습니다. 루트 에셋과는 달리 자손 에셋은 제너레이터 그래프 를 사용하여 생성되지 않습니다. 자손 에셋은 부모의 포인트를 입력으로 사용하며 트랜스폼 그래프를 사용하여 최종 포인트를 생성합니다.
루트 에셋을 포함한 모든 계층구조 레벨의 모든 에셋은 입력 포인트를 변경하는 트랜스폼 그래프 실행을 지원합니다.
트랜스폼 그래프는 에셋에 할당된 단순한 PCG 그래프로, 루트 에셋의 제너레이터 그래프 또는 부모 에셋의 트랜스폼 그래프 출력에서 부모의 포인트 데이터를 입력으로 받습니다.
트랜스폼 그래프는 입력 포인트에서 시작하여 복제, 포인트 복사, 샘플링 및 포인트 투영 등, PCG 프레임워크에서 제공하는 모든 작업을 수행할 수 있습니다. 이는 자손 에셋을 배치할 때 특히 유용합니다.
계층구조에서 모든 자손 에셋의 배치는 UE 5.4 PCG의 새로운 재귀 서브그래프 기능을 사용하여 실행할 수 있습니다. 이 프로세스를 다음과 같이 설명할 수 있습니다.
지정된 포인트 세트에 대해 에셋별로 다음 작업을 수행합니다.
-
트랜스폼 그래프를 실행하여 포인트 세트의 위치(자손 배치 패턴)를 복제 및/또는 변경합니다.
-
스케일/바운드를 적용합니다.
-
셀프 정리(Self Pruning)를 적용합니다(선택 사항).
-
최종 에셋 스폰을 위한 메시/머티리얼/MeshPropertyOverrides/어셈블리/액터 어트리뷰트를 할당합니다.
-
스폰을 위한 포인트를 출력합니다.
-
현재 에셋에서 잠재적인 자손 에셋을 해석합니다
-
같은 서브그래프에 결과 포인트 및 자손 에셋을 피딩합니다. 여기서 재귀가 발생하며, 이 프로세스는 자손 에셋이 없거나, 입력/부모 포인트가 없거나, 바이옴 코어 PCG 그래프의 최대 자손 에셋 깊이(Max Child Asset Depth) 프로퍼티에 도달할 때까지 무한히 실행됩니다.
재귀 생성의 퍼포먼스를 제어하기 위해 자손 포인트를 방출할 수 있는 부모 포인트 수를 제어하기 위한 제한이 있습니다. 이 제한은 바이옴 코어 그래프의 자손 입력 포인트 속도 배수(Child Input Points Rate Multiplier) 프로퍼티로 제어합니다.
유의해야 할 점은 하나의 에셋이 같은 재귀 레벨에서 여러 개의 자손 에셋을 방출할 수 있다는 것입니다. 같은 부모를 공유하는 경우, 해당 가중치 적용 프로퍼티를 사용하여 자손 에셋 배포에 가중치가 적용됩니다.
스폰
포인트에 최종 트랜스폼과 메시/액터/어셈블리 어트리뷰트가 있으면 액터 및 메시 스폰 단계를 시작할 준비가 된 것입니다.
스폰 단계는 비교적 간단하며 다음 3가지 메서드로 구성되는데, 이러한 메서드는 함께 사용할 수 있습니다.
-
액터(Actor) 스폰의 경우, 스폰할 액터 클래스를 나타내는 SoftClassPath 포인트 어트리뷰트를 사용하여 포인트마다 하나의 액터가 스폰됩니다.
-
스태틱 메시(Static Meshes) 의 경우, SoftObjectPath 어트리뷰트를 사용하여 ISM 컴포넌트로 각 포인트에서 스폰될 메시를 지정합니다. 프로퍼티 오버라이드 목록도 지원되므로 포인트별로 다양한 StaticMesh 컴포넌트 프로퍼티를 적용할 수 있습니다.
-
bUseDefaultCollision
-
bCastShadow
-
bCastHiddenShadow
-
DetailMode
-
InstanceStartCullDistance and InstanceEndCullDistance
-
WorldPositionOffsetDisableDistance
-
bIncludeInHLOD
-
bVisible
-
bAffectDistanceFieldLighting
-
-
어셈블리 인스턴서(Assembly Instancer) 스폰 경로는 어셈블리를 스폰하거나, 단일 에셋으로 스폰될 메시 어트리뷰트가 있는 사전 생성된 PCG 포인트 클라우드인 PCG 데이터 에셋을 스폰하는 데 사용됩니다. 일반 스태틱 메시 스포너(Static Mesh Spawner) 출력을 거치기 전에 PCG 데이터 에셋 포인트 클라우드를 최종 위치로 복사하려면 추가 포인트 복사(Copy Points) 단계가 필요합니다. 이 어셈블리 스폰 경로 사용 시 아직 스태틱 메시 프로퍼티 오버라이드는 지원되지 않습니다.
바이옴 코어 런타임 출력
런타임 생성 출력 은 카메라 주위의 디테일한 에셋의 런타임 생성을 위해 BiomeCoreRuntime 그래프에서 사용할 바이옴 코어 그래프의 데이터를 출력하는 선택적 단계입니다.
이 기능은 PCG의 그래프 대 그래프 커뮤니케이션 기능을 보여주며, 다음과 같이 설명할 수 있습니다.
-
그래프의 PCG 데이터는 Output 노드를 통해 전달되어 BiomeCore PCG 컴포넌트로 시리얼라이즈됩니다.
-
다른 그래프에서는 Get PCG Component Data 노드를 사용하여 이 데이터에 액세스할 수 있습니다.
-
BiomeCoreRuntime의 경우 BiomeCore 그래프/컴포넌트의 데이터는 BiomeCoreRuntime이 실행되는 런타임 시 액세스됩니다.
-
여러 데이터 세트를 이름이 지정된 여러 핀을 사용하여 그래프에서 동시에 익스포트하고 시리얼라이즈할 수 있습니다. 다른 그래프에서 Get PCG Component Data 노드를 사용하여 데이터에 액세스할 때, 데이터를 제공하는 그래프의 Output 핀과 핀 이름이 일치하는 예상 핀(Expected Pins) 배열을 제공해야 합니다.

여러 핀을 사용하여 BiomeCore에서 익스포트된 데이터.

BiomeCoreRuntime의 해당 Get PCG Component Data 노드
BiomeCoreRuntime의 주요 기능은 다음과 같습니다.
-
런타임 샘플링을 통해 랜드스케이프에 포인트 스폰
-
BiomeCore가 스폰한 메시에 포인트 스폰
-
BiomeCore 포인트를 인플루언스로 사용하여 런타임 생성 포인트를 끌어들이거나 밀어냄
이러한 기능을 지원하기 위해 BiomeCore는 실행될 때마다 BiomeCore_PrepareRuntimeData 서브그래프를 사용하여 4개의 개별 포인트 데이터 세트를 미리 계산합니다.
-
바이옴 포인트(BiomePoints)는 BiomeCache의 포인트로, 이 시점에 바이옴 블렌딩(Biome Blending) 지터링 프로세스를 고려하기 위해 최종 에셋 포인트 위치와 바이옴 컬러를 사용하여 바이옴 캐시가 업데이트됩니다. BiomeCoreRuntime은 이 캐시를 사용하여 바이옴 정보를 해석하고 스폰할 에셋을 결정합니다.
-
인플루언스 포인트(InfluencePoints)는 인플루언스 역할을 하는 BiomeCore의 포인트로, BiomeAsset의 RuntimeOptions 섹션 아래에 있는 InfluenceType 프로퍼티를 사용합니다.
-
인스턴스 포인트(Instances Points)는 런타임 디테일을 수신하는 메시의 타깃 위치로 사용됩니다.
-
메시 포인트(Meshes Points)는 메시 샘플러(Mesh Sampler) 프로세스를 사용하여 로컬 스페이스에서 생성되며, 이 프로세스에서는 BiomeAsset의 RuntimeOptions 섹션 아래에 있는 ExportPoints 프로퍼티를 사용합니다.
바이옴 블렌딩 이전의 BiomeCache.
바이옴 블렌딩 이후의 BiomeCache.
이 데이터를 사용한 디테일한 에셋의 런타임 생성에 대해서는 BiomeCore 런타임 섹션에 설명되어 있습니다.
PCG 프레임워크의 런타임 계층형 생성 기능에 대한 자세한 내용은 런타임 계층형 생성을 참조하세요.
주입된 데이터
바이옴 코어에서 주입된 데이터란 수동, 반수동 및 더 예술적인 제어를 추가하기 위해 다양한 주요 단계에서 시스템에 전송되는 외부 데이터를 정의하는 용어입니다. 제외(Exclusions), 타입 지정(Typed), 특정(Specific) 및 커스텀 바이옴(Custom Biome) 데이터, 이렇게 4가지 주요 주입된 데이터 타입이 있습니다. 모든 주입된 데이터 입력은 BiomeCore PCG 그래프의 파란색 코멘트 박스 안에 포함되어 있습니다. 모든 주입된 데이터 타입은 사전 제작된 블루프린트 클래스를 보유하고 있으며 확장될 수 있습니다.
제외
볼륨, 프리미티브 또는 스플라인에서 바이너리 제외를 수행하여 생성된 포인트 중 해당 제외 데이터와 오버랩되는 포인트를 제거합니다. POI, 건물과 같은 수동 배치 또는 특정 아트/게임플레이 요구 사항을 위해 영역을 분리하는 데 적합합니다.
제외는 볼륨, 프리미티브, 닫힌 스플라인의 경우 'BiomeExclusion' 태그가 지정된 컴포넌트를, 열린 스플라인의 경우 'BiomePath' 태그가 지정된 컴포넌트를 사용하여 "PCG_BiomeExclusion" 태그가 있는 액터를 검색합니다.
예시:
아래 이미지에서는 사전 환경설정된 BP_PCGBiomeExclusionVolume과 스플라인을 오른쪽 아래 사분면에 추가한 결과 빈 공간이 생겼습니다. 노란색의 열린 스플라인 경로는 컨트롤 포인트 스케일 프로퍼티를 기반으로 스플라인 볼륨을 따라 나무를 제거합니다.
타입 지정 바이옴 데이터
포인트에 바이옴 및 에셋을 적용하기 전에 제너레이터와 병렬로 파이프라인에 주입된 포인트입니다.
이러한 주입된 포인트는 수동으로 배치한 타입 지정 바이옴 데이터 액터(제너레이터 타입 프로퍼티가 있는 블루프린트 클래스, PCG 컴포넌트 및 PCG 그래프)에서 비롯되며, 참조된 제너레이터로 마킹된 포인트를 출력합니다. 이러한 주입된 포인트는 제너레이터의 포인트로 행동하므로 해당 제너레이터에 할당된 에셋은 바이옴 에셋 목록에 있어야 합니다. 여러 바이옴/에셋에 걸쳐 공유 제너레이터 레퍼런스를 사용하는 경우, 타입 지정 포인트 출력에 스폰하도록 선택된 에셋은 액터가 배치된 바이옴에 따라 달라집니다.
예시:
나무를 제너레이터 타입으로 사용하는 타입 지정 바이옴 액터입니다. 이 위치에 나무가 스폰되며, 에셋은 바이옴 정의 및 바이옴 에셋을 기반으로 선택됩니다. 결과적으로 스폰되는 메시/액터는 바이옴에 따라 자동으로 달라집니다.
바이옴 샘플 레벨에서 타입 지정 바이옴 데이터가 Shared_Trees 제너레이터를 참조하는 경우, 사막(Desert) 바이옴에는 선인장을, 활엽수림(Broadleaf Forest) 바이옴에는 낙엽수를, 침엽수(Coniferous) 바이옴에는 가문비나무를 자동으로 스폰할 수 있습니다.

사막 바이옴의 선인장

활엽수림 바이옴의 낙엽수

침엽수 바이옴의 가문비나무
특정 바이옴 데이터
바이옴 및 에셋 적용 후 재귀 트랜스폼 및 스폰 전에 다른 포인트와 함께 파이프라인에 주입된 포인트입니다. 특정 바이옴 데이터 액터에 설정된 에셋, 즉 에셋 변수가 있는 블루프린트 클래스, PCG 컴포넌트 및 PCG 그래프로 정의되며, 이들이 나타내는 특정 에셋으로 마킹된 포인트를 출력합니다.
특정 바이옴 데이터 액터를 사용하면 어떤 자산을 스폰해야 할지 특정 로직으로 PCG 그래프에서 정밀하게 제어할 수 있으며 데이터 에셋 구조체, 트랜스폼 그래프, 필터링, 최적화된 ISM의 바이옴 코어에서 스폰하여 잠재적으로 런타임 바이옴 코어에 전송하는 등의 이점을 누릴 수 있습니다.
예시:
특정 액터가 BirchTree01 에셋으로 설정되었습니다. 정확한 BirchTree01 메시 및 재귀 자손 에셋은 모든 바이옴에서 어디에 배치되든 상관없이 이 포인트에 스폰됩니다.
바이옴 샘플 레벨에는 단일 나무 에셋을 스폰하는 특정 액터와 논밭 제너레이터 액터, 이렇게 2개의 예시가 있습니다. 논밭 제너레이터 액터에는 스플라인과 투영을 사용하는 자체 커스텀 PCG 그래프 로직이 있어 자체 에셋 레퍼런스 세트가 출력 포인트에 할당된 후 바이옴 코어에 의해 트랜스폼되고 필터링되고 스폰됩니다. 이는 코어 시스템이 출력을 수집하고 처리하는 별도의 툴입니다.
커스텀 바이옴 데이터
커스텀 바이옴 데이터는 독립적인 커스텀 로직과 출력이 있는 독립형 데이터입니다. 커스텀 바이옴 데이터의 포인트 데이터 출력은 스폰 직전 파이프라인 끝 부분에 주입되며 바이옴 코어 런타임에 출력됩니다. 완전한 커스텀 데이터이자 독립형 데이터이므로 메시 스폰처럼 자체적으로 아티팩트를 생성할 수 있으며, 데이터를 바이옴 코어에 출력하여 글로벌 스폰의 이점을 누릴 수 있습니다. 또한 바이옴 코어와 관련 없는 다른 모든 그래프에 대한 데이터도 출력할 수 있습니다. 포인트 스폰을 위해 바이옴 코어에 출력을 전달할 때, 해당 포인트에는 대개 '메시' 소프트 오브젝트 경로와 같은 스폰에 필요한 어트리뷰트가 있어야 합니다.
예시:
-
커스텀 동굴 툴은 PCG 그래프 로직, 블루프린트 및 변수 세트로 빌드됩니다. 동굴 액터는 자체 트리거 박스, 게임플레이 액터 및 스포너를 보유해야 하며 모든 메시를 바이옴 코어에서 스폰할 수 있습니다.
-
수동으로 생성한 오두막이 포함된 레벨 인스턴스 액터는 바이옴의 제외 데이터이자 커스텀 데이터이기도 한데, 왜냐하면 바이옴 코어가 스폰할 메시 및 액터 세트로부터 주변 환경을 생성하기 때문입니다.
입력
바이옴 액터 및 구성
바이옴 액터는 바이옴 코어와 함께 사용할 수 있는 블루프린트 클래스로 구성되며 월드에서 바이옴 구성에 사용됩니다. 여기에는 바이옴 볼륨(Volume)/스플라인(Spline) 및 바이옴 구성(Biome Setup) 액터가 포함됩니다.
블루프린트 클래스는 여기에서 확인할 수 있습니다.
/Script/Engine.Blueprint'/PCGBiomeCore/Blueprints/BP_PCGBiomeVolume.BP_PCGBiomeVolume'
/Script/Engine.Blueprint'/PCGBiomeCore/Blueprints/BP_PCGBiomeSpline.BP_PCGBiomeSpline'
/Script/Engine.Blueprint'/PCGBiomeCore/Blueprints/BP_PCGBiomeSetup.BP_PCGBiomeSetup'
바이옴 볼륨 및 스플라인
바이옴 볼륨 및 스플라인 액터는 바이옴 코어를 시작하는 가장 쉬운 방법입니다. 구성한 다음에는 월드 전체에서 스케일 조정, 모양 변경(스플라인), 복제, 인스턴스화하거나 자손 블루프린트 클래스로 익스포트하여 하나의 소스 클래스로 작업하면서 여러 월드에서 재사용할 수 있습니다.

프로퍼티:
-
액터 트랜스폼 및 컴포넌트(Actor transforms and components): 액터 트랜스폼(위치, 회전, 스케일)이 지원됩니다. 스플라인 셰이프를 커스터마이징할 수 있고 새 컨트롤 포인트를 월드에 직접 추가할 수 있으며, 스플라인은 닫힌 스플라인으로 유지되어야 합니다. 볼륨의 경우, 'BiomeVolume' 박스 콜리전 컴포넌트를 수정할 수 있습니다.
-
정의(Definition): 바이옴 정의 데이터 에셋을 참조하여 이 액터가 컬러, 이름, 우선순위로 나타내는 바이옴을 식별합니다. 각 바이옴 볼륨/스플라인에 바이옴 정의를 할당해야 합니다.
-
에셋 배열(Assets array): 바이옴 에셋에 대한 레퍼런스, 즉 이 바이옴 내에서 처리하고 스폰할 에셋의 목록입니다. 이 프로퍼티는 배열이므로 더 쉽게 사용하고 분류하거나, 다른 바이옴에서 같은 에셋을 공유하기 위해 여러 바이옴 에셋을 추가할 수 있습니다. 같은 정의를 공유하는 다른 바이옴 볼륨, 스플라인 또는 구성이 월드에 이미 환경설정된 에셋 배열과 함께 존재하는 경우 같은 목록을 복제하지 않아도 됩니다.
-
런타임 에셋(Runtime Assets): 바이옴 코어 런타임 생성 내에서 이 바이옴에 사용할 바이옴 에셋 데이터 에셋에 대한 레퍼런스입니다. 이 프로퍼티는 선택 사항이며 바이옴 코어 런타임을 사용할 때만 필요합니다.
-
ZExtents: 바이옴 스플라인 액터 사용 시 바이옴의 높이를 정의합니다. 값이 매우 크면 이 바이옴이 BiomeCore 볼륨 높이 전체에 걸쳐 2D로 적용된다는 뜻이며, 값이 작으면 스플라인이 표면에 대해 조정되어야 한다는 뜻입니다.
바이옴 구성
바이옴 구성 액터는 월드 내에서 바이옴을 글로벌하게 정의하는 데 사용됩니다. 바이옴 구성 소스(정의 + 에셋)로 간주될 때 유용하며, 선택 사항인 BiomeMap 텍스처 투영으로 작업할 때 필요합니다. 자손 블루프린트 클래스로 익스포트하여 단일 소스로 다른 월드에서 재사용할 수 있어 월드를 더 쉽게 구성할 수 있습니다.

프로퍼티:
-
정의(Definition): 바이옴 정의 데이터 에셋을 참조하여 이 액터가 컬러, 이름, 우선순위로 나타내는 바이옴을 식별합니다. 각 바이옴 구성에 바이옴 정의를 할당해야 합니다.
-
에셋 배열(Assets array): 바이옴 에셋 데이터 에셋에 대한 레퍼런스, 즉 이 바이옴 내에서 처리하고 스폰할 에셋의 목록입니다. 이 프로퍼티는 배열이므로 더 쉽게 사용하고 분류하거나, 다른 바이옴에서 같은 에셋을 공유하기 위해 여러 바이옴 에셋을 추가할 수 있습니다. 바이옴 구성은 글로벌 구성으로 간주할 수 있으므로, 같은 바이옴 정의를 참조하는 바이옴 구성 액터와 페어링하는 경우 바이옴 볼륨과 스플라인에 어떠한 에셋도 필요하지 않습니다.
-
런타임 에셋(Runtime Assets): 바이옴 코어 런타임 생성 내에서 이 바이옴에 사용할 바이옴 에셋 데이터 에셋에 대한 레퍼런스입니다. 이 프로퍼티는 선택 사항이며 바이옴 코어 런타임을 사용할 때만 필요합니다.
바이옴 정의
바이옴 정의 템플릿은 BiomeDefinitionTemplate 에서 상속되는 PrimaryDataAsset 클래스입니다.
BiomeDefinitionTemplate의 예시 및 해당 구조체는 여기에서 확인할 수 있습니다.
/Script/Engine.Blueprint'/PCGBiomeCore/BiomeDefinitions/Setup/BiomeDefinitionTemplate.BiomeDefinitionTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/BiomeDefinitions/Setup/BiomeDefinition.BiomeDefinition'
어떤 바이옴을 나타내는지 정의하기 위해 각 바이옴 볼륨/스플라인/구성 액터에서 바이옴 정의 에셋을 참조해야만 합니다.
베이스 BiomeDefinition 구조체 프로퍼티는 다음과 같습니다.

-
바이옴 이름(BiomeName): 바이옴 코어를 디버깅하고 검사할 때 바이옴 식별에 사용됩니다. 생성에 실제로 영향을 미치지는 않습니다.
-
바이옴 컬러(BiomeColor): 바이옴을 식별하고 루트 에셋 테이블의 에셋 항목과 생성된 포인트를 일치시키는 고유 컬러(RGB)입니다. 바이옴의 컬러는 고유해야 합니다.
-
바이옴 우선순위(BiomePriority): 오버랩되는 바이옴이 바이옴 캐시에 삽입될 때 바이옴에 지정되는 우선순위입니다. 값이 낮을수록 우선순위가 높습니다.
바이옴 에셋 및 구조체
BiomeAsset 템플릿은 BiomeAssetBaseTemplate에서 상속되는 PrimaryDataAsset 클래스입니다. BiomeCore와 호환되려면 BiomeAssetBaseTemplate 의 서브클래스가 BiomeAssets 라는 이름의 구조체 배열 을 제공해야 합니다.
BiomeAssetBaseTemplate의 예시 및 해당 구조체는 여기에서 확인할 수 있습니다.
/Script/Engine.Blueprint'/PCGBiomeCore/BiomeAssets/Setup/BiomeAssetTemplate.BiomeAssetTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/BiomeAssets/Setup/BiomeAsset.BiomeAsset'
/Script/Engine.Blueprint'/PCGBiomeCore/Runtime/BiomeRuntimeAssetTemplate.BiomeRuntimeAssetTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/Runtime/BiomeRuntimeAsset.BiomeRuntimeAsset'
(BiomeSample Plugin)
/Script/Engine.Blueprint'/PCGBiomeSample/BiomeAssets/Setup/BiomeSample_BiomeAssetTemplate.BiomeSample_BiomeAssetTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeSample/BiomeAssets/Setup/BiomeSample_BiomeAsset.BiomeSample_BiomeAsset'
BiomeAsset 구조체에는 일반적으로 프로퍼티 분류에 사용되는 서브구조체가 여러 개 있습니다. 프로젝트의 필요에 따라 하나 이상의 서브구조체를 공유하여 여러 타입의 BiomeAsset 템플릿을 쉽게 생성할 수 있습니다.
베이스 BiomeAsset 구조체 프로퍼티는 다음과 같습니다.

-
활성화됨(Enabled): 에셋 배열에서 제거하지 않고 에셋을 비활성화하는 데 사용됩니다.
-
가중치(Weight): 생성된 포인트에 공통 제너레이터 그래프를 공유하는 에셋을 할당할 경우, 가중치 프로퍼티를 사용하여 해당 에셋 선택 확률에 영향을 줍니다.
-
제너레이터(Generator): BiomeGenerator 에셋에 대한 레퍼런스로, PCG 포인트 생성을 담당하는 PCG 그래프를 제공하는 데 사용됩니다.
-
제너레이터 서브타입(GeneratorSubType): 사용할 제너레이터 출력 선택에 사용되는 쉼표로 구분된 제너레이터 서브타입 목록입니다. 선택 사항입니다.
-
트랜스폼 그래프(TransformGraph): PCG 그래프에 대한 레퍼런스로, 에셋을 스폰하기 전에 제너레이터에서 포인트를 소비하고 트랜스폼합니다. 선택 사항입니다.
-
메시(Mesh): 스태틱 메시 에셋에 대한 레퍼런스입니다.
-
어셈블리(Assembly): PCG 데이터 에셋에 대한 레퍼런스입니다.
-
액터(Actor): 액터 클래스에 대한 레퍼런스입니다.
-
자손 에셋(ChildAssets): 이 에셋의 자손으로 스폰할 BiomeAssets의 배열입니다. ChildAssets는 해당 트랜스폼 그래프를 사용하여 부모에 대한 상대적 위치를 생성합니다.
-
디버그 옵션(DebugOptions): BiomeAsset_DebugOptions 서브구조체입니다.
-
Isolate: true인 경우, 고립된 에셋만 스폰됩니다.
-
ShowBounds: 해당 에셋과 관련된 포인트의 와이어프레임 바운드를 그립니다.
-
-
에셋 옵션(AssetOptions): BiomeAsset_AssetOptions 서브구조체입니다.
-
OverlapWithChildren: false인 경우, 포인트 바운드를 차이로 사용하여 현재 에셋과 오버랩되는 자손 에셋을 제거합니다.
-
ForceAssetScale: 트랜스폼 그래프가 적용한 스케일과 상관없이 스케일 프로퍼티를 포인트에 적용합니다. 트랜스폼 그래프가 스케일을 제어하는 경우, false 상태로 둡니다.
-
ExtentsMultiplier: 기본적으로 포인트 바운드가 에셋의 메시/액터/어셈블리의 구성된 바운드에서 계산됩니다. 이 프로퍼티는 계산된 바운드에 대한 배수 역할을 하며 다른 제너레이터/자손 에셋 및 셀프 정리 작업의 포인트에 대한 차이 결과에 영향을 줍니다. 나무의 캐노피 바운드가 나무줄기보다 너무 큰 경우 나무 에셋에 유용합니다.
-
Translation/Rotation/Scale: 액터/스태틱 메시/어셈블리에 적용되는 오프셋으로, 피벗 배치 보정에 사용되며, 다양한 크기/오리엔테이션의 에셋이 같은 제너레이터를 공유하는 경우에 유용합니다.
-
OrientUpward: 에셋 오리엔테이션을 제너레이터에서 Z 상향(Z Up)으로 점진적으로 블렌딩합니다. (예: 표면 샘플 기반 제너레이터의 경우 랜드스케이프 노멀)
-
SelfPrune: 규모(Extents) 배수 인수가 적용된 계산된 에셋 바운드를 사용하여 생성된 포인트에 대해 셀프 정리 작업을 적용함으로써 오버랩되는 포인트를 클린업합니다.
-
SelfPruningExtentsMultiplier: 셀프 정리 전용으로 포인트 규모에 적용되는 추가 배수입니다. 에셋 바운드를 사용하는 다른 작업에 영향을 주지 않고 셀프 정리 중에 사용되는 바운드를 제어할 수 있습니다.
-
-
메시 옵션(MeshOptions): BiomeAsset_MeshOptions 서브구조체입니다.
-
Material: 선택 사항이며, 스태틱 메시 머티리얼에 오버라이드로 적용되는 단일 머티리얼입니다.
-
AllowCollision: true인 경우, 에셋이 스태틱 메시의 콜리전 프리셋을 사용합니다. false인 경우, NoCollision 프리셋을 사용합니다.
-
*Visible: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다.
-
CastShadow: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다.
-
CastHiddenShadow: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다.
-
AffectDistanceFieldLighting: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다.
-
DetailMode: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다. (0~3 = 낮음~매우 높음)
-
StartCullDistance/EndCullDistance: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다.
-
WorldPositionOffsetDisableDistance: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다.
-
IncludeInHLOD: 이름이 비슷한 스태틱 메시 컴포넌트 프로퍼티로 변환됩니다.
-
-
어셈블리 옵션(AssemblyOptions): BiomeAsset_AssemblyOptions 서브구조체입니다.
- AllowCollision: true인 경우, 에셋이 어셈블리/PCG 데이터 에셋 스태틱 메시의 콜리전 프리셋을 사용합니다. false인 경우, NoCollision 프리셋을 사용합니다.
-
필터 옵션(FilterOptions): BiomeAsset_FilterOptions 서브구조체입니다.
-
DensityMin/Max: 밀도(Density) 값이 이 범위를 벗어난 포인트는 버려집니다.
-
HeightMin/Max: Position.Z 값이 이 범위를 벗어난 포인트는 버려집니다.
-
WaterDistanceMin/Max: BiomeFilter_WaterDistance_Level_Inst에 환경설정된 수위 아래의 포인트는 수면 아래 있는 것으로 간주되며, Distance 노드를 사용하여 수면 위의 포인트부터 수면 아래 가장 가까운 포인트까지의 3D 거리를 계산합니다. WaterDistanceMin/Max 범위 내의 포인트는 유지됩니다.
-
-
런타임 옵션(RuntimeOptions): BiomeAsset_RunTimeOptions 서브구조체입니다.
-
ExportPoints: 에셋의 스태틱 메시 샘플링을 활성화하고 월드 스페이스에 에셋 위치를 익스포트하여 런타임 시 스태틱 메시에 적용되는 추가 디테일을 위한 포인트를 생성합니다.
-
MeshSamplingRadius: 메시 샘플러가 생성하는 포인트 수를 제어합니다.
-
NormalOffset: 포인트의 노멀 오리엔테이션을 기준으로 메시 샘플러가 생성하는 포인트를 제거하는 데 사용됩니다.
-
ScaleMultiplier: 메시 샘플러가 생성하는 포인트의 스케일 조절에 사용됩니다.
-
ZMin/ZMax: 메시 샘플러가 생성하는 포인트의 최소 및 최대 높이 범위를 제어합니다.
-
InfluenceType: 에셋이 에셋 주변의 런타임 생성 디테일을 추가할지 제거할지 여부를 제어합니다.
-
InfluenceRadius: InfluenceType이 적용되는 에셋 포인트 주변 반경입니다.
-
제너레이터
바이옴 제너레이터 템플릿은 BiomeGeneratorTemplate 에서 상속되는 PrimaryDataAsset 클래스입니다.
BiomeGeneratorTemplate의 예시 및 해당 구조체는 여기에서 확인할 수 있습니다.
/Script/Engine.Blueprint'/PCGBiomeCore/BiomeGenerators/Setup/BiomeGeneratorTemplate.BiomeGeneratorTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/BiomeGenerators/Setup/BiomeGenerator.BiomeGenerator'
어느 루트 포인트 데이터에 속하는지 정의하려면 각 바이옴 에셋 항목에서 바이옴 제너레이터 에셋을 참조해야만 합니다. 자손 에셋은 루트 에셋과 자손 에셋 모두로 사용되지 않는 한 제너레이터 레퍼런스가 필요 없습니다.
베이스 BiomeGenerator 구조체 프로퍼티는 다음과 같습니다.

-
제너레이터 타입(GeneratorType): 제너레이터 식별에 사용되는 고유한 이름입니다. 모든 제너레이터는 고유한 이름을 가져야 하며 여러 바이옴의 여러 에셋에서 재사용될 수 있습니다.
-
제너레이터 우선순위(GeneratorPriority): 우선순위 기반 차이 피드백 루프를 통해 포인트 데이터를 레이어링할 때 사용되는 우선순위입니다. 값이 낮을수록 우선순위가 높습니다. 우선순위 값이 같은 제너레이터는 오버랩되어도 서로 영향을 주지 않습니다.
-
제너레이터 오버랩 허용(GeneratorAllowOverlap): 활성화하면 우선순위 기반 차이를 통한 레이어링 프로세스가 완전히 우회됩니다. 이 프로세스 중에는 제너레이터가 생성한 모든 포인트가 유지되며 다른 제너레이터 포인트 데이터에 영향을 주지 않습니다.
-
제너레이터 그래프(GeneratorGraph): 루트 포인트 생성을 위해 실행될 필수 PCG 그래프 또는 PCG 그래프 인스턴스입니다.
-
제너레이터 공간 노이즈 세팅(GeneratorSpatialNoiseSettings): 공간 노이즈 PCG 노드에서 PCG 그래프를 통해 익스포트된 SpatialNoiseSettings 에셋 레퍼런스로, 선택 사항입니다. 존재하는 경우 이 공간 노이즈 세팅은 랜덤 포인트 시드를 사용하는 대신 에셋의 가중치 적용 분포를 제어합니다.
트랜스폼
트랜스폼 그래프는 제너레이터 또는 부모 트랜스폼 포인트에서 포인트를 입력으로 받아 스폰 단계 전에 변경합니다.
이러한 그래프는 루트 에셋에 대해서는 선택 사항이지만, 트랜스폼 그래프가 없으면 자손 에셋이 부모와 같은 위치에 스폰되므로 대부분의 경우 자손 에셋에는 필수입니다. 그래프 인스턴스를 사용하여 에셋별로 트랜스폼 그래프의 행동을 파라미터화하고 제어하는 것이 좋지만, 그래프를 직접 사용할 수도 있습니다.
BiomeCore에서 몇 가지 간단한 트랜스폼 그래프를 제공하는데, 가장 흥미로운 예는 BasicSecondaries 및 DuplicatePattern 입니다.
/Script/PCG.PCGGraph'/PCGBiomeCore/Transforms/BasicSecondaries.BasicSecondaries'
/Script/PCG.PCGGraph'/PCGBiomeCore/Transforms/DuplicatePattern.DuplicatePattern'
BasicSecondaries 는 각 입력 포인트 주변에 몇 개의 포인트를 생성하고 랜드스케이프에 이러한 포인트를 투영합니다.
이 프로세스는 다음과 같이 작동합니다.
-
입력 포인트를 가져옵니다.
-
CreatePointsGrid 노드를 사용하여 2D 포인트 그리드를 빌드합니다.
-
그리드의 코너 포인트를 제거하여 더 원형에 가깝게 만듭니다.
-
CopyPoints를 사용하여 각 입력 포인트의 그리드를 복사합니다.
-
복사된 포인트의 50%를 무작위로 제거합니다.
-
포인트에 무작위 변환을 적용합니다.
-
각 그리드 중앙으로부터의 거리를 기준으로 포인트의 스케일을 조정합니다.
-
랜드스케이프에 결과를 투영합니다.
BasicSecondaries 트랜스폼 그래프
두 세대의 자손 에셋(빨간색/초록색)에 적용된 BasicSecondaries 트랜스폼 그래프
DuplicatePattern 은 Duplicate Point 노드를 사용하여 회전하는 별 셰이프를 만듭니다.
-
입력 포인트 회전을 리셋합니다.
-
입력 포인트를 9번 복제하고 각 사본을 Z축을 중심으로 36도 회전합니다.
-
9개의 사본을 각각 10번씩 복제하고 각 사본을 Z축을 중심으로 10도 회전하고 로컬 X축을 따라 변환하고 포인트의 스케일을 80% 줄입니다.
-
랜드스케이프에 투영합니다.
DuplicatePattern 트랜스폼 그래프
두 세대의 자손 에셋(빨간색/초록색)에 적용된 DuplicatePattern 트랜스폼 그래프
1세대 자손 에셋에 적용된 DuplicatePattern 트랜스폼 그래프(빨간색), 2세대에 적용된 BasicSecondaries(초록색)
필터
루트 및 자손 포인트는 BiomeCore_Filters PCG 그래프 또는 그 인스턴스의 커스터마이징 가능한 필터 목록에서 필터링할 수 있습니다. 필터 배열의 각 필터 항목에는 FilterGraph, FilterAttribute, FilterRangeMinAttribute 및 FilterRangeMaxAttribute가 있습니다. 각 FilterGraph는 BiomeCore 실행 중에 피드백 루프를 통해 필터 목록에 나타나는 순서대로 차례차례 처리됩니다.
처리할 필터 그래프는 BiomeCore 그래프 파라미터인 루트 포인트 필터(Root Points Filters) 및 자손 포인트 필터(Child Points Filters) 에서 글로벌하게 설정됩니다. 기본적으로 바이옴 코어는 높이와 밀도, 워터 디스턴스를 기준으로 필터링하는 BiomeCore_Filters_Inst를 사용하도록 구성되어 있습니다.
BiomeCore 그래프 파라미터 루트 및 자손 포인트 필터 레퍼런스:

BiomeCore_Filters_Inst 목록 및 각 항목에 대한 프로퍼티:
BiomeCore 필터 그래프의 위치는 다음과 같습니다.
/Script/PCG.PCGGraph'/PCGBiomeCore/Core/BiomeCore_Filters.BiomeCore_Filters'
/Script/PCG.PCGGraphInstance'/PCGBiomeCore/Core/BiomeCore_Filters_Inst.BiomeCore_Filters_Inst'
목록을 커스터마이징하고 텍스처 투영 필터를 포함하는 방법을 보여주기 위해 BiomeSample 필터가 확장되었으며, 파일 위치는 다음과 같습니다.
/Script/PCG.PCGGraphInstance'/PCGBiomeSample/Setup/BiomeSample_Filters_Inst.BiomeSample_Filters_Inst'
/Script/PCG.PCGGraphInstance'/PCGBiomeSample/Filters/BiomeFilter_Flow_Projection.BiomeFilter_Flow_Projection'
/Script/PCG.PCGGraphInstance'/PCGBiomeSample/Filters/BiomeFilter_SunExposure_Projection.BiomeFilter_SunExposure_Projection'
다이내믹 피드백 루프는 필터 배열에 설정된 FilterGraphs를 반복작업하여 들어오는 모든 루트 및 자손 포인트 데이터를 처리합니다. 현재 반복작업에서 남은 포인트는 다음 반복작업의 입력이 되어 에셋 필터 옵션에 따라 포인트가 점진적으로 컬링됩니다.
처리 단계:
-
현재 루프 반복작업에서 처리할 포인트 데이터가 들어옵니다. 모든 포인트에 대해 첫 번째 반복작업이 시작된 다음, 모든 필터가 처리될 때까지 다음 반복작업마다 이전 반복작업에서 남은 포인트를 받습니다.
-
필터 배열의 항목에 다이내믹 FilterGraph를 설정합니다. 모든 포인트에서 설정된 FilterAttribute를 처리하고 기록할 것으로 예상됩니다. 이 그래프는 $Density나 $Position 같은 간단한 포인트 프로퍼티를 필터링할 때는 선택 사항이지만, 필요한 경우 필터 그래프가 이러한 프로퍼티를 오버라이드할 수도 있습니다. 들어오는 포인트 $Density 위에 공간 노이즈를 곱셈으로 적용하는 경우를 예로 들 수 있습니다.
-
각 에셋 필터 옵션에 설정된 FilterRangeMinAttribute 및 FilterRangeMaxAttribute 값 내의 FilterAttribute를 사용하여 범위에 따라 포인트를 필터링합니다.
-
필터링 후에 남은 모든 포인트를 피드백 포인트 출력 핀에 출력합니다. 이러한 남은 포인트는 작업할 다음 반복작업의 들어오는 포인트가 됩니다. 즉 모든 반복작업이 완료되면 필터링 프로세스의 최종 출력이 됩니다.
고급 구성
바이옴 코어 그래프 파라미터
BiomeCore PCG 컴포넌트에서 그래프 파라미터 오버라이드(Graph Parameter Overrides)로 노출되는 글로벌 파라미터를 간략하게 살펴봅니다.

바이옴 블렌딩 범위
바이옴 캐시에서 바이옴 컬러를 할당하기 전에 제너레이터가 생성한 포인트에 지터링을 적용합니다. 이는 생성되는 모든 포인트에 적용되는 글로벌 지터링 값입니다.
바이옴 블렌딩 범위 값 0
바이옴 블렌딩 범위 값 2,500
디버그 디스플레이 바이옴 캐시
바이옴 컬러 및 캐시 셀 크기를 포함하여 바이옴 캐시의 시각적 표현을 표시합니다.
바이옴 캐시 셀 크기
캐시 해상도를 환경설정합니다.
-
값은 cm입니다.
-
큰 Z 값을 사용하여 2D 캐시를 생성할 수 있습니다.
-
셀 크기 값이 작을수록 더 많은 셀이 생성되고 바이옴 정의도 더 정확해지지만 퍼포먼스는 저하됩니다.
캐시 셀 크기 값 3,200, 3,200, 1,024,000
캐시 셀 크기 값 3,200, 3,200, 3,200
캐시 셀 크기 값 800, 800, 1,600
최대 자손 에셋 깊이
자손 에셋을 스폰할 때 도달할 수 있는 최대 재귀 레벨을 제어합니다.
-
값이 0이면 자손 에셋 스폰이 완전히 비활성화됩니다.
-
하이 레벨 바이옴 배치를 반복작업할 때나 다양한 플랫폼에 대해 최적화된 콘텐츠를 생성하기 위해 퍼포먼스와 디테일 레벨의 균형을 맞추는 데 사용할 수 있습니다.
-
자손 에셋은 자신을 참조할 수 있으므로, 무한 재귀를 생성할 가능성이 있습니다. 최대 자손 에셋 깊이 파라미터가 이러한 무한 재귀 생성을 방지합니다.
-
자세한 내용은 재귀 및 트랜스폼 섹션을 참조하세요.
최대 자손 에셋 깊이 값 0
최대 자손 에셋 깊이 값 1
최대 자손 에셋 깊이 값 2
자손 입력 포인트 속도 배수
자손 에셋을 방출할 수 있는 포인트 수를 제한합니다.
자손 입력 포인트 속도 배수 값 1
자손 입력 포인트 속도 배수 값 10
자손 입력 포인트 속도 배수 값 100
런타임 생성을 위한 출력 데이터
BiomeCoreRuntime PCG 그래프에서 사용할 수 있도록 BiomeCore 그래프 출력 데이터를 BiomeCore PCG 컴포넌트에 시리얼라이즈할 수 있습니다. 퍼포먼스가 저하되므로 기본적으로 비활성화되어 있지만, 바이옴 샘플에서는 BiomeCore 런타임을 보여주기 위해 활성화되어 있습니다.
-
BiomeCoreRuntime이 사용하는 에셋 메시의 샘플링도 활성화합니다.
-
스폰 및 BiomeCore 런타임에 출력 섹션을 참조하세요.
글로벌 필터 우회
글로벌 포인트 필터링 단계를 건너뜁니다. 이 문서의 필터링 섹션을 참조하세요.
바이옴 텍스처 투영
월드에 바이옴을 배치하는 선택적 방법으로, 바이옴 텍스처를 사용할 수 있으며 바이옴 볼륨 또는 스플라인과 공존할 수 있습니다. 이 접근 방식은 월드의 BiomeCore 액터에 대해 글로벌하게 적용되므로 바이옴 텍스처 투영 인스턴스(Biome Texture Projection Instance) 그래프를 BiomeCore에 할당해야 합니다. 텍스처의 각 컬러에 대해 같은 컬러를 사용하는 바이옴 정의를 월드의 바이옴 액터가 제공해야 합니다.

바이옴 샘플 레벨은 이러한 접근 방식을 보여줍니다. BiomeSample_BiomeTextureProj_Inst은 다양한 타일링 및 UV 좌표 옵션으로 텍스처 및 2D 텍스처 배열 투영을 지원하도록 구성되어 있습니다.
현재 바이옴 코어는 바이옴 텍스처 데이터를 수신할 수 있는 캐시 포인트를 생성하기 위해 바이옴 캐시 초기화를 위한 랜드스케이프가 필요합니다.
파일 위치는 다음과 같습니다.
일반 텍스처 투영 소스 그래프: /Script/PCG.PCGGraph'/PCGBiomeCore/Core/BiomeCore_ProjectTexture.BiomeCore_ProjectTexture'
BiomeSample 인스턴스: /Script/PCG.PCGGraphInstance'/PCGBiomeSample/Setup/BiomeSample_BiomeTextureProj_Inst.BiomeSample_BiomeTextureProj_Inst'
BiomeSample 그래프 인스턴스 프로퍼티.
구성하고 나면 왼쪽의 텍스처가 바이옴 캐시 포인트에 투영되어 바이옴 정의가 텍스처 컬러에 바인딩됩니다.



제너레이터 서브타입
제너레이터는 바이옴별로 생성된 포인트에 에셋을 매핑하는 고유한 제너레이터 타입을 가지고 있습니다. 제너레이터 그래프는 선택적으로 여러 포인트 데이터, 즉 제너레이터 서브타입을 출력할 수 있습니다.
서브타입은 여러 사용 사례에 유용하며 풍성하고 복잡한 바이옴 생성에 필요한 제너레이터 그래프의 양을 크게 줄일 수 있습니다. 서로 다른 에셋의 포인트 간에 발생하는 모든 고급 인터랙션은 제너레이터 서브타입이 더 잘 처리하는데, 왜냐하면 BiomeCore 파이프라인은 프로세스 중에 다른 제너레이터의 포인트 액세스를 허용하지 않기 때문입니다. 우선순위 기반 차이 레이어링 중에만 서로 다른 제너레이터 포인트 데이터 간의 인터랙션이 발생합니다.
사용 사례 예시:
-
위 이미지에서와 같이, 랜드스케이프에 나무에 대한 포인트를 생성하고 랜드스케이프 레이어 가중치에 따라 서브타입을 생성합니다. 이렇게 하면 단일 제너레이터를 사용해 페인팅을 기반으로 에셋을 배포하여 전체적인 시각적 복잡성을 더하면서도 간단한 입력을 유지하고 처리량은 줄이면서 랜드스케이프 페인트 레이어가 바이옴 결과에 영향을 줄 수 있습니다.
-
기울기 각도에 따라 다양한 어셈블리나 메시에서 사용할 포인트를 단일 제너레이터에서 분리합니다.
-
제너레이터 내에서 포인트를 복제하여 나이아가라 시스템이나 사운드, 데칼, 게임플레이 아이템 같은 액터 스폰을 위해 특정 트랜스폼을 적용합니다.
제너레이터 그래프에서 제너레이터 서브타입을 생성하는 데 도움이 되도록 사전 제작된 PCG 서브그래프를 BiomeCore에서 사용하여 어트리뷰트를 기반으로 데이터를 필터링하고 두 개의 개별 출력을 생성할 수 있습니다. 이 서브그래프는 서로 연결하거나 루프에서 사용하여 세 개 이상의 개별 서브타입을 생성할 수도 있습니다.
사전 제작된 PCG 서브그래프의 위치는 다음과 같습니다.
/Script/PCG.PCGGraph'/PCGBiomeCore/BiomeGenerators/Graphs/BiomeGenerator_SubGeneratorSetup.BiomeGenerator_SubGeneratorSetup'
다음 이미지에서는 랜드스케이프 표면을 레이어 가중치로 샘플링한 다음, 서브그래프를 사용하여 각 레이어에 대한 서브타입인 내륙(Land)과 산(Mountain), 해안(Shore)을 생성합니다.
제너레이터 그래프가 서브타입을 출력하면 해당 GeneratorSubType 프로퍼티를 사용하여 에셋이 할당되어야 하는 제너레이터 서브타입을 지정해야 합니다. 쉼표로 구분된 목록을 사용하여 에셋을 여러 서브타입에 동시에 할당할 수 있습니다.
위에 표시된 랜드스케이프 페인팅 예시의 경우, 각 랜드스케이프 페인트 레이어를 기반으로 바이옴 샘플의 활엽수림 에셋이 다양한 서브타입에 할당되어 있습니다. 해안 및 산 레이어에는 가문비나무가 스폰되고 해안 및 내륙 레이어에는 모든 다른 에셋이 스폰되므로, 결과적으로 가문비나무는 단일 제너레이터를 사용하여 페인팅된 산 레이어에만 나타납니다.

파티셔닝 및 계층형 생성
BiomeCore PCG 컴포넌트는 기본적으로 파티셔닝되지 않지만, BiomeCore 그래프는 파티셔닝을 염두에 두고 제작되었습니다.
-
파티셔닝은 BiomeCore PCG 컴포넌트의 파티션 여부(Is Partitioned) 옵션을 토글하여 활성화할 수 있습니다. 기본적으로 생성은 PCG 월드 액터(PCG World Actor)의 파티션 그리드 크기(Partition Grid Size) 세팅에 따라 256x256m의 청크로 파티셔닝됩니다.
-
PCG 컴포넌트의 파티션 여부 와 BiomeCore PCG 그래프 세팅의 계층형 생성 사용(Use Hierarchical Generation) 옵션을 모두 활성화하여 고급 계층형 생성 을 활성화할 수도 있습니다. 고급 계층형 생성 모드에서 바이옴 캐시와 루트 에셋 테이블은 언바운드(Unbounded) 레벨에서 전체 월드에 대해 한 번 생성되며, 나머지 생성은 그래프의 여러 포인트에서 Grid Size 노드를 사용하여 256x256m의 청크로 파티셔닝됩니다.


그래프 파티셔닝 및 계층형 생성 활성화에 사용되는 옵션
검사 트리 뷰에서 BP_PCGBiomeCore PCG 컴포넌트를 선택하면 언바운드 레벨에서 실행되는 노드가 하이라이트됩니다.
에디터에서 파티셔닝 또는 런타임 계층형 생성을 활성화하면 전체 생성에 필요한 시간이 늘어나지만, 월드에서 바이옴 볼륨이나 바이옴 스플라인을 조작할 때처럼 일부 바이옴 업데이트는 더 빨라집니다.
WorldPartition 레벨을 사용하여 게임을 프로듀싱하기 위해 BiomeCore를 사용할 때 PCG 컴포넌트를 파티셔닝하여 런타임 시 PCG 파티션 액터 스트리밍을 활성화하는 것도 좋습니다.
BiomeCore 런타임
BiomeCoreRuntime 디버그 디스플레이: BiomeCoreRuntime에 의해 소비되는 바이옴 캐시의 포인트이며 바이옴 컬러가 표시된 출력 포인트입니다.
개요
BiomeCore 런타임은 런타임 시 카메라 주변의 디테일한 에셋 생성에 사용되는 별도의 PCG 컴포넌트와 그래프입니다. BiomeCore가 미리 생성한 데이터를 소비하고 런타임 계층형 생성을 활용하여 런타임 시 대량의 PCG 포인트를 생성합니다.
런타임 생성 활성화하기
에디터에서 런타임 생성을 프리뷰하려면 PCGWorldActor의 에디터 뷰포트를 생성 소스로 처리(Treat Editor Viewport as Generation Source) 옵션을 활성화합니다.

그러면 카메라 주변에 포인트가 생성되고 에셋이 스폰됩니다. PIE 세션이나 쿠킹된 빌드에서는 자동으로 플레이어 위치를 런타임 생성 소스로 사용합니다.
런타임 에셋
런타임 생성에서 사용하는 에셋은 단순화된 타입의 바이옴 에셋으로 구성, 스플라인 및 볼륨 같은 BiomeActors에 할당됩니다. 현재는 가중치 적용 에셋 배열을 포함하여 BiomeActor당 하나의 런타임 에셋만 지원됩니다.

MountainForest 바이옴 구성 액터에 할당된 MountainForest RuntimeAsset
MountainForest RuntimeAsset 프로퍼티
런타임 계층형 생성 구성
런타임 계층형 생성은 다음 세팅을 사용하여 활성화됩니다.
BiomeCore 런타임 컴포넌트에서 생성 트리거(Generation Trigger) 를 런타임 시 생성(Generate At Runtime)
으로 설정하고 파티션 여부(Is Partitioned) 프로퍼티를 활성화합니다.

BiomeCoreRuntime 그래프 세팅에서 계층형 생성 사용(Use Hierarchical Generation) 프로퍼티를 활성화하고 높은 생성 디폴트 그리드 크기(Higen Default Grid Size) 를 언바운드(Unbounded)
로 설정합니다 언바운드
로 설정하면 Grid Size 노드 앞에 배치된 모든 노드는 언바운드 그리드 레벨에서 한 번만 실행됩니다.

또한, 그리드 세팅에서 생성 거리 제어에 사용되는 반경 파라미터는 그리드 크기별로 정의됩니다. 그리드 크기 400은 현재 1,600cm로 설정되어 있습니다. 이 값을 늘리면 디테일이 더 멀리 생성되며 처리할 런타임 파티션 액터 수가 증가합니다.

BiomeCoreRuntime의 계층형 생성은 다음 두 레벨에서 작동합니다.
-
전체 레벨에 대해 한 번만 수행해야 하는 작업을 위한 언바운드 레벨(Unbounded level)
-
카메라 주변을 자주 업데이트해야 하는 작업을 위한 400cm 그리드 크기 레벨(400 cm Grid Size level) 의 런타임 파티셔닝 액터 그리드
그래프 파라미터

다음 두 프로퍼티가 그래프 파라미터로 노출됩니다.
-
바이옴 블렌딩 범위(Biome Blending Range): BiomeCore 런타임은 기본 런타임 에셋 블렌딩을 지원합니다. 블렌딩 거리는 이 파라미터에 의해 제어됩니다.
-
디스플레이 포인트(Display Points): BiomeCore 런타임이 스폰하는 포인트와 개별 바이옴 컬러를 사용하여 컬러가 지정된 바이옴 코어의 포인트를 표시하는 데 사용됩니다.
디스플레이 포인트 옵션 켜짐: 관련 바이옴을 사용하여 컬러가 지정된 포인트를 표시합니다. 바이옴 블렌딩이 빨간색 바이옴과 파란색 바이옴 사이에 표시됩니다.
그래프 개요
BiomeCore에서 익스포트하고 BiomeCore 런타임에서 입력으로 사용하는 데이터에 대한 설명은 이 문서의 바이옴 코어 런타임에 출력 섹션에 있습니다.
입력
-
메시 포인트(Meshes Points)는 BiomeCore 에셋 메시 샘플링에서 생성됩니다.
-
인스턴스 포인트(Instances Points)는 월드에 메시 포인트를 배치할 타깃 위치입니다.
-
인플루언스 포인트(InfluencePoints)는 랜드스케이프에서 생성되는 포인트의 양을 늘리거나 줄이기 위해 로컬 인플루언스 역할을 하는, BiomeCore의 포인트입니다.
-
바이옴 포인트(BiomePoints)는 월드에서 해당 바이옴의 위치를 나타내는, BiomeCache의 포인트입니다.
월드에서의 샘플링된 메시 포인트 배치
BiomeCore Runtime CopyPoints Loop 서브그래프 에서 메시 포인트는 월드의 해당 위치에 복사되며 인스턴스 포인트로 표시됩니다. 이 프로세스는 400cm 그리드 크기 레벨 의 파티션 액터 그리드에서 실행됩니다.
빨간색 와이어프레임 큐브는 400cm 파티션 액터를, 큰 축 기즈모는 타깃 인스턴스 포인트를, 작은 회색 포인트는 각 인스턴스 포인트 위치에 복사된 샘플링된 메시 포인트를 나타냅니다.
랜드스케이프 표면 샘플러 및 BiomeAssets 인플루언스
표면 샘플러는 각 400cm 파티션 액터의 랜드스케이프 표면에서 실행됩니다. 공간 노이즈가 밀도로 그 결과에 적용되며, InfluenceType 값에 따라 인플루언스 포인트를 최종 밀도에 더하거나 뺍니다.
가문비나무 인플루언스(RemoveGrass)
선인장 인플루언스(AddGrass)
최종 밀도 값
최종 결과
바이옴 가중치 및 블렌딩 계산
각 400cm 파티션 액터에 대해 바이옴 블렌딩 범위에서 지정한 범위 내에서 바이옴 캐시의 포인트가 수집됩니다. 이 캐시 포인트는 해당 컬러 프로퍼티를 사용하여 파티셔닝되며, 각 바이옴 컬러의 포인트 수를 사용하여 파티션 액터에 대한 각 바이옴의 상대 가중치를 계산합니다.
바이옴 컬러는 계산된 상대 가중치 값에 따라 각 파티션 액터에 생성된 포인트에 배포됩니다.
예를 들어, 첫 번째 단계에서 파티션 액터 주변에 모인 바이옴 포인트가 각각 33%의 비율로 3개의 바이옴을 나타낸다면, 이 파티션 액터가 생성하는 최종 포인트는 해당 비율을 준수하므로 33%는 바이옴 A에, 33%는 바이옴 B에, 33%는 바이옴 C에 할당됩니다.
디스플레이 포인트 그래프 프로퍼티 사용: 바이옴 블렌딩 범위 값 400cm
디스플레이 포인트 그래프 프로퍼티 사용: 바이옴 블렌딩 범위 값 800cm
디스플레이 포인트 그래프 프로퍼티 사용: 바이옴 블렌딩 범위 값 1,600cm
디스플레이 포인트 그래프 프로퍼티 사용: 바이옴 블렌딩 범위 값 3,200cm
바이옴 에셋 해석하기
메인 바이옴 코어 그래프에서 수행한 것과 비슷하게 에셋 프로퍼티의 테이블은 레벨의 바이옴 액터에 있는 런타임 에셋으로부터 빌드됩니다. 이 테이블에는 에셋 가중치, 메시 경로, 머티리얼 경로, 스케일 및 바이옴 컬러가 포함되어 있습니다. 그래프의 이 부분은 언바운드 그리드 레벨에 생성되는데, 이는 파티션 액터별이 아니라 한 번만 수행되며 해당 출력을 더 작은 모든 그리드 레벨에 사용할 수 있다는 뜻입니다.
언바운드 그리드 레벨에서 BiomeCoreRuntime 컴포넌트가 처리한 에셋 테이블 출력 검사
마지막으로, 포인트와 에셋 컬러 값을 사용하여 최종 메시 스폰 단계 전에 Match And Set Attributes 노드를 통해 에셋 프로퍼티가 포인트에 추가됩니다.

BiomeCore 런타임의 출력