
パシフィコ横浜ノースの現地とオンラインの両面で8月23日から8月25日の3日間開催されたゲーム開発者向けカンファレンスCEDEC2023。『ポケットモンスター スカーレット・バイオレット』(以下、ポケモンSV)のグラフィックを解説する「【ポケットモンスター スカーレット・バイオレット】パルデア地方を描き出す――見た目の仕組みを徹底解説!」のセッションレポートをお届けします。
このセッションには、ゲームフリークのCGテクロノジーラブディレクターである前澤圭一氏が登壇。セッションの内容としては、本作のルックコンセプトを筆頭にグラフィックや、マップ制作で用いた技術を解説するものです。

◆『ポケモンSV』のルックコンセプトとライティング
『ポケモンSV』は、シリーズ初のオープンワールドを採用作品で2022年11月に発売したタイトルです。本作のルックコンセプトとしては、「背景の質感や形状など前作よりもリアルに寄せるものの、ポケモンやキャラクターをリアルよりにしないことで背景とキャラの落とし所を探る」というものでした。ルックコンセプトと共に映されたスライドの画像では、確かに人物がアニメ的であるものの背景はそれなりにリアルさを感じさせるようなタッチで描かれています。

『ポケモンSV』で用いるマテリアルは、「基本リアルでよい」という方針ために、社内外での納品仕様のPBS(物理ベースシェーディング)をそのまま使用。また、テクスチャに格納される4枚のG-Buffer(テクスチャに様々な処理を格納すること、遅延シェーディングの一種)は、G-Buffer2のFlags & Mesh IDは、G-Bufferに格納しきれなかったライティング処理を分岐させるために入れています。

そのライティングですが、使用可能なライトはディレクショナルライトとポイントライト、スポットライト、そしてイメージベースドライティング(IBL)のDiffuseProbeとSupecularProbeの5種類です。『アルセウス』では、IrradianceVolumeを採用していましたが、『ポケモンSV』では不採用でした。
ポイントライトは町の灯りなどで利用し、時間変化が絡むIBLはDiffuseProbeの明るさの明暗情報のみをグレースケールで作成して、朝/昼/夜に適応する色を載せたものです。また、ライティングのBRDF(双方向反射率分布関数)は、鏡面反射をGGXに、拡散反射はLambertに、そして半透明はフォワードレンダリングを使っています。


ポケモンの表現には、サブサーフェイススキャッタリング(SSS)を採用。ポケモンの肌表現を中心に使用しており、影部分に散乱色がにじみ出る効果を適応することや、ジェル表現にも使用しています。


目は、目の末端にジョイントライトをベースにハイライトを載せているため、カメラの角度によってハイライトが動く様になっています(様々な環境下でもハイライトが光るようになっている)。


テラスタルは、本体となるポケモンのモデルをそのままに、カラーマップとノーマルマップ、そしてノイズテクスチャなどのマテリアルを差し替えて表現しています。またテラスタルの表現を適応しない部分のメッシュを指定することも可能です。テラスタルジュエルは、宝石の様な表現をするために半透明な表と、不透明な裏面のメッシュを合わせることで表現しており、これをポケモンに載せることで完成です。


他にも『ポケモンSV』では、ポケモンと一緒に冒険していると身体の表面に汚れが蓄積します。身体の隅々が黒く薄汚れた雰囲気になる「ダメージ汚れ」と、身体の端々に白く雪が残る「雪汚れ」の2種類が存在し、汚れに使うテクスチャを3Dモデルと重ねることで表現。また、主人公の足下にも汚れ表現を適応しています。


◆主人公のキャラメイク表現
『ポケモンSV』のキャラメイクでは、メッシュを直接変形させる顔カスタム用のラティスを使用しており、それには目や口に複数のパターンが用意。しかし、そのまま用意したパターンを使用しているのでは無く、パターンをブレンドしてプリセットを定義しています。

まゆげとまつげの基本パターンはテクスチャで用意しており、各パターンに対してアルファチャンネルの濃さを落としたりすることで3パターンの眉を表現。表情については、眉毛や両目、口、そして全体への加算の変形を適応することで表しています。

ポケモンにおける目のハイライトはジョイントライトをベースに表していましたが、人間では目のハイライトを表現するために、ハイライト用のメッシュとベースのメッシュそれぞれにジョイントを持ってそれぞれ制御しています。人物描写については、開発の過程で形状やシェードやスペキュラ、色合いの調整することで表情豊かにブラッシュアップされています。


◆マップや環境の制作―地形や雲、海や川を解説
このパートは、マップ制作のためのワークフロー解説が中心でした。『ポケモンSV』において地形はMayaでモデリングしたもをベースにHoudiniでディテールを追加。加えて、大地の浸食モデルだけでなく、プロシージャルモデリングで崖の形状を作ることや、質感のSplatMastと草木を生やす為のDetailMaskのマテリアルブレンド用マスクを出力しているところに活用されています。


海や川などについては、海面の上下をGerstner Waveベースで頂点アニメーションによって表現。水深に応じた透明度の変化やスクリーンスペースで屈折表現をするだけでなく、ノーマルマップとフローマップも活用しています。特に波打ち際の白波表現は、専用モデルを追加することで描いています。


空は、水平線近くのグラデーション表現をしたいことからPrecomputed Atmospheric Scatteringなどの先行技術などを使って処理しています。雲は、Houdiniでボリューム雲をレンダリングしたのちに、2枚のテクスチャにベイクし、ビルボードに貼り付けることで表現しています。


ちなみに建物内はライトマップで表現することに加え、昼夜それぞれのベースカラーに乗算するデータを持っています。最後は、ルックコンセプトを筆頭にマテリアルやライティングなど、今回の内容を振り返りセッションを終了しました。


以上が『ポケモンSV』のグラフィックが語れたセッションでした。セッションにおいて解説されたポケモンとキャラクターのグラフィック処理は、昨今のゲームグラフィックとして標準的な技術が用いられているために、ポケモンや人物を含めたキャラクター単体を見てみれば、それほど他のゲームとクオリティに差が無いように思えました。
しかし、マップに関しては、ユーザーの一部でマップ描写がチープに感じられると話題にされたこともあり、マップの制作方法を見る限り解像度や描写距離、そしてLODの品質などグラフィックの処理そのものよりも、隅々までディテールを作り込めなかったためであるように思えます。オープンワールドゲームは、広大なマップを隙無く開発するために多くのリソースが必要があることから、キャラクターや街に比べて十分な力をマップに注ぎきれなかったために、どことなくチープな見た目になってしまったようにも感じます。