MODOからUnreal Engineへのワークフロー<後編>
https://www.youtube.com/watch?v=UzGQmzLU6C8
ではここから、Unreal Engineへの出力用にシェーダツリーでエフェクトを変更し、画像を調整していきます。今回、画像の調整はPhotoshopで行います。
ではベイク済みのシーンを別名で保存しておきましょう。画像を調整していきますので、ベイク画像のバックアップを複製して、あらかじめとっておくと良いでしょう。
もうハイポリのメッシュは必要ないので削除しましょう。シェーダツリーからもハイポリ用のマテリアルも削除します。レンダーアウトプットやベイクアイテムも必要ないのでこちらも全部削除します。ハイポリメッシュ用にマッピングしていた画像も必要ありませんので削除します。これでシーンを保存しなおせば、余分なコンテンツがない状態なのでシーンが軽くなります。
グローブやブーツ、エアチューブなど、片方しか無いパーツを鏡面コピーします。アクションセンターは原点にしておくと楽です。
スーツやエアチューブなどバックアップとしてモーフマップを作っていたものをもとに戻します。頂点マップメニュー > モーフの適用でBasePositionを適用します。これでメッシュ形状がもとに戻ります。もとに戻ったらもう一度保存します。
ここからはシェーダツリーで作業していきます。マテリアルグループの中の画像をいったんオフにします。まずはカスタムマテリアルからUnreal Materialを追加し、画像の一番下へと移動します。次にNormalを持ってきて下に移動させます。Diffuse ColorはUnreal MaterialでいうBase Colorとほぼ同じなので、Unreal > Base Colorへとエフェクトを変更します。
Unreal Materialを見てみると、SpecularやRoughness、Base Colorなどが用意されています。ベイクしたMODOのエフェクトを対応するUnreal Materialのエフェクトを変換します。まずは金属の質感を扱うメタリックです。これはMODOでいうところのスペキュラと似ていますので、SpecularとRoughnessのベイク画像をPhotoshopへと読み込みます。
ここではあらかじめRoughnessとSpecularの画像は、ディスクスペース軽減のため、グレースケールへと変換してあります。画像を確認すると、画像の中に空白部分があるのが確認できます。Unreal Engineへと持っていくにはこの空白部分を埋める必要があります。ここでPhotoshopのプラグインSolidfyを活用しましょう。指定したURLからツールをダウンロードしインストールしてください。このSolidfyを使えばエッジ部分も問題なく、空白部分をキレイに補間して埋めてくれるようになります。
メタリックマップは金属の質感を表現するものですが、これはオンとオフ、つまり黒と白でメタルかそうでないかを表します。Specularチャンネルでもほぼ表現できているのですが、さらに調整を加えます。ホワイトポイントでバンド周りを白くし、スクラッチ周辺をブラックポイントとし、他が金属にならないように調整します。もう一つレイヤーを増やし、スクリューのところは金属であるにも関わらず、スペキュラの値が低いので、これを白にします。
処理が終了したら、Metalicマップとして保存しましょう。レイヤーが統合された状態で保存されます。MODOに戻り、作成したMetalicマップを読み込み、エフェクトをUnreal Metalicに設定します。メタリックがきいた状態で確認してみると、アンダーラインのところが暗すぎるようです。これは対応する箇所のDiffuse Colorが暗すぎるため、Photoshopに戻り、Diffuse Colorに調整を加えます。
Diffuse ColorもSolidfyで空白を埋めます。Specular Mapのレイヤーをすべてコピーし、レイヤーを統合したらカットして、Diffuse Colorのレイヤーへと貼り付け、オーバーレイをスクリーンにします。そうすると、金属の部分が明るく表現されるようになります。ただしオレンジのボタン部分も明るくなってしまうため、この部分は削除しておきましょう。同名で上書き保存すれば、MODOに戻ると自動的に再読込されます。Unreal Materialのラフネスの値を0にすると、輝くようになります。オレンジの部分を新しいレイヤーへと移し、Specularで乗算で金属的な質感にならないように保存し、MODOに戻ります。そうするとオレンジのボタンの周辺が金属っぽくなります。正しく調整できたら、Diffuse Colorへも反映させましょう。
Specular自体はUnreal Specularと全く同じなので、そのままエフェクトを変換するだけでOKなのですが、効果が反転しています。このため、Photoshopへと戻り、グレースケールの値を反転させ保存し直します。
RoughnessはUnreal Roughnessへと変換します。さらにAmbient Occlusionを読み込み、Unreal Ambient Occlusionへと変換します。Ambient Occlusionを加えることにより微妙な陰影を反映させることができます。
これで調整は完了です。スーツに対しても同じ処理を行いましょう。スーツに関してはRoughnessが粗すぎて光沢が高すぎるようなので、全体の明るさを落とし、全体の色調をよりフラットな感じにします。Specularも強すぎるため、明るさを少し全体的に抑えます。バックルやベルトの輝きがいい感じになります。
次に頭部です。Roughnessに対してはより面白いバリエーションを作りたいので、Diffuse Colorの青色のチャンネルをRoughnessへとコピーしましょう。トーンカーブで調整し、よりシャープにします。Roughnessの複製し反転したら、それをSpecularに適用します。
ドームの場合はUnreal Materialを適用し、Specularに100%、Roughtnessは3%、Opacityは30%、Diffuse Colorに薄いグレーを設定します。
他のアイテムに対しても、同様にエフェクトの変換と画像の調整を行っていきます。
では実際にデータを出力して、Unreal Engineへと読み込みます。
出力前にデータを整理しましょう。ドームのグラスは内側を削除し、外側をPSUBで細分化しておきましょう。また、アイテムリストでメッシュをすべて選択し、メッシュが一つだけになるよう統合します。
ShaderTreeでBakeと書いてあるところはリネームしましょう。これで出力の準備は整いました。
ゲームツールレイアウトの出力サブタブからプリセットをUnreal Engine 4に設定します。出力するフォルダを指定したら、あとは実際に出力するだけです。
出力フォルダを見てみると、FBXとXMLファイルが出力されています。指定したTexturesフォルダの中に、画像も全てコピーされていることを確認します。
ではUnreal Engine 4を開き、BlankプロジェクトでAlien Pilotを作成しましょう。レベル > マップ > Advanced Lightingを開きます。このシーンはHDRライティングであり、背景にHDRが設定されています。不要なオブジェクトは削除しておきましょう。
背景の画像を、元々のMODOビューポートの環境で使用していた背景に入れ替えます。これでMODOとの味環境になります。マテリアルを読み込むためのプラグインをインストールするため、シーンを保存しいったん終了します。MODOマテリアルのプラグインはGitHubにあるため、使用しているバージョンに合わせてプラグインをダウンロードします。ZIPファイルに圧縮されていますので、ローカルのハードディスクに保存し、解凍したPluginsフォルダをUnrealプロジェクトフォルダの中へとコピー・アンド・ペーストします。そうすることで、プロジェクトごとにこのプラグインが使えるようになります。
シーンを開いてみると、プラグインがインストールされていれば、アイコンがツールバーに表示されるようになります。Advanced Lightingレベルを開き、FBXファイルを読み込みます。読み込んだエイリアンをシーンへドラッグ・アンド・ドロップし、よく確認しましょう。まだこの時点ではマテリアルは適用されていません。FBXと同じフォルダにあるXMLファイルを、マテリアルのプラグインから読み込みます。パネルを閉じると、すべて適用された状態となります。
Lightingシーンの不要なSpherical ReflectionやVolumeをオフにしてみると、MODOで設定したルックがそのままUnreal Engineの中で再現されているのがわかります。