UE4をベースに、誰もが郷愁を覚える田舎の街並みをフォトリアルに描き出したSteamで好評発売中のウォーキングシミュレーター『NOSTALGIC TRAIN』。作者は国内外で豊富な経験をもつ、ナラティブ&背景アーティストの畳部屋氏だ。ここでは、本作で実装されているモダンな技術について本人に解説していただいた。
※本記事は月刊「CGWORLD + digital video」vol. 244(2018年12月号)からの転載となります。
TEXT_畳部屋 / Tatamibeya
EDIT_藤井紀明 / Noriaki Fujii(CGWORLD)、山田桃子 / Momoko Yamada
NOSTALGIC TRAIN 発売日告知トレイラー
© 2018 Tatamibeya All Rights Reserved.
-
畳部屋
国内外のゲーム制作スタジオにて背景アーティストとして10年ほど勤務。現在はヨーロッパにてAAAゲームタイトル開発に携わる。同僚に副業インディー開発者が多く、刺激を受け個人制作を開始。ウォーキングシミュレーター『NOSTALGIC TRAIN』は現在Steamで好評販売中
Twitter:@tatamibeya2017
YouTubeチャンネル:www.youtube.com/channel
/UCYi1pUvnVbFqSLb3wcT-wIQ
使用ソフト
Maya LT 2018
Substance Painter 2017.2
UE4.15
オープンワールドで説得力のある景観を実現
2018年6月、SteamでリリースされたインディーゲームがUE4界隈を中心に大きな注目を集めました。現代より少しだけ昔の日本の田舎を舞台にした小規模なオープンワールドのウォーキングシミュレーターで、タイトルは『NOSTALGIC TRAIN』といいます。どこを切り取っても美しく懐かしい風景描写はUE4をベースに構築されており、そのフォトリアリスティックな表現はとても個人制作によってつくられているとは思えないほどのクオリティです。また、クラウドファンディングによってプロジェクトを起ち上げたこともエポックメイキングでした。
本作を制作したのは、エンバイロンメントアーティストとして海外のゲーム会社でオープンワールドのゲーム開発に従事する畳部屋(Tatamibeya)氏です。幼少期から鉄道模型やジオラマが好きだったそうで、現実の景観を一定空間に落とし込むためのノウハウや、誰もがどこかで見たことがあるように感じさせるテクニックが、3DCGというプラットフォームでもおおいに活かされています。例えば、畳部屋氏のこだわりのひとつに「物の配置」があります。簡単に言えば、何か物を置くときに見た目や位置に意味をもたせたり、関連する別の物も置くことで背景にあるストーリーを想起させ、説得力を生み出すというものです。これらを細かく積み重ねることで、本作では誰もがどこかで自らの過去の記憶を刺激され、等しく郷愁が感じられるようになっています。
3DCGの技術面で特筆すべきなのが「ダイナミックマテリアルレイヤリング」という手法です。個人制作でオープンワールドという難題の解決にあたり、メモリの制約にも耐えうる効率的なテクスチャの運用方法として導入されました。詳しくは、以下より畳部屋氏に解説していただいたので、ぜひ参考にしてください。
(文・編集部)
ダイナミックマテリアルレイヤリング
『The Order: 1886』などでも採用された、テクスチャ解像度の高さとモデル形状に沿った汚しを両立させるマテリアルパイプラインについて解説したいと思います。特にメモリ制約の厳しいオープンワールド作品に有効かと思い、本プロジェクトで採用しました。
■UE4用のシェーダ導入とマテリアルライブラリの準備
STEP 01 UE4にレイヤーシェーダを導入
NOSTALGIC TRAINはUE4を使って制作しましたので、まずSubstance ShareにてAllegorithmicが配布しているUE4用のシェーダを導入します。具体的なインストール方法はダウンロードファイル内のガイドをご参照ください
share.allegorithmic.com/libraries/2125
UE4のコンテンツブラウザにインストールされた状態です
STEP 02 シェーダのカスタマイズ
シェーダはそのままでも良いのですが、いくつか本プロジェクトのためにカスタマイズしました
レイヤーごとの色付けパラメータが乗算処理になっていたのを、もう少し自由度を高めるためオーバーレイに変更。ただ、極端な色を付けるとPBRのアルベドで良しとされている値を超えてしまうので注意が必要ですね
ブレンドマスクの解像度が建築アセットでは十分でないことが予想されたので、ブレンドにノイズテクスチャを挟む処理。コントラストやタイリングなどのパラメータも露出させています。詳細は後述します
STEP 03 UE4内でのマテリアルライブラリの構築
ダイナミックマテリアルレイヤリングでは、ベースとなるテクスチャはプロジェクト全体で共有し、モデルのどの部分にどのテクスチャが現れるかをマスクによりコントロールする、というのが基本のアイデアです。そのためプロジェクトごとに使う基本マテリアルのライブラリをあらかじめ作成することが重要で、例えば木の板壁、磨かれた金属、錆びた金属、数種のコンクリート等はtextures.comやUE4マーケットプレイスから購入したものなどを使い、UE4コンテンツブラウザのフォルダごとに整理しました
次ページ:
MayaとSubstance Painter内でのデータ作成
■MayaとSubstance Painter内でのデータ作成
STEP 01 Maya内でのUVマッピング
今回は蔵のモデルを例にして見ていきたいと思います
このモデルはおおまかに、漆喰壁、板張りの壁、屋根瓦、ほぼ地面に埋まり隠れることになる基礎の部分、窓の金属の格子部分に分かれていますので、それぞれに異なる仮マテリアルをアサインします
UVはマテリアルごとにオーバーラップしないよう0~1の範囲にマッピングし、FBXエクスポートします。各マテリアルが最終的に4つずつのレイヤーをもつことになります
STEP 02 Substance Painter内でのマスク作成
-
新規シーンを作成してFBXをインポートしたら、まず[ビューア設定→Shader]から「pbrmaterial-layering」を選択します
-
するとMaya内で分けたマテリアルごとに、4つのマテリアルレイヤーが現れ、それぞれをブレンドする3つのマスクが作成できるようになったことがTexture SetListで確認できるはずです
STEP 03 ブレンドマスクの作成
マスクの作成例です。Smart masksを駆使して、レイヤーごとにAO、エッジ、広いフェースなら上下のグラデーションなどが上手く出るように作成しています。本来は各々のレイヤーにUE4内と同じテクスチャをアサインすべきでしょうが、結局UE4側で多くのパラメータ調整が必要なこともあり、ある程度慣れた後は画像のような仮の色分けで作業しました
マスクができたら[ファイル→Export Textures]からマスクをTGAで出力します。解像度は512×512やそれ以下など、比較的小さくて十分です
■Unreal Engine 4内での作業
STEP 01 マテリアルインスタンスの作成とメッシュへのアサイン
蔵のFBXをUE4にインポートしたら、スタティックメッシュエディタを開いてみましょう。Maya内で分けたマテリアルが「エレメント」として各々スロットが存在するはずです
エレメント数だけmat_layering_master(前ページですでにインストールしたUE4用シェーダ)のマテリアルインスタンスを作成し、アサインしましょう。画像ではベースのテクスチャは設定されていますがブレンドマスク等が設定されていないので、単調な見た目になっています
STEP 02 ブレンドマスクのインポートとマテリアルの設定
Substance Painterから出力したブレンドマスクをインポートしました。5つのマテリアルごとに3つのブレンドマスクをもっているので計15枚ですが、解像度が低いためサイズは小さいです
マテリアルインスタンスのレイヤーごとにブレンドマスクをアサインし、カラーやタイリング、ブレンドノイズの値などを設定していきます。例えば画像右側の「Mat4」は、漆喰壁の茶色く剥がれた部分のテクスチャやカラー値などの設定を表しています
STEP 03 各種パラメータの調整
ここでは各パラメータがどのように働くか解説し、調整の仕方を見ていきたいと思います
板壁の上の部分、Mat2部分のTile値を意図的に小さく1.0としてみると、そこだけ板が拡大したのがわかります
同じレイヤーのColor値を極端な色にしてみると、このように色が変わります
BlendContrast値を1.0にすることで、Substanceで作ったマスクとここでアサインされているノイズテクスチャが合わさり、2値的なブレンド具合になります。これはステップ01で私がカスタマイズした処理によるものです
多くの可能性を秘めたマテリアルワークフロー
ご覧いただいたように、ダイナミックマテリアルレイヤリングを採用することで可能な限りテクスチャをアセット間で共有し、高解像度の見た目を実現すると同時に、モデルの形状に沿った経年劣化などの表現をメモリの負荷の少ないかたちで実装することができる、良いとこ取りのパイプラインと言えるでしょう。シェーダのさらなるカスタマイズやSubstance Painterとゲームエンジンとのより強い連携などで、効率化・高クオリティ化の可能性はまだまだあると思いますので、ぜひとも取り入れてみてください。