![](https://kinnaji.com/wp-content/uploads/2020/03/image-52.png)
目次
※この記事で使用しているUnrealのVersionは04.25.0 Preview1です。
※この記事のサンプルプロジェクトは以下URLにアップされています。
※記事で使っているアセットは容量的にもライセンス的にも微妙だったので、記事の内容とは異なったチュートリアルとして作成してあります。
※今回はラーニングにある「建築インテリアレンダリング」を使用しています。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-48.png)
前置き
4.21からある「Variant Manager」という機能ですが、あまり日本語情報がなさそうだったのと、4.25で改善されているようだったので記事にしてみました。
公式ドキュメント
Variant Managerは簡単に言うと、レベル上のアクターのプロパティを保存・適応が簡単にできる便利な機能です。
こんな感じでうまく使えば、特にエンタープライズ界隈などで役に立つんじゃないかなと思います。
プログラム(Bluepint)を書くことなく 実装できるのでアーティストでもプランナーでもできちゃいます!
前準備
導入には「Variant Manager」というプラグインを有効にする必要があります。
エディター左上の「Edit」から「Plugins」を選択しましょう。
![](http://kinnaji.com/wp-content/uploads/2020/03/image.png)
出てきたPlugins Windowから「Variant Manager」のEnabledにチェックを入れます。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-2.png)
そうしたら一旦エディターを再起動しましょう。
これで準備は完了です。
では早速Variant Managerを使っていきたいと思います。
Variant Managerでレベル上のPropertyを管理する レベル【★】
Variant Managerは「Level Variant Set」というアセットで管理します。
まずはこのLevel Variant Setを新規で作成します。
Content Browser左上の「Add New」から「Miscellaneous」→「Level Variant Set」を選択しましょう。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-6.png)
適当にアセットの名前を付けたら、ダブルクリックしてVariant ManagerUIを開きます。
すると、以下のようなWindowが現れると思います。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-5.png)
ひとまず、Window内左上の「+Variant Set」のボタンを押してみましょう。
すると、Variant Setと書かれたバーが現れたかと思います。(この部分の名称は右クリック→「Rename」任意で変更可能です)
![](http://kinnaji.com/wp-content/uploads/2020/03/image-18.png)
さらに追加されたバー右側の「+」ボタンを押しましょう。
するとさらに「Variant」と書かれたUIが追加されます。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-19.png)
この追加された「Variant」と書かれたVariant単位で、レベル上のアクターのプロパティのセットを作成していきます。
(このVariantの名前も任意の名称に変更することができます)
今回は「建築インテリアレンダリング」プロジェクトのアセット(イスとテーブル)を使って実際にVariant Managerを使っていきます。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-28.png)
最初に前準備として、このイスと机に使われている木製部分のマテリアルインスタンスを複製しておきます。
このアセットに使われている木製部分のマテリアルインスタンスは以下になります。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-32.png)
これらをDuplicateして、M_~~~_BrightColorという名前にします。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-31.png)
そうしたら、各マテリアルインスタンスをダブルクリックして、ColorのPropertyだけ編集しちゃいます。
Base Color Tintの項目にチェックをいれて、そのR,G,Bの値すべてに「0.5」を足してあげましょう
(プロパティに直接計算式で0.493055+0.5などという風に入力すると、自動で計算した値が入力されます。)
![](http://kinnaji.com/wp-content/uploads/2020/03/image-33.png)
すべてのマテリアルインスタンスに適応できましたら下準備完了です。
では、Variant Managerに戻ります。
先ほど作成追加したVariant SetとVariantの名前を「Table_Chair」と「Default Color」という名前に変えます(別に変更しなくても問題はありません)
![](http://kinnaji.com/wp-content/uploads/2020/03/image-20.png)
そうしたら、プロジェクトの「ArchVis_RT」レベル内に↓の画像にあるイスをすべて選択します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-34.png)
そして、Variant Manager Windowにもどり、「DefaultColor」Variantを右クリックして、「Add Selected Actors」を選択します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-23.png)
そうすると、何やら新しいWindowがポップアップされます。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-15.png)
その中の「Capture Property」から「Static Mesh Component / Material[0]」にチェックを入れて「Selected」を押します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-35.png)
そうすることで、Variant Manager Window内の「Actor」欄に、選択していたActor達が追加されたかと思います。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-37.png)
この追加したアクターの項目を選択してみると、その右側の「Properties」に先ほど作成時に追加したパラメータがあり、その値がValuesに設定されています。
このValuesの値は、デフォルトでレベル上のアクターと同じものがセットされています。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-36.png)
次に、同じ要領で今度はレベル上のテーブルをクリックした状態でVariantを右クリック「Add Selected Actors」を選択します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-38.png)
![](http://kinnaji.com/wp-content/uploads/2020/03/image-39.png)
出てきたWindowから「Static Mesh Component / Material[1]」にチェックを入れて「Select」を押します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-40.png)
テーブルアセットのプロパティが追加されていればOKです。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-41.png)
次に、この状態のVariantを複製します。
Variantを右クリックして、「Duplicate」を選択しましょう。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-27.png)
そうしたら、複製した方のVariantを選択し、ActorのPropertyを現在設定されているマテリアルインスタンスから、先ほど作った_Brightのマテリアルインスタンスに設定しなおしてあげます。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-42.png)
これで一通りのセットアップは終わりです。
では、実際にVariant Managerでマテリアルを切り替えます。
切り替える際は、Variantを右クリック→「Switch On」を押すことで即座に設定が反映されます。
単一のアクターに対して設定を適応したい場合は、Variant Manager上の特定のアクターを選択した状態でPropertiesを右クリック→「Apply recorded value」を選択すれば適応できます。
また、 「Record Current Value」で、現在のレベルの設定をそのままプロパティに反映できます。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-43.png)
また、Variant Manager左上の赤い丸(キャプチャーボタン)を押すことで、それ以降にレベル上で編集されたアクターとパラメーターをすべてVariant Managerに取り込むことができます。
もう一度押すことでキャプチャーを終了します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-51.png)
さらに、このVariantの設定が適応されるタイミングで呼ぶことのできる関数を設定することもできます。
任意のアクターを右クリック→「Add function caller」を選択します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-44.png)
すると、新しく関数オブジェクトを参照するPropertyが現れます。
そのPropertyのプルダウンを選択して、「Create New Function」を押します。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-45.png)
そうすることで、Blueprint のGraph Editorが開かれます。
この関数はVariantが適応されたタイミングで呼ばれるため、複雑な設定もBlueprintで実装が可能になります。
※引数のTargetはActorの参照が渡されます。
また、「Level Variant Sets」はアセットの参照、「Variant Set」はこの関数が属しているVariant Setの参照、Variantはこの関数が属しているVariantの参照がそれぞれ帰ってきます(この辺りは4.25で追加されました)
![](http://kinnaji.com/wp-content/uploads/2020/03/image-49.png)
↓実行したもの
※注意!!
関数を生成時に忘れずに関数のDetailで「Call In Editor」にチェックを入れてください。そうでなければ、この関数は呼ばれずに無意味なものになります。
(デフォルトでチェック入れておいてくれると嬉しいな…)
![](http://kinnaji.com/wp-content/uploads/2020/03/image-47.png)
尚、一度作成したBlueprintは、Property右側の虫眼鏡マークを押すことでGraph Windowに切り替わります。(若干探しました)
また、Variantごとにサムネイルを設定することもできます。
Variantを右クリック→「Set from viewport」で現在のViewportの画像をキャプチャーしサムネイルに、「Set from file」で任意の画像ファイルをサムネイルに設定することができます。
![](http://kinnaji.com/wp-content/uploads/2020/03/image-50.png)
以上となります。
建築系などのプロジェクトでは、こういったアセット管理が割と重要になってくると思いますが、このVariant Managerを使うことで、管理の向上と大幅な時間削減ができるかと思います。
皆さんも是非使ってみてはいかがでしょうか!?
※この記事のサンプルプロジェクトは以下URLにアップされています。
いつもお世話になっております。
4.25p1より前のバージョンになりますが、
公式のチュートリアル動画(日本語字幕付き)も参考資料としてご紹介しておきます。
Variant Management – Part 1 | Tips & Tricks | Unreal Engine
https://www.youtube.com/watch?v=VHQdS3QnMow
Variant Management – Part 2 | Tips & Tricks | Unreal Engine
https://www.youtube.com/watch?v=BfgLsPcb0hs