ユニティ・テクノロジーズ・ジャパンによるオンラインカンファレンス「SYNC 2022」が、10月25日(火)と26日(水)の2日間行われた。Unityの開発事例や最新技術情報などをテーマにした全67セッションを配信し、その分野はゲーム、映像・アニメ、自動車・輸送、建築・建設、ロボティクスなど多岐に渡った。

本記事ではユニティ・テクノロジーズによるセッション「最新のシネマティックデモ『Enemies』のメイキング」と、Cygamesによるセッション「『プリコネ!グランドマスターズ』のグラフィックと負荷低減 ~URP導入とURP環境下での最適化について~」をレポートする。

記事の目次

    イベント概要

    SYNC 2022

    開催日時:2022年10月25日(火)~26日(水)10:00~22:00(予定)
    開催形式:オンライン(事前登録制)
    events.unity3d.jp/sync

    Unity『Enemies』、不気味の谷を感じないデジタルヒューマンのつくり方

    「最新のシネマティックデモ『Enemies』のメイキング」にはユニティ・テクノロジーズのMark Schoennagel/マーク・シェナゲル氏が登壇。Unityデモチームがシネマティックデモ『Enemies』のために開発した最新技術と、UnityのHDレンダーパイプライン(HDRP)上で実現できる写実的なデジタルヒューマン表現を紹介した。

    Enemies – real-time cinematic teaser | Unity

    『Enemies』はレイトレーシング対応、4K解像度/60fpsでリアルタイムレンダリングされた2分のデモ映像である。2020年にショートフィルム『The Heretic』を手がけたチームの最新作であり、「不気味の谷」と呼ばれる違和感を覚えさせない、デジタルヒューマンをつくり上げた。

    セッションではまず、頭部の3Dモデルをどのようにつくったのかを説明した。Unityでデジタルヒューマンを制作するにはデータキャプチャ、データ処理、Unityでの設定という3つのステップが存在する。

    『Enemies』モーションキャプチャの様子

    データキャプチャについては、顔にシワやシミがある複雑な表現に挑戦するためアクターに中年女性を起用。4Dモーションキャプチャの環境でセリフを収録をした。データ処理ではジオメトリをクリンナップし、頭頂部を削り、首と肩は残すことで、高解像度のアニメーション3Dモデルが完成した。最後にUnityでテクスチャや肌の張り、目や歯をつくり込んでいった。

    『Enemies』HDRP Eye Shaderの改良版を使った作業風景。右側にデフォルトにはないパラメータが確認できる

    セッションで最も多く解説に時間が割かれたのが、目の表現についてだ。『Enemies』は登場人物の目が美しくリアルに描画されているが、それはHDRP Eye Shaderの改良版を使用したことが大きい。デフォルトのEye Shaderよりもレンダリングやアニメーションを制御するためのパラメータが豊富で、より細かな設定が可能になったからだ。

    画像内、左から『Enemies』、『The Heretic』、通常版。目の反射の表現がちがうことがわかる

    人間の目は虹彩の上にレンズである角膜が乗っており、レンズが光を曲げることで目の中に取り込むしくみになっている。デフォルトのEye Shaderには光を屈折させる機能がないため、目の反射が少し非現実的に見えるという欠点があった。そこでデモチームは『The Heretic』制作時に屈折機能を追加したが、角度によっては目が均一的に照らされているように感じるため、『Enemies』ではコースティクスを加えた。

    目のジオメトリにある膨らみのおかげで適切な屈折を得ることができる

    改良版で新たに搭載したパラメータも紹介された。Sclera Texture Roll(強膜のテクスチャロール)は強膜=白目を回転する機能で、血管の位置などを変更できる。

    • 強膜のアルベド
    • 強膜のハイトマップ

    角膜も細かな調整が可能だ。Cornea IOR(角膜の屈折率)やCornea IOR iris Ray(虹彩の屈折率)で見え方を変えたり、Cornea SSS(角膜の表面下散乱)で半透明の物体を通過する光を調節して、虹彩をシャープにしたりブラーをかけることができる。

    • Cornea SSS調節前
    • Cornea SSS調節後。こちらの方が淡くなっている

    Limbal Ring Powerの数値を動かすと虹彩の外縁にリングを配置し、白目から黒目へ急に切り替わったようには見えない自然なビジュアルをつくり出せる。外縁の色も変更可能で、赤や黄などの非現実的なカラーにすれば、ファンタジー世界の人物や異能力の発動シーンを手がけるときに役立ちそうだ。

    Limbal Ring Powerを黄色に変更した画像

    そのほかPupil(瞳孔)、Occlusion(目蓋の被さり)などのパラメータも豊富。数値を少し変えるだけで目の印象が大きく変わるようになった。

    • Pupil Scaleで瞳孔のサイズを変更可能
    • これらの設定は全てアニメーション制御できる

    セッションの後半では髪と皮膚の表現に迫った。Hairシステムはデモチームが新たに開発しており、人間だけでなく動物の毛も処理できる機能を搭載。『Enemies』では重力の調整機能を使い、髪が束になって舞い上がって元の形に戻るまでを表現した。

    • Gravity(重力)の調整
    • スライダを変えると髪の毛が浮き上がる

    Stiffness(固さ)を調整して縮毛から直毛に変えたり、Smoothness(滑らかさ)で髪の艶を抑えてヘアコンディショナーを使っていないような髪質にしたり、もちろんカラーも自由に変更できる。

    様々な髪型、髪質、カラーなど、多彩なスタイルに対応可能

    さらに完成バージョンでは使われなかったロングヘアを公開。シミュレーションのプロパティは別の髪型でも自動で継承されるため自然な仕上がりで、コリジョンはデフォルトでONになるため顔や服を貫通することもない。髪型の作成はMayaのインスタンス化ツールであるXGenを使ったが、BlenderHoudiniも利用可能。今後登場するWeta DigitalのWigにも対応する。

    XGenでのスタイリング作業風景。完成後にUnityにインポートし、シェーディングとシミュレーションを行なった

    『Enemies』用に開発したもう1つのツールが、皮膚を表現するSkin Tension Solver。皮膚が伸縮・圧縮する場所をリアルタイムに計算し、それに基づいて複数のテクスチャマップをブレンドできるツールである。

    Skin Tension Solverの作業風景
    シワの法線マップ。左側がシワのない顔、右側がシワのある顔。皮膚の張り具合に応じて自動でブレンドする
    Show Tensionボタンをチェックすると、皮膚の伸びた部分と緩んだ部分が赤と緑で表示される

    顔全体にシワを配置した後に、エフェクト全体のスケールを変更してリアル感を出したり、機能をオフにしたりと細かな調整が可能で、リアルなデジタルヒューマンを表現する上で重要な役割を果たした。このツールはShader Graphによって作成されており、間もなくリリース予定だ。

    『プリコネ!グランドマスターズ』URP導入で実現したワークフローと最適化効果

    「『プリコネ!グランドマスターズ』のグラフィックと負荷低減 ~URP導入とURP環境下での最適化について~」にはCygamesより開発運営支援 シニアゲームエンジニアの大道賢人氏が登壇。ビルドインレンダーパイプライン(BRP)からユニバーサルレンダーパイプライン(URP)への移行によって培ったノウハウや、URP導入で変化したワークフローや最適化効果などを紹介した。

    『プリコネ!グランドマスターズ』ゲーム概要
    「プリコネ!グランドマスターズ」 シノブとアンナの遊び方講座
    priconne-grandmasters.jp
    © Cygames, Inc.

    『プリコネ!グランドマスターズ』(以下『プリグラ』)は2022年4月1日から8日まで期間限定で公開されたiOS/Android向けのストラテジーゲームである。編成したユニットが自動で戦うオートバトラー系のジャンルで、CygamesがURP対応してリリースした初めてのタイトルになった。

    工期は約2年間。最初の1年はBRP環境下で開発を進めてからURP環境に移行したが、URPの導入には不透明な点が数多く存在した。大道氏は最初はURPについて理解することからはじめなければならなかったと打ち明ける。

    事前に計画を練った結果、上記の要素に対応する必要があるとわかった
    移行フロー

    セッションではURPの導入にあたって必要になった作業を、5つのカテゴリに分けて紹介した。1つ目は描画処理にまつわるCPU負荷を軽減できるSRP Batcherへの対応。2つ目はCamera Stackでの描画順の制御。3つ目と4つ目はURP導入により使用できなくなるPost Process表現およびDrop Shadow(落ち影)表現の代替処理の実装。そして5つ目がシーンや機能に応じたRender Featureの実装とRenderer Dateの構築だ。同レポートではワークフローの改善や、最適化効果に貢献したSRP Batcherについて取り上げる。

    SRP Batcherへの対応には、BRP時代に構築したCG言語で記述したシェーダをHLSLに移植する方法と、Shader Graphでシェーダを構築する方法の2種類があった。

    『プリグラ』では主に、キャラクターと背景のシェーダはHLSLに移植し、エフェクト用のシェーダはShader Graphで構築するという手法を採った。

    担当に関しては、BRP時代のシェーダ資産を流用する作業はエンジニアが、Shader Graphによるシェーダ構築はデザイナーが務めた。このような分担制にしたのは、すでに画づくりが固まっていたキャラクター用シェーダをそのまま流用したかったことに加えて、チーム内のグラフィックエンジニア不足に対処することや、画づくりを1から行うエフェクト用シェーダの構築をデザイナー主導で実現したいというねらいがあったからだ。これによってワークフローの分離・分業が実現。スケジュール直前までクオリティアップや最適化をする時間的余裕が生まれた。

    ShaderGraphによってシェーダ開発をエンジニアとデザイナーで分担できるようになった

    またエンジニアにとっては、キャラクターに対して後回しになりがちなエフェクトをデザイナー主導で開発・調整すれば、その後の調整・保守・最適化を含めてタスクから分離できるという利点があった。エンジニア側で行なったパフォーマンス計測の結果を伝えて、デザイナー側がShader Graphの最適化をするという、過去になかったやり取りも生まれたという。

    シェーダのHLSL化については、URP環境下でもBRP時代のシェーダが成城に描画されることを目指した
    そのほかのカテゴリに関しても上記の対応をしながらURP導入を進めていった

    SRPBatcherのCPU負荷に対しての最適化効果も解説した。当初『プリグラ』で背景用シェーダとして使用していたURP用ToonShaderは表現できる幅が広い反面、負荷が非常に高かったため、必要な表現にのみ絞った軽量な背景用シェーダが求められた。

    そこでディフューズマップに可能な限りのディテールを描き込んだ上で、URP Unlit Shaderをベースに疑似ライティング表現としてのMatCapと木や雲の前後関係を正しく描画するためにAlpha Testを実装したシェーダを用意した。

    この背景用シェーダは機能を制限した上でSRP Batcher対応を行なったため、ゲーム内のどの背景を描画する場合も、オブジェクト数にかかわらず3PassCallで描画可能に。URP用Toon Shaderと比較して1/10の処理負荷にまで低減できた。

    キャラクターのDrop Shadow表現用のシェーダもSRP Batcher対応を行なった。本作では平面以外で落ち影を出すときはURP用Projectorを使用し、ユニット全般には処理負荷が軽量なQuad Shadowという独自のしくみを実装している。乗算処理により丸影をユニットの足元に追従させるというシンプルなしくみであるが、平面への落ち影としては申し分ないクオリティだ。これらもSRP Batcher対応によって大きな効果を得ており、とりわけ同時に大量のキャラクターが登場するゲーム終盤に役立った。

    BRP時代のシェーダを流用してURP用に移植、およびSRP Batcher対応をしたキャラクター用シェーダに関しても最適化効果が確認できた
    最終的に当初の目標以上のパフォーマンス改善を実現した

    大道氏はまとめとして、SRP Batcherの最適化効果だけでもURP環境への移行価値はあるものの、それだけで十分なパフォーマンス向上を実現できるわけではないとコメント。前述のDrop Shadow表現など、既存の様々な最適化手法をゲームの仕様に合った方法で実装し、それらを組み合わせることが必要になると語った。

    そして現在BRPで開発・運用中のプロジェクトであってもURPの導入は可能であると伝えて、「BRP環境下で開発・運用しているプロジェクトのURP移行を検討している方の参考になれば幸いです」とメッセージを寄せた。

    TEXT_高橋克則 / Katsunori Takahashi
    EDIT_山田桃子 / Momoko Yamada