베리언트 매니저 템플릿 개요

베리언트 매니저와 그 작동 방법에 대해 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

베리언트 매니저(Variant Manager) 는 레벨에서 액터의 여러 환경설정을 구성하는 데 사용할 수 있도록 특화된 언리얼 에디터의 UI 패널입니다. 이러한 환경설정을 베리언트(Variant)라고 합니다. '베리언트 매니저'를 사용하면 다음을 수행할 수 있습니다.

  • 베리언트(Variant) 를 구성할 수 있습니다.

  • 베리언트를 베리언트 세트(Variant Sets) 라는 카테고리로 정리합니다.

  • 각 베리언트가 제어해야 하는 액터 프로퍼티 또는 베리언트가 호출해야 하는 함수를 정의합니다.

  • 언리얼 에디터에서 다양한 베리언트를 활성화하거나 '켭니다'.

'베리언트 매니저'를 사용하려면 에디터(Editor) > 베리언트 매니저 로 이동하여 프로젝트에 대해 플러그인을 활성화해야 합니다.

건축, 엔지니어링, 건설(Architecture, Engineering, and Construction) 또는 자동차, 제품 디자인 및 제조(Automotive, Product Design, and Manufacturing) 카테고리에서 템플릿을 사용하여 시작하는 경우 이 플러그인은 기본적으로 활성화됩니다.

베리언트 매니저 패널

'베리언트 매니저' UI는 레벨 베리언트 세트 에셋(Level Variant Sets Asset)이라는 특화된 유형의 에셋을 위한 에디터입니다. 레벨 베리언트 세트 에셋을 더블클릭할 때마다 '베리언트 매니저' 패널이 열려 해당 에셋이 관리하는 베리언트를 구성하고 작업할 수 있습니다.

'베리언트 매니저'의 UI는 4개 열로 나뉘어져 있습니다.

  1. 베리언트(Variants) 패널: 왼쪽 패널에는 이 레벨 베리언트 세트 에셋이 관리하고 있는 모든 베리언트와 베리언트 세트가 나열됩니다. 예를 들어, 위 이미지는 Paint, Logo Paint, Rims 라는 세 개의 베리언트 세트를 보여줍니다. 이 베리언트 세트는 몇 가지 베리언트를 가지고 있습니다. 이미지에서 확인할 수 있는 베리언트는 Blue, Wild Cherry, Naranja 페인트 컬러를 위한 베리언트입니다.

  2. 액터(Actors) 패널: 맨 왼쪽 패널에서 선택한 베리언트가 있는 경우 두 번째 패널인 액터 에 해당 베리언트에 바인딩된 모든 액터가 나열됩니다. 위의 이미지에서는 Paint > Blue 베리언트가 선택되었기 때문에 액터 목록에는 모터싸이클 차체의 페인팅된 모든 부분의 스태틱 메시 액터가 나열됩니다.

    액터와 베리언트 사이에 바인딩을 생성하면 둘 사이에 링크가 생성됩니다. 베리언트를 활성화하면 바인딩된 액터가 특정한 방식으로 동작하는데, 데이터 프로퍼티의 값을 변경하거나 함수를 호출하는 방식 중 하나로 동작합니다.

  3. 프로퍼티(Properties) 패널: 두 번째 열에서 하나 이상의 바인딩된 액터를 선택하면 세 번째 패널인 프로퍼티 에는 선택된 액터의 프로퍼티 중 어떤 프로퍼티가 이 베리언트에서 캡처되었는지 표시됩니다. 위의 이미지에서는 베리언트Material[1] 프로퍼티를 캡처했습니다. 이 머티리얼은 화면에 표시되는 표면의 페인트 컬러를 결정합니다.

    액터의 프로퍼티를 캡처한다는 것은 베리언트에 해당 프로퍼티에 대해 원하는 값을 저장한다는 것을 의미합니다.

  4. 값(Values) 패널: 맨 오른쪽에 있는 패널은 프로퍼티 패널에서 확인할 수 있는 각 프로퍼티의 베리언트에 저장된 값을 보여줍니다. 위 이미지의 경우 Blue 베리언트가 켜져 있으면 '베리언트 매니저'는 바인딩된 액터의 Material[1] 프로퍼티를 파란색 자동차 페인트 머티리얼로 설정합니다.

  5. 종속성(Dependencies) 패널: 마지막으로, 하단에 위치한 종속성 패널은 선택된 베리언트의 일부인 컨스트레인트를 보여줍니다. '종속성'은 현재 베리언트가 활성화된 경우 다른 베리언트를 켜는 컨스트레인트입니다. 현재 베리언트는 어떠한 종속성도 가지고 있지 않지만 Packages 베리언트 세트의 Default 베리언트의 일부임을 보여줍니다.

