Unreal Engine (UE4) プロジェクト用にテクスチャを作成する場合、一般的には Adobe Photoshop や GIMP などの外部 2D ペイント プログラムを使う必要があります。この方法でコンテンツをオーサリングすれば素晴らしい結果が出ますが、UE4 にこのようなコンテンツ作成機能があると便利な場合があります。この操作方法では、ブループリントを使ってターゲットをレンダリングして、UE4 プロジェクト用のテクスチャを作成する方法を説明します。まず UE4 プロジェクトに空のレベルを作成して、使用するレンダー ターゲットを作成および設定します。
1 - プロジェク設定
作業を開始する前に、プロジェクト設定の一部としていくつかのアセットを作成する必要があります。
Empty Level の新規作成
Empty Level を新規作成して、テクスチャを作成するブループリントに置くと管理しやすくなり、テクスチャ作成プロセスに何も影響していないことを確認できます。UE4 で Empty Level を新規作成するには、以下の操作を行います。
-
メイン ツールバー から [File] \> [New Level] を選びます。
-
[New Level] ウィンドウが表示されたら、[Empty Level] オプションをクリックします。
-
[Empty Level] オプションをクリックすると、中に何も入っていない新規レベルがロードされます。ロードされたら、メインツールバーの [Save (保存)] ボタンをクリックして、「BlueprintTextureCreation」という名前で保存します。
レベルの作成はこれで完了です。では次のセクションで、必要なアセットの作成と設定を行いましょう。
2 - 必要なアセットの作成と設定
このセクションでは、ブループリントおよびレンダー ターゲットでテクスチャを作成できるように、必要なアセットの作成と設定方法を説明します。
マテリアルの作成と設定
-
コンテンツ ブラウザを右クリックして [Create Basic Asset (基本アセットを作成)] セクションから [Material] オプションから新規マテリアルを作成します。
-
マテリアルに RT_Material_00 と名前を付けて、そのマテリアルをダブルクリックして、マテリアル エディタ で開きます。
-
RT_Material_00 を開いた状態で、次の マテリアル式 ノードを マテリアルグラフ に追加します。
- Texture Coordinate
- Constant
- AppendVector
- Noise
-
必要なマテリアル表現式ノードをマテリアル グラフに追加して、マテリアルのコンパイルが完了したら [Apply (適用)] ボタンを押してノードを接続します。すると、以下の画像のようになります。
3 - レンダー ターゲットの作成と設定
-
UE4 エディタを開いて コンテンツ ブラウザ 内を右クリックします。表示されたメニュから [Create Advanced Asset (詳細アセットを作成)] を探します。
-
[Create Advanced Asset (詳細アセットの作成)] メニューから [Materials & Textures (マテリアルとテクスチャ)] セクションを選び、表示されたアセット リストから [Render Target] オプションを選択します。
-
新しく作成したレンダー ターゲットに「RT_00」と名前を付けます。完了すると、コンテンツ ブラウザは以下のようになるはずです。
4 - ブループリントの設定
レンダー ターゲットと必要なマテリアルを設定して使用可能な状態になったら、ブループリントでそれらを全部つなげます。次のセクションでは、Height Field Painter ブループリントの各部分の設定方法を説明します。
ブループリントの作成と設定
レンダー ターゲットとマテリアルを両方とも使うことができるブループリントを作成するには、以下の操作を行います。
-
コンテンツ ブラウザ を右クリックして表示された [Create Basic Asset (基本アセットを作成)] セクションから [Material] オプションを選択して新規マテリアルを作成します。
-
[Pick Parent Class] ウィンドウで、Actor クラスを選択し、そのブループリントに「BP_Texture_Creator」という名前を付けます。
-
BP_Texture_Creator
ブループリントをダブルクリックして開き、[Event Graph] タブをクリックしてイベント グラフを開きます。 -
イベント グラフが開いたら、次の Blueprint ノードをイベント グラフに追加します。
- Custom Event
- Draw Material to Render Target
-
Custom Event ノードを選択して F2 を押して、そのカスタム イベント ノード名を「Bake」に変更します。出力を Draw Material to Render Target ノードの入力に接続します。
-
次に Draw Material to Render Target ノードで、Select Asset の横の小さな白い三角をクリックし、リストからセクション 2 で作成したレンダー ターゲット
RT_00
をクリックして選択し、Texture Render Target スロットにロードします。ロードされたら、RT_Material_00
を選んで、[Material] セクションも同じ手順を行います。 -
次に [Construction Script] タブをクリックして Construction Script ノードを引き出して [Executable actions (実行可能なアクション)] メニューを表示させます。
DrawMaterialToRenderTarget は UE4 エディタ以外のコンストラクション スクリプトでは動きません。つまり、ランタイム時にこの操作はできませんので、ご注意ください。
-
検索ボックスに 「Bake」 と入力して、表示されたメニューの中から作成した Bake event を探します。クリックしてグラフに追加したら、コンストラクション スクリプトの出力を Bake ノードの入力に接続します。
-
最後に、[Compile] ボタンと [Save] ボタンを押して、ブループリントにコンパイルおよび保存をします。
ブループリントの設定はこれで完了です。次のセクションでは、マテリアルで作成した内容を表示するテクスチャのキャプチャおよび保存方法について説明します。
5 - テクスチャの作成と最終結果
このセクションでは、これまでの手順を全部つなげて、作成したマテリアルに基づいてテクスチャ アセットを作成および保存する方法を説明します。
テクスチャの作成
これで必要な部分はすべて作成および設定されました。次は、テクスチャの作成方法と作成したテクスチャの保存方法を説明します。
-
コンテンツ ブラウザで
BP_Texture_Creator
ブループリントを見つけてレベルへドラッグします。 -
コンテンツ ブラウザで
RT_Material_00
マテリアルを見つけたら、ダブルクリックして開きます。開いたら Noise マテリアル式ノードを選択します。 -
Noise マテリアル式を選択したら、[Details (詳細)] パネルで以下の値を各パラメータに入力します。入力したら [Apply (適用)] ボタンを押してマテリアルをコンパイルします。
- Scale: 2.0
- Levels: 8.0
- Output Min: -0.01
- Level Scale: 3.0
-
コンテンツ ブラウザの中の
RT_00
レンダー ターゲットをアップデートするために、レベルに配置したBP_Texture_Creator
ブループリントを選択して少しだけずらします。すると、RT_00
レンダー ターゲットがアップデートされて、RT_Material_00
に入っているものが正確に表示されます。マテリアルに行った変更を表示あるいは更新する場合は、ブループリントを [少しだけ] 動かさなければなりません。
-
コンテンツ ブラウザの
RT_00
レンダー ターゲットを右クリックし、メニューの [Render Targets Actions] セクションで [Create Static Texture] オプションを選んで、RT_Material_00
の出力を表示するテクスチャ アセットを新規作成します。
最終結果
どれでも好きなマテリアルで使用することができる RT_Material_00
のコンテンツを表示する 2D Texture が新規作成されました。
変更箇所を表示するには、その変更がレンダー ターゲットに反映されるように、マテリアルをコンパイルしてブループリントを [少しだけ] 動かさなければならないことを覚えておいてください。