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

More Related Content

What's hot

『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 
UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!com044
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことSatoshi Kodaira
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTERエピック・ゲームズ・ジャパン Epic Games Japan
 

What's hot (20)

初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
 
大規模CSゲームにおけるライトマス運用
大規模CSゲームにおけるライトマス運用大規模CSゲームにおけるライトマス運用
大規模CSゲームにおけるライトマス運用
 
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
 
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらいCEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
 
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
 
UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例
 
UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!
 
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
 
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
UE4におけるエフェクトの基本戦略事例 前半
UE4におけるエフェクトの基本戦略事例  前半UE4におけるエフェクトの基本戦略事例  前半
UE4におけるエフェクトの基本戦略事例 前半
 
UE4におけるエフェクトの基本戦略事例 後半
UE4におけるエフェクトの基本戦略事例  後半UE4におけるエフェクトの基本戦略事例  後半
UE4におけるエフェクトの基本戦略事例 後半
 
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
 
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないこと
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 

Similar to UE4における大規模背景制作事例 描画特殊表現編

Similar to UE4における大規模背景制作事例 描画特殊表現編 (6)

Game Creators Conference 2019 Takashi Itai
Game Creators Conference 2019 Takashi ItaiGame Creators Conference 2019 Takashi Itai
Game Creators Conference 2019 Takashi Itai
 
実行速度の最適化のあれこれ プラス おまけ
実行速度の最適化のあれこれ プラス おまけ  実行速度の最適化のあれこれ プラス おまけ
実行速度の最適化のあれこれ プラス おまけ
 
UE4におけるアニメーション制作事例
UE4におけるアニメーション制作事例  UE4におけるアニメーション制作事例
UE4におけるアニメーション制作事例
 
Game Creators Conference 2019 Koichi Miura
Game Creators Conference 2019 Koichi MiuraGame Creators Conference 2019 Koichi Miura
Game Creators Conference 2019 Koichi Miura
 
ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)
ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)
ディゾブルマテリアルで表現する立体魔法陣 (UE4 VFX Art Dive)
 
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
 

More from エピック・ゲームズ・ジャパン Epic Games Japan

『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMERSAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 

More from エピック・ゲームズ・ジャパン Epic Games Japan (20)

猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
 
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめUnreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
 
UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)
 
Hair Groom入門 (UE4 Character Art Dive Online)
Hair Groom入門 (UE4 Character Art Dive Online)Hair Groom入門 (UE4 Character Art Dive Online)
Hair Groom入門 (UE4 Character Art Dive Online)
 
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive OnlineUE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
 
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
 
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMERVisual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
 
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
Unreal Engineでのコンフィギュレーター制作と映像制作  UNREAL FEST EXTREME 2021 SUMMERUnreal Engineでのコンフィギュレーター制作と映像制作  UNREAL FEST EXTREME 2021 SUMMER
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
 
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏  UNREAL FEST EXTREME 2021 SUMMERバレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏  UNREAL FEST EXTREME 2021 SUMMER
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
 
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMERSAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
 
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編)  UNREAL FEST EXTREME 2021 SUMMER
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
 
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
UE4を使用したバーチャルヒューマンの映像制作  UNREAL FEST EXTREME 2021 SUMMERUE4を使用したバーチャルヒューマンの映像制作  UNREAL FEST EXTREME 2021 SUMMER
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
 
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
オンラインで同期した100体の巨大生物から地球を衛る方法  UNREAL FEST EXTREME 2021 SUMMERオンラインで同期した100体の巨大生物から地球を衛る方法  UNREAL FEST EXTREME 2021 SUMMER
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
 
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMERMetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
 
Twinmotion 2021とAEC分野向けソリューションのご紹介
Twinmotion 2021とAEC分野向けソリューションのご紹介Twinmotion 2021とAEC分野向けソリューションのご紹介
Twinmotion 2021とAEC分野向けソリューションのご紹介
 
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
 
猫でもわかる Epic MegaGrants 応募への道
猫でもわかる Epic MegaGrants 応募への道猫でもわかる Epic MegaGrants 応募への道
猫でもわかる Epic MegaGrants 応募への道
 
Unreal Engine と XR でつくる「働く」の未来 | UNREAL FEST EXTREME 2020 WINTER
Unreal Engine と XR でつくる「働く」の未来 | UNREAL FEST EXTREME 2020 WINTERUnreal Engine と XR でつくる「働く」の未来 | UNREAL FEST EXTREME 2020 WINTER
Unreal Engine と XR でつくる「働く」の未来 | UNREAL FEST EXTREME 2020 WINTER
 

