🐙

ゲームグラフィックス・CGWORLD メモ2

2022/11/19に公開約9,500字

ゲームグラフィック・CGWORLDを読んだ際のメモ
前⇒メモ1

ForSpoken

CGWORLDの287から抜粋

1.LODの手動と自動 p13
LODの作成は、基本的にはSimpoligonで自動作成であるが、意図した結果にならない場合は手動で調整している
リダクションは、モデルの画面占有率と、各モデルごとのポリゴン削減値をもとにリダクションしている

2.ステージ上に各種情報の設置 p14
ゲームの任意の座標に、テキストで情報を入力でき、作業報告や他のセクションとの連携などを共有でき、フィルター機能でソートできる
また、負荷結果と負荷の解析の情報も見れる。
また、サーバー上で負荷を計測し、エラーが出た場合は報告される仕組みとなっている
また、LODの段階色分けも見れる

3.テクスチャデバッグ機能 p14
ミップマップごとの色分け、解像度の整合性をチェックできる

4.植生プロシージャル p15
地形やアセットを手動で配置した後、植生プロシージャルを行った。
ノイズマスクや地形テクスチャで草花や木々が生える位置を指定するマスクを作成し、自動配置を行った。
その後アーティストが、ペイント入力で木々を追加したり、間引いたりすることでアレンジを加えている。
カーブを描くことで、植生を間引き、道を生成する機能も実装。
また、アーティストが、地形の変更やアセットの移動を行うと、植生も自動的に追従し、不自然な干渉や隙間の発生を防ぐ機能も実装。

5.プロシージャルでないオブジェクトを配置すると、そのステージの状態に応じてプロシージャルで生成したオブジェクトの様子が変わる。
例えば、崖の岩を配置すると、同色の小石が堆積したり、ハイトマップに切り替わったりする。そのほかにも、川のカーブを描いたり、池を配置すると、自動的に周辺の植生が塗れるようになっている。
これらを実現するためには、アーティストが配置したオブジェクトからレイを飛ばすことでコリジョン判定を行い実現している。
p15

6.サーバ内で、広域の植生マスクの管理や、広域の植生プロシージャルを行っている。p15

7.ステージごとに同じアセットの見た目を、ステージごとに設定されたシェーダを参照し、自動で変更している。p15

8.重ね着している衣装は、上を脱いだ状態も3Dスキャナーでスキャニングすることで、リアルな布の重なりを再現。p16

9.キャラクターの髪 p16
主要キャラクターの髪は、短冊上のポリゴンを部分的に透明化する手法ではなく、Maya上でnHairを用いてカーブを作成し、Luminous Hairでヘアーを描画した。
あらかじめグループに分けておき、各グループに対して、髪の本数、うねり具合、毛先のばらつき方などをパラメータで指定している。結果はリアルタイムで反映される。
LOD作成も、ほぼ自動化されており、Maya上で段階と距離をしていするだけで良い。
また、ルックデブは、Arnoldをベースにしていて、LuminousEngine上でほぼそのまま再現できるコンバータを用意している
参考サイト

10.解剖学を意識したセットアップ p19

11.猫の毛 p20
Ornatrix で毛のカーブを作成し、Luminous Farで描画している。基本的なつくりは、9と同じであるが多少の違いがある。ファーの色、太さ、生やす場所などは、テクスチャ(カラー、アンビエントオクルージョン、マスク)などでコントロールしており、カーブはファーの流れや、長さを指定している。
また、カーブに沿った補助ボーンの生成、スキニング、Bonamikの設定を自動化するツールをTAが作成。

12.魔法パルクールの障害物を判定するセンサー p25
基本的には、キャラの周囲と入力方向によってレイキャストを飛ばし障害物を判定している。
障害物を検知すると、レイキャストの飛ばす範囲を広げている。
障害物に接近するほど、レイキャストを飛ばす密度が高くなり、凹凸を詳細に判定して、障害物との衝突を避けている。
ゲーム作成中は、レイキャストを視覚化している。
また、周囲の勾配もチェックし、勾配に対してキャラクターの位置や向きを補正している。

13.GPUパーティクルで、点と点をつなぐ幾何学形状エフェクト p27
AEのPlexus 3のようなエフェクトを作成。
全体を発光させると、視認性は上がるがリアリティが損なわれるため部分的に発光させている。
エフェクトの明るさは、昼夜問わず同じで、ライトの影響を受けて見た目が変わるようになっている。
参考動画の0:44

