91.3K Views
April 02, 19
スライド概要
※本セッションには多くの動画が含まれていたり、ノートに備考が記載されている可能性があります。実際の講演で行われたスライドが下記からダウンロード可能ですので、是非そちらをご覧頂けますと幸いです。
講演パワーポイントリンク: https://epicgames.box.com/s/ke00h4yxe38fs04stsm2cfrbpb00969m
内容
海、空、雲、地形、植物、雪、異世界、破砕、ライティング、シャドウ、ポスプロ、各レンダリングパスなど、特殊な表現の実装や、描画周りでの対応、拡張に関してお話させて頂きます。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
UE4における大規模背景制作事例 (描画・特殊表現編) 株式会社スクウェア・エニックス 斎藤 修 吉岡 国登 須山 稔明 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
スライドについて ・PowerPointファイルをEpic様より公開いただいています https://epicgames.box.com/s/ke00h4yxe38fs04stsm2cfrbpb00969m ・スライド内の動画はPowerPointファイルのDLにてご確認ください ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
略称について ・『Unreal Engine 4』をスライド内では『UE4』と記載しています ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 破砕 雲 地形 植物 雪 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
自己紹介/初めに 斎藤 修 テクニカルアーティスト • 背景の作り方とか考えたりサポートしたり • 処理負荷を見たり対応したり してます 吉岡 国登 グラフィクスプログラマ • グラフィックス全般のサポート • グラフィックス担当での参加は初めて 須山 稔明 グラフィクスプログラマ • 背景のグラフィック案件のサポート • 描画関連の不具合調査・対応 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
自己紹介/初めに • 初めに 今回の事例では UE4.17.2 を使用しています。 その為最新verでは変更や修正が行われている可能性があります。 また、様々なエンジン改造 を行っている為、 状況が再現できない可能性があります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
自己紹介/初めに • 次に 今回、なるべく多くの事例を共有したいと思っております。 その結果、数多くの方が関わられた事もあり、 特殊事例の羅列になってしまいました。 詳細に関してはまた、Q&Aや個別にご質問頂けましたら幸いです。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
自己紹介/初めに • 最後に 今回の背景制作事例に関しては数多くの方の、 様々な助力によって達成されました。 以下、発表事例に関して快くご協力頂けました皆様に深く謝意を表します。 後藤 保 中道 雅史 中 健吾 松岡 英樹 吉田 武史 松本 章 波能 智人 望月 紀嗣 木村 洋一 中村 大作 森田 英明 河崎 幸治(敬称略) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 必要な要件 ・実写のごとくリアルに ・泳げる ・潜れる ・見渡せる ・海戦できる ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 使用した手法 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 使用した手法 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT Fast Fourier Transform いっぱい正弦波足したら 複雑な形状が作れます。 それを高速に計算します。 という感じのやつです。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT 処理としては 右図の順に なっています。 初期スペクトル X変位スペクトル Dx Z変位スペクトル Dz Y変位スペクトル Dy ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ディスプレイスメント ノーマル VFX STUDY GROUP
海 FFT 512*512の 初期スペクトル 分布テクスチャから 初期スペクトル X変位スペクトル Dx Z変位スペクトル Dz Y変位スペクトル Dy ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ディスプレイスメント ノーマル VFX STUDY GROUP
海 FFT XYZ各方向ごとに 経過時間後の 変異スペクトルを生成 初期スペクトル X変位スペクトル Dx Z変位スペクトル Dz Y変位スペクトル Dy ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ディスプレイスメント ノーマル VFX STUDY GROUP
海 FFT 各スペクトルに IFFTを実行し、 変位量を算出 初期スペクトル X変位スペクトル Dx Z変位スペクトル Dz Y変位スペクトル Dy ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ディスプレイスメント ノーマル VFX STUDY GROUP
海 FFT XYZ変位量を合成して、 ディスプレイスメント を生成 初期スペクトル X変位スペクトル Dx Z変位スペクトル Dz Y変位スペクトル Dy ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ディスプレイスメント ノーマル VFX STUDY GROUP
海 FFT ディスプレイスメント から勾配を求めて ノーマルを生成 初期スペクトル X変位スペクトル Dx Z変位スペクトル Dz Y変位スペクトル Dy ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ディスプレイスメント ノーマル VFX STUDY GROUP
海 FFT この ディスプレイスメント とノーマルを マテリアル側から 呼んで使用しています。 初期スペクトル X変位スペクトル Dx Z変位スペクトル Dz Y変位スペクトル Dy ディスプレイスメント ノーマル 解像度は512*512 です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT 結果 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT これで、海の見た目はできました。 が、FFTはGPUで実行されており、 これをCPU、ゲーム側で使用できるようにする必要があります。 (でないとキャラが泳いだりできません。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT RenderingThread CPUへ読み戻す処理としては 右図の順になっています。 (RenderingThreadは 海シミュレーションの後に 引き続き処理) Ocean Simulation Async Transfer Completed Readback Request AsyncTask GameThread 読み戻し処理は非同期で 行っています。 Update Simulation ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT RenderingThread 呼び戻しリクエスト処理を 行うために、 海シミュレーション結果の Displacement/Normalを 別テクスチャへコピー 描画完了の確認用に OcclusionQueryを生成し コマンドリストへ積む Ocean Simulation Async Transfer Completed Readback Request AsyncTask GameThread Update Simulation ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT Queryが完了した (=描画が完了した) 読み戻しリクエストがあれば コピーしたテクスチャを マッピングしてアドレスを保持 RenderingThread Ocean Simulation Async Transfer Completed Readback Request AsyncTask また、同時にGameThreadへ 非同期タスクとして CPU側で参照するアドレスの 更新を行わせる GameThread Update Simulation ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT RenderingThread Ocean Simulation シミュレーション結果の アドレスを反映し、 レイキャストなどで適宜参照 Async Transfer Completed Readback Request AsyncTask GameThread Update Simulation ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT これでキャラが泳げる海ができました。 ですが、広大に見渡せる範囲全てに 高密度ポリゴンを 置くわけにはいきません。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 FFT これでキャラが泳げる海ができました。 ですが、広大に見渡せる範囲全てに 高密度ポリゴンを 置くわけにはいきません。 →カメラに映る範囲だけ海を作ろう ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 使用した手法 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 プロジェクショングリッド • プロジェクショングリッドとは? カメラの錐台を利用して 見える範囲のみの グリッドマップを作成して います。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 プロジェクショングリッド 投影するグリッドは 8枚のメッシュに別れており、 距離に応じてリダクションしています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 プロジェクショングリッド プロジェクショングリッドは 距離によってマテリアルを 切り替えられるようになっており、 近景は半透明、中景はマスク、 遠景は不透明といった使い分けが 可能です。 また、それらのパラメーターは 専用のマテリアルファンクションから アクセスできるようになっており、 TAが適宜運用しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 プロジェクショングリッド これで高密度で高品質な 海が達成できました ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 プロジェクショングリッド これで高密度で高品質な 海が達成できました →でも海岸で不自然にめり込む ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 使用した手法 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 ハイトマップ打ち寄せ波 • ハイトマップ打ち寄せ波とは? 地形のハイトマップを利用して、 海岸に向かってくる打ち寄せ波を 作りました。 また、同時に地形より高く 海面が盛り上がらないよう 抑えています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 ハイトマップ打ち寄せ波 • ハイトマップ打ち寄せ波とは? また、ノイズを加えたり ワールドポジションオフセットや ノーマルを調整して自然な波に 見えるようにしています。 ハイトマップの解像度を保つため 島ごとにボリューム判定を取って 読み替えも行っています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 ハイトマップ打ち寄せ波 また、波の形状は二次元の変位量を テクスチャにベイクして それを参照したりもしています。 これらはカットシーンなどで 使用しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 使用した手法 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 屈折拡張 UE4のリフラクションは 背景に仕込むと エフェクトとの相性が よろしくありません。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 屈折拡張 そこで、 背景用のリフラクション処理を 追加して頂きました。 現フレームの ベースパス時のシーンカラーを コピーしておいて、 それを歪ませて参照する 仕組みで実装しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 また、キャラが海に入る為 半透明の海にするのは 必須でしたが、 品質的にSSRが求められました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 しかしUE4の半透明SSRは 幾つか問題があり ・FXAAでは使えない(UDNで解決) ・1フレーム前のバッファを使う のでカメラ切替時などで遅延する ・深度判定が甘く手前の物が映る ・SurfaceForwardShadingで 使えない https://udn.unrealengine.com/questions/423378/%E5%8D%8A%E9%80%8F%E6%98%8Essr%E3%81%8Bfxaa%E3%81%AE%E 5%A0%B4%E5%90%88%E9%BB%92%E3%81%8F%E6%BD%B0%E3%82%8C%E3%81%BE%E3%81%99.html ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 そこで半透明SSR処理を別途追加して頂きました。 屈折と同じく、現フレームのベースパス時のシーンカラーを使用します。 反射をカスタムノードで取得できるので マテリアルごとに反射強度や精度などが調整できて便利でした。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 また、カスタムノードが複雑なコードを書くのに不便だったので、 ushをインクルードできるような拡張もされました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 また、 よくある手法かとは思うのですが アーティストが絵作りする際に 反射具合を調整したかったので、 キューブマップを参照する 疑似反射も要所で使用しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 反射に関しては EVによって見た目が変化するのを避けたかったので、 エミッシブへのEVカウンターも実装しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 エミッシブEVカウンターはマテリアルプロパティで 設定できるように拡張して頂きました。 (マテリアルのプロパティマトリクスは4.8より使用できないのですが、 https://udn.unrealengine.com/questions/258128/view.html 利便性の為にバグを許容して使用可能にして頂いています。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 また、反射は基本的には SSRを使用しているのですが カットシーンなどで局所的に クォリティアップする必要が ありました。 そこではシーンキャプチャを 使用して反射を実装しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 ただ、シーンキャプチャの負荷は 非常に高かったので、 ・解像度制限 ・レンダリングパス制限 ・レンダリング対象制限 は適宜行いました。 また、レンダリング対象制限は 制御しやすいようにアクタ側に レンダリング可否のプロパティを 拡張して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
海 反射拡張 PlanarReflectionは使いませんでした。 エンジン拡張によるものか 意図せぬ発光バグが起きたり、 シェーダーメモリの増加を 避けたかった為です。 水面以下クリップに関しては 個別にマテリアル側にマスク処理を 追加して対応しました。 http://api.unrealengine.com/JPN/Engine/Rendering/LightingAndShadows/PlanarReflections/ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 必要な要件 ・雲が動いて欲しい ・時間変化して欲しい ・世界観に合わせて ・リアルに ・トゥーン調に ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 必要な要件 ・雲が動いて欲しい ・時間変化して欲しい ・世界観に合わせて ・リアルに ・トゥーン調に 色々な要件があった為 様々な手法を組み合わせました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 使用した手法 ・2Dノイズ積層 ・フローマップ ・IBL修正 ・レンダリング ・レイマーチ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 使用した手法 ・2Dノイズ積層 ・フローマップ ・IBL修正 ・レンダリング ・レイマーチ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 2Dノイズ積層 時間変化に対応するため、 ノイズテクスチャを積層し、 ズラしたり足したり掛けたりして プロシージャルな2D雲を 作成しました。 ノイズテクスチャを6回×3層 サンプリングしている 高価な空になります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 2Dノイズ積層 3層の雲は、 メッシュ側で雲の高度を考慮したUVを それぞれ作成し、それを参照しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 フローマップ また、 風の方向に合わせて 雲が自然に流れるように フローマップも使用しました。 2Dノイズ積層と組み合わせて タイムラプス表現などにも 利用しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 IBL修正 また、 各ロケーション、 各季節、各時間帯で 多くの全天球画像も撮影しました。 元々IBL用に撮影していましたが、 品質の良いものは少し手直しして 天球画像にも使用しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レンダリング TerragenやHoudiniを利用しての レンダリングも行いました。 Terragenでは主に 天球用スフィリカル画像を、 Houdiniでは主に雲ビルボードや レイマーチ用3Dテクスチャ作成などを 行いました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レンダリング また、 各HDR画像は意図せぬエラーを防ぐ為に ピーク輝度を4.0に抑えたりしています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 使用した手法 ・2Dノイズ積層 ・フローマップ ・IBL修正 ・レンダリング ・レイマーチ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レイマーチ ボリュメトリックな 雲の要望もあったので レイマーチ雲も実装しています。 ニーズとしては「入れる雲」 でした。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レイマーチ 運用に関しては、 雲一個の塊につき、 一個のBPを配置して 制御しました。 描画パスは UE4の半透明を 拡張しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レイマーチ レイマーチ雲は処理負荷対応により 1/4縮小バッファでレンダリングしています。 また、別バッファにそれぞれの雲IDも レンダリングしています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レイマーチ 描画時は、 縮小バッファとIDバッファを使用して 順次アップスケール合成していきます。 個別のIDバッファを使用するのは、 雲と雲の間に 別の半透明(エフェクトなど)が 入るのを考慮する為です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レイマーチ また、雲にはキャラクターが入れる必要がある為、 裏面レンダリングできるようにエンジン拡張も行いました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
空 雲 レイマーチ アーティストからの要望で、 3Dテクスチャを利用して 任意形状にしたり、 螺旋挙動を拡張したりもして 頂きました。 レイマーチは基本的には 局所的に使用されていますが、 処理負荷はワーストで2msほどでした。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 地形は、基本的には メッシュで作成しています。 モジュールアセットで組み合わせたり、 特殊な地形はワンオフで作成したりも しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 ただ自然地形では、局所的に ランドスケープも使用しています。 理由としては ・コリジョン作成コスト ・フィジカルマテリアル設定コスト の緩和の為です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 特にフィジカルマテリアルは多数の設定を 適切に設定する必要がある為、 ランドスケープレイヤーで 設定できるのは重宝しました ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 例えば、頂点カラーの塗り分けなどは フィジカルマテリアルが対応できない事が多く、 その場合は手作業でオーバーライドボリューム(拡張)を 設置する事になる為、ランドスケープの利便性に頼りました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 ハイトマップ作成に関しては houdiniのハイトフィールドも使用しました。 大体の地形をメッシュで作成後、 ディテールの追加など行いました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 また、ランドスケープのコンポーネントは キャラの行かないところは とにかく削りました。 地形の位置や粒度によっては 別レベルに分けて 小分けのランドスケープを作成して 運用しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 また、タイリング感緩和の為にシェーダーでも色々検証しました。 以下はTextureBombという、 沢山テクスチャサンプリングして混ぜ合わせるという手法です。 (UE4のマテリアル関数にもあります。運用時はサンプリング数を可変できるように改造しました。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 WangTileというランダムサンプリング手法も検証しました。 ↓こういうテクスチャを作成し、 ランダム配置することでタイリング感を緩和します。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 これらの特殊なテクスチャは SubstanceDesignerなどで適宜作成を自動化しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 地形へのぶっさし緩和には、 ハイトマップを利用しての馴染ませを行ったりしました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 また局所的には ピクセルデプスを利用しての 馴染ませなども行いました。 (ディスタンスフィールドは メモリや処理負荷の観点から 使用していません。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 視差も使用しています。 パララックスオクルージョンは重いのと積層感で問題が出たりしたので、 コーンステップマップという事前計算テクスチャ一つ追加した レリーフマッピングを実装して頂きました。(POMも使ってます。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
地形 コーンステップマップは、 その位置から一番近い交点の距離情報がベイクされています。 それを利用することで、精密に、高速に レリーフマッピングを行う事ができる、という手法です。 https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch18.html ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 植物は基本的にSSSやTwoSidedFoliageを使用し両面化、 頂点オフセットを使用して風揺れや草倒れなど実装しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 草倒れは専用のBPを配置することで、 マテリアルパラメーターコレクションに キャラ位置や範囲などが渡されます。 それをマテリアルの方で使用することで 実装されています。 同時に判定できるキャラ数は6体までです。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 風揺れはノイズベース、 揺れる際は頂点カラーかUVに 揺れ度合いのグラデーションを 仕込んでおいて、 自然に揺れるように調整しています。 ちょっとしたTipsとして VertexInterpolatorを使用すれば、 インスタンス化した場合も それぞれのインスタンスの ピボット位置が取得できます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 また、植物は影モデルも使用してます。 大体1/5くらいのポリ数で影モデルは作成しています。 ほとんど影になっている箇所では一枚板の影モデルも使用しています。 ブッシュなどは簡易的な影モデルに置き換えたりしています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 スピードツリーも使用しています。 風揺れもスピードツリーの機能を そのまま使用しています。 (UV8チャンネル使用されて しまうのですが、 製作コストを鑑みて 使用することにしました。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 スピードツリーを使用しない木の 風揺れに関しては、 houdiniで親子関係のあるピボットを 自動で仕込めるHDAを作成して、 MAYAやhoudiniで運用しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 フォリッジも使用しています。ですが、 なるべく使用しないようにもしています。 (微調整がしづらい、データの可視化がしづらい、 バグが多い、などの理由です。) また、 カリングが塊で処理されてしまうので、 距離に応じて地面にうめて(頂点オフセット) 自然に遷移させたりしています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 最終LODにはインポスターも使用しています。 作成はUE4のRenderToTexture_LevelBPを使用しています。 1回転軸で、8*8パターン、1024*1024のBaseColor、 トリプルマスク、ノーマルの3枚で運用しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
植物 また、インポスターに関しては ライトマップを 安定して焼くのが難しかった為、 LOD0にベイク用の板を仕込んで、 それを参照させたりしました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 必要な要件 ・キャラクターが 歩くと凹む ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 雪凹みは 凹ませたいエリアをボックスで囲むと、 そのエリアがSceneCapture2Dによって 真下から深度レンダリングされます。 その後、得た深度を加工して 視差マッピング用のテクスチャを 作って実装しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 処理の流れとしては、 1.地形の深度レンダリング 2.キャラクターの深度レンダリング 3.別バッファに 視差用のテクスチャを作成 となっています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 諸々の処理はBPで作成されており、 BPには地形用とキャラ用それぞれの SceneCapture2Dが2つ、 テクスチャ作成&加工は DrawMaterialToRenderTargetで 組まれています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 視差マテリアルはUE4のParallaxOcclusionMappingを使用しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 発生した問題 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 ・1F遅れ問題 BPでのテクスチャ加工処理が、 シーンキャプチャのレンダリングより 先に行われてしまう為、1F遅れてしまう。 ↓ 回避する為に、キャプチャ直後 UpdateDeferredCaptures (FSceneInterface* Scene)中の UpdateSceneCaptureContentsの 処理の後でBPのイベントへ ブロードキャストしています。 BP側ではそのイベントをバインドして テクスチャ加工を行っています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 ・広大な地形への対応 ・雪バッファクリア対応 広大な地形ではキャプチャ位置を 一定以上キャラ位置が動いた場合は 常にプレイヤーに追随するように バッファクリアしています。 更新しています。 (カットシーンなどでキャラの立ち位置が レンダリング範囲の端っこ部分は 瞬時に変わることがある為。) フェードして徐々に消えていきます。 強制的にクリアするBPノードなども 使用しました。 ・高速移動の補間 滑るような移動で速度が早いと 点々と不自然な凹みになってしまうので 特定モーションのみ深度描画用の リボンパーティクルを出しています。 また、雪凹みの範囲は状況に応じて適宜調整しており、 大体50m~100mの範囲、 テクスチャの解像度は512~768くらいです。 強い制約として凹むエリアでは地形のオーバーハング は禁止されていました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 また、雪のシステムを流用して 砂浜の引き波濡れも実装してます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
雪 雪のシェーダーには、スノーフレークの要望もあった為、 グリッドベースのスノーフレークを実装しています。 参考URL:http://advances.realtimerendering.com/s2015/ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 必要な要件 ・異世界に 繋がっているポータル ・中に入れる ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 使用した手法 ・空間キューブマップ ・平面レイマスク ・減法メッシュ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 使用した手法 ・空間キューブマップ ・平面レイマスク ・減法メッシュ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 空間キューブマップ 平面だとめり込んでしまうので、 空間メッシュにキューブマップを 貼りました。 また、シェーダー側で空間の傾きや、 擬似的なパース調整なども 対応しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 空間キューブマップ 平面だとめり込んでしまうので、 空間メッシュにキューブマップを 貼りました。 また、シェーダー側で空間の傾きや、 擬似的なパース調整なども 対応しています。 →しかしこのままだと、 横から見るとはみ出したやつが見えてしまう。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 平面レイマスク そこで、平面へのレイ判定を行い、 ポータル範囲からはみ出したら マスクするようにしました。 Ray : P = P0+tV Plane: P・N+d = 0 (P0+tV)・N+d = 0 t = -(P0・N+d)/(V・N) P = P0+tV P N V P0 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 平面レイマスク そこで、平面へのレイ判定を行い、 ポータル範囲からはみ出したら マスクするようにしました。 →空間キューブマップの内側に 壁などがあるとめり込んでしまう。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 使用した手法 ・空間キューブマップ ・平面レイマスク ・減法メッシュ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 減法メッシュ 裏面レンダリングしたメッシュで デプスを上書きすることで、 メッシュ形状で削り取るかの ような描画を行えます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 減法メッシュ 減法に使うメッシュは デプステストを逆転させ、 (めり込んでいる部分のみ描く) 両面描画し、ステンシルで交差して いる部分のみを抽出します。 TStaticDepthStencilState< false, CF_DepthFartherOrEqual, // reverse depth-test true, CF_NotEqual, SO_Keep, SO_Keep, SO_Decrement, // front-face stencil-test true, CF_NotEqual, SO_Keep, SO_Keep, SO_Increment // back-face stencil-test >::GetRHI(), 0x00 その後、抽出した部分に 裏面のデプスを書き込み、 最後に抽出時に壊れたステンシルを 元に戻して完了です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
異世界 減法メッシュ 減法メッシュにて、 空間キューブマップに めり込んでいるメッシュを削り取り、 これで違和感のない 異世界への扉が実装できました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 使用した手法 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 使用した手法 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 エフェクト差し替え ダメージを与えたらその瞬間に 破片が飛び散るエフェクトに 差し替えます。 →見た目やタイミング、 処理負荷の調整が行いやすいです。 破片のコリジョン判定は 入ってたり入ってなかったり 適宜調整しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 エフェクト差し替え ただ エフェクトに差し替えるだけだと 不自然に残る場合があるので、 片方が壊れたらもう片方に 通知を送って同時に壊す、 というような仕組みも使用しています。 (BPで対象アクタを指定して壊しています。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 使用した手法 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 被破壊メッシュ差し替え エフェクト差し替えではちょっと 違和感が大きいものに使用しています。 (巨大な岩とか。) 非破壊メッシュはLODが使えないなどの 問題がある為、 コリジョンヒットしたタイミングで スタティックメッシュから 非破壊メッシュへ挿げ替えています。 非破壊メッシュはUE4内で作成しています。 (apexは検証したましたが 作成コストから使用しませんでした。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 使用した手法 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 骨アニメ 狙った破砕アニメーションが 欲しい場合は骨アニメで実装しました。 作成手段はhoudiniのRBDtoFBX、 MAYAのPullDownItなどです。 剛体シミュに関しては VertexAnimationTextureは 使用していません。 VATではなく骨にベイクした理由は アニメーション圧縮の効率が良い為です。 (CPU負荷よりメモリを優先しました。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 骨アニメ 骨アニメに関してはモデルやマテリアルでも色々行いました。 自然な破砕を行う為に、 アニメーションに合わせてなめらかなノーマルをブレンドしたり、 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 骨アニメ エッジに専用のUVを用意して、ポリ感を軽減したり、 頂点カラーを仕込んで、マテリアルを馴染ませたりなどしました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 使用した手法 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 頂点オフセット破砕 ゲームの状況に応じて破砕したいという 要望があったので、 マテリアルでの頂点オフセット破砕も 行いました。 破片にはそれぞれのピボット位置が UVに埋め込まれており、 ゲーム状況によって可変する レンダーターゲットを参照して、 破片ごとにトランスフォームをかけて 実装しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 使用した手法 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
破砕 シミュレーションアセット 破砕とは少し話がズレますが、 Simulate Physicsを使うものに関しては、 専用クラスに諸々必要なプロパティを 追加して頂き、運用しました。 基本的には普段はsleepさせておいて wakeしたら時間、距離、ダメージを 見て消えるようになっています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 採用手法 ライトマスによるベイクが主です。 ステーショナリーをメイン、スタティックを補助に。 ムーバブルも局所的に使用しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 採用手法 ライト周りは基本的には ライトリグと呼ばれるBPで運用しています。 ディレクショナルライト(ステーショナリ)、 スカイライト(スタティック)、 天球をひとまとめにしており、 太陽の位置や直接光間接光の輝度差、 方向などが正しく設定されています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 採用手法 また、以前「Lightmass Deep Dive」にて 照度ベースライティングで 「現実基準のライティングを行っている」と 発表させて頂きましたが、その後に形を変えています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 採用手法 理由としては、発表後 非常に優秀なライティング専任者が入り、 ライティング班が設立され、 絵作り込みでワークフローを整えて頂けた為。 使用していたEV幅も、 現実ベースの10から5程度に制限し、 現実ベースの手法を前提にしつつ 絵作りを狙って崩していった形になります。 (現実ベースのあまりに広いEV幅は作業に 支障があったのでとても助かりました。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 機能拡張 また、ライティング班ができたことで、 ニーズに合わせて様々な機能が拡張されました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 機能拡張 各レベル単位でライトマスの 品質調整を行いたかったので、 Lightmass.iniをワールドセッティングで 設定可能にして頂きました。 特に影やフォトン、 PLV周りのパラメーターは レベルごとに適宜調整をしています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 機能拡張 また、指定したライトに対して、 IntensityやTemperatureの ランダマイズを行えるようにしたり、 ルーメン値での数値直打ちが 大変なので、 ライトに対してEV(係数)制御を 行えるよう拡張して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング 機能拡張 カットシーンにおけるライティングは 品質アップの際非常に重要だったので、 マチネにライト制御用の 専用トラックも追加して頂きました。 制御したいライトに タグを設定しておくことで レベルに配置してあるライトを 直接制御できます。 Intencityやカスケード距離、枚数、 MinRoughness、shadow周りのプロパティ などカット単位でキーを打って 調整しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ライトファンクション ライトファンクションも 適宜使用しています。 雲の落影、コースティクス、 赤色灯、映像の投影などにも 使用しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ライトファンクション ライトファンクションで一点困ったのは SSSに対してはマスク処理が 行われませんでした。 こちらは拡張してマスク処理も 考慮するようにして頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ライトシナリオ ライトシナリオは広範囲で 使用しています。 ただ、同一レベルで各環境を ライトシナリオ化してベイクすると、 ベイクの必要のない箇所も データを持たれてしまうので、 ベイク専用のパーシスタントレベルで 小分けして、個別にベイクしました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ライトシナリオ 個別にベイクする上での 注意点としては、 PLVを使用している場合、 PLVはパーシスタントレベルにも データが保持されるので、 ベイクしたパーシスタントレベルも 全てぶら下げる必要があります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLV PLVに関しては色々苦労しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLVパーシスタントに残る問題 先程もお伝えした感じで、 PLVのデータはパーシスタントにも 保持されます。 その為、意図しないレベルで ライトビルドされていた場合、 PLVがゴミデータとして そのレベルに残ってしまいます。 メモリも食いますし、 描画エラーにも繋がります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLVパーシスタントに残る問題 レベルは各セクションごとに 作成、運用されており、 レベル総数は2000を超えていました。 中にはdeveloperフォルダで テストしていたレベルをコピーして 正規データ化してたりするものもあり、 意図せぬゴミが色々残っていました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLVパーシスタントに残る問題 なので2000レベル全て pkginfoをかけて、 中身を確認しました。 MapBuildDataRegistryと いうやつが主にPLVです。 数十MBクラスのゴミが 見つかったりしました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLVめり込み問題 またPLVは サーフェースギリギリのところだと めり込んで真っ黒のPLVを作成します。 とても困ります。 ここにキャラが立つと 突如暗くなります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLV足りないor多すぎる問題 また、逆に空中など欲しいところに 作成されなかったりもします。 ボリュームの変形や回転に 対応していなかったり、 意図せぬところに無駄に 作られすぎる事もあります。 Lightmass.iniで色々試しましたが、 意図通り挙動しないことが 多くありました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLV運用 そこで、PLVの運用に関しては以下のようにしました。 ・SurfaceSampleは使わない。DetailSampleのみ使用する。 ( SurfaceSampleは意図せぬ密度のPLVを配置されることが多かった為。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLV運用 また、ボリュームごとで PLV密度を変更できる ようにしたり、 変形や回転に 対応できるように 拡張して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング PLV運用 また、PLVにスタティックライトの直接光成分が格納される事で 発光することがあったので、 直接光影響をオンオフできるように拡張して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ILC遅延 また、PLVの輝度差は ILCの遅延を引き起こし、 色々なところで問題と なりました。 こちらに関しては、 適宜TransitionSpeedを 調整したり、 ILCを強制的に更新する関数 などを拡張して頂き 対応しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ムーバブルアセットが浮く また、PLVはメモリ削減のため 必要最低限ギリギリまで削っており、 精度の問題から 背景のムーバブルアセットが浮く ことが多くありました。 こちらはシェーダー側で フェイクのシャドウをベイクしたり、 エミッシブで間接光を 調整したりして馴染ませました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ライトマップエクスポート また、外部DCCに ライトマップを出せるように 拡張もして頂きました。 本来はエフェクトと背景が ライティングの差で馴染まない という事があったので、 こちらの情報を利用して 馴染ませる想定だったのですが、 運用に間に合わず結果として 手作業で馴染ませて頂きました…。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ライティング ライトマップエクスポート ライトマップをエクスポートして 得たちょっとしたTipsとして、 UE4のライトマップは 色と輝度で分けて8bitテクスチャに 書き込んでいるので、 実質16bitHDRくらいの情報が 含まれています。 またその為、解像度512の アセットがあった場合は、 倍の1024の解像度の ライトマップが必要となります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
シャドウ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
シャドウ 採用手法 シャドウはカスケードと カプセルシャドウがメインです。 カスケードは基本2枚。(4K*2K) PerObjectShadowは基本オフですが クォリティが必要な箇所や 特定オブジェクトでのみ使用しています。 ディスタンスフィールド、 コンタクトシャドウは使っていません。 処理負荷とメモリが厳しかった為です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
シャドウ カプセルシャドウ カプセルシャドウは 使用頻度が高かったので、 スタティックメッシュに 直接つけられるように 拡張して頂きました。 当初はカプセルシャドウ用の 別コンポーネントを 追加していたのですが、 コンポーネントを増やすのが あんまり嬉しくなかったので 拡張して頂いた形です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
シャドウ カプセルシャドウ また、カプセルシャドウは レベルごとや、 カットシーンのカットごとで 細かな調整を行いたかった為、 ポストプロセスボリュームに 制御パラメーターを 出して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
シャドウ 影解像度 また、影の解像度は品質調整を 細かく行いたかったので、 オブジェクト単位、 ライト単位で設定できるように 拡張して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
デカール ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
デカール デカールは Dバッファを使用してません。 (メモリと処理負荷対応の為) なので色々苦労しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
デカール Dバッファを使わない場合、 デカールはStaticLighting成分が 正しく反映されません。 (透過したり、 影の中で消えたりします。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
デカール そこでStaticLighting成分を 無視して、強制的に上書きできる ブレンドモードを 追加して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
デカール ただ、それでも真っ黒は違和感があるので、 適宜エミッシブで持ち上げたりしました。 ノーマルを考慮して疑似ライティングなども 行いました。 (全てそれぞれ手作業で個別調整しました…。) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
デカール また、デカールのフェード幅に 違和感がある場合に調整できる パラメーターも拡張して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
デカール デカールで視差を扱う為に タンジェントの考慮を拡張して頂いたり、 ReceiveDecalがオフになっていても、 キャラクター以外は強制的に塗りつぶす オプションなども拡張して頂きました。 (主にエフェクト用) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
フォグ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
フォグ フォグは基本的に ハイトフォグのみです。 大気フォグは重いので使っていません。 ボリュームフォグは見た目が良いので 要所で使用しています。 設定はPixelSize 16 GridSize 32に 抑えてGPU予算は1ms程です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
フォグ ハイトフォグは レベルで場所ごとに制御したり、 カットシーンでカットごとに 制御したりしたかったので、 ポストプロセスボリュームで 各プロパティをオーバーライドできるように 拡張して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
フォグ また、フォグのかかり具合を 調整する為のプロパティも 追加して頂きました。 ・デフォではフォグは リニアで濃くなるのみですが、 濃度のカーブにガンマをかけたり、 特定の距離から濃くなるように 調整できるようにしてもらいました。 ・横方向には濃くしたいけど、 深さ方向には薄くしたいなどの場合に 調整できるようにしてもらいました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
フォグ また、フォグのかかるベクトルを変更したり、 特定区間のみフォグがかかるような 拡張もして頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
SSAO SSR ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
SSAO SSR SSAO、SSRはUE4の標準そのままです。 Asyncは使用していません。 アンチエイリアスはFXAA。 カットシーン中のみ テンポラルAAを使用しています。 テンポラルAAとSSRの組み合わせは 画面切り替わり時に遅延が目立つので、 それらは適宜カット単位で 機能をオンオフしました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お品書き 自己紹介/初めに 海 空 異世界 雲 地形 植物 雪 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ポストプロセス ポストプロセスは合成タイミングを いくつか追加して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ポストプロセス 特に「SQEX After Light」のタイミングは ライテイングパス直後に挟み込まれており、 キャラクターの見た目を調整したり、 プロジェクト独自の表現を実現するために 拡張され多用されました。 PrePass Shadow Depth Occlusion Test BassPass SQEX After Light Pre Lighting Render Velocties Light Capsule Shadow ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. Translu censy SSR Reflection UI Post Process VFX STUDY GROUP
ポストプロセス このポスプロタイミングで独自表現を行う為に Gバッファは一枚増やしており、 Gバッファ内訳は以下のような感じです。 シーンカラー(R10G10B10A2) 法線(R10G10B10) メタル(R8) スペキュラ(G8) ラフネス(B8) ベースカラー(R8G8B8) 透明度(R8) DF依存関係情報(A2) ShadingモデルID(A8) AO(A8) カスタムデータ(サブサーフェスカラーとか)(G8B8A8) 事前計算済み影の要因(R8G8B8A8) ライト減衰情報(B16) インダイレクトライト 情報(R16) マテリアルから渡せる オブジェクトID(A16) 拡張データ(G16) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ポストプロセス また、「SQEX After Light」は 専用の制御BPも存在しており、 常にレベルに一つ配置して、 状況に応じて局所的な調整を行いました。 プロパティが大量にあり、 また見た目に直結する重要な機能なので、 プロパティのインポート・エクスポート機能も 整備して頂きました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ポストプロセス アウトラインのポスプロを このタイミングで処理したり、 バトル中のキャラの 視認性を調整したり、 カットシーン中の演出的な 追加ライティングを ローコストで行ったりなど、 多岐に渡ってプロジェクトで 使用されました。 GPU負荷は約1msです。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ご清聴ありがとうございました! UNREALはエピック・ゲームズ・インコーポレーテッドの商標または登録商標です。 ElasticsearchおよびKibanaはElasticdearch BVの商標または登録商標です。 MAYAはオートデスク インコーポレイテッドの商標または登録商標です。 その他掲載されている会社名、商品名は、各社の商標または登録商標です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP