2018年8月22日~24日、パシフィコ横浜で開催される“CEDEC 2018”。ここでは、8月23日に行われたセッション“『モンスターハンター:ワールド』アーティストによるシェーダー作成”の模様をリポートする。
『モンスターハンター:ワールド』の開発においては、タイトル内での多様で独特なマテリアルシェーダーの多くが、アーティストによって作られたのだという。本講演では、その具体的な事例を紹介しながら、アーティストがシェーダーを作成することのメリットなどが解説された。講演を行ったのは、カプコンの高木康行氏。
『モンスターハンター:ワールド』の開発においては、タイトル内での多様で独特なマテリアルシェーダーの多くが、アーティストによって作られたのだという。本講演では、その具体的な事例を紹介しながら、アーティストがシェーダーを作成することのメリットなどが解説された。
じつは高木氏は、もともとは10年以上にわたってパッケージCGの制作を担当してきており、ゲームの制作に関わった経験はほとんどなかったという。しかし『MH:W』では従来のシリーズ作品から大幅にジャンプアップしたレベルのCG開発を目指していたため、MentalRayなどでリアルタイムレンダリングCGよりも遙かにハイレベルなプリレンダCGを作っていた経験を買われ、本作の開発チームに抜擢されたのだそうだ。
そんな高木氏が、まずさまざまな表現を要望としてまとめて、描画プログラマー班と相談しながら実装していこうとしたところ、「簡単な仕組みでもけっこうやりとりがたいへんだったり、非常にもどかしかった」(高木氏)という問題に突き当たる。そこで、簡単な仕組みであれば……と、自分で試行錯誤してみたら、「案外できることに気づきました」(高木氏)。というわけで、ほとんどのキャラクター用シェーダーを手がけることになったのだそうだ。
というわけで、ここからは実例の紹介へ。本セッションで扱うシェーダーとは、いわゆるマテリアルシェーダーのことだが、カスタマイズする工程を挟むことで、さまざまな効果を生んでいる。これはフォトショップのレイヤーのようなイメージのもので、背景レイヤーのうえに別のレイヤーを乗算や加算でブレンドしたり、レイヤーマスクを使ったりすることができる。
これを使ってどんなシェーダーが作られたのか。ここから具体例が紹介された。
NormalMapブレンド
アンジャナフの皮の皺などは、縮んだ状態と伸びた状態のNormalMapをブレンドし、間接の動きに合わせて出たり消えたりすることで表現されている。
キャラクターの顔の皺も基本的には同じ仕組みだが、表情皺はもっと複雑なので、皺制御用のジョイントを用意し、MAYA上で確認しつつアニメーションをつけている。
歴戦の個体シェーダー
“歴戦の個体”の独特な質感も、特別なシェーダーで表現されている。リオレウスの場合、シンボリックな赤の色相をマスクにして、そこをメタリックな質感にする処理を行っている。
個体差シェーダー
アプトノスなどの群れをなしているモンスターについては、シェーダーを使って少しだけ個体差を表現している。その手法は、まず3パターンの縞模様を用意。モンスターたちには、ぞれぞれランダムで3つの数字を与えることができる仕組みがあり、この数字を縞模様に乗算でブレンド。ランダムに変わった縞模様のもっとも明るい部分をブレンドし、コントラストを上げることで、少しずつ異なる縞模様ができあがる。
以上のように、フォトショップと同じような感覚で扱うことができる一方で、フォトショップでテクスチャを作っておくやりかたと比べて、リアルタイムで変化するものを表現したり、少ないリソースでバリエーションを生み出したりしたいときには効果的な手法だ、と高木氏。
アニメーションする例
続けて、アニメーションさせる手法も紹介された。本作では、流れているように見えるテクスチャー、FlowMapが多用されている。たとえば川の水面が島にあたって流れが変わるとか、ヴォルガノスの体表面が、溶岩のようにドロドロと流れる表現だ。これは、もとのテクスチャーに対して、UVをずらすテクスチャーを加算することで実現している。ただしそのままだと、曲がってもとに戻るアニメーションがループするだけになってしまうが、ずらすタイミングを変えた2枚を用意して、クロスフェードさせることで、うまくごまかすことができる。
このやりかたは、決め打ちで流れを指定しているため、流れを変化させたいとなると難しい。たとえばヴォルガノスは激しく動き回るが、体表面の流れがつねに下方向に向くようにするためには、別のやりかたが必要となる。この場合は、ふたつの向きの一致度を計算するDotを利用する。
さらに、プログラマーからはなかなか出てこないであろう、アーティストならではの発想から作られたシェーダーの例もいくつか紹介された。
Furシェーダー
本作において課題だった、アイルーの柔らかな短毛を表現するためのシェーダー。一般的にもふもふの毛を表現するには、ポリゴンを何枚も重ねて表現する“シェル法”や、短冊型のポリゴンを何枚も生やして表現する“短冊ポリゴン”といった手法が採られるが、これらはいずれも描画負荷が高いうえに、調整の手間も大きい。
そこで出てきたのが、モーションブラーを活用するアイデアだ。肌にノイズを乗せて放射状にぼかしを入れると、毛のように見える。これを利用して、ぼかす方向を指定するFur用Velocityを用意し、ブラーをかけて毛を表現するわけだ。
これは“毛っぽさ”を絵的に考えて作り出したもので、こうしたアーティストならではの“力業”な発想から生まれたシェーダーもいろいろあるのだそうだ。
油膜シェーダー
“油膜シェーダー”は、いわゆる“玉虫色”を作り出すもの。Sinという波を作れる命令を利用し、波長をRGBでずらすことでシャボン玉のような見た目を再現している。厳密には物理的には完全に再現してるわけではないが、見た目は十分に実用に足る。実際、本作の開発にあたっては、Furシェーダーを遥かに上回るほど利用されたそうだ。
お香シェーダー
オトモが回復ミツムシを呼ぶときに足下に置くお香は、燃え進んで消えていく。この断面は、中にぎっしりポリゴンを敷き詰めて、立体的なグラデーションで塗りつぶし、Alpha Testで消す、という方法で表現されている。これは、断面をシェーダーだけで表現しようとすると、わりにあわない手間がかかるため、モデルの作りかたでカバーした例だ。
疑似透過シェーダー
中が透けて見えるマテリアルを、真正直に作ると描画負荷が高くなってしまう。内部組織があるように半透明に見えるが高速に描画できるようにするための工夫が“疑似透過シェーダー”。これは、中身をつねにカメラ側に寄せることで実現している。
以上のように、アーティストならではの観察力と直感力を活かしてシェーダーを作成できる人材が増えれば、まじめに実装すると難解で高コストになりがちなものが、扱いやすく、低コストに実現できる、と高木氏。現状では“シェーダーアーティスト”の認知度は低く、敷居が高いと思われているが、さまざまなメリットがあるのでぜひチャレンジしてほしい、と聴講者に呼びかけた。