2008年の設立以来、「"Entertainment in Real life" エンターテインメントで日常をより楽しく、より素晴らしく」をミッションに掲げ、新しい発想のモバイルゲームを世に送り出し続けているコロプラ。 昨年6月、同社の取り組みのひとつとして、アーティストの要望を汲んだUnityのUniversal Render Pipeline(URP)への移行・カスタマイズについて紹介した。本記事では、そこから1年を経てさらに進んだURP拡張の取り組みについて、前回に引き続きユニティ・テクノロジーズ・ジャパンの大下岳志氏にモデレーターを務めていただき、同社エンジニアとアーティストの皆さんに語ってもらった。
Recruiting Information
コロプラでは3Dアーティストを募集しています。当社はこれまで常に最新のテクノロジーと独創的なアイデアで、人々が見たことのない"新しい体験"を届けることに挑戦してきました。"新しい体験"を私たちと一緒にゼロから創りだしていただける3Dアーティストの方のご応募をお待ちしております。
URPへの移行から表現力の向上へ
大下岳志氏(以下、大下):本日はよろしくお願いいたします。進行役を務めるUnityの大下です。私はクリエイターアドボケイトという立場で、アーティストに向けた技術解説や新機能の説明などをメインに活動しています。
荒木和也氏(以下、荒木):テクノロジー推進本部 技術研究部 開発効率化グループの荒木です。グラフィックス周り全般を担当するエンジニアです。今回の取り組みでもエンジニアリング全般やシェーダ開発、パイプラインなど広く担当しております。
北村康高氏(以下、北村):テクノロジー推進本部 マネージャーの北村です。プロジェクトに入る場合は主に背景のリードが多いですが、今回の取り組みではアート全般を見る立場となります。
宮窪 直氏(以下、宮窪):テクノロジー推進本部の宮窪です。新卒5年目で、今回の取り組みではアセット制作からシーン制作までを一貫して行いました。
大下:ちょうど1年前に行なったインタビューでは、ビルトインパイプラインからURPに移行したことについてお伺いしました。今回はURPの拡張による表現力への取り組みについてお聞きしていきます。
荒木:今回はHDRPでハイエンドの画づくりを体感し、それをURPへフィードバックすることで表現力を向上させるという試みを行いました。わかりやすいようにエディタのUIも含めて、HDRPでできることをURPでも実現できるよう実装を行なっています。
昨年のCEDEC 2021でもご紹介した通り、モバイル環境でもDeferred Renderingが実現できたことで、アーティスト側も従来より多くのライトを配置しての画づくりができる環境が整ってきました。このため、新たにライティングにフォーカスしたシーン制作に挑戦しようと考えました。
大下:Deferred RenderingはUnity 2022.2でも実装されていますが、CEDEC 2021の時点では独自開発された環境だったのでしょうか。
荒木:その通りです。当時は自作したものを使っていましたが、Unityに同様の機能が入りましたので、今後のURPのアップデートなども考えた結果、今はUnity標準機能の方に切り替えています。Unity標準でも機能的にはほぼ同一でしたし、ライティングモデルの切り替えなども対応していますので、まったく問題ないですね。
大下:これは早速良いお話をお聞きできました。ありがとうございます。「HDRPの表現をURPでも可能にする」ということで、どのような手順で検証を進めたのでしょうか。
北村:はじめに、HDRPの使い方を確認するアーティスト向けの実習として、オフィスの一室を3DCGで再現するという検証を行いました。ライティングに必要なカメラの知識や質感表現、PBR表現ということで物理現象への理解などをチェックしました。
北村:続いて、昨今のハイエンドグラフィックスの表現力を確かめるために、HDRPで屋内背景の作成を行いました。いままでは屋外でディレクショナルライトが1灯というシーンが多かったのですが、今回は屋内かつ天井に穴が空いていてバウンス(反射)の効果がわかりやすいレイアウト、配色でシーンを作成しています。
宮窪:使用したDCCツールとしては、テクスチャ作業はSubstance Painter、Substance Designerを使用し、モデリングは基本的にMaya、一部モデルにはZBrushも使用しています。また植物にはSpeedTreeを用いています。HDRPで画づくりを行うことで、URPで表現力を上げていくための道筋を見つけるという目的がありました。
HDRPの表現をURPで可能にするために追加された機能
大下:HDRPでのシーン制作を通して得た知見をURPに反映するということで、エンジニアリングは荒木さんがお1人で進められたのでしょうか。
荒木:そうですね。まず、HDRPのライティングはルーメンやルクスといった物理的な光の単位を扱うことができますが、URPではできません。オフィスの再現などから考えると、「物理的に正しい数字」を入力できた方が現実世界を参考にした画づくりが容易になるだろうと考えました。実際に売っている照明器具はルーメンやルクスなどの単位で光の強さなどが書かれていますので、それらの数値が参考になります。そこで、物理的な値をコンバートしてURP上で使える機能を追加しました。
大下:HDRPのコードを参考にしながら実装したのでしょうか? 単位の大きさや精度の問題など、実装が難しいところもあるように思いますが。
荒木:UI自体もHDRPのものを踏襲しておりますので、HDRPのコードはかなりの部分を参考にしています。普通このクラスの改造をやるとなるとエンジンのC++のソースコードを触るところからスタートだと思いますが、今回はURPのカスタムでしたのでC#側だけで済み、2週間ほどで対応できました。Exposure機能を追加して露出も制御できるようになっています。
北村:実はこの機能をつくっていることは私たちも知らなくて。急に実装されたので驚きました。
荒木:「現実のライトを参考にすると、シーンをつくりやすい」という声もアーティストから挙がっていましたので、やってみようかなと。HDRPとURPで同一のシーンを作成し、ライティング後の状態に差異がないか確認しながら実装しました。
北村:リアルタイムかつPBR表現の場合はライティングのノウハウが必要になります。例えば、実在する照明器具であれば色温度や強さも数字として記載されていますので、これらを参考にシーンをつくる方が良いという場合も多いです。その数値を直接入力できるようなHDRPに近いUIを望んでいたので、アーティストとしても嬉しかったですね。
大下:「アーティストのために機能を追加してみよう」と思って実行に移すこと自体が素晴らしいですね。ライティングの計算負荷が高くなりそうな印象もありますが、その点はどうでしょうか。
荒木:そこまでではないですね。単位の変換はエディタ側で行なってランタイムでは行わないようになっています。Exposureで平均輝度の計算や露出補正の処理が入りますが、これも最近のモバイル端末向けGPUはスペックも高いので特に気になりません。
北村:これに加えて、Reflection Probeの上限を突破するという実装を行なっています。URPでは、1つのオブジェクトでReflection Probeを最大2つしか参照できませんが、Terrainなどで大きなシーンをつくると別のReflection Probeを参照してしまって見た目が大きく変わることもありました。これも荒木に相談して、すぐ実装してもらいました。
荒木:実際にアーティストが触らないとわからないことも多いので、いつも皆さんからフィードバックをもらいながら開発を続けています。ずっと一緒に開発している感覚ですね。最初にHDRPでシーンをつくろうと言い出したのも私なので、「HDRPと同じことがやりたい」と言われたら、その通りに実装するのが役目だろうと感じています。頻繁にコミュニケーションを取り合っているので問題が出たときも齟齬が発生しにくいですし、実装した瞬間に喜んでもらえるのがわかります。これが私のモチベーションに繋がっていますね。
ゲームでの使用を想定したデモシーン制作
大下:では改めて、URPで制作されたシーンの解説をお願いします。これまでに紹介いただいた機能を実際に使って、より表現したいものに挑戦したというながれでしょうか?
宮窪:今回は「リアルタイムのライティング環境下で、太陽光に頼らずに画づくりを行う」というテーマになっています。従来、屋外の画づくりは「ディレクショナルライトを置き、配置物でのレイアウトだけで画づくりをしていく」という感覚をもっていましたが、今回のようにポイントライトを多数配置する場合は物の配置に合わせて、光源のレイアウトもしっかり考えなければいけません。これがなかなか難しかったですね。
大下:技術デモとしても見どころの多いシーンですが、アートディレクションを強く感じる画づくりになっていますね。
北村:アートの部分にもこだわって制作しています。とはいえ、今回制作したものは最終的にゲームで使うことを想定しています。このため、ライティングもゲームとしての視線誘導や歩きやすさが担保されていなければなりません。画づくりとレベルデザインのライティング、このあたりは順序を考えて制作しています。
宮窪:最終的な着地点がゲームですので、プレイヤーが迷わないようなライティングや、アクションが可能な場所をできるだけ目立たせるなど、機能的な観点からライトの配置を行なっています。この作業が終わった後に、全体的な雰囲気を意識したライトの配置を行いました。
大下:純粋な技術テストではなく、ゲームでの実装を見込んだシーンということですね。この段階で、エンジニアへフィードバックすることはありましたか?
北村:ここまでで大体の機能は揃っていたので、スムーズでしたね。
宮窪:ライトの強さも「一般の電球だったらこのくらい、工事用ならこれくらい」という実際の数値を入力することで作業開始の際の取っかかりをつくることができていましたので、非常に使いやすかったです。
大下:このシーンは、最終的な出力はどの端末を想定していますか? 煙やエフェクト、水面の反射など要素がたくさん盛り込まれているように思います。
荒木:iPhone 12で動いています。30fpsを意識してつくっていますね。
北村:多光源や水面の反射(SSR:スクリーンスペース・リフレクション)など、技術的に入れたい要素をリスト化して、それらを盛り込めるようにシーンを構成しています。
荒木:アーティストからも、やりたい表現があれば気軽に質問してもらって、「これは技術的にはこうなっています、必要なら実装します」というかたちでどんどんアップデートを行なっています。私たち全員がハイエンドゲームを目指している以上、技術的にも必要な要素は多いので、そういったものは都度検証してリスト化しています。
大下:ここからさらに画づくりを追求するとなると、例えばリアルタイムGIなどでしょうか?
荒木:そうですね。例えば、洞窟などの閉所に太陽光が降り注いで、それが周りに広がるという演出は、アート的にも魅力がありますよね。色々な方法を模索していますが、今回はUnityに実装されているEnlightenのリアルタイムGIも試しています。ライティングはイテレーションを回してクオリティを高めていくので、リアルタイム性は重視すべきです。また、ライトプローブの自動配置も検証しました。
北村:一方、ライトリークの問題や、Enlightenの場合プリベイクに時間がかかりすぎる点など課題も残ります。ライトプローブが壁に埋まってキャラクターが真っ暗になるなどのエラーも稀にあるので、このあたりは「何かがおかしくなったら、すぐにエンジニアに相談する」という二人三脚で進めています。
汎用的な岩専用シェーダと「空気感」の表現
大下:続いて、シェーダのカスタムについて教えてください。
荒木:URPのLitシェーダをベースに、マスクテクスチャをHDRP準拠にしています。また、量産を考慮して、アルベド、ノーマル、マスクのテクスチャのみ指定可能にしました。
大下:アルベド、ノーマル、マスクのテクスチャが指定可能とのことですが、ディテールマップはあえて用いていないのでしょうか。
荒木:ディテールマップ自体は実装されていますが、今は使っていません。たくさんのアーティストが触る画面は、なるべくUIもシンプルな方が好ましいです。うっかりミスを防ぐために、「Expert Mode」にチェックを入れないと表示・設定ができないようになっています。
北村:シェーダでいうと、今回のために「岩専用シェーダ」を作成しています。ゲームでは岩のオブジェクトを多用しますし、洞窟のシーンなどでは画面の占有面積が非常に高くなりますが、全てをユニークでつくるのは困難です。他のプロジェクトへの転用を見据えて、汎用的な岩のしくみを用意してみました。
宮窪:数十メートルという巨大な岩の場合、ユニークでつくってしまうとテクスチャ解像度がいくらあっても足りなくなります。全てをユニークでもつのではなく、表面を表現するテクスチャについてはタイリングで表現し、形状はユニークなノーマルでつくるというしくみにしています。
また、マスクテクスチャで表現を補足しています。自然現象として岩が何かにぶつかって欠けてしまった場合や経年劣化でその周辺が変化することがありますが、このようなエッジ付近の変化具合をRチャンネルで調整できます。AOの入り具合はGチャンネルで、2枚目のテクスチャブレンドはBチャンネルで調整しています。
北村:岩のオブジェクトはスケールを変えたり回転させたりしながら配置していくので、テクスチャブレンドも法線方向を参照するようにしています。このため、オブジェクトをどう回転させたとしても、岩の上面の部分だけに植物用テクスチャを適用できるなど、効率的にレイアウトを進めることができるようになっています。
大下:無作為に大量に置きたいもの、画面を大きく専有するものをワンオフでつくるのは大変ですね。実機処理とアーティストの作業量の両面から見て、双方にメリットがある実装になっていると思います。この他に、よくアーティストから相談されるポイントはありますか?
荒木:一番相談されるのは「空気感」です。そのためハイトフォグを実装しました。ただのハイトフォグではなく太陽光のスキャタリングも考慮しています。太陽光の影響を表現することで、画面に指向性が生まれます。この実装は特に夕方の表現と相性が良いですね。今はまだ検証中ですが、最終的に天球やGIも含めた統合型の大気システムを目指しています。
モバイルゲームでハイエンド表現を追求したいメンバーを募集中
大下:エンジニアとアーティストの連携が強く、そのことがしっかり画のクオリティとして表れていると感じました。HDRPが得意とするタイプの画づくりを、URPでも高いレベルで実現していることが非常に興味深いです。
荒木:私たちはモバイルゲームの会社ですから、移植の困難なHDRPではなく慣れ親しんだURPをカスタムしてハイエンドに近づけるというアプローチを取っています。モバイルゲームは気軽に遊べるのが良いところです。遊んでくれる方が多いのはモチベーションになりますし、その上でプレイヤーをグラフィックスの力で驚かせたいんですよ。
北村:モバイルでここまでつくり込める環境を用意してもらえているのは本当に恵まれていると感じています。スペック的にはコンシューマーよりも厳しい中で、現状でもPlayStation 4に近い画づくりができていると思います。本当の意味でアーティストとエンジニアが一緒に開発している感覚があります。一緒につくって、出来上がったものを一緒に見て、それがどんどん良いものになっていく。仕事をしていても充実感がありますし、「モバイルでハイエンドグラフィックスといえばコロプラだよね」と言っていただけるように、これからも努力を続けていきます。
宮窪:多くの方に遊んでいただけるのがモバイルゲームの魅力です。腰を据えてコンシューマーで遊ぶのも好きですが、私自身や周りの人も手軽にできるスマートフォン向けタイトルを遊ぶ人が多かったので。でも、つくるからにはやはりハイエンドなものを目指したいと思っています。
大下:一方において、モバイルゲームはハイスペックからロースペックまで、多くのスマートフォンに対応していく必要があると思います。対応機種の観点では、どのようにお考えですか?
荒木:スマートフォンは性能もまちまちで、PCゲームに似ている面があります。「高いスペックならハイエンドなグラフィックスが楽しめる。低いスペックでもゲーム性を損なわずに快適に遊んでもらえる」というのが一番いいバランスです。全ての機能をONにしたハイエンドなグラフィックスをハイスペック向けに提供しながら、SSRを切った場合はReflection Probeにフォールバックするなど、グラフィックスに関する機能がOFFでも問題ない画をつくるというような方向で考えています。
CGW:ありがとうございました。最後に、一緒に働きたい人材について教えてください。
北村:私たちは今後もモバイルゲームにおけるハイエンドな画づくりを追求していきます。ハイエンドゲームの開発経験者など、質の高い画づくりができる方を求めています。多くの方に遊んでいただけるモバイル環境での挑戦に興味のある方はぜひご連絡ください。
宮窪:AAAタイトルをリファレンスとして研究したり、必要な要素を分解して情報をインプットしたり、とにかくいろいろな情報を集めながら試行錯誤する毎日です。トライ&エラーをしながら手を動かすことが得意な方と一緒に働けると嬉しいです。
荒木:われわれエンジニアとアーティストの関係はごく自然なかたちだと思っていますが、周りの会社にお話しすると驚かれることも多いです。技術は技術、アートはアートではなく、一緒に仕事をするのが楽しいんです。一緒に「作品」をつくり上げていくことに興味がある方に来ていただきたいですね。
Recruiting Information
コロプラでは3Dアーティストを募集しています。当社はこれまで常に最新のテクノロジーと独創的なアイデアで、人々が見たことのない"新しい体験"を届けることに挑戦してきました。"新しい体験"を私たちと一緒にゼロから創りだしていただける3Dアーティストの方のご応募をお待ちしております。
TEXT_神山大輝 / Daiki Kamiyama(NINE GATES STUDIO)
EDIT_小村仁美 / Hitomi Komura(CGWORLD)