Variant Manager の概要

Variant Manager とその仕組みについて説明します。

Choose your operating system:

Windows

macOS

Linux

Variant Manager は、レベル内のアクタの異なるコンフィギュレーションを複数設定するための Unreal Editor の特殊な UI パネルです。それぞれのコンフィギュレーションは「バリアント」と呼ばれます。Variant Manager では次の操作が可能です。

  • これらの バリアント を設定する

  • バリアントを バリアント セット と呼ばれるカテゴリにまとめる

  • それぞれのバリアントでどのアクタ プロパティを制御するか、またはどの関数を呼び出すかを定義する

  • Unreal Editor でさまざまなバリアントを有効にする (切り替える)

Variant Manager を使用するには、プロジェクトで [Editor] > [Variant Manager] プライグインを有効にしておく必要があります。

Architecture, Engineering, and Construction (建築、土木、建設) または Automotive, Manufacturing, and Product Design (自動車、製造、プロダクトデザイン) カテゴリのいずれかのテンプレートから開始した場合は、このプラグインがデフォルトですでに有効になっていることがあります。

Variant Manager パネル

Variant Manager の画面は、Level Variant Sets アセットと呼ばれる特殊なタイプのアセット向けのエディタと捉えることができます。Level Variant Sets アセットをダブルクリックすると Variant Manager パネルが開き、このアセットで管理されているバリアントの設定や操作が可能になります。

Variant Manager の画面は 4 つの列で構成されています。

  1. Variants パネル: 左側のパネルには、このレベル バリアント セット アセットで管理されているバリアントとバリアント セットがすべて表示されます。例えば、上の画像には 3 つのバリアント セット ( Paint Logo Paint Rims ) が表示されています。これらのバリアント セットには複数のバリアントが含まれています。上の画像には、 [Blue] [Wild Cherry] [Naranja] のペイント カラーのバリアントが表示されています。

  2. Actors (アクタ) パネル:一番左側の列でバリアントを選択すると、2 番目のパネルの [Actors] にはそのバリアントにバインドされているすべてのアクタが表示されます。上の画像では [Paint] > [Blue] バリアントを選択しているため、[Actors] パネルには、ペイントされたバイク本体のすべてのパーツのスタティックメッシュ アクタが表示されています。

    アクタとバリアント間をバインドするということは、これらの間にリンクを作成することを意味します。そのバリアントを有効にすると、それにバインドされたアクタが反応して、データ プロパティの値を変更するか、関数を呼び出します。

  3. Properties (プロパティ) パネル: バインドされたアクタを 2 つ目の列で 1 つまたは複数選択すると、3 番目のパネルの [Properties] には、このバリアント内のこれらのアクタの キャプチャされた プロパティが表示されます。上の画像では、 Variant Material[1] プロパティをキャプチャしています。これらのマテリアルによってサーフェスで表示されるペイントカラーが決定されます。

    アクタのプロパティをキャプチャするということは、そのプロパティに対する希望の値をバリアントに保存することを意味します。

  4. Values (値) パネル: 一番右のパネル ( [Values] ) には、 [Properties] パネルに表示されている各プロパティの、バリアントに保存されている値が表示されます。この例では、 [Blue] バリアントが有効に切り替わった際に、Variant Manager によって、バインドされているアクタの Material[0] プロパティが青色の車のペイント マテリアルに設定されます。

  5. Dependencies (依存関係) パネル: 最後に、一番下のパネル ( [Dependencies] ) には、選択されたバリアントの一部となるコンストレイントが表示されます。依存関係は、現在のバリアントが有効にされている場合、他のバリアントを切り替えるコンストレイントです。現在のバリアントには依存関係はありませんが、 Packages (パッケージ) バリアント セットの デフォルト バリアントの一部であることを表示します。

バリアントを設定する