UE4における大規模背景制作事例 描画特殊表現編

  • 1. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 株式会社スクウェア・エニックス 斎藤 修 吉岡国登 須山 稔明 UE4における大規模背景制作事例 (描画・特殊表現編)
  • 2. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. スライドについて ・PowerPointファイルをEpic様より公開いただいています https://epicgames.box.com/s/ke00h4yxe38fs04stsm2cfrbpb00969m ・スライド内の動画はPowerPointファイルのDLにてご確認ください
  • 3. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 略称について ・『Unreal Engine 4』をスライド内では『UE4』と記載しています
  • 4. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 5. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 6. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 斎藤 修 自己紹介/初めに テクニカルアーティスト • 背景の作り方とか考えたりサポートしたり • 処理負荷を見たり対応したり してます 吉岡 国登 グラフィクスプログラマ • グラフィックス全般のサポート • グラフィックス担当での参加は初めて 須山 稔明 グラフィクスプログラマ • 背景のグラフィック案件のサポート • 描画関連の不具合調査・対応
  • 7. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 初めに 自己紹介/初めに 今回の事例では UE4.17.2 を使用しています。 その為最新verでは変更や修正が行われている可能性があります。 また、様々なエンジン改造 を行っている為、 状況が再現できない可能性があります。
  • 8. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 次に 自己紹介/初めに 今回、なるべく多くの事例を共有したいと思っております。 その結果、数多くの方が関わられた事もあり、 特殊事例の羅列になってしまいました。 詳細に関してはまた、Q&Aや個別にご質問頂けましたら幸いです。
  • 9. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • 最後に 自己紹介/初めに 今回の背景制作事例に関しては数多くの方の、 様々な助力によって達成されました。 以下、発表事例に関して快くご協力頂けました皆様に深く謝意を表します。 後藤保 中道雅史 中健吾 松岡英樹 吉田武史 松本章 波能智人 望月紀嗣 木村洋一 中村大作 森田英明 河崎幸治(敬称略)
  • 10. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 11. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 12. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 必要な要件 海 ・実写のごとくリアルに ・泳げる ・潜れる ・見渡せる ・海戦できる
  • 13. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 海 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張
  • 14. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 海 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張
  • 15. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. Fast Fourier Transform いっぱい正弦波足したら 複雑な形状が作れます。 それを高速に計算します。 という感じのやつです。 海 FFT
  • 16. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 処理としては 右図の順に なっています。 海 FFT 初期スペクトル Dx Dy Dz ディスプレイスメント ノーマル X変位スペクトル Z変位スペクトル Y変位スペクトル
  • 17. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 512*512の 初期スペクトル 分布テクスチャから 海 FFT 初期スペクトル Dx Dy Dz ディスプレイスメント ノーマル X変位スペクトル Z変位スペクトル Y変位スペクトル
  • 18. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. XYZ各方向ごとに 経過時間後の 変異スペクトルを生成 海 FFT 初期スペクトル Dx Dy Dz ディスプレイスメント ノーマル X変位スペクトル Z変位スペクトル Y変位スペクトル
  • 19. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 各スペクトルに IFFTを実行し、 変位量を算出 海 FFT 初期スペクトル Dx Dy Dz ディスプレイスメント ノーマル X変位スペクトル Z変位スペクトル Y変位スペクトル
  • 20. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. XYZ変位量を合成して、 ディスプレイスメント を生成 海 FFT 初期スペクトル Dx Dy Dz ディスプレイスメント ノーマル X変位スペクトル Z変位スペクトル Y変位スペクトル
  • 21. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ディスプレイスメント から勾配を求めて ノーマルを生成 海 FFT 初期スペクトル Dx Dy Dz ディスプレイスメント ノーマル X変位スペクトル Z変位スペクトル Y変位スペクトル
  • 22. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. この ディスプレイスメント とノーマルを マテリアル側から 呼んで使用しています。 解像度は512*512 です。 海 FFT 初期スペクトル Dx Dy Dz ディスプレイスメント ノーマル X変位スペクトル Z変位スペクトル Y変位スペクトル
  • 23. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 結果 海 FFT
  • 24. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. これで、海の見た目はできました。 が、FFTはGPUで実行されており、 これをCPU、ゲーム側で使用できるようにする必要があります。 (でないとキャラが泳いだりできません。) 海 FFT
  • 25. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. CPUへ読み戻す処理としては 右図の順になっています。 (RenderingThreadは 海シミュレーションの後に 引き続き処理) 読み戻し処理は非同期で 行っています。 海 FFT RenderingThread GameThread Update Simulation Readback Request Async Transfer Completed AsyncTask Ocean Simulation
  • 26. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. RenderingThread GameThread Update Simulation Readback Request Async Transfer Completed AsyncTask Ocean Simulation 海 FFT 呼び戻しリクエスト処理を 行うために、 海シミュレーション結果の Displacement/Normalを 別テクスチャへコピー 描画完了の確認用に OcclusionQueryを生成し コマンドリストへ積む
  • 27. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. Queryが完了した (=描画が完了した) 読み戻しリクエストがあれば コピーしたテクスチャを マッピングしてアドレスを保持 また、同時にGameThreadへ 非同期タスクとして CPU側で参照するアドレスの 更新を行わせる RenderingThread GameThread Update Simulation Readback Request Async Transfer Completed AsyncTask Ocean Simulation 海 FFT
  • 28. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. シミュレーション結果の アドレスを反映し、 レイキャストなどで適宜参照 RenderingThread GameThread Update Simulation Readback Request Async Transfer Completed AsyncTask Ocean Simulation 海 FFT
  • 29. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. これでキャラが泳げる海ができました。 ですが、広大に見渡せる範囲全てに 高密度ポリゴンを 置くわけにはいきません。 海 FFT
  • 30. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. これでキャラが泳げる海ができました。 ですが、広大に見渡せる範囲全てに 高密度ポリゴンを 置くわけにはいきません。 海 FFT →カメラに映る範囲だけ海を作ろう
  • 31. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 海 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張
  • 32. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. カメラの錐台を利用して 見える範囲のみの グリッドマップを作成して います。 • プロジェクショングリッドとは? 海 プロジェクショングリッド
  • 33. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 投影するグリッドは 8枚のメッシュに別れており、 距離に応じてリダクションしています。 海 プロジェクショングリッド
  • 34. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 プロジェクショングリッド プロジェクショングリッドは 距離によってマテリアルを 切り替えられるようになっており、 近景は半透明、中景はマスク、 遠景は不透明といった使い分けが 可能です。 また、それらのパラメーターは 専用のマテリアルファンクションから アクセスできるようになっており、 TAが適宜運用しています。
  • 35. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. これで高密度で高品質な 海が達成できました 海 プロジェクショングリッド
  • 36. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. これで高密度で高品質な 海が達成できました 海 プロジェクショングリッド →でも海岸で不自然にめり込む
  • 37. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 海 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張
  • 38. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • ハイトマップ打ち寄せ波とは? 海 ハイトマップ打ち寄せ波 地形のハイトマップを利用して、 海岸に向かってくる打ち寄せ波を 作りました。 また、同時に地形より高く 海面が盛り上がらないよう 抑えています。
  • 39. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • ハイトマップ打ち寄せ波とは? 海 ハイトマップ打ち寄せ波 また、ノイズを加えたり ワールドポジションオフセットや ノーマルを調整して自然な波に 見えるようにしています。 ハイトマップの解像度を保つため 島ごとにボリューム判定を取って 読み替えも行っています。
  • 40. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 ハイトマップ打ち寄せ波 また、波の形状は二次元の変位量を テクスチャにベイクして それを参照したりもしています。 これらはカットシーンなどで 使用しました。
  • 41. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 海 ・FFT ・プロジェクショングリッド ・ハイトマップ打ち寄せ波 ・屈折拡張 ・反射拡張
  • 42. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 屈折拡張 UE4のリフラクションは 背景に仕込むと エフェクトとの相性が よろしくありません。
  • 43. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 屈折拡張 そこで、 背景用のリフラクション処理を 追加して頂きました。 現フレームの ベースパス時のシーンカラーを コピーしておいて、 それを歪ませて参照する 仕組みで実装しています。
  • 44. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 また、キャラが海に入る為 半透明の海にするのは 必須でしたが、 品質的にSSRが求められました。
  • 45. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 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 海 反射拡張 しかしUE4の半透明SSRは 幾つか問題があり ・FXAAでは使えない(UDNで解決) ・1フレーム前のバッファを使う のでカメラ切替時などで遅延する ・深度判定が甘く手前の物が映る ・SurfaceForwardShadingで 使えない
  • 46. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 そこで半透明SSR処理を別途追加して頂きました。 屈折と同じく、現フレームのベースパス時のシーンカラーを使用します。 反射をカスタムノードで取得できるので マテリアルごとに反射強度や精度などが調整できて便利でした。
  • 47. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 また、カスタムノードが複雑なコードを書くのに不便だったので、 ushをインクルードできるような拡張もされました。
  • 48. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 また、 よくある手法かとは思うのですが アーティストが絵作りする際に 反射具合を調整したかったので、 キューブマップを参照する 疑似反射も要所で使用しています。
  • 49. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 反射に関しては EVによって見た目が変化するのを避けたかったので、 エミッシブへのEVカウンターも実装しました。
  • 50. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 エミッシブEVカウンターはマテリアルプロパティで 設定できるように拡張して頂きました。 (マテリアルのプロパティマトリクスは4.8より使用できないのですが、 https://udn.unrealengine.com/questions/258128/view.html 利便性の為にバグを許容して使用可能にして頂いています。)
  • 51. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 また、反射は基本的には SSRを使用しているのですが カットシーンなどで局所的に クォリティアップする必要が ありました。 そこではシーンキャプチャを 使用して反射を実装しています。
  • 52. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 ただ、シーンキャプチャの負荷は 非常に高かったので、 ・解像度制限 ・レンダリングパス制限 ・レンダリング対象制限 は適宜行いました。 また、レンダリング対象制限は 制御しやすいようにアクタ側に レンダリング可否のプロパティを 拡張して頂きました。
  • 53. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 海 反射拡張 PlanarReflectionは使いませんでした。 エンジン拡張によるものか 意図せぬ発光バグが起きたり、 シェーダーメモリの増加を 避けたかった為です。 水面以下クリップに関しては 個別にマテリアル側にマスク処理を 追加して対応しました。 http://api.unrealengine.com/JPN/Engine/Rendering/LightingAndShadows/PlanarReflections/
  • 54. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 55. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 必要な要件 空 雲 ・雲が動いて欲しい ・時間変化して欲しい ・世界観に合わせて ・リアルに ・トゥーン調に
  • 56. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 必要な要件 空 雲 ・雲が動いて欲しい ・時間変化して欲しい ・世界観に合わせて ・リアルに ・トゥーン調に 色々な要件があった為 様々な手法を組み合わせました。
  • 57. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 空 雲 ・2Dノイズ積層 ・フローマップ ・IBL修正 ・レンダリング ・レイマーチ
  • 58. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 空 雲 ・2Dノイズ積層 ・フローマップ ・IBL修正 ・レンダリング ・レイマーチ
  • 59. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 2Dノイズ積層 時間変化に対応するため、 ノイズテクスチャを積層し、 ズラしたり足したり掛けたりして プロシージャルな2D雲を 作成しました。 ノイズテクスチャを6回×3層 サンプリングしている 高価な空になります。
  • 60. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 2Dノイズ積層 3層の雲は、 メッシュ側で雲の高度を考慮したUVを それぞれ作成し、それを参照しています。
  • 61. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 フローマップ また、 風の方向に合わせて 雲が自然に流れるように フローマップも使用しました。 2Dノイズ積層と組み合わせて タイムラプス表現などにも 利用しました。
  • 62. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 IBL修正 また、 各ロケーション、 各季節、各時間帯で 多くの全天球画像も撮影しました。 元々IBL用に撮影していましたが、 品質の良いものは少し手直しして 天球画像にも使用しました。
  • 63. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レンダリング TerragenやHoudiniを利用しての レンダリングも行いました。 Terragenでは主に 天球用スフィリカル画像を、 Houdiniでは主に雲ビルボードや レイマーチ用3Dテクスチャ作成などを 行いました。
  • 64. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レンダリング また、 各HDR画像は意図せぬエラーを防ぐ為に ピーク輝度を4.0に抑えたりしています。
  • 65. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 空 雲 ・2Dノイズ積層 ・フローマップ ・IBL修正 ・レンダリング ・レイマーチ
  • 66. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レイマーチ ボリュメトリックな 雲の要望もあったので レイマーチ雲も実装しています。 ニーズとしては「入れる雲」 でした。
  • 67. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レイマーチ 運用に関しては、 雲一個の塊につき、 一個のBPを配置して 制御しました。 描画パスは UE4の半透明を 拡張しています。
  • 68. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レイマーチ レイマーチ雲は処理負荷対応により 1/4縮小バッファでレンダリングしています。 また、別バッファにそれぞれの雲IDも レンダリングしています。
  • 69. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レイマーチ 描画時は、 縮小バッファとIDバッファを使用して 順次アップスケール合成していきます。 個別のIDバッファを使用するのは、 雲と雲の間に 別の半透明(エフェクトなど)が 入るのを考慮する為です。
  • 70. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レイマーチ また、雲にはキャラクターが入れる必要がある為、 裏面レンダリングできるようにエンジン拡張も行いました。
  • 71. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 空 雲 レイマーチ アーティストからの要望で、 3Dテクスチャを利用して 任意形状にしたり、 螺旋挙動を拡張したりもして 頂きました。 レイマーチは基本的には 局所的に使用されていますが、 処理負荷はワーストで2msほどでした。
  • 72. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 73. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 地形は、基本的には メッシュで作成しています。 モジュールアセットで組み合わせたり、 特殊な地形はワンオフで作成したりも しました。
  • 74. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 ただ自然地形では、局所的に ランドスケープも使用しています。 理由としては ・コリジョン作成コスト ・フィジカルマテリアル設定コスト の緩和の為です。
  • 75. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 特にフィジカルマテリアルは多数の設定を 適切に設定する必要がある為、 ランドスケープレイヤーで 設定できるのは重宝しました
  • 76. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 例えば、頂点カラーの塗り分けなどは フィジカルマテリアルが対応できない事が多く、 その場合は手作業でオーバーライドボリューム(拡張)を 設置する事になる為、ランドスケープの利便性に頼りました。
  • 77. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 ハイトマップ作成に関しては houdiniのハイトフィールドも使用しました。 大体の地形をメッシュで作成後、 ディテールの追加など行いました。
  • 78. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 また、ランドスケープのコンポーネントは キャラの行かないところは とにかく削りました。 地形の位置や粒度によっては 別レベルに分けて 小分けのランドスケープを作成して 運用しました。
  • 79. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 また、タイリング感緩和の為にシェーダーでも色々検証しました。 以下はTextureBombという、 沢山テクスチャサンプリングして混ぜ合わせるという手法です。 (UE4のマテリアル関数にもあります。運用時はサンプリング数を可変できるように改造しました。)
  • 80. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 WangTileというランダムサンプリング手法も検証しました。 ↓こういうテクスチャを作成し、 ランダム配置することでタイリング感を緩和します。
  • 81. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 これらの特殊なテクスチャは SubstanceDesignerなどで適宜作成を自動化しました。
  • 82. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 地形へのぶっさし緩和には、 ハイトマップを利用しての馴染ませを行ったりしました。
  • 83. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 また局所的には ピクセルデプスを利用しての 馴染ませなども行いました。 (ディスタンスフィールドは メモリや処理負荷の観点から 使用していません。)
  • 84. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 視差も使用しています。 パララックスオクルージョンは重いのと積層感で問題が出たりしたので、 コーンステップマップという事前計算テクスチャ一つ追加した レリーフマッピングを実装して頂きました。(POMも使ってます。)
  • 85. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 地形 コーンステップマップは、 その位置から一番近い交点の距離情報がベイクされています。 それを利用することで、精密に、高速に レリーフマッピングを行う事ができる、という手法です。 https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch18.html
  • 86. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 87. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 植物は基本的にSSSやTwoSidedFoliageを使用し両面化、 頂点オフセットを使用して風揺れや草倒れなど実装しています。
  • 88. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 草倒れは専用のBPを配置することで、 マテリアルパラメーターコレクションに キャラ位置や範囲などが渡されます。 それをマテリアルの方で使用することで 実装されています。 同時に判定できるキャラ数は6体までです。
  • 89. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 風揺れはノイズベース、 揺れる際は頂点カラーかUVに 揺れ度合いのグラデーションを 仕込んでおいて、 自然に揺れるように調整しています。 ちょっとしたTipsとして VertexInterpolatorを使用すれば、 インスタンス化した場合も それぞれのインスタンスの ピボット位置が取得できます。
  • 90. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 また、植物は影モデルも使用してます。 大体1/5くらいのポリ数で影モデルは作成しています。 ほとんど影になっている箇所では一枚板の影モデルも使用しています。 ブッシュなどは簡易的な影モデルに置き換えたりしています。
  • 91. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 スピードツリーも使用しています。 風揺れもスピードツリーの機能を そのまま使用しています。 (UV8チャンネル使用されて しまうのですが、 製作コストを鑑みて 使用することにしました。)
  • 92. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 スピードツリーを使用しない木の 風揺れに関しては、 houdiniで親子関係のあるピボットを 自動で仕込めるHDAを作成して、 MAYAやhoudiniで運用しました。
  • 93. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 フォリッジも使用しています。ですが、 なるべく使用しないようにもしています。 (微調整がしづらい、データの可視化がしづらい、 バグが多い、などの理由です。) また、 カリングが塊で処理されてしまうので、 距離に応じて地面にうめて(頂点オフセット) 自然に遷移させたりしています。
  • 94. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 最終LODにはインポスターも使用しています。 作成はUE4のRenderToTexture_LevelBPを使用しています。 1回転軸で、8*8パターン、1024*1024のBaseColor、 トリプルマスク、ノーマルの3枚で運用しています。
  • 95. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 植物 また、インポスターに関しては ライトマップを 安定して焼くのが難しかった為、 LOD0にベイク用の板を仕込んで、 それを参照させたりしました。
  • 96. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 97. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 必要な要件 ・キャラクターが 歩くと凹む
  • 98. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 雪凹みは 凹ませたいエリアをボックスで囲むと、 そのエリアがSceneCapture2Dによって 真下から深度レンダリングされます。 その後、得た深度を加工して 視差マッピング用のテクスチャを 作って実装しています。
  • 99. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 処理の流れとしては、 1.地形の深度レンダリング 2.キャラクターの深度レンダリング 3.別バッファに 視差用のテクスチャを作成 となっています。
  • 100. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 諸々の処理はBPで作成されており、 BPには地形用とキャラ用それぞれの SceneCapture2Dが2つ、 テクスチャ作成&加工は DrawMaterialToRenderTargetで 組まれています。
  • 101. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 視差マテリアルはUE4のParallaxOcclusionMappingを使用しています。
  • 102. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 発生した問題
  • 103. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 ・1F遅れ問題 BPでのテクスチャ加工処理が、 シーンキャプチャのレンダリングより 先に行われてしまう為、1F遅れてしまう。 ↓ 回避する為に、キャプチャ直後 UpdateDeferredCaptures (FSceneInterface* Scene)中の UpdateSceneCaptureContentsの 処理の後でBPのイベントへ ブロードキャストしています。 BP側ではそのイベントをバインドして テクスチャ加工を行っています。
  • 104. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 ・雪バッファクリア対応 一定以上キャラ位置が動いた場合は バッファクリアしています。 (カットシーンなどでキャラの立ち位置が 瞬時に変わることがある為。) 強制的にクリアするBPノードなども 使用しました。 ・広大な地形への対応 広大な地形ではキャプチャ位置を 常にプレイヤーに追随するように 更新しています。 レンダリング範囲の端っこ部分は フェードして徐々に消えていきます。 ・高速移動の補間 滑るような移動で速度が早いと 点々と不自然な凹みになってしまうので 特定モーションのみ深度描画用の リボンパーティクルを出しています。 また、雪凹みの範囲は状況に応じて適宜調整しており、 大体50m~100mの範囲、 テクスチャの解像度は512~768くらいです。 強い制約として凹むエリアでは地形のオーバーハング は禁止されていました。
  • 105. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 また、雪のシステムを流用して 砂浜の引き波濡れも実装してます。
  • 106. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 雪 雪のシェーダーには、スノーフレークの要望もあった為、 グリッドベースのスノーフレークを実装しています。 参考URL:http://advances.realtimerendering.com/s2015/
  • 107. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 108. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 必要な要件 ・異世界に 繋がっているポータル ・中に入れる
  • 109. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 使用した手法 ・空間キューブマップ ・平面レイマスク ・減法メッシュ
  • 110. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 使用した手法 ・空間キューブマップ ・平面レイマスク ・減法メッシュ
  • 111. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 空間キューブマップ 平面だとめり込んでしまうので、 空間メッシュにキューブマップを 貼りました。 また、シェーダー側で空間の傾きや、 擬似的なパース調整なども 対応しています。
  • 112. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 空間キューブマップ 平面だとめり込んでしまうので、 空間メッシュにキューブマップを 貼りました。 また、シェーダー側で空間の傾きや、 擬似的なパース調整なども 対応しています。 →しかしこのままだと、 横から見るとはみ出したやつが見えてしまう。
  • 113. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 平面レイマスク P P0 V N Ray : P = P0+tV Plane: P・N+d = 0 (P0+tV)・N+d = 0 t = -(P0・N+d)/(V・N) P = P0+tV そこで、平面へのレイ判定を行い、 ポータル範囲からはみ出したら マスクするようにしました。
  • 114. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 平面レイマスク そこで、平面へのレイ判定を行い、 ポータル範囲からはみ出したら マスクするようにしました。 →空間キューブマップの内側に 壁などがあるとめり込んでしまう。
  • 115. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 使用した手法 ・空間キューブマップ ・平面レイマスク ・減法メッシュ
  • 116. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 減法メッシュ 裏面レンダリングしたメッシュで デプスを上書きすることで、 メッシュ形状で削り取るかの ような描画を行えます。
  • 117. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 減法メッシュ 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 減法に使うメッシュは デプステストを逆転させ、 (めり込んでいる部分のみ描く) 両面描画し、ステンシルで交差して いる部分のみを抽出します。 その後、抽出した部分に 裏面のデプスを書き込み、 最後に抽出時に壊れたステンシルを 元に戻して完了です。
  • 118. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 異世界 減法メッシュ 減法メッシュにて、 空間キューブマップに めり込んでいるメッシュを削り取り、 これで違和感のない 異世界への扉が実装できました。
  • 119. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 120. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 破砕 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット
  • 121. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 破砕 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット
  • 122. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 エフェクト差し替え ダメージを与えたらその瞬間に 破片が飛び散るエフェクトに 差し替えます。 →見た目やタイミング、 処理負荷の調整が行いやすいです。 破片のコリジョン判定は 入ってたり入ってなかったり 適宜調整しています。
  • 123. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 エフェクト差し替え ただ エフェクトに差し替えるだけだと 不自然に残る場合があるので、 片方が壊れたらもう片方に 通知を送って同時に壊す、 というような仕組みも使用しています。 (BPで対象アクタを指定して壊しています。)
  • 124. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 破砕 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット
  • 125. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 被破壊メッシュ差し替え エフェクト差し替えではちょっと 違和感が大きいものに使用しています。 (巨大な岩とか。) 非破壊メッシュはLODが使えないなどの 問題がある為、 コリジョンヒットしたタイミングで スタティックメッシュから 非破壊メッシュへ挿げ替えています。 非破壊メッシュはUE4内で作成しています。 (apexは検証したましたが 作成コストから使用しませんでした。)
  • 126. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 破砕 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット
  • 127. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 骨アニメ 狙った破砕アニメーションが 欲しい場合は骨アニメで実装しました。 作成手段はhoudiniのRBDtoFBX、 MAYAのPullDownItなどです。 剛体シミュに関しては VertexAnimationTextureは 使用していません。 VATではなく骨にベイクした理由は アニメーション圧縮の効率が良い為です。 (CPU負荷よりメモリを優先しました。)
  • 128. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 骨アニメ 骨アニメに関してはモデルやマテリアルでも色々行いました。 自然な破砕を行う為に、 アニメーションに合わせてなめらかなノーマルをブレンドしたり、
  • 129. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 骨アニメ エッジに専用のUVを用意して、ポリ感を軽減したり、 頂点カラーを仕込んで、マテリアルを馴染ませたりなどしました。
  • 130. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 破砕 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット
  • 131. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 頂点オフセット破砕 ゲームの状況に応じて破砕したいという 要望があったので、 マテリアルでの頂点オフセット破砕も 行いました。 破片にはそれぞれのピボット位置が UVに埋め込まれており、 ゲーム状況によって可変する レンダーターゲットを参照して、 破片ごとにトランスフォームをかけて 実装しています。
  • 132. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 使用した手法 破砕 ・エフェクト差し替え ・被破壊メッシュ差し替え ・骨アニメ ・頂点オフセット破砕 ・シミュレーションアセット
  • 133. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 破砕 シミュレーションアセット 破砕とは少し話がズレますが、 Simulate Physicsを使うものに関しては、 専用クラスに諸々必要なプロパティを 追加して頂き、運用しました。 基本的には普段はsleepさせておいて wakeしたら時間、距離、ダメージを 見て消えるようになっています。
  • 134. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 135. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング
  • 136. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 採用手法 ライトマスによるベイクが主です。 ステーショナリーをメイン、スタティックを補助に。 ムーバブルも局所的に使用しました。
  • 137. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 採用手法 ライト周りは基本的には ライトリグと呼ばれるBPで運用しています。 ディレクショナルライト(ステーショナリ)、 スカイライト(スタティック)、 天球をひとまとめにしており、 太陽の位置や直接光間接光の輝度差、 方向などが正しく設定されています。
  • 138. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 採用手法 また、以前「Lightmass Deep Dive」にて 照度ベースライティングで 「現実基準のライティングを行っている」と 発表させて頂きましたが、その後に形を変えています。
  • 139. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 採用手法 理由としては、発表後 非常に優秀なライティング専任者が入り、 ライティング班が設立され、 絵作り込みでワークフローを整えて頂けた為。 使用していたEV幅も、 現実ベースの10から5程度に制限し、 現実ベースの手法を前提にしつつ 絵作りを狙って崩していった形になります。 (現実ベースのあまりに広いEV幅は作業に 支障があったのでとても助かりました。)
  • 140. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 機能拡張 また、ライティング班ができたことで、 ニーズに合わせて様々な機能が拡張されました。
  • 141. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 機能拡張 各レベル単位でライトマスの 品質調整を行いたかったので、 Lightmass.iniをワールドセッティングで 設定可能にして頂きました。 特に影やフォトン、 PLV周りのパラメーターは レベルごとに適宜調整をしています。
  • 142. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 機能拡張 また、指定したライトに対して、 IntensityやTemperatureの ランダマイズを行えるようにしたり、 ルーメン値での数値直打ちが 大変なので、 ライトに対してEV(係数)制御を 行えるよう拡張して頂きました。
  • 143. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング 機能拡張 カットシーンにおけるライティングは 品質アップの際非常に重要だったので、 マチネにライト制御用の 専用トラックも追加して頂きました。 制御したいライトに タグを設定しておくことで レベルに配置してあるライトを 直接制御できます。 Intencityやカスケード距離、枚数、 MinRoughness、shadow周りのプロパティ などカット単位でキーを打って 調整しています。
  • 144. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ライトファンクション ライトファンクションも 適宜使用しています。 雲の落影、コースティクス、 赤色灯、映像の投影などにも 使用しました。
  • 145. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ライトファンクション ライトファンクションで一点困ったのは SSSに対してはマスク処理が 行われませんでした。 こちらは拡張してマスク処理も 考慮するようにして頂きました。
  • 146. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ライトシナリオ ライトシナリオは広範囲で 使用しています。 ただ、同一レベルで各環境を ライトシナリオ化してベイクすると、 ベイクの必要のない箇所も データを持たれてしまうので、 ベイク専用のパーシスタントレベルで 小分けして、個別にベイクしました。
  • 147. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ライトシナリオ 個別にベイクする上での 注意点としては、 PLVを使用している場合、 PLVはパーシスタントレベルにも データが保持されるので、 ベイクしたパーシスタントレベルも 全てぶら下げる必要があります。
  • 148. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. PLVに関しては色々苦労しました。 ライティング PLV
  • 149. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLVパーシスタントに残る問題 先程もお伝えした感じで、 PLVのデータはパーシスタントにも 保持されます。 その為、意図しないレベルで ライトビルドされていた場合、 PLVがゴミデータとして そのレベルに残ってしまいます。 メモリも食いますし、 描画エラーにも繋がります。
  • 150. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLVパーシスタントに残る問題 レベルは各セクションごとに 作成、運用されており、 レベル総数は2000を超えていました。 中にはdeveloperフォルダで テストしていたレベルをコピーして 正規データ化してたりするものもあり、 意図せぬゴミが色々残っていました。
  • 151. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLVパーシスタントに残る問題 なので2000レベル全て pkginfoをかけて、 中身を確認しました。 MapBuildDataRegistryと いうやつが主にPLVです。 数十MBクラスのゴミが 見つかったりしました。
  • 152. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLVめり込み問題 またPLVは サーフェースギリギリのところだと めり込んで真っ黒のPLVを作成します。 とても困ります。 ここにキャラが立つと 突如暗くなります。
  • 153. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLV足りないor多すぎる問題 また、逆に空中など欲しいところに 作成されなかったりもします。 ボリュームの変形や回転に 対応していなかったり、 意図せぬところに無駄に 作られすぎる事もあります。 Lightmass.iniで色々試しましたが、 意図通り挙動しないことが 多くありました。
  • 154. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLV運用 そこで、PLVの運用に関しては以下のようにしました。 ・SurfaceSampleは使わない。DetailSampleのみ使用する。 ( SurfaceSampleは意図せぬ密度のPLVを配置されることが多かった為。)
  • 155. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLV運用 また、ボリュームごとで PLV密度を変更できる ようにしたり、 変形や回転に 対応できるように 拡張して頂きました。
  • 156. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング PLV運用 また、PLVにスタティックライトの直接光成分が格納される事で 発光することがあったので、 直接光影響をオンオフできるように拡張して頂きました。
  • 157. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ILC遅延 また、PLVの輝度差は ILCの遅延を引き起こし、 色々なところで問題と なりました。 こちらに関しては、 適宜TransitionSpeedを 調整したり、 ILCを強制的に更新する関数 などを拡張して頂き 対応しました。
  • 158. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ムーバブルアセットが浮く また、PLVはメモリ削減のため 必要最低限ギリギリまで削っており、 精度の問題から 背景のムーバブルアセットが浮く ことが多くありました。 こちらはシェーダー側で フェイクのシャドウをベイクしたり、 エミッシブで間接光を 調整したりして馴染ませました。
  • 159. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ライトマップエクスポート また、外部DCCに ライトマップを出せるように 拡張もして頂きました。 本来はエフェクトと背景が ライティングの差で馴染まない という事があったので、 こちらの情報を利用して 馴染ませる想定だったのですが、 運用に間に合わず結果として 手作業で馴染ませて頂きました…。
  • 160. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ライティング ライトマップエクスポート ライトマップをエクスポートして 得たちょっとしたTipsとして、 UE4のライトマップは 色と輝度で分けて8bitテクスチャに 書き込んでいるので、 実質16bitHDRくらいの情報が 含まれています。 またその為、解像度512の アセットがあった場合は、 倍の1024の解像度の ライトマップが必要となります。
  • 161. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. シャドウ
  • 162. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. シャドウ 採用手法 シャドウはカスケードと カプセルシャドウがメインです。 カスケードは基本2枚。(4K*2K) PerObjectShadowは基本オフですが クォリティが必要な箇所や 特定オブジェクトでのみ使用しています。 ディスタンスフィールド、 コンタクトシャドウは使っていません。 処理負荷とメモリが厳しかった為です。
  • 163. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. シャドウ カプセルシャドウ カプセルシャドウは 使用頻度が高かったので、 スタティックメッシュに 直接つけられるように 拡張して頂きました。 当初はカプセルシャドウ用の 別コンポーネントを 追加していたのですが、 コンポーネントを増やすのが あんまり嬉しくなかったので 拡張して頂いた形です。
  • 164. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. シャドウ カプセルシャドウ また、カプセルシャドウは レベルごとや、 カットシーンのカットごとで 細かな調整を行いたかった為、 ポストプロセスボリュームに 制御パラメーターを 出して頂きました。
  • 165. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. シャドウ 影解像度 また、影の解像度は品質調整を 細かく行いたかったので、 オブジェクト単位、 ライト単位で設定できるように 拡張して頂きました。
  • 166. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 167. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. デカール
  • 168. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. デカール デカールは Dバッファを使用してません。 (メモリと処理負荷対応の為) なので色々苦労しました。
  • 169. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. デカール Dバッファを使わない場合、 デカールはStaticLighting成分が 正しく反映されません。 (透過したり、 影の中で消えたりします。)
  • 170. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. デカール そこでStaticLighting成分を 無視して、強制的に上書きできる ブレンドモードを 追加して頂きました。
  • 171. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. デカール ただ、それでも真っ黒は違和感があるので、 適宜エミッシブで持ち上げたりしました。 ノーマルを考慮して疑似ライティングなども 行いました。 (全てそれぞれ手作業で個別調整しました…。)
  • 172. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. デカール また、デカールのフェード幅に 違和感がある場合に調整できる パラメーターも拡張して頂きました。
  • 173. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. デカール デカールで視差を扱う為に タンジェントの考慮を拡張して頂いたり、 ReceiveDecalがオフになっていても、 キャラクター以外は強制的に塗りつぶす オプションなども拡張して頂きました。 (主にエフェクト用)
  • 174. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. フォグ
  • 175. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. フォグ フォグは基本的に ハイトフォグのみです。 大気フォグは重いので使っていません。 ボリュームフォグは見た目が良いので 要所で使用しています。 設定はPixelSize 16 GridSize 32に 抑えてGPU予算は1ms程です。
  • 176. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. フォグ ハイトフォグは レベルで場所ごとに制御したり、 カットシーンでカットごとに 制御したりしたかったので、 ポストプロセスボリュームで 各プロパティをオーバーライドできるように 拡張して頂きました。
  • 177. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. フォグ また、フォグのかかり具合を 調整する為のプロパティも 追加して頂きました。 ・デフォではフォグは リニアで濃くなるのみですが、 濃度のカーブにガンマをかけたり、 特定の距離から濃くなるように 調整できるようにしてもらいました。 ・横方向には濃くしたいけど、 深さ方向には薄くしたいなどの場合に 調整できるようにしてもらいました。
  • 178. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. フォグ また、フォグのかかるベクトルを変更したり、 特定区間のみフォグがかかるような 拡張もして頂きました。
  • 179. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. SSAO SSR
  • 180. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. SSAO SSR SSAO、SSRはUE4の標準そのままです。 Asyncは使用していません。 アンチエイリアスはFXAA。 カットシーン中のみ テンポラルAAを使用しています。 テンポラルAAとSSRの組み合わせは 画面切り替わり時に遅延が目立つので、 それらは適宜カット単位で 機能をオンオフしました。
  • 181. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. お品書き 海 空 雲 地形 植物 雪 異世界 破砕 ライティング シャドウ 各レンダリングパス (デカール フォグ SSR SSAO) ポストプロセス 自己紹介/初めに
  • 182. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ポストプロセス ポストプロセスは合成タイミングを いくつか追加して頂きました。
  • 183. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ポストプロセス Occlusion Test Shadow Depth BassPassPrePass Render Velocties Pre Lighting Capsule Shadow Light UITranslu censy SSR Reflection Post Process SQEX After Light 特に「SQEX After Light」のタイミングは ライテイングパス直後に挟み込まれており、 キャラクターの見た目を調整したり、 プロジェクト独自の表現を実現するために 拡張され多用されました。
  • 184. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ポストプロセス シーンカラー(R10G10B10A2) DF依存関係情報(A2)法線(R10G10B10) メタル(R8) スペキュラ(G8) ラフネス(B8) ShadingモデルID(A8) ベースカラー(R8G8B8) AO(A8) 透明度(R8) カスタムデータ(サブサーフェスカラーとか)(G8B8A8) 事前計算済み影の要因(R8G8B8A8) インダイレクトライト 情報(R16) マテリアルから渡せる 拡張データ(G16) ライト減衰情報(B16) オブジェクトID(A16) このポスプロタイミングで独自表現を行う為に Gバッファは一枚増やしており、 Gバッファ内訳は以下のような感じです。
  • 185. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ポストプロセス また、「SQEX After Light」は 専用の制御BPも存在しており、 常にレベルに一つ配置して、 状況に応じて局所的な調整を行いました。 プロパティが大量にあり、 また見た目に直結する重要な機能なので、 プロパティのインポート・エクスポート機能も 整備して頂きました。
  • 186. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ポストプロセス アウトラインのポスプロを このタイミングで処理したり、 バトル中のキャラの 視認性を調整したり、 カットシーン中の演出的な 追加ライティングを ローコストで行ったりなど、 多岐に渡ってプロジェクトで 使用されました。 GPU負荷は約1msです。
  • 187. V F X S T U D Y G R O U P©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ご清聴ありがとうございました! UNREALはエピック・ゲームズ・インコーポレーテッドの商標または登録商標です。 ElasticsearchおよびKibanaはElasticdearch BVの商標または登録商標です。 MAYAはオートデスク インコーポレイテッドの商標または登録商標です。 その他掲載されている会社名、商品名は、各社の商標または登録商標です。