43K Views
March 27, 19
スライド概要
※本セッションには多くの動画が含まれていたり、ノートに備考が記載されている可能性があります。実際の講演で行われたスライドが下記からダウンロード可能ですので、是非そちらをご覧頂けますと幸いです。
講演パワーポイントリンク: https://epicgames.box.com/s/8mmgpxjfgbvk86wdfs23t0xbqwzfrrcu
登壇者
細川 拓馬さま
内容
エフェクトに関するエンジンの改造事例。どこを改造したか、改造してのメリットやデメリット、独自の追加機能などエフェクト関連の改造事例を紹介していきます。
本スライドは2019年3月15日に行われた「UE4を用いた大規模開発事例紹介 ~スクウェア・エニックス様をお招きして~」にてスクウェア・エニックス様に講演していただいたものです。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
UE4におけるエフェクトの為のエンジン改造事例 株式会社スクウェア・エニックス ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. 細川 拓馬 VFX STUDY GROUP
スライドについて ・PowerPointファイルをEpic様より公開いただいています https://epicgames.box.com/s/81hfj5f4ormna09fx3dvismbn40cjjeo ・スライド内の動画はPowerPointファイルのDLにてご確認ください ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
略称について ・『Unreal Engine 4』をスライド内では『UE4』と記載しています ・『Particle System』を『PS』と記載しています • 『Particle System Component』を『PSC』と記載しています • 『ブループリント』を『BP』と記載しています ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
自己紹介 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
自己紹介 細川 拓馬 • スクウェア・エニックス プログラマー • 経歴 2007年入社 エネミーやギミック、ツールなどを担当 とあるプロジェクトではVFXプログラマー エンジンの改造や拡張、デザイナーのサポートをしてきました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容について ご注意・・・・ • その前に・・・このセッションについて • エンジン改造が前提のお話しです。 • もしかしたら標準で出来ることもあるかも・・・ • BPや標準機能のお話はありません。 • 全ての拡張を網羅しているスライドではありません。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容 • 自己紹介 • 環境について • なぜ拡張したのか • 改造のメリットとデメリット • 改造した物と作った物 • おまけ • まとめ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容詳細 • 環境 • Type Data Module • GPU Particle • Automation • なぜ改造したか • GPU Particle • 特殊Module • マテリアル関連 • 改造方針 • 特殊Module • デバッグ • その他 • メリットデメリット • Emitter Module • Cascadeの改造内容 • Particle Module • Attach System • 並列化 • Particle System改造 • 既存 Moduleの拡張 • Tool • Niagara • Matinee • まとめ • PSC改造内容 • ポスプロ Module • Emitter改造 • 外部制御Module • VFX Manager • Module追加について • MaterialModule • Commandlet ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容 • 自己紹介 • 環境について • なぜ拡張したのか • 改造のメリットとデメリット • 改造した物と作った物 • おまけ • まとめ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について 改造開始時期 • 最終バージョン • UE4.17.2 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について • どこで? • 改造、拡張はどこで? • エンジン側のプロジェクトで改造 • プラグインやゲーム側のプロジェクトでもテストしてみた。 • 色々エラーが出たのでエンジン側のプロジェクトで作業 • ENGINE_APIなどを追加しないとクラスが読めない・・・・ • UDNでお願いするのが面倒・・・ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について 主な改造、拡張箇所 • Editor周り • Particle System全般 • 既存Moduleの拡張と新規Module作成 • エフェクトのアタッチシステム作成 • 関連の処理 • Tool作成 • デバック環境 • 最適化 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について • エフェクトの改造、拡張のベース • エディター • Cascade • アセット • Particle System • Component • Particle System Component • Module • FXSystem • その他は必要に応じて作成。 基本的には既存のクラスなどを流用 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について • エフェクト用のBPは専用Actorを作成 • レベル上のエフェクト配置は専用アクター • 拡張系の処理にアクセスするため。 • 配置後に分かりやすくするため。 • ゲーム側の処理にアクセスしやすいため。 • カットシーンではAEmitterを使う事も容認 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について 生成処理 • エフェクトの生成環境 • プログラム、BPから自由に生成 • デフォルトオブジェクトで作ることもある。 • 関数は”Spawn Emitter”系を拡張した物を使用。 • デザイナーはアタッチシステムを利用して生成。 • Notifyなどを利用して生成 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について 主な改造、拡張箇所 • コードの改造、拡張時にはコメントを必ず残す。 // v SQEX_CUSTOM_○○○○ v [○○対応] /*○○対応*/ // ^ SQEX_CUSTOM_○○○○ ^ [ここまで。] ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境について:作 成 M od ule • 作ったModuleについて… • Base含めて100個ほど追加しました。 • 描画系 :26 • Spawn系 :19 • Particle制御 :18 • Emitter制御 :15 • ポスプロ制御 :8 • 実験系 :7 • マテリアル制御 :4 • 外部制御 :2 • Parameter制御 :2 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容 • 自己紹介 • 環境について • なぜ拡張したのか • 改造のメリットとデメリット • 改造した物と作った物 • おまけ • まとめ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
なぜ改造したのか ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
なぜ拡張したのか : その 1 • デザイナーがUE3やUE4を検証した結果、、、 • 結果:厳しい意見が出た。 • 機能面が足らない。 • エフェクト一つで起承転結が作り辛い • エフェクトの作成速度の問題 • 最終的なエフェクトの品質 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
なぜ拡張したのか : その 2 • Cascadeの開発停止 デザイナーからの要望が叶う事が無い。 • 新Effect開発環境 いつまでも来ない。。。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
なぜ拡張したのか : その 3 • BPでのエフェクト作成は難しい! • 当初はBPのノードを駆使してエフェクトを作れないかと考えた。 • 結果 デザイナー:BP制御でのエフェクト作成が難しい。 • 直観的ではない • BPは分かり辛い • 画面一つで完結しない。 • など意見が出て難しいことが分かった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
なぜ拡張したのか: 改造 決 定 改造決定!! ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
なぜ拡張したのか: 改造 決 定 • 当初の方針 • そこまで拡張はしない。 • UE4を選択した以上はそこまで無理をしない・・・ • BPも使っていこう。 • 足りない機能は無理せず作る。 • ツールはプラグインで作る。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
なぜ拡張したのか: 改造 決 定 • 実際の方針 • そこまで拡張はしない。 • それなりに改造、拡張する。 • 描画回りのModuleも追加していく。 • 足りない機能は無理せず作る。 • 足りない機能はなるべく作る。 • BPで補えるところは補おう。 • 基本はParticle Systemで制御する。 • ツールはプラグインで作る。 • 変わらない。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容 • 自己紹介 • 環境について • なぜ拡張したのか • 改造のメリットとデメリット • 改造した物と作った物 • おまけ • まとめ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のメリットと デ メリ ッ ト ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のメリット メリットに感じたこと・・・ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のメリット • 標準で出来ないことが出来る。 デザイナーの要望に応えやすくなる。 制作効率が上がります。 クオリティーも上がります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のメリット • BP関連の問題が発生しなかった。 コードでの拡張が殆どなので、BP関連の問題は出なかった。 コードだと不具合が出ても調査しやすい。 最適化がしやすい。 BPをコードに置き換えることも無かった。 コードだから分かりやすい。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のメリット • 実験的な作業が自由にできます。 • 空のプロジェクトでの実験が容易。 空プロジェクトは起動が早い ゲーム側のプロジェクトは起動が凄く遅い。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のメリット 自由にできる!! ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のメリット 改造してデメリットと感じたこと ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のデメリット • アップデート地獄 • 3ヶ月の間隔でやってくるアップデート • 約2週間の開発ストップ!最大1.5ヶ月ストップ! • アップデートはマージ作業と確認作業 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のデメリット • 改造、拡張は自己責任 • 不具合はUDNに聞いても改造済みの場合は対処が難しい。 • まずは通常版で発生するかを検証する必要がある。 • 対処されても2,3個次のバージョンで反映だったりする。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
拡張のデメリット • 他プロジェクトとのエンジン共有が難しい ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容 • 自己紹介 • 環境について • なぜ拡張したのか • 改造のメリットとデメリット • 改造した物と作った物 • おまけ • まとめ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
作った物や改造し た 物 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e • Cascadeエディターの改造 • エフェクト停止、コマ送り • キーボードから操作可能 • 3DViewの拡張 • 表示情報の拡張 • Timeline • Motionの移動をXTopで移動 • 拡張ビュー • カメラ情報の保存 • カーブエディターの拡張 • ポスプロの設定 • Distributionの追加 • カメラリセット • Alt+クリック挙動の追加 • Locked Axes不具合対応 • Preset Emitter • Emitterの追加が楽になる。 • Emitter Viewの拡張 • 親子関係の色分け • 閉じた時の名前表示 • 同名Emitterへの対応 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e :Tim elin e • Timeline Emitterの寿命などが一目で分かるようなTimelineを実装 • Emitterの寿命やカーブのKeyの視認性向上 • カーブデータのKey追加や移動 • Moduleのパラメータ変更 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e :拡 張 ビュ ー • Cascadeの拡張ビュー • Module&Emitterのプリセットリスト • ModuleやEmitterのプリセットを検索 • ダブルクリックでModuleやEmitterを追加 • 各種ショートカットボタン • 簡易Emitterリスト • Emitterの切り替え • 位置変更 • Emitterの開閉 • ShaderComplexityの切り替え • Solo Mode • ワイヤーフレーム • Bounds • MotionのON,OFF • Geometry表示 • RealTimeの切り替え • など • ループ切り替え • Moduleの追加削除 • 検索機能 • etc ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e カーブ関連 • カーブエディター関連 • Module選択で直接カーブエディターに表示 • 標準はカーブボタンをクリックしないと表示されない。 • これがかなり不評だった。 • Current Tabは一切使用していない。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e カーブ関連 • カーブエディター関連 • 軸表示のボタンをAlt+クリックの挙動を 追加 • 全軸表示時 : X軸をAlt+クリック = X軸のみ表示 • CurveデータもAlt+クリックで制御可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e カーブ関連 • カーブエディター関連 • Locked Axes時の不具合の修正。 • Locked Axesで軸を指定すると、 カーブデータで編集できる軸が標準UEだと壊れたまま。 • これはUDNでは修正しないという答えがついたので対応 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e カーブ関連 • Distribution関連 • Distributionのタイプを追加 • デザイナーからの要望で作成 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e :カ ー ブ関 連 • SQEX Distribution • 最大と最小値に偏りがあるランダム • FloatとVectorを用意 • カラーやサイズなどに設定可能。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e :カ ー ブ関 連 • SQEX Gauss Distribution • 正規分布感覚のランダム ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e :3 DVi e w の拡 張 • エフェクト停止、コマ送り • エフェクトの停止とコマ送り機能を追加 • ショートカットキーとボタンを用意 • カメラ座標を保存 • PS側に終了時のカメラ座標を保存 • 再びCascadeで開かれた時に終了時のカメラを再現。 • めちゃデカいエフェクトの場合は便利! • カメラ位置をリセット • Home Keyでカメラ位置をリセット • エフェクトの位置を見失ったときなどに利用します。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e :3 DVi e w の拡 張 • 3DViewの拡張 • Preset Emitter • 事前に用意されたEmitter • 基本セットはコードに組み込んである。 • プリセットはアセットベースで追加が可能 • Data Assetにプリセット用のPSが設定が可能。 • 特殊な設定をしたものを自由に設定できます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Cascad e :3 DVi e w の拡 張 • Cascade上のPSCのTransform制御 • 表示しているPSCの座標、設定できる項目を追加。 • 特定の回転やスケール時のみ不具合が起きるとかの確認に便利。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Particle System ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System • Particle System • SQEX Tag • 半透明優先 • ソートオフセット • 改造:半透明の描画順の計算時の距離に下駄を設定できる。 • Cast Shadow • デカール影響度 • ベースカラーとスケール ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Tagの入力 • SQEX Tag • エフェクトに対するコメントの設定 • 担当者の設定 • タスク状態の設定 • Moduleの内容(bitフラグ) 設定 など 専用のツールで検索することも可能です。 • 今後はタスク状態などを外部の情報と連携させる。 CBなどでの表示 • 例:アセットの説明追加 UPROPERTY(EditAnywhere, Category = "SQEX Tag", AssetRegistrySearchable,meta = (DisplayName = "説明") FString Description; ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System • Particle System • ソートオフセット • 半透明の描画順を決めるためのキーにオフセットを設定 そうすることで、同一座標のエフェクトでも描画順を制御できます。 • 標準の”TranslucencySortPriority”では大きなくくりでしか制御できない。 ソースファイル:”TranslucentRendering.cpp” “CalculateTranslucentSortKey”内の”SortByDistance”で求められる“SortKey”に オフセット値を加算するだけでチラつきが抑えられる。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System • Particle System • ベースカラーとベーススケール • PS側に設定できるエフェクトのカラーとスケール • 全体のParticleのColorやSizeに反映される。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Particle System Component ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent • Particle System Component • Tick Groupの追加と変更 • サウンドアタッチ • Group ID • Dynamic Material化 • ループエンド受け取り • 親の速度などの情報を取得 • EmitterのLOD最大時に動作停止 • エフェクトのフェード • 外部との連携 • エフェクトの再生ディレイ • Instance Parameter拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent • Tick Groupの変更と追加 • デフォルトを”DuringPhysics”から” EndPhysics”変更 • 他の更新の後にする必要があった。 • 標準でも”HasPhysics”をTureにすると” TG_PrePhysics”にはなる。 • “LastEffectUpdate”を追加 • 他の処理が終わった後に処理するエフェクト用 • そのフレームのプレイヤー情報やカメラ情報を必要とするエフェクト用 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent • 他のTick Group • SQEX PostUpdateTransform • Early • SQEX LevelScript • 攻撃判定など • LevelScriptActor用 • SQEX PostUpdateManager • SQEX PrePre Physics • 通常キャラよりも先に動作したいキャラ用 • Pre Physics • Start Physics • マネージャー系の処理 • SQEX LastEffectUpdate • 最後に処理したいエフェクト用 • During Physics • Post Update Work • End Physics • Last Demotable • Post Physics • Newly Spawned ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent Group ID • Group ID • エフェクト生成時に設定されるエフェクトの識別ID • 例:同一エフェクトを使用しカラー • 0:通常発生 • 1:強化状態で発生 など、分けて同じエフェクトでも状態を分けておく。 • 設定は生成時に行われる。 • アニメーションに紐づけることが多く。 • アニメーション切り替え時にEffect Group IDを設定して再生することで、 そのGroupIDがエフェクトにもセットされる。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent Group ID • Group IDと一致するエフェクトのみ処理 • エフェクトの生成処理 • エフェクトの終了 • パラメータ制御 • 特殊処理の通知 • など ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent サウンドのアタッチ • サウンドのアタッチ • エフェクト発生時に再生するサウンド • エフェクト終了時に発生せる事も可能 • 通常は無条件で再生 • Group IDと一致する時のみ再生も可能 • 設定は専用のData Assetで設定 • サウンドは複数設定可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent サウンドのアタッチ • サウンドのアタッチ • その他 • Emitterへアタッチ • Emitterにアタッチしないと不自然なSEもある。 • Tail系の座標履歴へのアタッチも可能です。 • 長めの軌跡エフェクトでも自然にSEをアタッチ • 全て” UParticleSystemComponent::FinalizeTickComponent”で処理 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent • エフェクトのフェード • エフェクトのフェードイン、フェードアウトが可能 • マテリアル側でParticle ColorのAlpha値を利用している必要 • フェード処理は専用のModuleからも可能 • 基本はBPやプログラムから実行する。 • Moduleを利用してエフェクト自身でフェード処理を行う事も可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent • エフェクトの再生ディレイ • エフェクト生成してから処理するまでのディレイ • EmitterのDelayとは別の処理。 • PSCのTick Componentが処理を処理するまでのディレイ • 主に生成時に外部から指定されることが多い ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Com ponent • Instance Parameterの拡張 • UObjectをParameterに追加 • アタッチしているMeshや他のオブジェクト認識用に追加 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Par ticle System Emitter ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • 区間ループ機構 • Near Clip Fade • Emitterの動的生成 • Emitterの置き去り機能 • Coordinatesの置き換え • LODの拡張 • Emitter優先度 • マテリアルでEmitter Timeを取得 • View距離でのParticle数制御 • Emitter Spaceでのローカル化 • Finalize Tick追加 • バッチング処理 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter 区間ループ機構 • EmitterTimeの処理を変更 設定例 • Emitterに”Loop,InLoop,Loop End“の概念を追加 “FParticleEmitterInstance::Tick_EmitterTimeSetup”とは別の処理を作成 • 理由 • 拡張する理由のトップ • エフェクト一つで表現するために区間ループが必要だった。 • 通常版の”EmitterTime”の更新だと拡張の妨げになった。 • “EmitterDelay”を設定すると取得する場所によって時間が変わる。 • Time更新時に”EmitterDelay”分引いて、Tickの最後に加算する処理がある。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • エフェクトの終了処理 • Loop中に専用の終了通知を受けるとLoopEndの処理をして終了 • 標準の”Deactivated“が挙動が怪しいかった。 • 無限寿命のParticleの対応 • 無限寿命のParticleだと標準では思い通りに消えない? 標準だと即消えてしまったりしてしまう? ループしていても無限寿命のParticleが自然に終了されるように対応 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Emitterの動的生成 • 親Emitterに“Parent Module”を設定し任意の タイミングで子Emitterを生成 • また子ではなく、ただ生成するだけも可能。 • 初期化でEmitterを生成しない処理を追加 • 標準のままだと生成したタイミングでEmitterが 生成されてしまうため。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Emitterの動的生成の拡張時の罠 • Emitterの生成と削除を繰り返すと無限にEmitter Instanceが増加 • 通常のUEではEmitterはDeleteされるが、 Emitter InstanceのリストはNullが設定されるだけ。 リストから不要になったEmitterを削除する処理を追加していた。 • 4.12で描画回りの最適化が入った。 • その影響でEmitterの動的生成も影響を受けました。 • 今のバージョンでの動的Emitterの追加と削除には注意が必要 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Emitterの動的生成の拡張時の罠 • Emitterの動的生成を実装時は • “FParticleSystemSceneProxy”内の TArray<FParticleVertexFactoryBase*> EmitterVertexFactoryArray; このリストの中身が適切かどうか確認する必要がある。 • 増えたり消えたりすると、リストの内容と合わなくなる。 このアップデートによる不具合がとても印象的だった・・・・ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Emitterの動的生成の拡張時の罠の解除 • 解決策としてEmitter固有のIDを作成 キャッシュリストから取得する方法に変更 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Coordinatesの置き換え • Emitterの座標、回転、スケールの制御が可能 • “Transform Module”で制御 • 基本は加算式で制御されます。 • カーブを利用して制御します。 • ランダム値や固定値も利用できる。 • Emitterのビルボードが可能 • “FParticleEmitterInstance::UpdateTransforms”の置き換え ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • 親子関係 • Emitter間で親子関係を組める。 • 例 • 真ん中:Root :回転 • 2番目:子Emitter:回転+スケール • 3番目:孫Emitter:回転 • 引き継げる内容 • 座標、回転、スケール、カラー情報など • 引き継ぐ内容は”Takeover Module”で決定 • その他の情報も共有可能 • 座標履歴やParticle情報 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Emitter優先度 • Emitterに優先度を設定することが可能です。 • 通常Emitterは生成順にリスト化されますが、 優先度を設定することで、 処理や描画の順番を制御することが可能です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • カメラとの距離でParticle数の抑制 ・カメラとの距離が離れるとParticle数を制御する処理 カメラとの距離とBound RadiusからSpawnRateを求める。 • 別の設定で、近い場合にParticle数を減らす設定もある。 • 標準のLODだとミスが発生する可能性があるので、 背景エフェクト以外は殆ど利用していません。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • LODの拡張 • LOD切り替え時に再度ParticleをBurstさせる。 • LOD最大レベル時のTickComponent停止 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Near Clip / Fade • カメラとの距離でParticleのSizeやAlphaを制御 • Fadeの開始距離やAlpha等の最小値は自由に設定できます。 • Alpha値が0.0fになるとParticleサイズを0.0fにする。 • 処理 • CPU系のParticleは各頂点データ計算時に処理 • GPU Particle系は描画時にシェーダ側で計算 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Emitterの置き去り機能 • Emitterの座標をWorld上に置き去ります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Emitter • Emitter SpaceでParticleをローカル化 • 標準:通常 • 標準:Local Space ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. ・拡張:Emitter Local Space VFX STUDY GROUP
改造:Emitter • 無限寿命Particleに関する制御 • 無限寿命のParticleもループエンド後に自動的に削除。 • 削除するタイミングはEmitterの寿命などを考慮 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle Module ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Moduleの追加について簡単に紹介 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module • Moduleの追加自体は簡単 1. クラスを用意 • “UParticleModule”を親とするクラスを用意 • “UCLASS”に” abstract”を設定したクラスがベースになる。 2. コンストラクタの宣言 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module • それはどんなModule? • Particle生成時に処理する? = bSpawnModule • Emitterの更新時に処理をする? = bUpdateModule • 他のModuleの更新後に処理する? = bFinalUpdateModule • ループ時に処理する? = • スレッドセーフ? = CanTickInAnyThread() bRequiresLoopingNotification • PSCのFinalizeTickで処理するように拡張 • デバック表示が必要か? = bSupported3DDrawMode ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module • Module作成で気を付けること • GPU Particleで処理する場合は宣言が必要 • “bUpdateForGPUEmitter = true;”にする。 • Mesh Particleの回転を制御する? • “TouchesMeshRotation()”で“true”と返す必要があります。 • 並列動作時に参照される可能性があるカーブデータがある。 • CanTickInAnyThread()内で“Distribution::OkForParallel()”をコール ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module • Particleに情報を追加する。 • “UParticleModule::RequiredBytes”で追加したいデータの 構造体のサイズを返します。 • するとParticle一個で確保するサイズが増加します。 • 参考例 • FHoge* HogeData = (FHoge*)((uint8*)&Particle + HogeDataOffset); • “HogeDataOffset“は”UParticleEmitter::ModuleOffsetMap”にあるので、 一致するModuleのサイズを取得して使用 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module • Emitter用の情報を追加する。 • Moduleで使用するEmitter毎の情報も追加することが出来ます。 • “RequiredBytesPerInstance”で必要な構造体サイズを返します。 • Particleの追加データと同様に” ModuleInstanceOffsetMap”にオフセット が設定されているので、そこから引っ張ってきます。 • アクセス FHogeData* HogeData = (FHogeData *)(Owner->GetModuleInstanceData(this)); ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module • “Distribution”のご利用は計画的に・・・ • UObjectの数が増えます。 • GCで問題になることも・・・ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module • Type Dataの追加は少し違う • “UParticleModuleTypeDataBase”を親とするクラス • 新しい“Emitter Instance”クラスを用意 • “CreateInstance()“で追加した”Emitter Instance”をnew • Type Dataは”Render3DPreview”が呼ばれないので拡張 • 3Dデバックが出来ない。 • あとはEmitterInstanceに処理を書く。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 作成して有用だったModuleのご紹介 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 生成 系 • Spawn Module ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • Range • Parent Particle Pos • Ring • Spawn PS • Any Vertex Spawn • Spawn Sea Surface • Bone Attach • Raycast • Vertex Spawn • Spawn Actor • Quadrangle • Spawn Parent History Pos • Spawn Fluid ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • 拡張生成系Moduleの概要 • 標準のSpawn系の高機能版のModule • 他の生成Moduleの併用可能 • Emitterの生成にも利用可能 • 子Emitterの生成位置の為に利用可能 • EmitterをRing上に配置したいなども手軽にできます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 生成 系 生成系 • Ring • 任意頂点からParticleを生成 • 最低1点~自由に頂点数を設定 • 外側、内側と別々に半径設定が可能。 • ドーナツ型も作れます。 • 扇状にすることも可能 • 頂点間から発生させることも可能 • 基本はランダムな頂点から発生させていることが多い。 • 頂点順に設定するとリングを作りなら粒子を生成するようなエフェクトが手軽にできる。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • Range • “Sphere Module”の高機能版 • 発生の偏り • 発生角度 偏りパラメータ例 • 縦軸から何度の範囲で発生するか指定 • Meshは球の法線方向に向く • 0.0:完全に中心 • 0.2:中心付近に発生しやすい • 0.5:球内にランダム • 0.7:外側に発生しやすい • 1.0:完全に外側 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • Any Vertex • Ring同様に球状の頂点を自由に設定可能 • 上下の頂点を消すことでシリンダーも可 • 縦横のスケール制御も可能 ひょうたん形状や円錐等の形状も出来ます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • Raycast • レイチェックするModule • EmitterやParticleの発生位置チェック • Beam系のEnd位置の自動チェック • ヒット位置の法線に生成した物体を傾けることが可能 • 生成条件を指定 • ヒットしたポリゴンの”Physical Material”をチェックする。 • 水や土の時のみ発生させたり、 逆に一致しない時のみ生成することもできます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • Spawn PS • 別のエフェクトを生成するModule • 基本的には生成したEmitterへアタッチ • アタッチしない置き去りも可能。 • 生成したエフェクトのカラーやスケール値など自由に変更可能。 • Dynamic化してマテリアルのパラメータも制御できる。 • 自由なタイミングでループエンド出来る。 • 生成系Moduleと併用してRing上に別のエフェクトを生成するなどが可能。 • Emitter親子関係で作るよりは並列化されるので負荷が隠蔽されやすい。 • 半透明の優先もある程度適切になる場合がある。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • Spawn ParticleSystem実装時のご注意 • 他のComponent制御はFinalizeTickで • Emitter InstanceにFinalizeTickを追加する拡張が必須 • Cascadeの更新は一つのPSCしかやってくれない。 • 複数のComponentを更新する場合は拡張が必須 • “UCascadeParticleSystemComponent::ParticleTickComponent” で制御したいComponentの“TickComponent”をコールする必要があります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 生成系 • 頂点発生系 • Skeletal Meshの発生とStatic Meshの頂点から発生する専用のModule • Skeletal Meshであれば直接アクセスして取得します。 • 任意のSkeletal Meshの頂点情報を削除している場合は、 CPUでアクセスできるように拡張します。 • Static Meshの場合は別途データを用意した。 • 直接使用する場合は”AllowCPUAccess”にチェックを入れる。 • 実機でアクセスできるようにします。 • 頂点カラーは別途データを用意 • 本プロジェクトは頂点カラーをカラーとしては利用していないことが多いので、 別のデータを用意する必要がありました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : Type Data Type Data(描画系Module) ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module :Typ e data, 描画 系 • Control • Restraint Tail • Skeletal Mesh • Tail Shape • Decal • LineRoad • Tail Shape Ex • Thunder • Triangle Particle • Tail Polygon • Dynamic Shape • Tail Tube • Fragment • Tail Mesh • LineRoad Mesh • Tail Mesh March • Gather After Burst • GPU Fluid • Tail Mesh Circulation • Grass Force ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. • Voxel Mesh • GPU Mesh Particle • 2D Fluid VFX STUDY GROUP
改造:Module :Typ e Data • Contorl • Emitterなどの制御系Module • 画面効果、外部制御などのModuleを設定 • ParticleのSpawn処理をしない。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : Tail • Tail:しっぽ機能 • イメージは”Ribbon, Anim Trail”の高機能版 • Emitterの座標履歴を利用 • 座標履歴は骨情報の利用や、外部から設定可能 • 先頭から末尾までの制御が可能 • 0.0f~1.0fでカラーやサイズを制御 • 履歴制御用のModuleで座標履歴を加工 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : Tail • Tail Shape • Tail系専用Module • 描画系と同じ名前ですが、こちらは座標履歴を制御するModule • 先頭から末尾までのサイズやカラーの制御 • 上記のパラメータのスクロール • Particleの回転(ツイスト) • その他のオブジェクトと干渉する機能。 など、Tailの座標履歴に関係する処理を色々やります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : Tail • Tail Shape • ツイスト機能 • 先頭から末尾までのParticleを回転させます。 • 先頭から末端まで何回転するかを設定。 • 例:ツイスト状態でUVを2倍にしたもの。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : Tail • Tail Shape • Scroll機能 • 先頭から末尾までのスケールやカラーを スクロールさせる機能です。 •例 上から下へParticleのスケールをスクロール ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : • Tail Shape • SpriteをEmitterの軌跡上に配置するエフェクト • Particleをルール通りに配置するので、 サイズや長さを指定することできます。 • 標準のSpawn PerUnitでも似た表現は 出来るが、より制御しやすくなっている。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : • Tail Polygon • リボンの高機能版みたいな物。 • これも標準のリボンとは違い成形しているので 不自然に長い、短いが出ない構造 • 最大4ラインのポリゴンで描画 • 縦横をAlphaやカラー制御が可能。 • UV制御 • UV反転機能 • 軌跡の移動距離をUV値に変換する機能 • U値をカーブで制御 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : • Tail Tube • TailPolygonをチューブ状に描画 • 立体感のある軌跡エフェクトを 作ることが可能 • ポリゴンのライン数など細かく設定可能。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : • Tail Mesh • Spriteの代わりにMeshを描画するTail • 鎖などの表現で利用 • 表現別にTail Mesh MarchとTail Mesh Circulationがある。 • これは特殊な表現の為に作成しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : • Tail Mesh • Tail Mesh March • Tail Mesh Circulation ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : Tail • Tail Wave Module • Tail系専用Module • 座標履歴を加工するModule • 指定方向に座標履歴を伸ばす。 • 揺らぎを設定 • 一定間隔でランダムな方向を座標履歴に加える。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : Tail • Tail Noise Module • Tail系専用Module • 座標履歴を加工するModule • 座標履歴のスケールやカラーにノイズを設定 • ノイズのかかり具合もカーブで制御可能 • 徐々にノイズが広がって消える。も可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 : Tail • Tail Inertia • Tail系専用Module • 座標履歴に慣性や遠心力を加えるModule • 慣性のつもりで作っていったが、 標準は遠心力っぽい • パラメータを負の値を入れると慣性っぽくなる。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 • Decal • PSCからDecal Componentを生成 • BPを使用せずにデザイナーだけでDecalの制御が可能 • 透明度やサイズなどをCurveで制御 • ループエンドなどで綺麗に消せます。 • エフェクトと同じ時間を共有 • マテリアルのTimeでエフェクトと同じ時間が取得可能 • スローなどの演出が簡単 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 • Tail Decal • 他のTail系同様の処理でDecalを描画 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 • Skeletal Mesh • Skeletal Meshを生成して制御するModule • 任意のアニメーションが再生可能 • 指定時間で停止させた状態で生成可能 • ループエンドで別モーションの再生などいくつかの機能があ ります。 • Meshの頂点からParticleの生成可能 • 複数のSkeletal Meshを生成しアタッチが可能 • 外部からのMesh指定 • 生成したMeshのマテリアルパラメーターの制御も可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 • Dynamic Shape • 動的にスプリング形状のMeshを生成 • 現状一つの形状のみ • スプリングなら結構自由な形状が作成可能 • UV制御可能 • 十字ポリゴン ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 描画 系 • 他にも特殊表現用に専用のType Dataを作成 • Particle Systemのみ作成されたボスとかあります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : Em itter 制 御系 Emitter制御系 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Emitter制御系 • All Fade • Take over • Component Cutoff • Init Scale • Emit Init Transform • Parent • Emit Transform • Raycast ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Emitter制御系 • Transform • Emitterの座標系を制御するModule • 座標、回転、スケールを制御 • 重力の設定が可能。重力落下出来る。 • Velocityの設定が可能。加速度を付けて移動が可能 • カーブを書いたり直接値を設定するなど自由です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Emitter制御系 • Init Transform • Transform計算時のベースとなる値 • Emitterのループ毎にランダムな値に変更することも可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Emitter制御系 • Parent Module • 親子関係構築用のModule • 任意タイミングで子Emitterを生成できます。 • Particleの死亡時などにも生成することが出来ます。 • 生成数の指定が出来ます。 • 座標、回転、スケールのオフセット • 生成した子Emitterのループエンド制御 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Emitter制御系 • Takeover Module • 親Emitterの何を引き継ぐか設定す るMdoule • 複数の引き継ぎタイプ • 自身のParticleがEmitterのどの要 素を引き継ぐか指定も可能 • Mesh Particleのビルボード時に Emitterの影響を無効化 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Emitter制御系 • Component Cut Off • Componentの影響を制御 • 初期はTakeoverと一緒だった。 • Takeoverが複雑になってきたので分離 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Attach Particle • Depth Offset • Curl Noise • Sphere Force • Box Force • Particle Color • Local Particle • Particle Location • Particle Around • Particle Rot • Raycast • Particle Scale • Mesh Pivot • Particle State ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Attach Particle Module • ParticleをアタッチするModule • Glow系のParticleやMesh Particleを制御によく使います。 • ParticleがEmitterの座標や回転値と同期する。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Depth Offset Module • Particleの描画時の深度にOffsetを設定できるModule • Clip空間で計算 • ”Pixel Depth Offset”の半透明版 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Local Particle Module • Particleをローカル化します。 • Emitterからの相対位置を計算します。 • EmitterLocalSpaceを実装するまではこちらを利用していた。 • Module利用の場合はGPUParticleには使用できない。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Local Particle Module • Tail系の座標系のローカル化も担当 • 座標履歴をローカル化 • 座標履歴そのまま ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Mesh Pivot Module • Mesh ParticleのPivot • Mesh ParticleのPivotが無かったので実装しました。 • Mesh Particleの重心を調整が可能 • 実装例 • “MeshPivot“をUniformBufferなどでシェーダーに渡す。 • MeshParticleVertexFactory.ush float4 CalcWorldPosition(FVertexFactoryInput Input) float4 location = float4(/*Pivot Offset*/MeshParticleVF.MeshPivot.xyz, 0.0f) + Input.Position; float3 WorldPosition = mul(location, Transform).xyz + ResolvedView.PreViewTranslation; ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Particle Location Module • Particleの生成位置からの座標オフセットするModule • 疑似的なバウンドをさせたり、X軸方向に移動してから、 元の位置に戻るParticleなどが作成できます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Particle制御系 • Particle Rot/Color/Scale Module • Particleの角度やカラー、スケールを設定するModule • それぞれ別々のModule • 標準のMesh Particleの回転用Moduleが使いづらいと言う話から生まれた。 • 標準だとRot Rateのパラメータが分かり辛い。 • 初期回転値、回転アニメーション、それに対してのスケール値で制御 • 回転の制御単位は度 • EmitterTimeでのCurve制御が可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module : 既存 Mo dul e の拡 張 既存Moduleの拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:既存Modul e の 拡 張 既存Moduleの拡張 • 既存Moduleの拡張 • Mesh Particleの拡張 • Actor Collision Billboard • Initial Size 複数Mesh • Sub UV 連番対応 • UV置き換え機能 • Dynamic Module ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Mesh Particle その1 • Billboard拡張 • Camera Facingとは別の処理を追加 • Camera FacingやLock Axisが不評 • カメラビルボード、軸ビルボード、スクリーンビルボードがある。 • Emitterの軸も利用可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Mesh Particle その2 • 複数のMeshを一つのEmitterで処理できるように拡張。 • 一つのEmitterに複数のMeshを設定して、 Particle毎にランダムに表示するMeshを変えることが出来ます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Mesh Particle その3 • Meshの連番アニメが使えるように拡張。 • 設定した複数のメッシュを一つのParticleで切り替えて表示 • 連番の再生速度や時間がカーブで設定可能 • そこそこ良い感じにアニメーションしているように見せれる。 • 連番リストは複数設定可能 • プログラム側からどのMeshListを使うかも指定できます。 • これによってエフェクトが空中ではこの連番、 地面に着地してからはこの連番という事も可能です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Mesh Particle その4 • Meshを外部から指定できるように対応 • BPやプログラムから使用したいMeshを設定することが可能 • 同じエフェクト、同じEmitterでも描画を指定できる。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • UV置き換え機能 • UVの反転 • UVの回転 • UVのスケール これらを”Required”から制御できるように拡張 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Dynamic Module Emitter Instance側にDynamic Parameterの値を保持 • Random使用時にTail系(Ribbon)系のエフェクトでDynamiParameterの値 を取得するとParticle毎に値が違うので困ることがあった。 加算値を取得できるように対応 • MaterialでTimeをスケールしてUVスクロールの速度制御に使用していた。 スケール値で動的に変化させると、不具合が起こるので加算値の対応をし た。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Dynamic Module • Particle毎に加算値を取得できるように対応 • GPU Particleで使用できるように拡張 • Emitter Instance側にDynamic Parameterの値を保持 • Instance Parameterでも外部から指定すれば可能 • 例: • 左:Emitter側に保存したランダム値 • 右:通常のUniformランダム ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Actor Collision • Mesh Particle時にMeshのBoundsを無視する処理を追加 • 標準ではMeshのBoundsのサイズを必ず使用していた・・・? • レイチェックのサイズをParticleサイズとは別のサイズでチェック • 衝突後にヒット座標が直接セットされていた。 その影響でパカつくことがある。 セットしないフラグを追加して対応 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Initial Size • Particleの反転機能 • 指定確率でSizeが反転するように対応 • 無改造でもMirrorタイプはあるが要望により実装した。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 既存Moduleの拡張 • Sub UV • UVのランダム開始を追加 • Requiredの“InterpolationMethod”にUVのランダム開始タイプを追加 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Post Process 制御系 Post Process制御系 • Post Process制御系 • Filter • Post Fringe • Radial Blur • Post Aura • Screen Blur • Post Glare • Bloom Radial Blur • Gauss Blur ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Filter • 種類 • 「合成」「加算 」「減算 」「ネガポジ反転」「グレースケール」 • 特定のキャラのみマスクする機能付き。 • おまけでアウトライン表示機能を付けています。 • グレースケールでアウトラインを出すと昔のアニメ風になります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Filter • 種類 • 「合成」「加算」「減算」「ネガポジ反転」「グレースケール」 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Radial Blur • Radial Blurを制御します。 • 放射状にブラーを発生させます。 • シーンカラーを使用してピクセルを 引き延ばしながら作り出す放射ブラー ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Screen Blur • スクリーンブラーを制御します。 • 1f前のシーンを拡大しながら合成するBlur ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Bloom Radial Blur • 現在のフレームの絵を使用してピクセルを引き延ばしながら作り出す放射ブラー ブラー対象画像を作成するときに、特定の情報抽出を行う(高輝度を抽出) • ブラー画像との合成は「加算」合成としているため、 より明るくなってしまうが、AlphaBlendよりもきれい。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Gauss Blur • ぼかし用のフィルター本来はUI専用だったものを VFX側でも利用できるように拡張してもらった。 • ぼかし度とぼかし幅が制御可能。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Post Fringe Blur • 色収差制御用のModule • 標準にもあるScene Fringeの値を制御 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Post Aura • 特定のメッシュの縁にぼかした輪郭を描画する • アルゴリズム • 対象者を抽出 フルサイズで深度情報、シーンのアルファ情報、対象者の印を出力 • ダウンサンプリングを行い16分の一のサイズにする。 • ダウンサンプリングした情報を1ピクセル分縁を拡大する。 • 深度情報をみつつガウスブラー • 拡大した小さい画像を参照しつつ、情報が入っている場合はブラー処理を行う。 • 深度浸食を行わないように深度情報はボカさずに運んで合成 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module Post Process制御系 • Post Glare • 特定のメッシュ全体をぼやっとさせる • オーラ表現と同じような処理で表現 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 外部制御系 外部制御系 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 外部制御系 • Camera Shake • カメラシェイクを実行するためのModule • 既存のカメラシェイクの改造版 • BPで設定したシェイク時間、シェイク力などを オーバーライドできるようにしてあります。 • カメラとの距離に応じてカメラの揺れを自動で調整 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module 外部制御系 • Change Scene Color • シーン上のライトの強度を調整可能 • 大技時に暗くしたりするのに使用 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module マテリアル制御系 マテリアル制御系 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:マテリアル 制 御系 • マテリアル制御系 • マテリアルのDynamic化 • Material Scalar & Vector制御追加 • Material Aura • Material In Light ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module マテリアル制御系 • マテリアルのDynamic化をチェック一つで対応 • 各EmitterのRequiredにフラグを追加 • 動的にマテリアルのパラメータを制御する場合はチェック • 生成したマテリアルはPSC側で保持しておく必要がある。 • GCで回収される。 • ” UParticleSystemComponent::GetUsedMaterials”で取得できるようにする。 • PSC側で保持しているマテリアルは上記の関数で取得できるようにする必要があり ます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module マテリアル制御系 • マテリアルのDynamic化の対応 • 各EmitterのRequiredにフラグを追加 • 動的にマテリアルのパラメータを制御する場合はチェック • 通常は”CreateDynamicMaterialInstance” 関数をコールする必要がある。 • 生成したマテリアルはPSC側で保持しておく必要がある。 • GCで回収される。 • ” UParticleSystemComponent::GetUsedMaterials”で取得できるようにする。 • PSC側で保持しているマテリアルは上記の関数で取得できるようにする必要があります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module マテリアル制御系 • Material Scalar&Vector • マテリアルのパラメータを制御するModule • 通常は“SetScalarParameterValue”や”SetVectorParameterValue”で制御 • 毎フレーム制御することも多いのでパラメーター名をキャッシュ • エフェクト側のマテリアルも制御可能 • アタッチ先のMeshのパラメータも制御可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module マテリアル制御系 • Material Aura • キャラに含まれているオーラ表現制御用 • エフェクトからはオーラカラー等を設定 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Module マテリアル制御系 • Mat InLight • 内部発光を制御するModule • エフェクトからは発光度合いやカラーを制御 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:GPU Par ticle GPU Particle ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:GPU Par ticle GPU Particle • Simulation Shaderの拡張 • カールノイズ、コリジョン追加、その他挙動追加 • パラメーターTextureの追加 • カラー用、ParticleのSate用、Dynamic用、Target座標用 • カーブデータの追加 • DynamicModuleがGPU Particleで使用できるように拡張 • Warmup時にParticle情報がリセットされないように対応 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:GPU Par ticle GPU Particle • カールノイズの実装 • Vector Fieldが無くてもノイズでの移動が可能 • VFはデザイナーには不評 • VFも使用可能 • Noise用のIntensityはカーブデータ • Particle TimeかEmitter Timeで制御可能 • GPU Particleの場合は専用のShaderコードを追加 • ノイズ値をカラーやParticle Sizeへ利用する事も可能です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:GPU Par ticle GPU Particle • SphereとBoxのコリジョン判定を追加 • “Depth Collision”や”DistanceField”の代わり。 • プレイヤーなどに設定されている。 • いくつかのエフェクトは自動的に反応 • 判定情報は256x256のテクスチャー • 反応するタイプ定義が可能 • プレイヤーやエネミーなど反応タイプが設定可能 • ヒット時の挙動をいくつか用意 • スライド、反射、吸収、スライド+吸収 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:特殊表現 特殊表現 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:特殊 • Voxel Mesh • Voxel用の範囲にチェック用の座標が、 入るとCellが表示されるエフェクトです。 • Meshのボーン情報を利用して、 ある程度の形状が作れます。 • 専用のCPを作成して計算してあります。 • 例だと9000個ほどのCellを表示しています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:特殊 特殊 • GPU Mesh Particle • 大量のMeshを処理する必要があったので作成 • こちらも専用のCPで処理 • 専用に作りすぎて通常のGPU Particleほど汎用的ではない。 • 連番メッシュが使用可能です。 • Mesh Particleの処理が利用可能です。 • プレイヤーの一通りの攻撃に反応します。 • ダメージを受けて消えます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Ef fect Debug System Effect Debug System ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造: Ef fect Debug System ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Ef fect Debug System • Effect Debug System • エフェクト用のデバックシステム • Stat Unit等で表示するmsと同じ計算をして処理時間を表示 • PSC、Finalize、GPU Spawn等の処理時間を計測して表示 • 一定間隔で前回の負荷との差を表示 • 攻撃後やカットシーン中などに見て負荷が高いシーンなどを、 デザイナーでも簡単に確認できるようになっている。 • エフェクトの発生位置にエフェクト情報をデバック表示。 • エフェクト自体が出ていない不具合は、実際にエフェクトが出ているかチェック • 各種ショートカットを実装 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Debu g System • Effect Debug System • エフェクトのリスト表示 • リスト表示ではレベル上の情報より詳しい情報を表示 • 座標、回転、スケールなどの情報や並列化情報など • PCSの負荷情報や、詳細情報にはEmitterInstanceごとの負荷などを表示 • 負荷の高いエフェクトの報告がある場合はこちらを利用して確認することもある。 • 負荷毎にリストをソートも出来る。 • Emitter数やParticle数も表示しているので、 負荷が高いシーンなどではまず実機でこちらを見ることが多かった。 • その後それぞれの計測ツールで見る感じです。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Debu g System • エフェクトをどこでも生成できる機能。 • 自動負荷チェック • 全エフェクトを再生して負荷をチェックする。 • Automationで月一ぐらいで測っていた。 • 自動デバックシステム • 別のセッションとは別の機能。 • 適当に攻撃し続けて不具合をチェックするのに使用した。 • 昔に作った物。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
改造:Debu g System • 負荷チェック • Zキーを押して負荷計測を開始 • 再度Zキーを押すと負荷処理を停止します。 • 計測中のエフェクトの表示数やStatの負荷などを平均化 • それらの情報を元に攻撃などのアクションの負荷を簡易的に計測。 • 計測した情報は”csv”ファイルにして出力 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • Effect Attach System • 専用のComponentを作成 • 機能概要 • エフェクトを生成してMeshにアタッチする。 • 生成したエフェクトの管理 • 生存チェックし生成回数などを制御 • 生成したエフェクトのパラメータ制御 • ‘’ のVisibility制御 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • 生成方法 • Notify • Notify State • BPのノード • プログラムコード • Matinee用のEffect Attach Track ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • データの設定や作成方法 • アタッチには専用データ • 全ての生成方法で同じデータ構造を利用 • NotifyやTrackにデータを直接設定 • 外部のData Assetにデータを作成 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • エフェクトの生成管理 • Group IDで管理 • Group IDはアニメーション再生時やプログラムから設定します。 • 設定したGroup IDがデータが(逆条件も可能) • 同じ:生成する。 • 違う:生成しない。 • 特殊条件での生成分け • 水の中を潜っている時など特殊条件のみ生成する、しないを設定できます。 • 再生回数設定 • 同じデータを何度も生成しないような仕組み。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • カメラへのアタッチ機能 • アタッチデータにはカメラへアタッチする機能も付いています。 • 標準でも”CameraLensEffect”がありますがそれを拡張した物を生成 • カメラの位置に生成するだけの機能もあります。 • 回転やスケールの影響を受けない設定 • “AbsoluteRotation”や”AbsoluteScale”でのフラグ制御 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • アタッチ方法とアセットの参照について アタッチ方法 Code Attach Data Particle System BP Attach Data BP Attach Data Attach Data Asset Effect Attach BP Node Effect Spawn Attach Data Asset Track Meta Attach Data (Animation) Meta Attach Data (Animation) Notify Attach Data 参照先 Area Custom Data PS参照先 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • エフェクトの終了について • モーション切り替え時の動作 • 終了させる • プログラムやBPなどでのアニメーション変更時の処理 • 何もしない • 外部で終了通知をさせる必要があります。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • エフェクトの終了について • エフェクト終了時の動作 • ループエンド • フェードアウト • 設定時間後にループエンド • 何もしない(エフェクト寿命に任せる ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Attach System • エリア専用エフェクト • アタッチデータの設定でエフェクトデータを、 エリア専用のデータテーブルから参照することも可能です。 • 特定のアクション時に発生するエフェクトが、 このエリアだけ違う場合に利用 • 雪や雨エリア • など • データテーブルはWorld Settingにバインドされています。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Tool ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Attach Data Editor • Effect Attach Dataの編集ツール • 大量のモーションに設定されたNotifyを 一覧と編集出来る。 • まれに起こる大量のモーションの編集が 必要になった時に利用。 • 全てのリストで編集可能状態にすると 重たいので基本はラベル表示。 • 編出したいものにチェックを入れて編集 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Pr eview er • エフェクトやMesh用のビューアー • Cascadeを開かなくてもエフェクトのチェックが可能。 • エフェクト以外にMesh系のビューアーも兼ねている。 • 専用のSQEXTagでの検索機能がある。 • 担当者検索 • Module検索 • など ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ef fect Pr eview er • その他 • アタッチチェック • Skeletal Meshにアタッチ • PSのプロパティー編集 • Bound Size編集 • PSなら編集可能 • エフェクトのエラー検出 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Matinee ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Matinee : エフ ェ クト 用 トラ ッ ク • Matinee用のトラックを作成 • マチネ用にアタッチや生成用のトラックを作成。 • 基本はアタッチシステムや、生成系の処理と同じ。 • マチネ限定としてエフェクトの終了用のトラックを用意 • Nofity側でも要望があり提供を考えたが、 実装すると不具合が発生する可能性が大だったので見送った。 • プログラム側で消していないのにエフェクトが消える。など。 • シームレスなイベントで位置だけあった。 • パラメータ制御用のトラックを追加 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
VFX Manager ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
VFXM anag e • VFXManage • VFXManagerと言うシステムを用意しました。 • エンジン側とゲーム用のプロジェクトと連携用 • ゲームの状態や動的に生成したエフェクトのリストの保持や チェックをしている。 • エフェクトの一括削除などのManagerを通して行う。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Commandlet ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Com m andlet • 特定のパラメータ編集やマテリアルのパラメータの 一括変更などの対応の時に利用。 • エフェクトのエラーチェック時にも利用 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
E r r o r チェック機能 • エフェクトのエラーを検出する機能 •例 • 無限に寿命を持たないParticleを生成するループエフェクト • LOD切り替え時にPartilceが増え続ける。 • BurstでParticleを生成する設定にしている時に、LODが戻るとParticleが増える 現象があった。 • 次回のプロジェクトでは早めに実装しようと決めた機能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
E r r o r チェック機能 • LOD数や旧式のModuleを使っているエフェクトの検出 • Emitterを別のエフェクトにコピーするとLODもおまけについ てきて、不具合の物になることがあった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Automation ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
エフェクトの参照 リ スト • レベルから参照されているエフェクトの一覧を出力する機能を実装 • イベント用のエフェクトが配置&マチネに設定されているかをリスト化して 欲しいと言う要望があったので実装 • エフェクトと参照数やエフェクトのパスを出力します。 • どんなエフェクトが使用されているかリストで分かるのは便利。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
マテリアル関連 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
マテリアル関連:Tim e ノー ド 拡張 • Timeノードを拡張 • Emitter時間を取得できるようにノードを拡張 • これによりエフェクト毎にスローになったりする時にでも 簡単にマテリアルの表現をスローにできます。 • 他にもChara,Envなどのタイプもある。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境用のカラー取 得 用の ノ ード 追 加 • 環境カラー • エリア毎のベースカラーを設定出来る。 • Material側で専用ノードを使用してレベル上のベースカラーを 取得できる。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境用のカラー取 得 用の ノ ード 追 加 • 環境用のカラー • 専用ノードで取得できる値 • ベースカラー • ブライトカラー • ダークカラー • カラーの合成値 • 専用のData tableに設定します。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
環境用のカラー取 得 用の ノ ード 追 加 • 環境用のカラー • 特殊な空間のみ色を変えたい場合。 • Trigger Boxで情報を上書きすることで、特定の場所専用の色を付けたエ フェクトを制せすることも可能です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
オプティカルフロー • オプティカルフロー • 要望により実装したノード • 連番テクスチャーのアニメーションを滑らかにするノード • Textureの輝度から移動した位置を求める。 • スローで見た時に効果が分かる。 • Optical Flow • Cross Fade • そのまま ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
その他 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
お掃除機能 • お掃除機能 • 生成しているエフェクトをすべて削除する機能を追加した。 • イベントが発生する前など動的に生成していたエフェクトをす べて削除する場合に使用する。 • 基本は動的に生成したエフェクトは全て消えます。 • 生成時のフラグでお掃除の対象にならないようにすることも可能 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
最適化 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
並列化 • 並列化 • 今は普通に並列化できているかもしれないが、 以前は並列化のフラグを有効にするとすぐにハングしていた。 • エディター側でも並列動作されるように拡張 • 全Moduleにスレッドセーフかどうかのフラグを追加したり、 カーブデータの並列のチェック対応が必要 • 描画回りの改造で不具合がよく出たりしていたが何とかなった。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
並列化 • 並列化 • Emitter InstanceにFinalize Tickを追加 • スレッドセーフに出来ないModuleはFinalizeTickで処理。 • “Distribution::OkForParallel()”をコールする必要があるので、 全Moduleチェックして対応 • Type DataやRequiredのModuleもチェックする必要がある。 • 標準では通常のModuleのみ? ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Em itter 整理系 • 不要なEmitterやModuleを削除したりする機能を追加 • 開発終盤のデータ整理の時期に対応した機能。 • EmitterやModuleで無効にしている物を削除する。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
Ind ir ect Lighting Cache をOF F • Indirect Lighting CacheをOFF • Unlit系のマテリアルを設定されているエフェクトは IndirectLightingCacheをOFFにする機能を入れました。 • 一部エリアでエフェクトの生成時などでILCの負荷が激増した。 • 原因はエリアの設定でもあったが、ILCが不要なエフェクトも多いの で、全エフェクトをチェックしてOFFに。 • 専用のCommandletを用意しました。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:実験系 • 2DFluid • 実際に使ってはいませんが2DFluidも実験していました。 • 次回は使用できるように頑張りたい。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:実験系:バ ッチ ン グ 処 理 • バッチング処理 • 同じエフェクト、同じマテリアルであれば、 Drawを1回で済ませるようにする処理。 • 背景で大量に置かれていて、カメラが近づけないものに使用しようと思ってい たが、あまりなかった。 • 負荷自体はカメラに近いところにあるエフェクトが問題になることが多かった。 • 対応したところ、Drawの負荷が結構下がったので機能としては良かったかなと 思う。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:実験系:M ateri al Parame ter • Emitterからのマテリアル制御 • Emitterの項目にShader Parameterという項目を追加した。 • パラメータやTextureを自由に設定することが出来る。 • Dynamic化やマテリアルインスタンスを増やさなくても、 Textureやパラメータを制御できるので、良かったが・・・・ • 実装時期が遅かったため、今回は見送り・・・ • 次回はしっかり設計して導入したい。 • シェーダーはそのまま乗っているので、使用できるようにはなっている。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:実験系 • PSC Poolシステム • 標準でもPoolシステムとして実装されている。 • こちらも独自に実装してみた。 • 同じエフェクトならどのComponentでも使いまわせるようにしてみた・・・ • 失敗 • Task graphでエラーが出る。 • PSCの並列化の影響。 • 時間が無かったため諦めた。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:Module 数な ど の統 計 • Module数などの統計 • 全エフェクトから色々データを集計しました。 • 総PSAsset数:8,892個 • 総Emitter数:47,409個 • 総Module数:420,672個 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:Module 数な ど の統 計 : Mod ul e Moduleの使用数&使用率ベスト10 カラーとサイズの制御系Moduleが上位に来ています。 1. Scale Color /Life • 39217(82.7%) 2. Initial Color • 38167(80.5%) 3. Size Scale • 37659(79.4%) 4. Initial Size • 36942(77.9%) 5. SQEX Emit Transform • 36529(77.0%) またEmitterを制御するModuleも上位に来ているの 6. SQEX Take over • 29953(63.1%) はほぼ必須のModuleだからです。 7. Lifetime • 28199(59.4%) またInit系よりScale系が多いのが複数設定して、制 8. Dynamic • 18180(38.3%) 9. SQEX Attach Particle • 16746(35.3%) 10. SQEX Particle Rot • 12095(25.5%) これは殆どのエフェクトが制御しているという事の ようです。 御しているエフェクトが多いからのようです。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:Module 数な ど の統 計 : Mod ul e Spawn系の使用数&使用率ベスト10 生成系Moduleについて。 1. SQEX Range • 8383(47.5%) 2. SQEX Ring Spawn • 4360(24.7%) 3. Initial Location • 1626(9.2%) 4. SQEX Quadrangle • 1148(6.5%) 5. SQEX Bone Attach • 604(3.4%) 基本順当な感じです。 6. SQEX Spawn PS • 592(3.4%) Initial Locationが上位に来ているのは、 7. Sphere • 292(1.7%) Quadrangleという上位Moduleが出来るまでは利用 8. SQEX Any Ver Spawn • 287(1.5%) 9. SQEX Raycast • 188(1.1%) 10. SQEX SpawnSea • 127(0.7%) RangeとRingが上位に来ているのでParticleを生成 するEmitterに使われていたようです。 していたからだと思われます。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
おまけ:Module 数な ど の統 計 : TypeData TypeDataの使用数&使用率ベスト10 1. Mesh Data • 20187(42.5%) 描画系のModuleについても統計を取りました。 2. CPU Sprite • 10397(21.9%) MeshDataが一番よく使われていた描画データとなり、 3. GPU Sprites • 8520(17.9%) 次にCPU Spriteこれはスプライトでグローなどをよく使用す 4. SQEX Control • 5476(11.5%) るのでその結果だと思います。 5. SQEX Decal • 1317(2.7%) あとはEmitter制御系が多くその次にDecalです。 6. SQEX Tail Polygon • 882(1.86%) 7. SQEX Tail Shape • 208(0.43%) 8. SQEX Skeletal Mesh • 86(0.18%) 9. SQEX Fragment Mesh • 62(0.13%) 10. AnimTrail Data • 57(0.12%) これはDecalの需要が多かったという事だと思います。 数が少ない方が需要ではなかったという事ではありません。 Meshに関してはSimple Meshを作ろうとしていました。 この結果を見たので次は作って使用しようかと思います。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
今後の課題 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
今後の課題:Niag a ra • Niagara ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
内容 • 自己紹介 • 環境について • なぜ拡張したのか • 改造のメリットとデメリット • 改造した物と作った物 • おまけ • まとめ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
まとめ ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
まとめ • エフェクトの改造はエンジン側のプロジェクト • ツールはプラグイン化 • Moduleの沢山?作成 • 描画系Moduleはちょっと複雑で影響が大きい。 • 改造すると一度はアップデートで地獄を見る…かも? ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
まとめ • 改造の影響度 • 個人的に感じた改造の影響度(もの凄く個人的な感想です) 改造部分 影響度 内容 PS拡張 小 Registry追加ぐらいは楽 PSCの改造 小~中 座標系の拡張は中 Emitter改造 小~中 内容次第。動的生成は少し面倒 Module追加 小 Spawn系は影響小 他のComponent制御 中 他のCom制御は並列有なら中 描画系追加 大 描画系はShader追加となると大 シェーダー 大 描画の仕組みが変わると地獄 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
まとめ • 標準のままで大丈夫ならそれが一番 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
まとめ: • それでも。 • 最終的には改造、拡張してよかったと思いました。 • 当初のBPで頑張ろう!の方針だとデザイナーも苦労する。 • PG側もBPのデバックを結局しなくてはならい。 • パフォーマンスも出なかったかも・・・ • 結果ネイティブコードで拡張した事で • 自由に出来た。 • 楽しくプロジェクトを遂行できた。 • 途中苦労もあったが… ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP
ご清聴ありがとうございました! Unreal Engine 4 は Epic Games 社の商標または登録商標です。 その他掲載されている会社名、商品名は、各社の商標または登録商標です。 ©2019 SQUARE ENIX CO., LTD. All Rights Reserved. VFX STUDY GROUP