UE4では、Mayaで作ったモデルに適用したマテリアルの設定をそのままもっていくことはできず、UE4上で1から設定しなおす必要があります。
UE4のマテリアル設定は、Mayaのものとは作法が変わってくるので、その違いにとまどいを覚えた方も多いのではないでしょうか。
実際、私はテクスチャの貼り方が微妙によくわからず、UE4上でのモデルの見た目がおかしくなってしまうといった問題が発生し、そこでわりと時間を潰していました。
今回は、モデルのテクスチャは別ソフトで作成済みであるという前提で、UE4のマテリアルへのテクスチャの適用のしかたについてざっくりと解説していきます。
SubstancePainterでつくったテクスチャをUE4のマテリアルに貼り付ける
テクスチャの準備
今回はSubstancePainterで作ったテクスチャをUE4に持っていく方法を紹介します。
私が以前作ったイカのモデルがあるので、イカのテクスチャをUE4で適用していくことにします。
SubstancePainterで作ったテクスチャのプロジェクトを開き、ファイル⇒テクスチャの書き出しを実行。
”出力テンプレート”から”Unreal Engine 4 (Packed)”を選択して書き出し実行します。
書き出されたテクスチャが以下の3種類になります。
左からベースマップ、ノーマルマップ、そしてオクルージョン+ラフネス+メタリックマップになります。
3番目のテクスチャについては最初はよくわからないかと思いますが、オクルージョンマップとラフネスマップ、メタリックマップをRGBの3種類の値で一つのデータにまとめたものになります。
モデルを透明にしたり発光させたりする場合、これらとは別にオパシティマップやエミッシブマップが生成されますが、基本は上の3種類のテクスチャを使うことになります。
これでUE4用のテクスチャの準備ができました。
テクスチャをUE4のプロジェクトにインポート
テクスチャデータをUE4のプロジェクトにインポートしていきます。
UE4プロジェクトを開いたら、画面下のContent Browserに適当なフォルダ(管理しやすいように”Texture”という名前を付けておく)を作ります。
フォルダ内に入って右クリック⇒Import Assetからテクスチャをインポートします。
図のようにフォルダの中にテクスチャデータが表示されていれば、インポート完了です。
テクスチャをマテリアルに適用する
それでは準備したテクスチャをUE4のマテリアルに適用していきます。
UE4のマテリアルエディタを開きます。
私が作ったイカのモデルのマテリアル”mat_squid”をダブルクリックします。
すると、以下のようなウィンドウが表示されます。
次に、用意したテクスチャを”mat_squid”のノードにつなげるための入れ物のノードを準備します。
マテリアルウィンドウ右側の”Palette”タブの検索バーに”Texture”と入力すると、”TextureSample”という項目が出てきます。
”TextureSample”を中央画面にドラッグ&ドロップすると、
上図のようにTextureSampleノードが出現します。
このノードを選択した状態で、ウィンドウ左側のDetailsタブの中の”Material Expression Texture Base”の”Texture”の項目でインポートしたテクスチャを選択します。
プルダウンメニューからベースカラーのテクスチャを選択すると、TextureSampleノードにインポートしたテクスチャのデータが格納されます。
このノードを”mat_squid”ノードにつなげることで、テクスチャが適用されます。
ベースカラーのテクスチャを入れたので、TextureSampleノードの”RGB”と”BaseColor”をつなげます。
この要領で、他のテクスチャもつなげていきます。
ノーマルマップも同じ手順で、TextureSampleノードにノーマルマップのテクスチャを入れて”mat_squid”ノードの”Normal”につなげます。
オクルージョンラフネスメタリックマップは少し勝手が違ってきます。
TextureSampleノードにテクスチャデータを入れるまでは同じですが、上でも説明しましたがSubstancePainterで作ったテクスチャはオクルージョンマップとラフネスマップ、メタリックマップを一つのテクスチャにまとめています。
どうやって一つのテクスチャにまとめているかというと、画像のRGBの値で決めています。
つまり、
R:オクルージョンマップ
G:ラフネスマップ
B:メタリックマップ
という対応の仕方になっています。
なので、RをAmbientOcculusionに、GをRoughnessに、BをMetalicにつなげていきます。
ノードのつなぎ方はこれでOK。
設定は以上・・・といきたいところですが、まだ不十分です。
オクルージョンラフネスメタリックマップを入れたノードを選択した状態で、ウィンドウ左側のDetailsタブの”Material Expression Texture Base”の中のTextureのマップアイコンをダブルクリックします。
すると、以下のようなウィンドウが出るので、ウィンドウ右側のDetailsタブの”Texture”の”sRGB”のチェックボックスをOFFにします。
なぜこれが必要かというと、画像がsRGBの場合、R・G・Bのそれぞれの値を抽出できないので、テクスチャの適用ができなくなってしまうからです。
さて、マテリアルエディタの画面に戻ると、下図のようなエラーが出てしまいます。
ウィンドウ下のメッセージを見ると、”Sampler typeをColorからLinear Colorに変えろ!”的な内容が書かれています。
なので、Detailsタブの”Material Expression Texture Base”の”Sampler Type”を”Linear Color”に変更します。
これでエラーが解消されました。
変更した内容を保存してApplyします。
ビューポートでモデルを確認しましょう。
イカのテクスチャがうまく貼り付けられました!
まとめ
・SubstancePainterで作ったテクスチャをUE4のマテリアルに適用する手順を紹介
・SubstancePainterで作ったUE4用のテクスチャデータは、ベースマップ、ノーマルマップ、オクルージョン+ラフネス+メタリックマップの3種類を基本的に使う(透明マップ等を使う場合は増える)
・オクルージョン+ラフネス+メタリックマップをUE4のマテリアルに適用するときはR・G・Bそれぞれの接続の仕方に注意すること