通常、シーン バリアントを設定する際の全体的なワークフローは、上記の 4 列を左から右に順に設定していく流れと同じです。

  1. シーン内で必要なバリアントを確認して、それらのバリアントをバリアント セットに分類する方法を決定します。これらの決定に基づいて、左側の列で使用可能なコントロールを使って、これらの同じバリアント セットとバリアントで Variant Manager を設定します。右クリックしてコンテキスト メニューからオプションを選択して、以下のことが可能になります。

    • 既存のバリアントを編集する。

    • 新規のバリアントとバリアント セットを追加する。

    • バリアントをあるセットから別のセットに移動する。

    • サムネイル イメージをバリアントとバリアント セットに割り当てる。これらのサムネイル イメージは、 Product Configurator テンプレートで表示されているように、後にユーザーインターフェースの一部として使用することができます。

    • 必要な依存関係を追加する。

  2. 前の手順で作成したそれぞれのバリアントに、1 つまたは複数のアクタをバインドします。[Actors] 列のヘッダにある + ボタンをクリックすると、新しいアクタをバリアントにバインドできます。また、[ワールド アウトライナー] パネルのアクタをバインドされたアクタのリスト、または左側のバリアントの列にドラッグしてバインドすることもできます。[Actors] パネルでリストを右クリックして、コンテキスト メニューからアクタをバインドまたはバインド解除することもできます。

  3. バインドされたそれぞれのアクタで、Variant Manager で変更するプロパティを選択できます。

    新しいアクタをバインドするごとに Variant Manager によって自動的にウィンドウが開かれて、キャプチャするプロパティを選択するよう促されます。例:

    Choose properties to capture

    ブループリントに公開されているあらゆるプロパティをキャプチャすることができます。バンドしたアクタがブループリント アクタの場合は、クラスで作成し、「Instance Editable」 としてマークした変数が含まれます。

    また、いつでも [Properties] パネルのヘッダにある [+] (プラス記号) ボタンをクリックするか、バインドしたアクタを右クリックして追加のプロパティをキャプチャすることができます。キャプチャしたプロパティを右クリックすると、リストから削除できます。

    バインドしたアクタで公開されている関数をバリアントをアクティベートする時n呼び出すよう Variant Manager を設定することもできます。この設定の詳細については、「 バリアントのアクティベーション時に関数を呼び出す 」を参照してください。

  4. それぞれのキャプチャしたプロパティについて、バリアントのアクティベーション時に Variant Manager で適用する値を設定します。キャプチャした値は、Variant Manager の [Values] 列で直接編集することで、いつでも設定することができます。また、Unreal Editor の別のセクションでプロパティ値を変更し、次のいずれかの操作を行って、保存した値をそのプロパティの現在の値に一致するよう更新することもできます。

    • プロパティ値の隣にある [Record the current value (現在の値を記録)] アイコンをクリックします。

      Record the Current Value icon

    • プロパティまたはキャプチャした値を右クリックして、コンテキスト メニューの [Record Current Value (現在の値を記録)] を選択します。

      Record Current Value

    すでに有効に切り替えたバリアントの [Values] パネルで、キャプチャした値を直接更新した場合、この変更はすぐにはレベル ビューポートに反映されません。変更を反映するには、もう一度バリアントを有効に切り替える必要があります。または、プロパティまたはキャプチャした値のいずれかを右クリックして、コンテキスト メニューの [Apply recorded Value (記録した値を適用)] を選択します。

    Apply Recorded Value

Datasmith を使用して、Autodesk VRED や 3DExcite Deltagen など、バリアントの設定をサポートするサードパーティ アプリケーションからシーンをインポートする場合、ソース シーン内ですでにバリアントが設定済みであれば、Datasmith によって自動的に Level Variant Sets アセットとアクタが設定されます。この場合、開発者が行うべきは、ユーザーのインタラクションに応じてバリアントを有効に切り替えるブループリント ロジックまたは UMG ウィジェットをプロジェクト内に作成することのみです。

自動バインディングとキャプチャリング

前のセクションで紹介したアプローチでアクタのプロパティを一つずつバインディングする代わりに、レベル内でアクタを変更しながら、これらのアクタを自動的にバインドして、そのプロパティをキャプチャすることもできます。

自動バインディングとキャプチャリングを切り替えるには、Variant Manager 画面左側の バリアント の列の上にある切り替えボタンを使用します。

Auto-capture disabled

Auto-capture enabled

自動キャプチャが無効

自動キャプチャが有効

自動キャプチャリングがアクティブにされている場合は、レベル内のアクタに対するすべての変更が Variant Manager によってリッスンされます。Variant Manager でキャプチャ可能なプロパティを変更すると、変更されたプロパティの新しい値が自動的にキャプチャされて、現在選択しているバリアントに保存されます。現在選択しているバリアントは、一番左側の列でオレンジ色でハイライトされているバリアントです。