14.リアルな自然現象を柔軟に表現するための取り組み p27
大きさや燃やす素材などの違う実物を燃やし、炎の色・輝度変化の幅・明滅の頻度を計測し、リファレンスにした。
一枚のループアニメーション用テクスチャにDensityやマスクの情報を格納することで、多彩な炎を、任意のタイミングと速度で出したり消したりできるようにした。
また、半透明の物質が影を落とす実装も追加した。シャドウパス用のシェーダを組み、ディザ抜きをした不透明として描画することで疑似的な影を落としている。

15.巨木エフェクト p27
当初はVATを使用して作成していたが、メモリ容量が多いため、ボーンアニメーションと頂点シェーダーを組み合わせた表現にした。
地面の盛り上がりは視差オクルージョンマッピングで表現

16.Stochastic Tri-Planar
本作にフィールドは起伏に富んでいるため、デカールマテリアルは、Triplanar Mappingを使用している。ただ、一般的なTriplanar Mappingだとサンプリング数が増えてしまうので、Stochastic Tri-Planarという一回で済む手法を採用。
参考動画の3:48、参考サイト

17.Luminous Engineにはボックスで囲んだエリアを丸ごとFBXとして出力できる機能があり、出力したFBXをMaya上でキャラクターアニメーションをつける際などに活用された。
p29

18.ShotGridによる制作進行 p29
一日一回の頻度で、各シーンをPCとPS5で自動撮影し、ShotGridへアップロードするツールを開発。また、ShotGridのデータベースから各シーンの最新情報を取得して、Maya上でLuminous Engineと同じ環境を表現できる機能も実装した。

19.フェイシャルの表現向上 p29
FACSをベースとしてリグに、眼球振動リグ、瞳孔拡縮リグ、唇の粘着リグを追加し、表現力の向上を図った。
フェイシャルキャプチャには、Dynamixyz Performerを使用している。
参考サイト参考サイト

20.現実のライティングをLuminous Engineで表現 p31
屋外でグレーボール、グレーチャート、カラーチャート、レゴブロック、ミラーボールを並べてHDRIとリファレンス写真を撮影し、EV値を計測。そのあと、Arnoldで再現した後、Luminous Engine
参考サイト

21.イベント製作ツールの改良 p31
イベント製作ツールにいくつかの改良を行った。露出、空、雲、影、霧などのフィールドのライティングを行えるようにした。また、特定のキャラクターにライトを追従させたり、最適化されたライトをオフにして、カットシーン用のライト設定したりできる機能を追加。

22.4k HDRに対応するため、Rec.2020を採用 p32

Horizon Forbbiend West

CGWORLDの287から抜粋

1.リアルタイムの流体表現 p67
キャラクターに相互作用するリアルタイムの水の表現

2.雲の表現 p67
ボリューム表現に加え、特定アスペクトを特徴的に反射させ空をドラマチックに演出

3.完全なPBRパイプライン p71
エネルギー保存側に沿った解像度非依存ブルーム、全てのライトが密度モデルに相互作用する統一されたボリュームレンダリングなど完全なPBRパイプラインを新たに構築

4.ライティング p71
ライティングは、EVベースのワークフローで行われる。様々なライティングシナリオと時間遷移に対応できる段数の広い露出システム、ホワイトバランスによる色温度調整、ブラックバランスによる自然なコントラストの付与・除去など。

また、太陽光は、カスケードされたシャドウマップ、保存性ハイトフィールド、ハイトマップシャドウを複合的に使用。
これにより、ゲーム全体の落ち影を様々な精度・解像度を常に描くことができる。

影付きの領域内は指向性のSSAOと、焼き込みスカイビジビリティを使用。これは実質的な3Dボリュメトリックな焼き込みAOで、スカイライト遮蔽するために用いられる。
この技術の組み合わせにより、長距離の大きなAOが得られ、森や建物の下に美しいグラデーションが描かれた。

一日を12段階に分けて間接光をベイクし、そのパスを太陽光の強度や色に合わせて変調することで太陽光と間接光を良好な近似を得ている。
そこからスカイビジリティ、静的な間接光ライト、白熱光シェーダーからの直接・間接光がベイクされ、放射照度ボリュームに使用される。

5.水中の光の表現 p71
ボリュームレンダリングを用いて、水深に基づいて光の減衰を正確にモデル化。そこから、カメラ・デプスと距離の両方での散乱を細かく制御している。

6.ポストプロセス p71
モーションブラー、ラジアルブラー、DOF、AO、フィルムグレイン、ブルーム、ビネット、3DLUT、深度ベースのカラーコレクション、遠景の空・雲用のライトシャフトを適用。

あんさんぶるスターズ!

CGWORLDの289から抜粋

1.羽の衣装 p25
半ドーム状のポリゴンに無数の板ポリを刺すことで表現
滑らかに見えるように法線を挑戦。
参考動画

2.宝石シェーダー p25
宝石がある衣装で宝石シェーダーを作成。まず、ポリゴンに宝石風のカットを入れ、複雑に光が反射するにしている。アイドルが動いて光の入り方を変わるたびに、輝き方が変化する。
参考動画

3.袖のエナメル素材、パンツのレザー素材、靴のスエード素材による質感の違いが出るようにテクスチャで制御している。 
ベースカラーがあって、シャドウカラーには、袖のエナメル素材感を出すために、反射光を入れている。影に入ったときにもべた一色にならず、部分的に反射する。
また、シャドウマスクには袖の複雑な反射を表現するため、中間色も残している。靴にはスエードの複雑な素材感を入れている。
また、リフレクションマップで袖のエナメル素材とパンツのレザー素材の差を出すために、袖のみにリフレクションを入れている。
スペキュラーマップは、袖、パンツ、靴すべてに異なるアプローチをして、質感の差を出している。 p27
参考動画

4.インナーのぎらぎらとしたスパークシェーダー p27
バンプマップでは、法線方向を拡散させ、通常のシャドウマスク・リフレクションマップ・スペキュラマップを使う場合よりもギラギラ感を出るようにしている。
また、スペキュラマップを使うことで、配色の幅も広がるため複雑なラメ感を表現できる。
参考動画

5.胸から上などクロースアップになりやすい部分のテクスチャは高解像度、手のひらのようなべた塗でも違和感のない部分は低解像度にしている。 p27

6.ベースカラー、シャドウマスク、リフレクションマップ、スペキュラマップが1024×1024、シャドウカラーが512×512 p27

7.腕を上げると、肩章の布の根本がグシャと変形する一方で、花は変形しないように、ドリブンキーやコンストレインを使用して調整している。
また、肩布と上腕が干渉しないように上腕外側のポリゴンは削除しつつ、腕を上げたときに脇が自然に見えるように上腕内側のポリゴンを残すといった工夫がある。 p27

8.パールシェーダー p27
少ないポリゴン数でどの角度から見ても球体に見えるパールシェーダを実装
パール一個ごとに四角ポリゴン一個用意して、8×8ピクセルの単色ベタのテクスチャと、ディティールマップを適用することで表現している。
立体でつくると大量のポリゴンを使用するし、カメラが寄るほどシルエットががたがたになるので、ビルボードの応用で表現することにした。

9.エミシッブシェーダ p31
参考動画

10.衣装の半透明シェーダーの実装 p31
透過する内側部分の作成と、表示の優先順位、処理負荷の高さなどが苦労した。
参考動画の2:15、参考動画

11.顔の横にある装飾は、目立つので揺れ骨を増やしていいる p31

12.観客 p33
板ポリに観客テクスチャのUVスクロールを適用することで表現。
また、テクスチャがカメラの方を向くように頂点シェーダーで少し変形させている。

観客の配置は、配置用の内製ツールも開発している。
角度や距離などを指定して扇状に自動配置した状態、ランダムに広げた状態、個別に手動で動かした状態など。

13.テクスチャは、3Dモデルへの適用時には拡大・縮小・反転を多用することでテクスチャ容量を削減している。
参考動画

14.教会内のライティング p35
ライティングはテクスチャでコントロールしており、UVMap1にディフューズマップ、UVMap2にライトマップを適用。テクスチャを使うことで処理負荷の軽減とカードイラストのテイストに近い画づくりをしている。ライティング時にポリゴンの法線を気にする必要がないため作業の効率化にもつながっている。
ライトの当たり方が単純なグラデーションにならないように、PhotoShopの水彩ブラシを使い、ライトマップのエッジ部分を潰すような描きこみも追加している。
参考動画

15.アイドルに近い板ポリを立体的に、周辺部は層状に重ねることで、処理負荷を軽減 p38
参考動画

16.水たまりの表現 p37
リフレクションの範囲を調整するマスクを使用して、全て反射しないように調整
参考動画

17.リップシンク p47
社内のスタッフが楽曲を歌いその表情を撮影した動画を解析ソフトに入力。スタッフの母音の口形を動画でピックアップして解析ソフトに登録した後、各母音の口形をアイドルにリターゲットする。そして、ピックアップした登録データをもとに動画全体の口の動きを解析ソフトがトラッキングし、アイドルにトラッキング結果を反映させている。
これにより、歌詞と口の動きのタイミングが同期し、強弱も付けた状態のリップシンクのアニメーションデータが用意できた。

18.地面にプロジェクションマッピング p53
内製ツールを使用して、地面にプロジェクションマッピングを組み込んでいる
参考動画

19.彩度を調整する機能 p53
ライティングやポストエフェクトによってシーン全体が明るくなる場合は、アイドルの存在感を出すために、衣装・髪の彩度を低くする機能がある。
また、ライティングの変化に合わせて彩度の値をアニメーションさせることができる。

20.入れ替えの設定 p55
指合わせのシーンで、手の大きさが違うキャラ同士を入れ替えても、指の位置が合い、見栄えよくカメラに収まるように工夫されている。

キャラクターの身長に差があっても、カメラ内で不自然な見た目にならないように位置を調整できる。

キャラクターの身長に差があっても、首の傾きが不自然にならないようにしている。

キャラクターの身長に差があっても、手をつなぐのが不自然にならないようにしている。

21.花の開花 p51
花の開花表現では、同じテクスチャを違う彩度で表現

画面全体に適用されるカラーグレーディングではキャラクターにも適されるため、キャラクターのみ個別調整できるシェーダーを開発

通常の背景はライトマップで表現しているが、花の影を動的に表現したかったため、専用のカメラでリアルタイムに投影した影を使っている。

参考動画

22.ローカルライトマップ p51
シーン全体に適用されるライトマップとは別に、一部分に適用できるローカルマップを用いて暖炉の光を表現している。
全体のライトマップには、暖炉の光の影響は描かれておらず、ローカルマップで描きそれらを組み合わせることで暖炉の光を表現している。
通常のライトマップは、AOをベースにしており手書きで調整している。一方で、ローカルマップライトは、全て手書きで、RBGチャンネルに別データを格納でき、周辺をより暗くしたい、明るくしたい場合などに使用する。
ピンポイントに影を落としたい場合、通常のライトマップだと解像度が低すぎて綺麗な影を落とせないので、ローカルマップライトは重宝する。

また、TimeLine上でローカルライトマップに紐づいたマテリアルを変えることで、壁の一部が緑いろになったり、机の周囲だけ明るくしたりといったこともできる。

窓から入る動的な光は、ローカルライトマップで表現している。
参考動画

甲板を照らすライトはローカルライトマップで表現している。
参考動画の1:30

ローカルライトマップによって、ステージのほとんど暗くしつつ金属部分や赤色の発光部分を目立たせている

23.スペースエフェクト p59
スペースエフェクトは、任意の位置に、色、光、フォグなどを乗せる機能で、デプス情報を参照し、3Dモデルへのかかり具合を調整できる。
Unityの描画パイプラインをカスタマイズすることで、一般的な映像製作におけるコンポジットジットに相当する作業ができるようになっている。
参考動画の2:25

24.多面体スクリーン表現 p59
多面体スクリーン表現では、楽曲に合わせて色と模様が移り替わる。
色違いのスクリーンを個別に用意すると処理負荷やデータ量が大きくなってしまうため、ひとつのテクスチャアニメーションに複数のLUTを適用することで軽量化を実現している。
参考動画

25.被写界深度 p59
Maya上で、ロケータを設定し、このロケーターとカメラの距離を参照しながら、Unity上でFocus Rangeなどのパラメータえお設定している。
参考サイト

26.スカイボックス p59
あんすたでは、画角が狭いので夜空にカメラを向けた場合、星がかなり大きく映ってしまう。
ただ、スカイボックス用に高解像度テクスチャを実装するのは負荷がかかるので、夜空のテクスチャとは別に、星だけのテクスチャを用意し、両者を重ねることで解像度を確保している。
板ポリに適用した上で重ねている。
参考動画

27.水のシェーダー p61
屈折は比較的処理負荷が高いため、必要な部分でのみ限定して使用している。
参考動画の0:15

28.ペンライト p67
ペンライトは、頂点シェーダーによってメッシュを動かすことで表現しており、文字を描いたり、それをアニメーションできたり、時間に経過に合わせて色が変化する。
参考動画の1:25

Discussion

ログインするとコメントできます