베리언트 구성하기

일반적으로 씬 베리언트를 구성하기 위한 전체 워크플로는 위에서 설명한 열을 왼쪽에서 오른쪽으로 따라갑니다.

  1. 씬에 필요한 베리언트와 베리언트를 베리언트 세트로 분류하는 방법을 결정해야 합니다. 이러한 결정에 따라 왼쪽 열에서 제공된 컨트롤을 사용하여 동일한 베리언트 세트와 베리언트를 가지고 '베리언트 매니저'를 구성할 수 있습니다. 컨텍스트 메뉴에서 옵션을 선택하고 우클릭하면 다음이 가능합니다.

    • 기존 베리언트를 편집합니다.

    • 새 베리언트와 베리언트 세트를 추가합니다.

    • 베리언트를 한 세트에서 다른 세트로 옮깁니다.

    • 베리언트와 베리언트 세트에 섬네일 이미지를 할당합니다. 이 섬네일 이미지는 나중에 제품 컨피규레이터(Product Configurator) 템플릿에서 확인할 수 있는 유저 인터페이스의 일부로 사용할 수 있습니다.

    • 필요한 종속성을 추가합니다.

  2. 위에서 생성한 각 베리언트에는 하나 이상의 액터를 바인딩할 수 있습니다. 액터 열의 헤더에서 추가(Add)(+) 버튼을 클릭하여 베리언트에 새 액터를 바인딩합니다. '월드 아웃라이너(World Outliner)' 패널에서 새 액터를 바인딩된 액터의 목록 또는 왼쪽 열에 있는 베리언트로 드래그할 수도 있습니다. '액터' 패널의 목록을 더블클릭하고 컨텍스트 메뉴를 사용하여 바인딩되지 않은 액터를 바인딩하는 것도 가능합니다.

  3. 각각의 바인딩된 액터에 대해 '베리언트 매니저'를 통해 변경하려는 프로퍼티를 선택합니다.

    새 액터를 바인딩할 때마다 '베리언트 매니저'는 캡처할 프로퍼티를 선택할 수 있는 창을 화면에 자동으로 표시합니다. 예를 들면 다음과 같습니다.

    ![Choose properties to capture](choose-properties.png "Choose properties to capture")(w:500)

    블루프린트에 노출된 프로퍼티를 캡처할 수 있습니다. 바인딩한 액터가 블루프린트 액터인 경우 클래스에 생성한 변수와 '인스턴스 편집가능(Instance Editable)'으로 표시된 변수가 목록에 표시됩니다.

    프로퍼티 패널의 헤더에서 + 버튼을 클릭하거나 바인딩된 액터를 클우릭하여 언제든지 추가 프로퍼티를 캡처할 수 있습니다. 캡처된 프로퍼티를 우클릭하면 목록에서 제거할 수 있습니다.

    베리언트가 활성화되면 바인딩된 액터에 의해 노출된 함수를 호출하도록 '베리언트 매니저'를 구성할 수도 있습니다. 자세한 내용은 베리언트 활성화 시 함수 호출하기를 참고하세요.

  4. 캡처된 각각의 프로퍼티에 대해 베리언트 활성화 시 '베리언트 매니저'에서 적용할 값을 설정합니다. '베리언트 매니저'의 '값' 열에서 직접 값을 편집하여 언제든지 캡처된 값을 설정할 수 있습니다. 또는 다음의 방법 중 하나를 사용하여 언리얼 에디터 UI의 다른 곳에서 프로퍼티 값을 수정하고 프로퍼티의 현재 값과 일치하도록 저장된 값을 업데이트할 수 있습니다.

    • 프로퍼티 값 옆에 있는 현재 값 기록(Record the current value) 을 클릭합니다.

      ![Record the Current Value icon](record-current-value-icon.png "Record the Current Value icon")(w:700)

    • 프로퍼티 또는 캡처된 값을 우클릭하고 컨텍스트 메뉴에서 현재 값 기록 을 선택합니다.

      ![Record Current Value](record-current-value.png "Record Current Value")(w:700)

    활성화한 베리언트에 대해 패널에서 직접 캡처된 값을 업데이트할 경우 '레벨 뷰포트(Level Viewport)'에 변경 사항이 즉시 반영되지 않습니다. 변경 사항이 반영되는 것을 확인하려면 베리언트를 다시 켜야 합니다. 또는 프로퍼티 또는 캡처된 값을 우클릭하고 컨텍스트 메뉴에서 기록된 값 적용(Apply recorded value) 을 선택해야 합니다.

    ![Apply Recorded Value](apply-recorded-value.png "Apply Recorded Value")(w:700)