変更を加えたアクタが、選択しているバリアントにバインドされていない場合は、自動的にバインドされます。通常の手順は次のとおりです。

  1. 画面左側の [Variants (バリアント)] 列で、変更するバリアントをクリックして選択します。変更を加える前にバリアントの現在の状態を有効に切り替えるには、目的のバリアントをダブルクリックします。

  2. 自動キャプチャのボタンをクリックして、有効な状態に切り替えます。

  3. バリアントにバインドするよう選択したアクタに変更を加えます。変更に伴い、Variant Manager によって変更されたすべてのアクタが自動的にバインドされ、設定したすべての新しいプロパティ値がキャプチャされます。

  4. バリアントが希望どおりに設定されたら、次のいずれかを行います。

    • 画面左側の [Variants] 列で、別のバリアントをクリックまたはダブルクリックして、引き続きバリアントのプロパティをキャプチャする。

    • 自動キャプチャのボタンをクリックして無効の状態に戻し、変更のキャプチャを終了する。

自動キャプチャ モードの状態には常に注意してください。レベル内で作業する際に自動キャプチャ モードが有効であることを忘れてしまった場合、現在選択しているバリアントに不要な変更が誤って記録されてしまう危険性があります。

エディタ内でバリアントを有効にする

ランタイムまたは Unreal Editor 内でバリアントを有効にした場合、Variant Manager により、そのバリアントにバインドされているすべてのアクタに対して繰り返し処理が行われます。これらのアクタで、キャプチャされたすべてのプロパティが、バリアントに保存された値に設定されます。また、バインドされているアクタで呼び出すよう設定した関数も呼び出されます。

Variant Manager の画面が開いていれば、Unreal Editor 内でバリアントを有効にできます。次のいずれかの手順で有効にできます。

  • 画面の一番左側の列で、有効にするバリアントをダブルクリックする。

  • 画面の一番左側の列で、有効にするバリアントを右クリックしてコンテキスト メニューの [Switch On (有効に切り替え)] を選択します。

    Switch On

Variant Manager では、有効になっているバリアントが小さなインジケーターで示されます。つまり、キャプチャされたプロパティが、レベル内のバインドされているアクタに現在適用されている値とすべて一致するバリアントが示されます。バリアントを有効に切り替えた際、また、レベル内で同じプロパティ値を手動で設定した場合にインジケーターが切り替わります。

Deactivated Variant

Activated Variant

無効なバリアント

有効なバリアント

ランタイムでのバリアントの有効化については、後述の「 ランタイム ブループリントAPI 」を参照してください。

依存関係を設定する

バリアントとバリアントセットが確立されたら、任意のバリアントのオプションの依存関係を作成できます。依存関係は、他のバリアントを初期設定に戻すデフォルト バリアントの作成など、有効になっているときに他の依存バリアントをオンにするバリアントに追加される制約です。

Example of Dependencies

バリアントに新しい依存関係をセットアップする方法を説明します。

Steps to create a dependency

  1. バリアントを 1 つ選択し、[Dependencies] パネルの [+] ボタンをクリックして新しい依存関係を作成します。

  2. 現在の選択をオンにした時に有効にするバリアント セットとバリアントを依存関係に指定する必要があります。 [Variant Set] のドロップダウン ボックスをクリックし、依存関係に追加するバリアントを含むバリアント セットを選択します。

  3. 有効にするバリアントを [Variant] ドロップダウンから選択します。

依存関係に対して選択したバリアントにバインドされたアクタが含まれている必要はありません。

dependencies-tip-example.png

このように、依存関係を使ってさまざまなパッケージ設定オプションを作成します。表示されているバリアントに含まれているのは依存関係のみです。アクタはバインドされていません。

Level Variant Sets アセットとアクタについて

それぞれの Level Variant Sets アセットには、特定のレベル内に存在するアクタに関する情報が保存されています。そのレベルを Unreal Editor で開いている場合は、Variant Manager の画面を通じてさまざまなバリアントを有効にできます。有効にすると、Unreal Editor 内で、バインドされているアクタによって、キャプチャされたプロパティの値がすぐに更新されます。

バリアントを Unreal Editor 内でのみ有効にする場合 (ランタイムでは有効にしない) は、設定する必要があるのは Level Variant Sets アセットのみです。

ただし、パッケージ化されたプロジェクトでは、ランタイムでのバリアントが最も有用です。例えば、Unreal Engine レベル内に、さまざまなトリムを表す複数のバリアントが含まれる 150% BOM モデルの車があるとします。この場合、これらのトリム オプションをエディタ内で切り替えることができるのは便利ですが、エンド ユーザーがトリムを選択できる車コンフィギュレータを作成することが目的であれば、エンド ユーザーによってランタイムで制御可能なバリアントにする必要があります。

