일반적으로 언리얼 엔진에서는 스태틱 메시 액터(static mesh actors) 로 레벨을 채우지만, 이러한 액터가 늘어날수록 퍼포먼스 비용도 상승합니다. 레벨에서 스태틱 메시 액터를 반복하여 계산 비용을 상승시키는 대신, 동일한 메시를 하나의 액터에 인스턴스드 스태틱 메시(Instanced Static Mesh, ISM) 컴포넌트 로 그룹화할 수 있습니다.
이 개요에서는 최적화를 위한 ISM의 중요성과 해당 컴포넌트 타입을 생성하고 편집하는 다양한 툴에 대해 살펴봅니다.
에인션트의 협곡(Valley of the Ancient) 샘플 프로젝트에서는 ISM을 사용하여 월드를 채우는 대규모 어셈블리를 키트배싱합니다. 이 샘플 프로젝트 및 ISM 생성 툴에 대한 자세한 내용은 에인션트의 협곡 샘플 문서와 이 페이지의 ISM 생성 및 편집하기 섹션을 참조하세요.
필요한 사전 지식
이 페이지를 계속 진행하기 전에 다음 주제에 대해 숙지하는 것이 좋습니다.
인스턴스드 스태틱 메시
ISM은 동일한 스태틱 메시 그룹을 포함한 컴포넌트입니다. 컴포넌트 내에 있는 각 스태틱 메시는 해당 스태틱 메시 에셋의 사본인 인스턴스를 나타냅니다.
ISM은 메시 반복에 대한 퍼포먼스 기법으로 사용할 수 있습니다. 이 메서드는 동일한 스태틱 메시 컴포넌트의 드로 콜을 결합하는 방식으로 이루어집니다. 이 프로세스는 UOBjects
의 메모리를 줄이는 등, 퍼포먼스 향상에 도움이 될 수 있습니다. 예를 들어, GPU에서 프리미티브(672바이트)는 기본 인스턴스(64바이트)보다 약 10배 많은 메모리를 사용합니다.
스태틱 메시 컴포넌트 통계 | 인스턴스드 스태틱 메시 컴포넌트 통계 |
비나나이트 책 200개를 개별 스태틱 메시 액터와 인스턴스드 스태틱 메시 컴포넌트가 있는 단일 액터로 통계를 비교한 결과입니다.
어떤 프로젝트에서든 타깃 플랫폼과 퍼포먼스 버짓을 이해하는 것은 중요합니다. 최적화 및 통계 명령에 대한 자세한 내용은 실시간 렌더링 최적화 가이드라인 및 통계 명령을 참조하세요.
디테일 패널
인스턴스드 스태틱 메시는 액터의 컴포넌트입니다. 해당 디테일(Details) 패널에서 그 계층구조를 확인할 수 있습니다. 액터 타입은 ISM 생성에 사용한 툴에 따라 달라집니다. ISM을 생성하고 편집하는 방법에 대한 자세한 내용은 이 페이지의 ISM 생성 및 편집하기에서 확인할 수 있습니다.
또한, 디테일 패널에서 다음과 같은 내용을 확인하고 수정할 수 있습니다.
-
액터의 컴포넌트에 적용된 스태틱 메시 에셋.
-
컴포넌트 내 인스턴스 수.
- 인스턴스 추가, 삭제 또는 복제 옵션이 포함되어 있습니다.
-
컴포넌트가 생성한 모든 인스턴스에서 사용하는 머티리얼.
-
인스턴스별 커스텀 데이터. 자세한 내용은 이 페이지의 커스텀 데이터를 참조하세요.
-
레벨 오브 디테일(Levels of Details, LOD). 자세한 내용은 이 페이지의 계층형 인스턴스드 스태틱 메시를 참조하세요.
-
인스턴스 컬링 디스턴스. 자세한 내용은 비저빌리티 및 오클루전 컬링을 참조하세요.
-
추가 프로퍼티는 보통 이 패널 안에 있습니다. 자세한 내용은 레벨 에디터 디테일 패널을 참조하세요.
디테일(Details) 패널에 하이라이트된 인스턴스드 스태틱 메시 컴포넌트와 해당 세팅입니다.
개별 컴포넌트 인스턴스를 클릭하면, 디테일 패널에서 해당 트랜스폼 프로퍼티만 사용할 수 있습니다. 이렇게 옵션을 제한한 것은 효율적인 단일 컴포넌트 생성을 위해 컴포넌트가 머티리얼 같은 모든 다른 프로퍼티를 공유하기 때문입니다.
ISM과 스태틱 메시 컴포넌트의 차이
스태틱 메시 에셋 을 레벨 에디터(Level Editor)에 드래그하면 해당 에셋을 참조하는 스태틱 메시 액터 가 자동으로 생성됩니다. 액터의 각 스태틱 메시는 컴포넌트를 통해 참조됩니다. 기본적으로 레벨에 스태틱 메시 에셋을 드래그하면 스태틱 메시 컴포넌트 가 적용됩니다.
아래 테이블에서 스태틱 메시 컴포넌트 와 인스턴스드 스태틱 메시 컴포넌트 간의 차이점을 확인할 수 있습니다.
스태틱 메시 타입 | 행동 |
---|---|
스태틱 메시 컴포넌트(Static Mesh Component) | 자체 트랜스폼과 머티리얼, 콜리전이 있는 단일 스태틱 메시 표현입니다. |
인스턴스드 스태틱 메시 컴포넌트(Instanced Static Mesh Component) | 할당된 스태틱 메시의 여러 인스턴스를 나타내며, 모두 동일한 머티리얼 및 콜리전 프로퍼티를 공유합니다. 이 컴포넌트는 보통 다양한 트랜스폼을 사용하여 동일한 스태틱 메시를 더 효율적으로 렌더링하는 데 사용됩니다. 콜리전, 머티리얼, 섀도 같은 여러 프로퍼티는 컴포넌트 레벨에서만 적용되며 인스턴스별로 편집할 수 없습니다. |
스태틱 메시 컴포넌트 | 인스턴스드 스태틱 메시 컴포넌트 |
하나의 액터는 여러 개의 ISM 컴포넌트 및 스태틱 메시 컴포넌트로 구성될 수 있습니다. 레벨에 동일한 스태틱 메시 액터를 반복해서 배치하는 것과 비슷하게, 액터에서 스태틱 메시 컴포넌트를 복제하는 대신 ISM을 사용하는 것이 더 효율적입니다.
계층형 인스턴스드 스태틱 메시
기존에는 계층형 인스턴스드 스태틱 메시(Hierarchical Instanced Static Mesh, HISM) 가 인스턴스별로 고유한 LOD를 적용한 반면, ISM은 전반적인 컴포넌트 바운드에 LOD를 적용했습니다. 하지만, 5.4 버전 이후에 생성한 프로젝트에서는 ISM에 대해 인스턴스별로 LOD를 적용할 수 있습니다.
LOD는 뷰포트의 스크린 스페이스에 따라 트라이앵글 수가 다른 동일한 메시 배열입니다. 트라이앵글 수가 줄어들면 계산 시간이 단축되어 최적화 수준이 높아집니다. 디테일 패널에서 ISM 및 HISM 컴포넌트의 LOD 프로퍼티를 조정할 수 있습니다. LOD에 대한 자세한 내용은 LOD 생성 및 사용하기를 참조하세요.
HISM과 ISM 간에는 유의해야 할 차이점이 몇 가지 있습니다. 그러나 HISM 대신 ISM을 구현하는 것은 프로젝트에 따라 달라지며 테스트가 필요합니다. 프로젝트의 퍼포먼스 요구 사항을 이해하려면 콘텐츠 테스트 및 최적화하기를 참조하세요.
유념해야 몇 가지 차이점은 다음과 같습니다.
-
움직이지 않는 인스턴스가 수천 개 있다면 HISM이 더 나을 수 있습니다. 이러한 경우, 컬링 및 LOD 프로세스를 가속하기 위해 스태틱 계층구조를 사용합니다.
- 완전히 스태틱이 아닌 인스턴스가 많은 경우, HISM을 사용하는 프로젝트에서 오류가 발생할 수 있습니다.
-
ISM에는 스태틱 계층구조가 없어 GPU에서 각 인스턴스를 컬링하고 LOD를 적용해야 하므로 저사양 플랫폼에서는 비용이 많이 들 수 있습니다.
-
LOD를 스태틱 메시 행동과 일치시키려는 경우, HISM은 인스턴스를 그룹으로 처리하기 때문에 이에 의존할 수는 없습니다. HISM은 개별 LOD가 별로 중요하지 않은 경우에 가장 유용합니다. 예를 들어, 트라이앵글이 거의 없는 메시 같은 경우가 있습니다.
-
프로젝트에서 나나이트만 사용한다면, ISM이 항상 최고의 선택입니다. 왜냐하면 나나이트에는 자체 컬링 및 LOD 시스템이 있기 때문입니다. 나나이트 및 예비 메시를 사용하는 프로젝트에 적합한 경우 HISM을 사용하세요.
이 페이지에서는 둘을 구분해야 하는 경우를 제외하고는 ISM과 HISM을 인스턴스드 스태틱 메시로 지칭합니다.
인스턴싱 시스템
언리얼 엔진에서는 인스턴스 최적화를 메시에 적용하는 시스템을 제공합니다. 나나이트 같은 이러한 시스템의 사용은 프로젝트와 타깃 플랫폼에 따라 달라집니다.
시스템 | 설명 |
---|---|
다이내믹 인스턴싱(Dynamic Instancing) | 동일한 머티리얼 및 메시를 보유한 스태틱 메시 드로를 결합하여 드로 콜이 감소합니다. 자세한 내용은 메시 그리기 파이프라인을 참조하세요. |
나나이트(Nanite) | 프레임 예산이 폴리곤 수와 드로 콜, 메시 메모리 사용의 제약을 더는 받지 않는 가상화된 지오메트리 시스템입니다. ISM 및 HISM 컴포넌트에서 나나이트가 활성화된 메시를 참조할 수 있습니다. 자세한 내용은 나나이트 가상화된 지오메트리를 참조하세요. |
프로시저럴 콘텐츠 생성(Procedural Content Generation) | 콘텐츠를 프로시저럴하게 스폰하기 위한 인스턴스 스폰용 프레임워크입니다. 자세한 내용은 프로시저럴 콘텐츠 생성을 참조하세요. |
나이아가라(Niagara) | 비주얼 이펙트 생성 시스템입니다. 렌더링 시 파티클 메시를 인스턴싱할 수 있습니다. 자세한 내용은 나이아가라 렌더를 참조하세요. |
인스턴스드 스태틱 메시를 사용하면 효율적인 파이프라인을 생성할 수 있으며, 엔진의 자동 인스턴싱이 중단되지 않도록 보장할 수 있습니다. 또한, 나나이트가 활성화된 메시로 ISM을 생성할 수도 있습니다.
ISM으로 작업하기
ISM의 주요 기능은 프로젝트 퍼포먼스를 향상하는 것입니다. 개별 폴리지의 사본을 하나씩 만들면 숲 페인팅 속도가 엄청나게 느려질 것입니다. 폴리지 모드(Foliage Mode) 같은 툴을 사용하면 여러 개의 그룹화된 인스턴스를 동시에 배치하여 워크플로 및 계산 시간을 단축할 수 있습니다.
프리패브리케이션
동일한 스태틱 메시를 하나의 컴포넌트로 그룹화하는 것은 최적화된 레벨을 디자인할 때 중요한 워크플로입니다. ISM은 환경에 배경 소품을 배치하거나 건축 인스턴스를 반복하여 탑을 생성하는 것처럼 레벨 디자인 완성에 도움이 될 수 있습니다.
이러한 타입의 프리패브리케이션은 메시를 병합하여 새로운 스태틱 메시 에셋을 생성하는 워크플로와는 다릅니다. 각 인스턴스가 동일하고 선택 가능하며, 하나의 인스턴스를 업데이트하면 모든 인스턴스가 업데이트되기 때문입니다. 프리패브리케이션 인스턴스 생성에 대한 내용은 이 페이지의 ISM 생성 및 편집하기를 참조하세요.
커스텀 데이터
ISM을 사용하면 커스텀 프리미티브 데이터(Custom Primitive Data) 및 인스턴스별 커스텀 데이터(Per Instance Custom Data) 를 사용하여 메시별로 새로운 다이내믹 머티리얼 인스턴스(dynamic material instance) 를 생성하지 않고도 데이터를 전달하여 드로 콜을 줄일 수 있습니다. 두 데이터 세트 모두 디테일 패널에서 사용할 수 있습니다. 데이터를 머티리얼로 읽고 블루프린트를 사용하여 조작할 수 있습니다.
-
커스텀 프리미티브 데이터: 프리미티브에 저장된 추가 float 데이터입니다. 자세한 내용은 머티리얼에 프리미티브별 커스텀 데이터 저장하기를 참조하세요.
-
인스턴스별 커스텀 데이터: 인스턴스별 추가 float 데이터입니다. 자세한 내용은 nDisplay의 인스턴스별 머티리얼 랜덤 결정론적 대체를 참조하세요.
프로젝트를 프로파일링하여 퍼포먼스 병목현상과 ISM을 통합할 만한 잠재적 영역을 이해할 수 있습니다. 자세한 내용은 언리얼 인사이트를 참조하세요.
ISM 생성 및 편집하기
다음은 ISM을 생성하고 편집할 수 있는 다양한 엔진 내 툴입니다.
여러 개의 고유 스태틱 메시를 선택하여 단일 액터로 그룹화할 때, 고유 스태틱 메시 에셋별로 인스턴스드 스태틱 메시 컴포넌트가 생성됩니다.
인스턴스 선택
다음과 같은 메서드를 사용하여 ISM의 인스턴스를 선택할 수 있습니다.
-
콘솔 명령
TypedElements.EnableViewportSMInstanceSelection
. true(1)가 디폴트 값입니다. -
디테일 패널의 인스턴스(Instances) 섹션 이용.
블루프린트
블루프린트 비주얼 스크립팅(Blueprint Visual Scripting) 시스템 은 노드 기반 스크립팅 인터페이스입니다. 블루프린트 액터를 사용하여 ISM 또는 HISM을 추가한 다음, 책장에 책을 스폰하는 등의 로직을 통합할 수 있습니다. 블루프린트 생성에 대한 자세한 내용은 블루프린트 소개를 참조하세요.
블루프린트 액터에 ISM을 추가하는 단계는 다음과 같습니다.
-
블루프린트 액터를 엽니다. 블루프린트 클래스를 생성하고 여는 방법은 블루프린트 클래스 생성하기를 참조하세요.
-
컴포넌트(Components) 탭에서 + 추가(Add) 를 클릭합니다.
-
'Instanced'를 검색한 다음 원하는 인스턴스드 컴포넌트를 선택합니다.
-
디테일 패널의 스태틱 메시(Static Mesh) 카테고리에서 스태틱 메시 에셋을 추가합니다.
-
디테일 패널의 인스턴스(Instance) 카테고리에서 + 아이콘을 클릭하여 인스턴스를 추가합니다.
이제 스태틱 메시가 블루프린트 뷰포트(Blueprint Viewport)에 표시될 것입니다.
스크립트에서 인스턴스드 스태틱 메시 컴포넌트를 사용하는 예시는 결정론적 대체 튜토리얼의 인스턴스드 스태틱 메시에 대한 블루프린트 솔루션 섹션을 참조하세요.
액터 병합
액터 병합(Merge Actors) 툴은 스태틱 메시 액터를 결합하기 위한 다양한 메서드로 구성되어 있습니다. 이러한 메서드 중 한 가지 옵션은 스태틱 메시를 그룹화하여 ISM을 생성하는 배치(Batch) 입니다.
액터를 배치 처리하는 단계는 다음과 같습니다.
-
원하는 액터를 선택합니다.
-
메뉴 바에서 액터(Actor) > 액터 병합(Merge Actors) > 액터 병합 세팅(Merge Actors Settings) 을 선택합니다.
-
메서드를 배치(Batch) 로 변경하고 필요에 따라 세팅을 조정합니다.
-
액터 병합(Merge Actors) 을 클릭합니다.
인스턴스드 스태틱 메시 컴포넌트를 생성하기 위한 배치 메서드입니다.
원하는 세팅을 정의한 다음에는 액터 병합(Merge Actors) 드롭다운에서 액터 병합 세팅(Merge Actors Settings) 대신 배치(Batch) 옵션을 선택하여 명령을 다시 실행할 수 있습니다.
이 툴에 대한 자세한 내용은 액터 병합을 참조하세요.
인스턴스 수집 툴
인스턴스 수집(Harvest Instances) 툴을 사용하여 스태틱 메시 액터 세트를 선택하고 배치 처리하여 ISM 또는 HISM 컴포넌트를 생성할 수 있습니다.
모델링 모드(Modeling Mode) 의 XForm 카테고리를 클릭하여 인스턴스 수집 툴에 액세스할 수 있습니다. 모델링 모드와 모델링 모드에 액세스하는 방법에 대한 자세한 내용은 모델링 모드 개요를 참조하세요.
폴리지 모드
폴리지 모드(Foliage Mod) 는 스태틱 메시 및 액터 폴리지를 배치하여 대규모 환경을 빠르게 채울 수 있는 툴키트입니다. 스태틱 메시 폴리지(Static Mesh Foliage) 타입을 사용하여 페인팅할 때 메시를 배치할 수 있습니다.
폴리지 툴을 사용하여 인스턴스드 스태틱 메시 컴포넌트를 페인팅합니다.
자세한 내용은 폴리지 모드를 참조하세요.
패킹된 레벨 액터
액터를 일괄 처리하는 또 다른 방법은 레벨 인스턴싱 워크플로를 사용하는 것입니다. 이 워크플로는 블루프린트에서 패킹된 레벨 액터를 생성하며 프리패브리케이트된 오브젝트를 생성하는 데 유용합니다.
에인션트의 협곡 샘플 프로젝트에서 패킹된 레벨 액터 생성(Create Packed Level Actor) 툴을 통해 ISM을 생성했습니다.
패킹된 레벨 액터를 생성하는 단계는 다음과 같습니다.
-
원하는 액터를 선택합니다.
-
선택한 액터를 우클릭하여 컨텍스트 메뉴를 열고 레벨(Level) > 패킹된 레벨 액터 생성(Create Packed Level Actor) 을 클릭합니다.
-
피벗 타입 및 액터를 선택합니다.
-
확인(OK) 을 클릭합니다.
-
레벨 이름을 지정하고 저장(Save) 을 클릭합니다.
-
블루프린트 이름을 지정하고 저장(Save) 을 클릭합니다.
이 메서드를 사용하면 자동으로 액터가 HISM으로 그룹화됩니다. 컴포넌트의 프로퍼티를 편집하려면 해당 블루프린트 액터를 엽니다.
패킹된 레벨 액터에 대한 자세한 내용은 레벨 인스턴싱을 참조하세요.
패턴 툴
패턴 툴(Pattern Tool) 은 패턴 기법으로 메시를 생성하며, 이렇게 생성된 메시를 ISM으로 출력할 수 있습니다. 이동 가능한 3D 평면에서 선이나 그리드, 원 방향을 따라 하나 이상의 선택된 메시를 타일링할 수 있습니다. 보간 이동, 회전, 스케일 및 지터 등, 각 타일링 패턴에 대해 다양한 파라미터를 사용할 수 있습니다. 이 툴은 반복 오브젝트를 빌드하고 환경에 메시를 스캐터링하는 데 도움이 될 수 있습니다. 이 툴은 단일 액터와 다이내믹 메시, 인스턴스드 스태틱 메시 출력 타입으로 구성됩니다.
모델링 모드 의 XForm 카테고리를 클릭하여 패턴 툴에 액세스할 수 있습니다. 모델링 모드와 모델링 모드에 액세스하는 방법에 대한 자세한 내용은 모델링 모드 개요를 참조하세요.
ISM 에디터
ISM 에디터(ISM Editor) 는 ISM 컴포넌트의 인스턴스를 선택하고 트랜스포메이션을 수행합니다. 인스턴스를 추가하고 대체하고 삭제할 수도 있습니다.
새 스태틱 메시 에셋으로 인스턴스를 대체하면 두 번째 ISM 컴포넌트가 추가됩니다.
모델링 모드 의 XForm 카테고리를 클릭하여 ISM 에디터에 액세스할 수 있습니다. 모델링 모드와 모델링 모드에 액세스하는 방법에 대한 자세한 내용은 모델링 모드 개요를 참조하세요.