데이터스미스를 사용하여 베리언트를 구성하는 작업을 지원하는 Autodesk VRED, 3DExcite Deltagen 같은 서드파티 애플리케이션에서 씬을 임포트하고 소스 씬에서 이미 구성한 베리언트를 가지고 있는 경우 데이터스미스에서 레벨 베리언트 세트(Level Variant Sets) 에셋 및 액터를 자동으로 구성합니다. 사용자 인터랙션에 대한 반응으로 베리언트를 활성화할 수 있는 블루프린트 로직 또는 UMG 위젯을 프로젝트에서 생성하기만 하면 됩니다.

자동 바인딩 및 캡처

이전 섹션에서 설명한 접근법을 사용하여 액터 프로퍼티를 하나씩 바인딩하는 방법에 대한 대안으로, 레벨에서 액터와 프로퍼티를 수정할 때 자동으로 액터를 바인딩하고 프로퍼티를 캡처할 수 있습니다.

자동 바인드 및 캡처를 토글하려면 '베리언트 매니저' UI 왼쪽의 베리언트 열 상단에 있는 토글 버튼을 사용합니다.

![자동 캡처 비활성화됨](auto-capture-off.png "Auto-capture disabled")

![자동 캡처 활성화됨](auto-capture-on.png "Auto-capture enabled")

자동 캡처 비활성화됨

자동 캡처 활성화됨

자동 캡처가 활성화된 상태에서 '베리언트 매니저'는 레벨에서 액터에 적용한 모든 변경 사항을 리스닝합니다. '베리언트 매니저'가 캡처할 수 있는 프로퍼티를 변경할 때마다 수정된 프로퍼티에 설정한 새 값을 자동으로 캡처하여 현재 선택한 베리언트에 저장합니다. 수정한 액터가 선택된 베리언트에 아직 바인딩되지 않은 경우 자동으로 바인딩됩니다.

자동 바인드 및 캡처를 사용하면 베리언트를 더 빠르고 간편하게 구성할 수 있습니다. 일반적으로 다음의 방법을 따릅니다.

  1. 왼쪽 베리언트 열에서 수정할 베리언트를 클릭합니다. 또는 변경하기 전에 현재 상태를 켜려면 베리언트를 더블클릭합니다.

  2. 활성화된 상태로 자동 캡처 버튼을 토글합니다.

  3. 선택한 베리언트에 바인딩할 액터를 수정합니다. 작업이 진행됨에 따라 수정한 모든 액터를 '베리언트 매니저'가 자동으로 바인딩하고 설정한 모든 새 프로퍼티 값을 캡처하는 것을 확인할 수 있습니다.

  4. 베리언트가 원하는 대로 구성되면 다음 중 하나를 수행할 수 있습니다.

    • 왼쪽 베리언트 열에서 새 베리언트를 클릭하거나 더블클릭하여 또 다른 베리언트에 대한 프로퍼티를 계속해서 캡처합니다.

    • 자동 캡처 버튼을 비활성 상태로 토글하여 변경 사항 캡처를 중단합니다.

자동 캡처 모드 활성화 시 주의해야 합니다. 레벨에서 작업하는 동안 자동 캡처 모드를 활성화했다는 것을 잊어버리면 현재 선택한 베리언트에 원하지 않는 변경 사항을 실수로 기록하게 될 수도 있습니다.

에디터에서 베리언트 활성화하기

언리얼 에디터 또는 런타임에서 베리언트를 활성화할 때마다 '베리언트 매니저'는 베리언트에 바인딩한 액터 목록에 대해 반복 작업을 합니다. 이러한 각각의 액터에 대해 '베리언트 매니저'는 캡처된 모든 프로퍼티를 베리언트에 저장한 값으로 설정합니다. 또한 바인딩된 액터가 호출하도록 환경설정한 함수를 호출합니다.

'베리언트 매니저' UI가 열려 있으면 언리얼 에디터에서 베리언트를 활성화할 수 있습니다. 다음 방식 중 하나를 사용합니다.

  • 맨 왼쪽 열에서 활성화하려는 베리언트를 더블클릭합니다.

  • 맨 왼쪽 열에서 활성화하려는 베리언트를 우클릭하고 컨텍스트 메뉴에서 켜기(Switch on) 를 선택합니다.

    ![Switch On](switch-on-editor.png "Switch On")(w:500)

'베리언트 매니저'는 작은 상태 표시기를 사용하여 켜진 베리언트를 표시합니다. 즉, 캡처된 모든 프로퍼티가 레벨에서 바인딩된 액터에 현재 적용된 값과 일치하는 베리언트입니다. 이는 베리엔트를 켜거나 레벨에서 동일한 프로퍼티 값을 수동으로 설정할 경우 발생합니다.

![Deactivated Variant](variant-deactivated.png "Deactivated Variant")

![Activated Variant](variant-activated.png "Activated Variant")

비활성화된 베리언트

활성화된 베리언트

런타임에서 베리언트를 활성화하는 방법에 대한 자세한 내용은 아래의 런타임 블루프린트 API를 참고하세요.

종속성 구성하기

베리언트와 베리언트 세트가 설정되면 베리언트에 대한 선택적인 종속성을 생성할 수 있습니다. 종속성이란 베리언트가 활성화될 때 종속된 다른 베리언트를 켜는 베리언트에 추가된 컨스트레인트를 가리킵니다. 예를 들어 다른 베리언트를 최초 세팅으로 다시 설정하는 디폴트 베리언트를 생성할 수 있습니다.

![Example of Dependencies](dependencies_example_1.png "Example of Dependencies")(w:700)

베리언트의 새 종속성을 구성하려면 다음 단계를 따릅니다.

![Steps to create a dependency](dependencies_steps.png "Steps to create a dependency")(w:700)

  1. 하나의 베리언트를 선택한 다음 '종속성' 패널에서 추가(+) 버튼을 클릭하여 새 종속성을 생성합니다.

  2. '종속성'은 현재 선택한 베리언트가 켜질 때 활성화할 베리언트 세트와 베리언트를 알아야 합니다. 베리언트 세트 드롭다운 박스를 클릭하여 종속성에 추가할 베리언트를 가지고 있는 베리언트 세트를 선택합니다.

  3. 그런 다음 '베리언트' 드롭다운에서 활성화할 베리언트를 선택합니다.

종속성을 위해 선택한 베리언트는 바인딩된 액터를 가지고 있지 않아도 됩니다.

![](dependencies-tip-example.png)(w:700)

위 이미지에서는 다양한 패키지 세팅 옵션을 생성하기 위해 사용된 종속성을 확인할 수 있습니다. 표시된 베리언트는 종속성만 가지고 있으며 어떠한 액터 바인딩도 가지고 있지 않습니다.

레벨 베리언트 세트 에셋 및 액터 소개

각 레벨 베리언트 세트 에셋에는 특정 레벨에 있는 액터에 대한 정보가 저장되어 있습니다. 언리얼 에디터에 해당 레벨이 열려 있는 동안에는 '베리언트 매니저' UI를 사용하여 다른 베리언트를 활성화할 수 있습니다. 이렇게 하면 언리얼 에디터에서 바인딩된 액터는 캡처된 프로퍼티의 값을 즉시 업데이트합니다.

베리언트를 런타임이 아닌 언리얼 에디터에서만 업데이트해야 하는 경우 레벨 베리언트 세트 에셋만 구성하면 됩니다.

하지만, 베리언트는 패키징한 프로젝트의 런타임에서 가장 유용한 경우가 많습니다. 예를 들어 언리얼 엔진 레벨에 다양한 트림을 나타내는 여러 베리언트를 가진 자동차의 150% BOM 모델이 있다고 가정해볼 수 있습니다. 에디터에서 이러한 다양한 트림 옵션을 전환할 수 있으면 매우 유용합니다. 하지만 최종 사용자가 원하는 트림을 선택하도록 하는 자동차 컨피규레이터를 만드는 것이 목표라면 런타임의 뷰어에서 제어할 수 있는 베리언트를 만들어야 합니다.

이를 위해서는 레벨 베리언트 세트 에셋을 레벨로 드래그해야 합니다. 이렇게 하면 액터를 생성하기 위해 사용한 에셋에 연결되는 새 레벨 베리언트 세트 액터가 레벨에 생성됩니다. 이 특수 타입의 액터는 프로젝트에서 생성한 블루프린트 게임플레이 로직과 UMG 인터페이스에서 베리언트와 인터랙션하기 위해 사용할 수 있는 블루프린트 인터페이스를 제공합니다. '베리언트 매니저'를 사용하여 컨피규레이터를 생성하는 방법에 대한 자세한 내용은 제품 컨피규레이터 템플릿 문서를 참고하세요.

각 레벨 베리언트 세트 에셋은 단일 레벨에 있는 액터와만 작동합니다. 다른 레벨을 열 경우 '베리언트 매니저' UI는 해당하는 새 레벨에 있는 오브젝트에 더 이상 영향을 미치지 않습니다.

여러 레벨에서 액터를 제어해야 하는 경우, 레벨마다 별도의 레벨 베리언트 세트 에셋을 생성하고 각 에셋을 개별적으로 구성해야 합니다. 레벨이 동일한 액터를 동일한 방식으로 제어하길 원하는 경우, 레벨 베리언트 세트 에셋이 제어해야 하는 모든 액터를 단일 서브레벨에 배치하고 해당 베리언트가 필요한 모든 레벨에 해당 서브레벨을 추가할 수 있습니다.

런타임 블루프린트 API

레벨 베리언트 세트 액터는 런타임에서 베리언트 및 베리언트 세트와 인터랙션하기 위해 사용할 수 있는 블루프린트 API를 제공합니다. 이 API는 다음과 같은 두 가지 주요 용도를 지원합니다.

  • 이름 또는 인덱스로 식별한 베리언트를 켭니다. 자세한 내용은 아래의 베리언트 활성화하기를 참고하세요.

  • 표시명을 비롯하여 환경설정한 베리언트 세트와 베리언트에 대한 데이터를 쿼리합니다. 자세한 내용은 아래의 베리언트 데이터 액세스하기를 참고하세요.

베리언트 활성화하기

베리언트와 베리언트의 부모 베리언트 세트의 이름 또는 인덱스 값을 알고 있으면 레벨 베리언트 세트에서 베리언트를 켤 수 있습니다.

베리언트를 켜는 가장 쉬운 방법은 참조에서 직접 레벨 베리언트 세트 액터로 드래그한 다음 레벨 베리언트 세트 카테고리를 찾아 Switch on Variant by Index 또는 Switch on Variant by Name 중 하나를 선택하는 것입니다.

![Switch on a Variant by index or by name](bpapi-switchon.png "Switch on a Variant by index or by name")(w:700)

베리언트 데이터 액세스하기

'베리언트 매니저'에서 환경설정한 모든 베리언트 세트와 베리언트의 구조체에 액세스할 수 있습니다.

  1. 참조에서 직접 레벨 베리언트 세트 액터로 드래그한 다음 레벨 베리언트 세트 카테고리를 찾아 Get Level Variant Sets 를 선택합니다.

    ![Get Level Variant Sets](bpapi-get-levelvariantsets.png "Get Level Variant Sets")(w:700)

  2. 레벨 베리언트 세트 에셋에 참조를 구했으면 반환값(Return Value) 포트에서 바로 드래그한 다음 레벨 베리언트 세트 카테고리를 찾아 에셋에서 구성된 베리언트 세트를 액세스합니다.

    ![Access the Variant Sets](bpapi-access-variantsets.png "Access Variant Sets")(w:700)

    Get Variant Set 또는 Get Variant Set By Name 노드를 사용하여 인덱스 또는 이름으로 베리언트 세트를 얻습니다. Get Num Variant Sets는 레벨 베리언트 세트 에셋에서 환경설정한 베리언트 세트의 총 숫자를 반환합니다. 이를 Get Variant Set 노드와 결합하여 모든 베리언트 세트에 걸쳐 반복할 수 있습니다.

  3. 베리언트 세트에서 참조를 구했으면 반환값 포트에서 바로 드래그한 다음 레벨 베리언트 세트 카테고리를 찾아 베리언트 세트가 포함하는 데이터로 작업합니다.

    ![Access data in the Variant Set](bpapi-access-variantsetdata.png "Access data in the Variant Set")(w:700)

    Get Display Text 노드를 사용하여 '베리언트 매니저' UI에서 베리언트 세트에 설정한 이름을 얻을 수 있습니다.

    베리언트 세트에 액세스하기 위해 사용한 노드와 유사한 노드를 사용하여 베리언트 세트 내의 베리언트에 액세스할 수도 있습니다. Get Variant 또는 Get Variant By Name 노드를 사용하여 인덱스 또는 이름으로 베리언트를 얻습니다. Get Num Variants는 이 레벨 베리언트 세트에서 환경설정한 베리언트의 총 숫자를 반환합니다. 이를 Get Variant 노드와 결합하면 앞서 설명한 베리언트 세트에 걸쳐 반복 작업한 것과 같이 베리언트 세트에서 모든 베리언트에 걸쳐 반복 작업할 수 있습니다.

  4. 베리언트에서 참조를 구했으면 반환값 포트에서 바로 드래그한 다음 베리언트 카테고리를 찾아 표시명을 구하고, 켜고, 바인딩된 액터에 액세스합니다.

    ![Access data in the Variant](bpapi-access-variantdata.png "Access data in the Variant")(w:700)

이 샘플 블루프린트 그래프는 환경설정된 모든 베리언트 세트와 베리언트에 걸쳐 반복 작업하기 위해 앞서 설명한 접근 방식을 사용합니다. 각 베리언트 세트와 베리언트의 이름을 화면과 출력 로그에 순서대로 출력합니다.

Copy Node Graph

베리언트 세트와 베리언트에 걸쳐 반복작업하는 동일한 유형의 접근 방식을 사용하여 다른 작업을 할 수도 있습니다. 약간의 상상력과 UMG에 대한 지식을 바탕으로 이 정보를 사용하여 레벨 베리언트 세트 에셋에서 환경설정한 베리언트 세트와 베리언트를 반영하는 UI 위젯을 자동으로 생성하는 UI 시스템을 작성할 수 있습니다.

블루프린트에서 작업하는 방법에 대한 자세한 내용은 블루프린트 비주얼 스크립팅을 참고하세요. UMG를 사용하여 유저 인터페이스를 생성하는 방법에 대한 자세한 내용은 UMG UI 디자이너 문서를 참고하세요.

크레딧

이 페이지에서 사용된 차량의 모델은 Allegorithmic에서 제공해 주셨습니다.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.