83.7K Views
January 23, 17
スライド概要
2017年1月21日に行われたライセンシー様向けマテリアル管理勉強会の資料です。(登壇者: 株式会社SQEX大阪 林武尊様)
「大規模チーム」、「エフェクト」、この二点を軸に、爆発するマテリアル管理や検証をどのように行っているかを説明しただいております。
時間の都合で本編ではカットされた内容も沢山盛り込まれております。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
Deep Dive 大規模タイトルのエフェクトマテリアル運用 株式会社スクウェア・エニックス 林 武尊 公開版 ©2016 SQUARE ENIX CO., LTD. All Rights Reserved. ©2017
略称について 略称について • 『Unreal Engine 4』をスライド内では『UE4』と記載しています • 『PlayStation®4』も同様に『PS4』と記載しています ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
自己紹介 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
自己紹介 • 林 武尊( TAKERU HAYASHI ) • エフェクトアーティスト • KINGDOM HEARTS シリーズ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
今日お話する内容 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
今日お話する内容 内容 • UE4を使ったPS4の大規模タイトルでの事例 • 経験したことのないスタッフ数 • エフェクトチームでのマテリアルの運用のお話 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
今日お話する内容 前提として‥ • ファンタジックなエフェクトが沢山出る • 色々と四苦八苦したお話 • スライドはDLしてご覧ください ノートの方で大量に補足しています ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
今日お話する内容 講演の目的 • 世の中にまだまだ情報が少なくて苦労した これから取り掛かる方に少しでも参考になって欲しい • 色んな会社さんが事例をどんどん出していって欲しい 今回の講演がそのきっかけの1つになれば嬉しい ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
今日お話する内容 アジェンダ • エフェクトアセットの概要 あるタイトルでの事例 補足事項 • アセット管理 • テクスチャ • アセット管理での工夫 • マテリアル • ファイルサイズの計測 • マテリアルの利便性向上 • チェック環境 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 ここに1つのエフェクトがあったとする ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 エフェクトは複数のエミッターで構成される ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 エミッターはパーティクルの発生源 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 パーティクルを1つだけ生成したり沢山生成したり 1つだけ 沢山 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 1つのエミッターで1つのマテリアルを使う Mat Mat Mat Mat ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Mat Mat
エフェクトアセットの概要 1つのマテリアルに複数のテクスチャを使ったりもする エミッシブカラー Tex A Mat オパシティ Tex B ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 エフェクトのテクスチャはモノクロで十分な場合が多い ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 テクスチャを歪ませるために別のテクスチャも使う エミッシブカラー Tex A Mat Tex B オパシティ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Tex C
エフェクトアセットの概要 千切れていく表現のために別のテクスチャも使う エミッシブカラー Tex A Tex C Mat Tex B オパシティ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Tex D
エフェクトアセットの概要 つまりエフェクトはテクスチャを沢山使う ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 エフェクトのUE4上での参照関係はこんな感じになる エフェクト マテリアル エミッターA エミッターB テクスチャ デフォルト指定 Master Tex Tex Tex Tex MatInst エミッターC 差し替え分 エミッターD ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 次はエフェクトでメッシュを扱う場合について ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 パーティクルは大きく分けてスプライトとメッシュ スプライト ※本スライドでは「スプライトパーティクル」と呼称 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. メッシュ
エフェクトアセットの概要 メッシュパーティクルの場合 元のマテリアルをオーバーライドできる メッシュ Mat Mat ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 もしもオーバーライドできる機能が無かった場合‥ 同じ形状でもマテリアルの数だけメッシュの用意が必要 メッシュ ・・・ Mat Mat Mat Mat ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Mat
エフェクトアセットの概要 エフェクトのUE4上での参照関係はこんな感じになる エフェクト エミッターA メッシュ Mdl マテリアル Mat エミッターB エミッターC エミッターD テクスチャ Tex デフォルト指定 オーバーライド Master MatInst Tex Tex Tex Tex 差し替え分 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 つまり1つのエフェクトでこれだけのアセット量になる Master Mat Master Master Mat Mat Master Mat Mdl Tex Tex Tex Tex Tex Tex Tex Tex Tex Tex Tex Tex Tex Tex Tex Tex Master Mat Master Mat Tex Tex Tex Tex Tex Tex Tex Tex ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Mat Tex
エフェクトアセットの概要 まとめると‥ • エフェクトは沢山のマテリアルを使って表現する • マテリアルとテクスチャを組み合わせる • マテリアルとメッシュを組み合わせる • それらの組み合わせは非常に膨大! ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 実際にどんなテクスチャ・マテリアル・メッシュを 最初に用意するかというと、汎用的なものになる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 エフェクトの汎用アセットはこんなイメージ メッシュ マテリアル テクスチャ Mdl Mdl Mdl Mat Mat Mat Tex Tex Tex Mdl Mdl Mdl Mat Inst Mat Inst Mat Inst Tex Tex Tex Mdl Mdl Mdl Mat Inst Mat Inst Mat Inst Tex Tex Tex Mdl Mdl Mdl Mat Inst Mat Inst Mat Inst Tex Tex Tex ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 メッシュとマテリアルの組み合わせについて メッシュ マテリアル Mdl Mdl Mdl Mat Mat Mat Mdl Mdl Mdl Mat Inst Mat Inst Mat Inst Mdl Mdl Mdl Mat Inst Mat Inst Mat Inst Mdl パーティクル側でマテリアルをオーバーライド可能なので Mat Mat Mat Mdl Mdl Inst Inst Inst メッシュとマテリアルそれぞれ必要数だけの用意で済む ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 マテリアルとテクスチャの組み合わせについて マテリアル テクスチャ Mat Mat Mat Tex Tex Tex Mat Inst Mat Inst Mat Inst Tex Tex Tex Mat Inst Mat Inst Mat Inst Tex Tex 問題はこちらで、マテリアルとテクスチャの組み合わせ分の Tex Mat Mat Mat Tex マテリアルインスタンスを用意しないといけない Inst Inst Inst Tex しかもパラメータ違いなどもあるので膨大な数に及んでしまう ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Tex
エフェクトアセットの概要 マテリアルインスタンスがテクスチャの数だけ増える マスターマテリアル A Mat Inst A Mat Inst B マスターマテリアル B Mat Inst C Mat Inst A Mat Inst B Mat Inst C ただ、マテリアルインスタンスのファイルサイズは極小なので 同じ組み合わせがあちこちに生まれても良しとするのもアリかも ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 マスターマテリアル自体も結構な数が必要になる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 例えばリアル系の世界観でシューターだったりすると‥ 炎、マズルフラッシュ、爆発、薬莢、煙、水飛沫 ‥のような表現したいカテゴリごとにマスターマテリアル を何種類かずつ用意するというような形で済む? ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 しかし、ファンタジーな世界観かつ大量にエフェクトを 作成するためにも、汎用的なマテリアルの組み合わせで なるべく賄いつつ‥ しかし特殊な表現を求められることも多いので 各場面で固有のアセットも必要になる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 そのため基本的には ① 汎用アセットをメモリに常駐させる ② 常駐アセットをフル活用してエフェクトを作成 ③ 読み込みが許容できる範囲内で固有アセットを作成 これが基本的なデータの持ち方になる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 かといって何でもかんでも常駐させる訳にはいかない メモリ使用量・使用効率を考えつつ‥ ゲーム起動時のロード時間とのトレードオフになる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 ではどんなアセットを常駐させるのかというと ゲーム中の読み込み時にネックになるアセット つまりゲーム中の使用頻度が高い上で 「サイズが大きい」ものと「数が多い」もの 今後、ロード処理の抜本的な変更により 細かなアセットのロードも改善されるとのこと ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 では各アセットのファイルサイズはどの程度なのか? 容量が大きくなるのは主にテクスチャだけではなく 現状ではマテリアルもかなり容量を占める マテリアルのサイズはUE4.14で大きく削減されるとのこと ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 UE4.13で計測 テクスチャのサイズ • TC_Default (DXT1) ‥1024x1024で約680KB • TC_Default (DXT5) ‥1024x1024で約1370KB • TC_Alpha (BC4) ‥1024x1024で約680KB • VectorDisplacementmap ‥1024x1024で約5460KB (非圧縮4チャンネル) ※PS4向けにクック後のファイルサイズ / 全てMipmapあり ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 UE4.13で計測 マテリアルのサイズ • マスターマテリアル 標準(半透明/Unlit) 不透明でやや複雑 半透明でDefaultLit デカールでやや複雑 • マテリアルインスタンス マテリアル関数 ‥約110~140KB ‥約230~270KB ‥約470~480KB ‥約280~320KB ‥約1~3KB ‥約1.6~2KB ※PS4向けにクック後のファイルサイズ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 スタティックメッシュのサイズ • 標準的なもの ‥約3~20KB • 重ためのもの ‥約30~70KB ※PS4向けにクック後のファイルサイズ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. UE4.13で計測
エフェクトアセットの概要 これらを踏まえると‥ • テクスチャとマスターマテリアルは常駐の対象 • メッシュは容量は小さめだが使用頻度が高いものは 常駐させて良いように思う • マテリアルインスタンスは容量は極小だが UE4.11~12当時はファイル数が多いことがロードの ネックになっていたので常駐に含めていた 今後のロードの改善に合わせて方針も変わりそう ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 加えて‥ エフェクトはゲーム中に突発的に表示されるものが多い (プレイヤーの技など) 読み込みの観点から、いつでも突然表示される可能性が あるエフェクトは常駐アセットで賄い 読み込みを挟んでもOKなものは固有アセットを併用 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 読み込みOKな例は‥ ・読み込み前提の大技のエフェクト ・ボスのエフェクト(レベルに紐付く) ・レベルに配置する背景エフェクト(レベルに紐付く) ・カットシーンエフェクト(レベルに紐付く) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 理想 メモリに常駐させるアセット テクスチャ、メッシュ、マテリアル 固有アセット プレイヤーの汎用技 汎用的に配置されるもの プレイヤーの読み込み技 ボス 背景エフェクト いつでも出る可能性のあるもの カットシーン レベルに依存しないもの レベルに依存するもの ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 メモリに常駐させるアセット テクスチャ、メッシュ、マテリアル プレイヤーの汎用技 汎用的に配置されるもの 実際 常駐させる固有アセット プレイヤー 汎用配置物など プレイヤーの読み込み技 ボス 背景エフェクト いつでも出る可能性のあるもの カットシーン レベルに依存しないもの レベルに依存するもの ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
エフェクトアセットの概要 以上がエフェクトアセットの概要になります ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
あるタイトルでの事例 ©2016 SQUARE ENIX CO., LTD. All Rights Reserved. ©2017
あるタイトルでの事例 ちょっと特殊なケース 大規模プロジェクトのチーム構成&アセット構成だが ゲーム全体ボリュームは小さめなのでその点は参考程度で ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
あるタイトルでの事例 まずエフェクトのアセット数と容量の結果から ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
あるタイトルでの事例 ○ エフェクトの総アセット数 常駐指定1000 UE4.13で計測 約3000 プレイヤー400 固有アセット1600 ※常駐テクスチャの大多数は実際にはストリーミングされていた 330 603 195 40 211 242 108 215 38 82 353 161 22 1 61 193 125 62 30 6 3 テ ク ス チャ マテリアル インスタンス 関数 メッシュ パーティクル その他 446個 511個 721個 84個 490個 790個 40個 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
あるタイトルでの事例 ○ アセットの総ファイルサイズ 常駐指定100 MB UE4.13で計測 約500 MB プレイヤー80 MB 固有320 MB ※常駐テクスチャの大多数は実際にはストリーミングされていた 98 132 9 21 34 44 67 1 0 0 14 6 52 22 6 0 テ ク ス チャ マテリアル インスタンス 関数 メッシュ パーティクル その他 162MB 200MB 2MB 0MB 64MB 80MB 0MB ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 エフェクトで扱うアセットの種類 作成するもの 編集だけするもの • テクスチャ • スケルトン • マテリアル関連 • アニメーション • スタティックメッシュ • 各種ブループリント • パーティクルシステム • データアセット ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 プロジェクト全体の主なフォルダ構成 content characer level ‥ effect エフェクトはここで一元管理 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 エフェクト全体の主なフォルダ構成 effect player レベルに紐付かないもの enemy level レベルに紐付くもの (背景、ギミック、カットシーン) common useful ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 エフェクト全体の主なフォルダ構成 effect player enemy level common useful 管理者だけ編集可 メモリに常駐させるアセット 常駐させないが汎用的なアセット ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 エフェクト全体の主なフォルダ構成 effect player enemy level common useful ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. 各地にちらばっている 汎用的なアセットを移動
アセット管理 エフェクト全体の主なフォルダ構成 effect player enemy level common useful 使用頻度が低いなら降格 使用頻度が高いなら昇格 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 エフェクト常駐アセットの主なフォルダ構成 common mat_master マスターマテリアル mat_par マテリアルインスタンス(スプライト用) mat_mdl マテリアルインスタンス(メッシュ用) mat_dcl マテリアルインスタンス(デカール用) mdl スタティックメッシュ tex テクスチャ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 マスターマテリアルについて ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 エフェクトのマテリアルで扱う主な要素 • アルファ合成 / 加算合成 • UV周りの設定 • 両面 / 片面 • Dynamic Parameter • Particle Colorの反映 • ソフトパーティクル • 頂点カラーの反映 • フレネル • テクスチャの反映 • ニアフェード • SubUVアニメーション • その他いろいろ‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 これらの組み合わせをそのまま用意しようと思うと‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 マスターマテリアルが組み合わせ爆発を起こす アルファ 両面 ParCol あり VerCol あり 通常TEX 加算 片面 ParCol 無し VerCol 無し SubUV カラー DynParam あり ソフトあり フレネルあり フェードあり モノクロ DynParam 無し ソフト無し フレネル無し フェード無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. 1024種類
アセット管理 なので何を制限・統一するかという話になる アルファ 両面 ParCol あり VerCol あり 通常TEX 加算 片面 ParCol 無し VerCol 無し SubUV カラー DynParam あり ソフトあり フレネルあり フェードあり モノクロ DynParam 無し ソフト無し フレネル無し フェード無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. 64種類
アセット管理 組み合わせを必要最小限にするための精査 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 まずはエフェクトのマテリアルに必要な基本設定から ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Blend Mode • アルファ合成 か 加算合成 か ⇒ どちらも使うケースがある アルファ合成 加算合成 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Shading Model • ライティングあり か 無し か ⇒ どちらも使うケースがあるが基本的には無し あり 無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 両面処理 • 片面 か 両面 か ⇒ どちらも使うケースがあるが基本的には両面 両面じゃないと困る例1 両面じゃないと困る例2 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Separate Translucency • 半透明を別バッファに描き被写界深度の後に合成する またいわゆる縮小バッファとして利用できる あり か 無し か ⇒ 基本的には無し 不 透 明 Separate Translucency OFF 被 写 界 深 度 描画の流れ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Separate Translucency ON
アセット管理 Responsive AA • 半透明へのTemporal AAの影響をマスクする あり か 無し か ⇒ Temporal AAを使用しないので無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 マテリアルアトリビュートを使用 • する か しない か ⇒ 拡張対応面で便利なものの今回は無しで運用 次の機会に使ってみたい ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 次にエフェクトのマテリアルに必要な機能について ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Particle Color • エフェクト側から色を与えるノード構成 あり か 無し か ⇒ 基本的にあり 使用しないのは屈折マテリアルなど一部の例外のみ あり 無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 頂点カラー • メッシュの頂点カラーを取得するノード構成 あり か 無し か ⇒ 不要なものも沢山あるが基本的にあり スプライトパーティクルには必要ないが全てに内包 あり 無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 テクスチャの種類 • TextureSamplerノードで色を与える構成 カラー か モノクロ か ⇒ どちらも使うケースがある Sampler Typeの種類分だけ数が増えるので‥ カラーはDXT1、モノクロはBC4で統一 DXT1 BC4 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 テクスチャの種類 • 余談 テクスチャを使用する か 固定値 か ⇒ マテリアルの種類を増やしたくなかったので 必ずテクスチャを使用する形にした 固定値は1x1ドットの真っ白テクスチャを使う 1x1 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Particle SubUV • フリップブックアニメーションが可能なノード構成 通常のテクスチャ か SubUVを利用する か ⇒ どちらも使うケースがある パターン切り替え時にブレンド補間が可能 全てParticleSubUVにするという選択肢もある? ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 UV周りの設定 • UVのタイリングやスクロール速度を指定する構成 あり か 無し か ⇒ タイリングに関しては基本的にあり 1. 全てのテクスチャノードはタイリング可能 2. メッシュ用ではスクロール速度を指定可能 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 UV周りの設定 • 余談 エフェクト側の機能としてマテリアル全体の UVの90度回転とタイリング数の指定が可能なよう拡張 90度回転 タイリング ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Dynamic Parameter • エフェクト側からの動的な値をマテリアルで取得する あり か 無し か ⇒ どちらも使うケースがある UVスクロールやUVの初期値ランダム用にメッシュ限定で使用 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Depth Fade • いわゆる「ソフトパーティクル」を行うノード構成 あり か 無し か ⇒ どちらのケースもある GPU負荷もあるので全てのマスターマテリアルには含めない あり 無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 Fresnel • いわゆる「フレネル」を行うノード構成 あり か 無し か ⇒ どちらのケースもある 大抵はメッシュパーティクル用途に限られる あり 無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 カメラオフセット • カメラ方向にパーティクルの位置をズラすノード構成 あり か 無し か ⇒ GPUパーティクル用途では欲しい エフェクト側に代替となる機能を追加拡張 なのでマスターマテリアルには含めない ※GPUパーティクルではCamera Offset モジュールが使えないため ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 ニアフェード • パーティクルがカメラに近いとフェードするノード構成 あり か 無し か ⇒ どちらのケースもあるが基本的には無し どうしても欲しい場合は固有マテリアルで対応 ⇒ 後にエフェクト側に機能を追加拡張 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 以上をベースにして必要最小限の組み合わせを決めた アルファ カラー 通常 ソフトあり フレネルあり 32種類 加算 モノクロ SubUV ソフト無し フレネル無し SubUVに統一できるならさらに半分に減る‥ モノクロに統一できるならさらに半分に減る‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 統一性を取るならこのような感じだが‥ アルファ カラー 通常 ソフトあり フレネルあり 32種類 加算 モノクロ SubUV ソフト無し フレネル無し 両面 頂点カラー:あり UVタイリング指定 ・ スクロール速度指定 DynamicParameterはどうしよう‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 スプライトパーティクル用途の場合 アルファ カラー 通常 ソフトあり 16種類 加算 モノクロ SubUV ソフト無し メッシュパーティクル用途の場合 アルファ カラー ソフトあり DynamicParam含む フレネルあり 16種類 加算 モノクロ ソフト無し フレネル無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 さらに千切れマスターマテリアルが欲しいとなった場合‥ アルファ 加算 カラー モノクロ 通常 SubUV ソフトあり ソフト無し フレネルあり フレネル無し 32種類 8 いくつか制限を決めて8種類をリリース‥という感じ モノクロのみに制限できるならさらに半分に減る ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 ただしスプライトパーティクル用のマテリアルを メッシュパーティクルに転用したり、その逆も考えられる ので、設定は統一できるところは統一した方が良い ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 マスターマテリアル構築の基本方針 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 • なるべく汎用性が高い • なるべくシンプルでわかりやすい • なるべくメンテナンスが楽 • なるべく処理負荷に優しい ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 メンテナンスについて • 根幹は1人が整備&管理するのがやっぱり良い ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 シンプルさとメンテナンス性について • Static Switch Parameterを使いたかった 当初は使っていたが、分岐を変えると別シェーダーに なりファイルサイズ増大に繋がったため全て撤廃 スイッチの切り替えは「管理者しか触らない」運用も考えたが うっかり触ってしまうケースを懸念して断念した ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 シンプルさとメンテナンス性について • ブレンドモードの変更はマテリアルインスタンス側で マテリアルプロパティオーバーライドで上書いて 上書いたものだけは孫インスタンスで利用する 別シェーダー扱いになるので管理者のみ行うルール こちらは設定場所が離れていて分かりやすいのでアリとした アルファ 加算 子 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. 子 孫 孫
アセット管理 処理負荷について • PS4実機上で処理負荷をざっと計測して マスターマテリアル構築時に判断材料にした ※具体的なことは後述 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 エフェクトアセットの命名規則 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 かなりガチガチに決めている • テクスチャの場合‥ 作成者 カテゴリ 内容 連番 htx_fir_8x4_00 林作成 テクスチャ 炎 8x4パターン 00番 htx_smk_02n 林作成 テクスチャ 煙 02番のノーマルマップ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. 補足
アセット管理 かなりガチガチに決めている • マテリアル / マテリアルインスタンスの場合‥ 作成者 カテゴリ 内容 機能 連番 合成 hmi_smk_8x4_fs02a 林作成 マテリアルインスタンス 煙 8x4パターン フレネル付 ソフトパーティクル付 02番 アルファ合成 f (フレネル) / s (ソフトパーティクル) / a (アルファ) / k (加算) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理 かなりガチガチに決めている • ParticleSystemの場合‥ V カテゴリ 内容A 内容B vp_aaa_hit1 プレイヤーの 技「AAA」のヒットエフェクト 1番 ve_bbb_ccc0 敵「BBB」の技「CCC」のエフェクト 0番 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. 連番
アセット管理での工夫 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 コンテンツブラウザ上でマテリアルやパーティクルの アセット名とサムネイルでは中身が判断つきにくい でもエクセルやWikiで一覧を作るのも大変だし スタッフがそれを確認しながら作業するのも大変なので‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 タグ付け • マテリアルとマテリアルインスタンスに説明文を記述 できるように拡張してもらった コンテンツブラウザ上でポップアップ表示される ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 タグ付け • パーティクルにもタグ付けの機能を追加してもらった 説明文、担当者、カテゴリ、属性、進捗状況など コンテンツブラウザ上でポップアップ表示される ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 エフェクトアセットサーチャー • パーティクルシステムを検索する専用のツール ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 エフェクトアセットサーチャー • タグの内容や使用モジュールで検索が可能 設定に注意が必要なモジュールを検索したりできる • エフェクトのプレビューも可能 プレビューでのポストプロセスの設定変更も可能 • ツール上からの設定変更が可能 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 アセットの使用頻度を調べたいことがよくある ① 使用頻度が高いものを常駐アセットに昇格させたい ② 使用頻度が少ないものを常駐から外したい ③ 全く使用されていないものを削除したい ‥1つ1つリファレンスビューワで確認する? ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 使用頻度の検索 • セッションフロントエンドで検索可能にしてもらった 参照数0のアセットのリストアップ 行末に参照数を付与してリストアップ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 似たアセットがあちこちで生まれてしまう それらを統合する場合‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 似た絵柄の一覧 • 同じようなテクスチャを一覧して統合したい場合は ローカルコレクションに登録して作業すると快適 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 ちなみにアセット統合時に利用する 「リファレンスの置換」は マテリアルとマテリアルインスタンスの置換も可能 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 大量にあるテクスチャやマテリアルの設定を 一括変更したい場合がある ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 設定の一括変更 • テクスチャの基本的な設定の漏れに関しては たまにプロパティマトリクスで調べて一括変更する マテリアルは昔は使えたが今は使えない模様 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 設定の一括変更 • マテリアルの内部に対して検索をかけ、ノードの設定 を一括で変更するコマンドレットを作成してもらった 実行ファイルで直接アセットデータを書き換える 例1:TextureSamplarノードのSamplarTypeを TC_GrayscaleからTC_Alphaに一括変更する 例2:メインマテリアルノードの設定を一括変更 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 設定の一括変更 • 開発が進むにつれ気軽に一括変換できなくなった ※意図しない設定でエフェクトが調整されているため なので今後は検索して重要な設定の漏れがあるものを リストアップだけして手動で変更する方向で検討 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 巨大なテクスチャの検出 • 巨大なサイズのテクスチャはサイズマップで調べる LOD Biasは反映されないがMaximum Texture Sizeは反映される ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセット管理での工夫 他セクション間でのやり取り • 背景班のアセットを使用したい場合にルールを設けた ① 事前に連絡する ② 基本的にはコピーはしない ③ 共有コレクションに登録する • エフェクトのアセットの削除やリダイレクタ修正で 他の班のアセットに更新がかかる場合は事前確認する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 PS4向けにクック済みのアセットのファイルサイズを計測 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 クックとは 指定プラットフォーム向けに アセットをフォーマット変換する行為 デプロイとは データを開発機にコピーしたりなどの 各プラットフォームで動かすこととその準備 By Epic 篠山さん ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 ナイトリークック • 開発途中から毎晩自動でクック • ログのテキストでクック後のアセットが一覧できる • マクロで集計しやすい形に整形して簡易的に確認 秀丸マクロとExelのVBAマクロを併用した のちに背景班ではPythonスクリプトを用意 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 ナイトリークックの自動集計ページ • クックサイズをグラフで確認できるウェブページが プロジェクトのHP内に用意された 各パートごとのファイルサイズが一目で分かる 日々の推移も確認できる こちらでデータの総容量を確認していた ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 手動でのクック • クック後のファイルサイズを調べるだけなら 実機は必要無いので手軽に可能 専用マップを作ってUnreal Frontendでクック • 少し条件を変えてすぐに再クックするなら5~15分 指定フォルダ内のファイルを検索してファイルサイズ情報も 込みでリストアップ、CSVで出力するツールを利用 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 各アセットをクックして判明したこと ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 PS4向けにクック後のテクスチャ (KiB) UE4.13で計測 ※sRGB = ON ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 PS4向けにクック後のテクスチャ (KiB) UE4.13で計測 GrayscaleはsRGBがONだとPS4でもXboxOneでも4チャンネル扱い VectorDisplacementはアルファチャンネル無しでも4チャンネル扱い ※sRGB = ON ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 PS4向けにクック後のテクスチャ (KiB) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. UE4.13で計測
ファイルサイズの計測 PS4向けにクック後のテクスチャ (KiB) UE4.13で計測 LOD Biasはファイルサイズに反映されるがマイナスの値は反映されない LOD BiasはNoMipmap設定時には当然ながら反映されない MaximumTextureSizeはNoMipmap設定時でも反映される LOD BiasとMaximumTextureSizeは併用しても反映される ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 PS4向けにクック後のメッシュ (KiB) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. UE4.13で計測
ファイルサイズの計測 PS4向けにクック後のメッシュ (KiB) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. UE4.13で計測
ファイルサイズの計測 PS4向けにクック後のメッシュ (KiB) UE4.13で計測 インポート設定のAuto Generate Collisionと Generate Lightmap UVsがONだと約1.7倍のサイズになる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 PS4向けにクック後のマテリアル (KiB) UE4.13で計測 • 条件:EmissiveとOpacityにBC4のテクスチャ2枚 頂点カラーとパーティクルカラーを混ぜたもの テクスチャはUVのタイリング数を指定可能 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 PS4向けにクック後のマテリアル (KiB) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. UE4.13で計測
ファイルサイズの計測 何がクックされるのか? ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 クック時に含まれてしまう要素 • マテリアル内で孤立した未使用のノード群 (テクスチャも含まれる) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 クック時に含まれてしまう要素 • マテリアル内のテクスチャ系のパラメータ化した ノードでデフォルトで設定しているテクスチャ • メッシュにデフォルトで設定しているマテリアル ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 クック時に含まれてしまう要素 • マテリアルやマテリアルインスタンスのエディタで プレビュー用に指定しているスタティックメッシュ • マテリアル関数のInputやOutputノードに プレビュー用に接続しているテクスチャ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ファイルサイズの計測 クック時に含まれてしまう要素 • Cascade上で非表示状態にしているエミッターが 参照しているメッシュ/マテリアル/テクスチャ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 UE4エディタ上でのチェックについて ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 パフォーマンスで指標になるのは シェーダー複雑度、パーティクル数、エミッター数や パーティクルに内包したライトの数や範囲 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 エフェクトのチェックが容易になるように エフェクト台座(Pawn)を作ってもらった ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 エフェクト台座 • エフェクトを1つ指定してプレイ時に繰り返し再生する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 エフェクト台座 • 台座に近付くかレベル開始時に再生 • エフェクトのオフセットの指定も可能 • 台座を中心に周回させる機能 周回速度の指定が可能 周回方向にエフェクトの向きを 合わせる設定もある • チェックで非常に重宝 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 エフェクトを切り替えてのチェックが容易になるように エフェクト切り替え表示アクターを作ってもらった ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 エフェクト切り替え表示アクター • エフェクトをいくつでも登録することが可能 ゲームプレイ時にキーボードショートカットで エフェクトを切り替えて再生できる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 エフェクト切り替え表示アクター • 矢印キー左右でエフェクトの切り替え&再生 スペースキーで現在のエフェクトを再度再生 • 今どのエフェクトが表示されているかはログに表示 • エフェクトをXY軸方向に 好きな数だけ並べられる 指定範囲で等間隔に配置する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 ライティング環境の中でのエフェクトのチェックには 背景班が用意した時間帯を切り替えられるレベルで確認 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 全時間帯が切り替えられるレベル • 朝から夜の10個の時間帯のライティング環境を設定 したサブレベルをショートカットで切り替えられる • PostProcessVoumeアクターの設定もプロジェクトで 標準的な設定にしてもらう • 暗いシーン、明るいシーンどちらでも破綻のない 見た目になっているかチェックする ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 実機上でのチェックについて ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 • エフェクトチーム内の共有ブースでチェック • CPU / GPU の処理負荷は実機で計測 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 処理負荷の計測の流れ • 最低限の構成のレベルを用意 床と平行光源1つとエフェクト切り替え表示アクター • 余計な処理を全てOFF • 垂直同期をOFF FPSの天井を上げる r.VSync 0 t.maxFPS 120 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 処理負荷の計測の流れ • オーソドックスなテクスチャとマテリアルのセットを 5種類用意して、それぞれをエミッターに登録した シンプルな標準想定のエフェクトを基準として用意 • さらに一部の条件を色々と変えたエフェクトを用意 • それらをエフェクト切り替え表示アクターに登録 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 処理負荷の計測の流れ • エフェクト1個では差が僅かで計測しづらいため 単体と25個など同時再生数を変えてそれぞれ計測 • Stat Unitの値でざっくりとチェック バージョンアップごとにはやってられないが どこかのタイミングで一度行っておくと参考になる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 マテリアル関連での計測結果 • • • • • • • • • 基本構成(Unlit) DefaultLit 片面と両面 Fresnelあり ソフトパーティクルあり World Position Offsetあり Powerを沢山入れたもの 極座標を沢山入れたもの DynamicParameter入り ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. UE4.9の頃
チェック環境 マテリアル関連での計測結果 • • • • • • • • • 基本構成(Unlit) DefaultLit 片面と両面 Fresnelあり ソフトパーティクルあり World Position Offsetあり Powerを沢山入れたもの 極座標を沢山入れたもの DynamicParameter入り UE4.9の頃 - CPU/GPU上昇 差は無し GPU微上昇 GPU上昇 差はほぼ無し GPU微上昇 GPUかなり上昇 GPUかなり上昇 UE4.13で差は無し ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 これらを踏まえてマスターマテリアルの構成の参考にした ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 その他 ちょっとしたこと • 最初に班内のメンバーに日替わりでクックしてもらい Unreal Frontendを覚えてもらった • プログラマに負荷チェックのアドバイスを 実機プレイしながらレクチャーしてもらった • テストはDevelopersフォルダで行ってもらう 実機に乗らない実験データや途中段階のデータも キリの良いタイミングでDevelopersに移してもらう ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 その他 ちょっとしたこと • 特別に重たい表現は描画エンジニアに相談 例えばParallax Occlusionは処理負荷を実機で計測 して班内に周知し、使用場面を限定してもらう (大技で画面に1個だけ出る場合ならOKのような) 画面内での描画面積にも気を付けてもらう ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 その他 ちょっとしたこと • 描画に不具合が起こった場合はRenderDocで キャプチャーして描画エンジニアに提出 シンプルなのでアーティストでも使いやすい キャプチャーデータを 提出時には描画のどの タイミングで起こって いるか、大まかに見る くらいはしている ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
チェック環境 その他 ちょっとしたこと • こんなXYZ三軸メッシュモデルを用意しておくと スプライトの挙動やアタッチのチェック等で大変便利 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
補足事項 ©2016 SQUARE ENIX CO., LTD. All Rights Reserved. ©2017
テクスチャ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ 解像度 • なるべく必要最小限にする前提で ゲーム中に表示して許せる解像度にする • 1024 x 1024 を上限の目安としてルール化 • どうしても大きいものが欲しい場合もある (広範囲のデカール、SubUVテクスチャ) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ 解像度 • 単色で良い場合は 1 x 1 で用意 • グラデーションの場合は 1ドット幅で用意 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ 解像度 • 可能なものは 1/4カット、1/2カットで用意 Tilling MethodはMirrorにしておく マスターマテリアルでは全てのテクスチャをタイリング可能にしておく ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ミップマップ • ミップマップの仕様を理解しておく必要がある テクセル密度が高いほどMipLevelが上がる • つまりカメラからの距離だけでなく パーティクルのスケーリングや UVのタイリング数によってMipLevelが変化する 当初は理解していなかったため、GPUパーティクル用に 解像度の低いテクスチャを用意したりしていた‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ミップマップ • カットシーンでもカメラから少し離れてるなら 512 x 512 で十分だったりする • アンコウさん(@dgtanaka)のブログ記事が分かり易い 『MipMapを可視化しよう』 http://qiita.com/dgtanaka/items /2ec0fd88236daa5c3cc7 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ミップマップ • ミップレベルを可視化するマテリアルの紹介 1 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ミップマップ • ミップレベルを可視化するマテリアルの紹介 2 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ Mip Gen Settings • 基本的にはNoMipmapsにはしない MipMapが生成されない分ファイルサイズは減るが 常に最大解像度のテクスチャがメモリに乗るため またエイリアシングが目立つ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ Mip Gen Settings • マテリアル内でタイリングしてスケール調整する例 微調整できるのでスタッフには好まれているが‥ MipLevelが上がるので可能ならやめた方が無難 やるなら専用にNoMipmaps設定にした方が良いかも U2, V2 ※Clamp設定にする必要あり ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. U1, V1
テクスチャ Texture Group • Effectsで統一するルール 一括で内部設定を変えることができる アセットの種類を特定することができる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ガンマ • カラー(DXT1)はsRGBをON / モノクロ(BC4)はOFF モノクロテクスチャはマテリアル内で累乗している また不透明度も累乗しないと違和感が出る問題がある なので不透明度もマテリアル内で累乗するよう対応 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ガンマ • Powerで2.2乗せずMultiplyでの2乗で良しとした 2.2乗 2.2乗 2乗 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. 2乗
テクスチャ ガンマ • 頂点カラーもリニアな値なので2乗する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ガンマ • 一目で分かるようマテリアル関数化 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ガンマ • 2.2乗から2乗へ移行する際はテクスチャをPhotoshop のレベル補正で中間ポイント0.91あたりで調整する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ ガンマ • すると調整前のテクスチャに2.2乗した結果と 並べてみてほぼ分からないくらいに一致する 2.2乗 2乗 調整済み ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ Compression Settings • 圧縮設定をBC7はVectorDisplacementmapの 代わりに使用して大幅にファイルサイズが減らせる? ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ Maximum Texture Size • テクスチャの最大サイズはLOD Biasでは無く Maximum Texture Sizeで指定した方が良い NoMipamapでも反映される / サイズマップにも反映される ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ X(Y)-axis Tiling Method • 特に意図が無ければ基本的にはWrapから変えない 同じ絵柄でWrapとClamp両方用意するのは避けたい ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ Use Legacy Gamma • 国際基準のsRGB IEC61966-2.1に対応したので Photoshopと一致させるにはチェックをOFFにする ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ Never Stream • 基本的にONにはしない 全てのMipLevelをメモリ上に乗せてしまうから • ただしどのMipLevelも使用頻度が高いならONもアリ また炎のようにディティールがあるものも検討対象 一発目のロード時間を念頭に入れつつ設定する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル Separate Translucency • ONとOFFが混在すると描画順に影響が出る なので基本的には統一した方が良い これによってマテリアルの運用に影響が出る 不 透 明 Separate Translucency OFF 被 写 界 深 度 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved. Separate Translucency ON
マテリアル Separate Translucency 採用 • 基本的にOFFにする場合 ゲーム中に被写界深度があり、影響を受ける ただし影響を受けたくない場合にSeparate ONの 汎用マテリアルを別途用意&管理する必要がある プログラマにデフォルト設定をOFFにかえてもらった • 基本的にONにする場合 ボケを擬似的に表現するマスターマテリアルを 別途用意&管理が必要? ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル Usage • 必要最小限の設定にしたい しかし汎用マテリアルには 最初から設定しておきたい ので‥ Particle Sprites Beam Trails Mesh Particles の3点はチェックONで運用 Static Lightingも入れといてOKかも ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル 独自の設定項目 • プログラマにマテリアルの詳細パネル内に 専用の項目を追加してもらった チェックボックスをONにするだけなのでとても楽 例:エミッシブカラーの値の露出補正への対策など ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル 0除算対策 • Divideノード使用時にはBポートに0が入る可能性を 考慮して0.0001をAddするなど対策を行う 実際に描画の不具合の原因だったことが何度かあった Addの方が高速で、厳密にやるならMaxやMinやClampが良い(篠山さん) ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル 同一テクスチャの複数回の参照 • 複数のTexture Parameterにマテリアルインスタンス 内で同一テクスチャを複数指定した場合、その数だけ サンプリングされてしまう ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル SamplerType周りの注意点 • テクスチャのSamplerTypeがAlphaの場合は Rチャンネルの値を使用するようにする プラットフォームで赤く表示される可能性あり / R を使用するのが無難 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル データ型周りの注意点 • 入力する引数が一致しているのはOK 基本的に引数が 多いのはOK 少ないのはNG ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル データ型周りの注意点 • 入力する引数が一致しているのはOK 基本的に引数が 多いのはOK 少ないのはNG ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル データ型周りの注意点 • ただし注意が必要な場合もある ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル データ型周りの注意点 • ただし注意が必要な場合もある ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル 工夫しがいのある部分 • DynamicParameterノードの利用先 定番はUV周りの設定? ここで吸収することでマテリアルインスタンスの数を 一気に減らせるので何気に重要 • ParticleColorノードの色以外への利用先 EmissiveColorが固定値で良い場合に活用できる 例えば屈折マテリアルでは屈折の強さに使用している ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル 工夫しがいのある部分 • ParticleRandomノードの利用 GPUパーティクルに限定されるものの パーティクルごとに0~1のランダムな値を与えられる UVスクロールの初期値ランダムやSubUVの 開始パターンのランダムに利用するなどが考えられる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアル 工夫しがいのある部分 • Static Component Mask Parameterノードの利用 BC7を使用して4チャンネルを使い分ける構成ができる ただし切り替えで別シェーダーになるため注意が必要 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 説明文の記載 • 汎用アセットのマテリアル、マテリアルインスタンス、 マテリアル関数にはしっかりと説明文を記入する コンテンツブラウザでポップアップ表示される ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 説明文の記載 • マテリアル関数のInput / Outputノードには 説明文を記載する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 マテリアル関数のカテゴリの設定 • マテリアル関数は検索しやすいようカテゴリを設定 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 デフォルト値の設定 • マテリアル関数のInput / Outputノードには 適切なデフォルト値を入力して Use Preview Value as DefaultをONにする ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 デフォルト値の設定 • マテリアル内でパラメータ化したノードや DynamicParameterに適切なデフォルト値を入力する テクスチャの場合クックされることに注意する ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 デフォルト値の設定 • コンテンツブラウザ上で何のマテリアルか分かるよう テクスチャノードにアイコン画像のテクスチャを 指定してサムネイル化する工夫をした ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 パラメータの値の制限 • パラメータには可能なものは値に制限を付ける インスタンス側でスライドバーでの確認が容易になり マイナス値など想定外の値で使用されるのも防げる そうすると後のメンテナンスが楽になる ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 パラメータ名の設定 • 親マテリアルを差し替えた時パラメータ名が同じだと 設定した値を引き継いでくれるので、パラメータ名は シンプルでストレートなものが良いが、その前提で‥ ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 パラメータ名の設定 • Group名の並び順を指定できないので基本要素の 「1 Emissive」「2 Opacity」「3 Normal」など 一部だけ先頭に連番を付けた ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マテリアルの利便性向上 UV周りの計算順 • UVは先に速度を与えてからタイリングさせると良い タイリング数を変えてもスクロール速度が変わらないので設定が楽 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
最後に ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
最後に • 開発が進むと大きく変更するのが厳しくなるので 最初に考えられることはできるだけ考えるのが良い • 初めてだとUE4の機能や仕様の把握、実機で出すと どうなのかという検証などにとても労力がかかった なので積極的に情報交換した方が良いように思う • 今後のDeepDiveもとても楽しみ! ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
最後に 長時間お付き合いくださりありがとうございました! 駆け足でお見苦しかったらすみません 後日ゆっくりスライドを見て頂けたらと思います ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
最後に 何かご意見やご質問等ありましたらこちらまで お気軽にメールください! [email protected] ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ご清聴ありがとうございました! Unreal Engine 4 は Epic Games 社の商標または登録商標です。 PlayStationは株式会社ソニー・インタラクティブエンタテインメントの商標または登録商標です。 その他掲載されている会社名、商品名は、各社の商標または登録商標です。 ©2017 SQUARE ENIX CO., LTD. All Rights Reserved.