こうするには、レベル内に Level Variant Sets アセットをドラッグする必要があります。これによって新しい Level Variant Sets アクタが、その作成に使用したアセットにリンクされたレベル内に作成されます。この特殊なアクタでは、ブループリント ゲームプレイ ロジックのバリアントの操作に使用可能なブループリント インターフェースと、プロジェクトで作成する UMG インターフェースが提供されます。Variant Manager を使ってコンフィギュレータを作成する方法の詳細は、 Product Configurator テンプレートのドキュメントを参照してください。

各 Level Variants Sets アセットは、単一のレベル内でのみアクタと機能します。別のレベルを開いても、そのレベル内では Variant Manager はオブジェクトに影響を与えません。

複数の異なるレベル内でアクタを制御する必要がある場合は、それぞれのレベルに対して異なる Level Variant Sets アセットを作成し、これらを別々に設定する必要があります。または、これらで同じアクタを同じように制御する場合は、Level Variants Sets アセットで制御する必要のあるすべてのアクタを単一のサブレベルに配置し、これらのバリアントを必要とする両方のレベルにこのサブレベルを追加します。

ランタイム ブループリント API

Level Variant Sets アクタでは、ランタイムでのバリアントおよびバリアント セットの操作に使用可能なブループリント API が提供されます。この API の主な使用目的は次のとおりです。

バリアントを有効にする

バリアントとその親であるバリアント セットの名前またはインデックス値のいずれかが判明していれば、レベル バリアント セットに含まれているあらゆるバリアントを有効に切り替えることができます。

バリアントを有効に切り替える最もシンプルな方法は、Level Variant Set アクタへの参照からドラッグして Level Variant Sets カテゴリを見つけ、 [Switch on Variant by Index] または [Switch on Variant by Name] を選択する方法です。

Switch on a Variant by index or by name

バリアント データにアクセスする

Variant Manager で設定したすべてのバリアントとバリアント セットの構造にアクセスすることができます。

  1. Level Variant Set アクタへの参照からドラッグして Level Variant Sets カテゴリを見つけ、 [Get Level Variant Sets] を選択します

    Get Level Variant Sets

  2. Level Variant Sets アセットへの参照が確立したら、アセットに設定されているバリアント セットにアクセスするために、 [Return Value] ポートからドラッグして [Level Variant Sets] を見つけます。

    Access the Variant Sets

    Get Variant Set ノード、または Get Variant Set By Name ノードを使用して、インデックスまたは名前を使ってバリアント セットを取得します。Get Num Variant Sets は、Level Variant Sets アセットで設定されているバリアント セットの合計数を返します。これを Get Variant Set ノードと組み合わせて、すべてのバリアント セットをループスルーして処理することができます。

  3. バリアント セットへの参照を取得したら、バリアント セットに含まれるデータを操作するために、その Return Value からドラッグして Variant Set category カテゴリを見つけます。

    Access data in the Variant Set

    Get Display Text ノードでは、Variant Manager の画面でバリアント セットに設定した名前を取得できます。

    バリアント セット自体へのアクセスに使用したものと同じ一連のノードを使用して、バリアント セット内のバリアントにアクセスすることもできます。 Get Variant ノード、または Get Variant By Name ノードを使用して、インデックスまたは名前を使ってバリアント セットを取得します。Get Num Variants は、このバリアント セットで設定されているバリアントの合計数を返します。これを Get Variant ノードと組み合わせて、前述のバリアント セットのループスルーと同様に、バリアント セットに含まれるすべてのバリアントをループスルーして処理できます。

  4. バリアントへの参照を取得したら、その Return Value ポートからドラッグして Variant カテゴリを見つけ、表示名を取得したり、有効に切り替えたり、バインドされているアクタにアクセスしたりすることができます。

    Access data in the Variant

このブループリント グラフの例では、上記のアプローチを使用して、設定されているすべてのバリアントとバリアント セットに対して処理を反復します。これにより、各バリアントとバリアント セットの名前が順番に画面とログに出力されます。

Copy Node Graph

バリアントとバリアント セットに対する反復処理と同様のアプローチを使用して、異なる処理を行うこともできます。全般的な UMG の知識とアイデアを活用して、この情報に基づいて、Level Variant Sets アセットで設定したバリアントとバリアント セットを反映する UI ウィジェットを自動的に作成する UI システムを構築することができます。

ブループリントでの作業に関する背景情報については、「 ブループリント ビジュアル スクリプティング」 」を参照してください。UMG でのユーザー インターフェースの作成については、「 UMG UI デザイナーのドキュメント 」を参照してください。

資料提供

このページで使用されているビークル モデルは、 Allegorithmic からの提供によるものです。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる