43.3K Views
July 06, 20
スライド概要
講演動画はこちら
https://youtu.be/6SoaPTX_vvw
スライドデータはこちらからダウンロード可能です
https://epicgames.box.com/s/locsql9m36jcx0rx5xsj9ia85hk2p8cl
発表者:斎藤 修(Epic Games Japan)
本スライドは2020年7月5日に行われた勉強会「 UE4 VFX Art Dive Online」の講演資料となります。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
豚×京都 ~UE4でなろう破壊神~ Epic Games Japan Technical Artist - Developer Relations 斎藤 修
自己紹介 斎藤 修 https://twitter.com /shiba_zushi Epic Games Japan Technical Artist - Developer Relations ● 2019年6月からEpicに入りました ● それまでは規模大きめのコンソール開発してました ● その前は漫画とか描いてました ● UE4とHoudiniが好物です #UE4 | @UNREALENGINE
はじめに #UE4 | @UNREALENGINE
はじめに 破壊って #UE4 | @UNREALENGINE いいですよね…
はじめに #UE4 | @UNREALENGINE
はじめに 皆さんもとにかく物を破壊したくなったこと ありますよね? #UE4 | @UNREALENGINE
はじめに 人は内なる破壊衝動を秘めているものです #UE4 | @UNREALENGINE
はじめに しかしここ法治国家日本では 勝手に物を壊すと怒られます #UE4 | @UNREALENGINE
はじめに なので #UE4 | @UNREALENGINE UE4を使って破壊しましょう!
今日話すこと #UE4 | @UNREALENGINE
今日話すこと ・豚を使って京都の街並みを破壊する方法 #UE4 | @UNREALENGINE
今日話すこと ・豚を使って京都の街並みを破壊する方法 →UE4における破壊に関する機能 ワークフローの紹介 #UE4 | @UNREALENGINE
今日話すこと ・豚を使って京都の街並みを破壊する方法 →UE4における破壊に関する機能 ワークフローの紹介 #UE4 | @UNREALENGINE Rigid Body Soft Body Fluid FBX Alembic VAT Niagara Raymarching Houdini PhysX Chaos etc...
はじめに というわけで #UE4 | @UNREALENGINE
はじめに #UE4 | @UNREALENGINE
はじめに #UE4 | @UNREALENGINE
はじめに #UE4 | @UNREALENGINE
はじめに #UE4 | @UNREALENGINE
はじめに 壊しました! #UE4 | @UNREALENGINE
はじめに この作例を通して解説をしていこうと思います #UE4 | @UNREALENGINE
はじめに まずはじめに 私の中の破壊神は仰られました #UE4 | @UNREALENGINE
はじめに 美しいものを 壊しなさい まずはじめに 私の中の破壊神は仰られました #UE4 | @UNREALENGINE
はじめに というわけで 使用させて頂いていたのは京都の美麗アセット #UE4 | @UNREALENGINE
はじめに 作者の方には豚で壊す許可を頂いております #UE4 | @UNREALENGINE
はじめに では #UE4 | @UNREALENGINE 早速破壊を……
はじめに お待ちなさい #UE4 | @UNREALENGINE
はじめに もしかするとよくあるやり取り #UE4 | @UNREALENGINE
はじめに ねえ この建物ぶっ壊したいんだけど ちゃちゃっとやっといてくれない? モデルあるからすぐ壊せるでしょ? #UE4 | @UNREALENGINE
はじめに 罪 #UE4 | @UNREALENGINE
はじめに モデルは破壊readyにする必要があります #UE4 | @UNREALENGINE
破壊readyとは? ・モデルが閉じていること ・モデルがめり込んでないこと #UE4 | @UNREALENGINE
なぜ?? 破壊とは つまり 「物理的」なシミュレーションです #UE4 | @UNREALENGINE
なぜ?? モノの形状、構造、質量 それらが正しくなければ 正しいシミュレーションは行なえません #UE4 | @UNREALENGINE
なぜ?? 適切な形で めり込みのない 物理的に正しいモデルにする必要があります #UE4 | @UNREALENGINE
モデルの準備 今回のこちらの美しい京都アセット 美しいだけではなくゲーム用に「最適化」されています #UE4 | @UNREALENGINE
モデルの準備 ゲーム用のアセットは最適化のために 見えないところは消していたり 一体化させてたりします #UE4 | @UNREALENGINE
モデルの準備 なので これを そのままシミュレーションすると…… #UE4 | @UNREALENGINE
モデルの準備 ばーん #UE4 | @UNREALENGINE
モデルの準備 正しくシミュレートするとこちら #UE4 | @UNREALENGINE
モデルの準備 物理的に正しいモデル #UE4 | @UNREALENGINE とても大事ですね
モデルの準備 では 先程の家一軒を破壊readyにする為に どれくらいの対応が必要か? #UE4 | @UNREALENGINE
モデルの準備 ノード全体図 #UE4 | @UNREALENGINE
モデルの準備 シミュレーション設定 #UE4 | @UNREALENGINE
モデルの準備 モデル対応 #UE4 | @UNREALENGINE シミュレーション設定
モデルの準備 対応が必要だった箇所を可視化してみます #UE4 | @UNREALENGINE
モデルの準備 こちらの家 #UE4 | @UNREALENGINE
モデルの準備 パーツ単位で並べると #UE4 | @UNREALENGINE こうなります
モデルの準備 赤色が #UE4 | @UNREALENGINE 破壊readyではないパーツです
モデルの準備 モデルを裏側から見てみる #UE4 | @UNREALENGINE
モデルの準備 厚み0(ペラポリ) 一体成型された瓦 裏面ポリなし 一枚ポリで まとめられた板壁 見えてない箇所は 天井がない 閉じられていない ぶっさしモデル 見えてない箇所は 壁がない 地面へのめり込み モデルを裏側から見てみる #UE4 | @UNREALENGINE
モデルの準備 厚み0(ペラポリ) 一体成型された瓦 裏面ポリなし 一枚ポリで まとめられた板壁 見えてない箇所は 天井がない 見えてない箇所は 壁がない これらは全て #UE4 | @UNREALENGINE 閉じられていない ぶっさしモデル 地面へのめり込み 非常に丁寧な「最適化」です
伝えたいこと 最適化したアセットを あとから破壊readyにするのは大変です #UE4 | @UNREALENGINE
伝えたいこと 破壊は #UE4 | @UNREALENGINE 計画的に
伝えたいこと ちなみに #UE4 | @UNREALENGINE この作例の場合
伝えたいこと 画面内だけでも100overのモデルが使用されています #UE4 | @UNREALENGINE
伝えたいこと 可能な限り自動化しましたが とても大変でした… #UE4 | @UNREALENGINE
モデルの準備 さらに次の落とし穴 #UE4 | @UNREALENGINE
モデルの準備 これ 破砕readyのモデル UE4でレイアウトしといたから いい感じに壊しといて #UE4 | @UNREALENGINE
モデルの準備 愚か #UE4 | @UNREALENGINE
モデルの準備 Twitterでの投稿 #UE4 | @UNREALENGINE
モデルの準備 Twitterでの投稿 #UE4 | @UNREALENGINE
モデルの準備 UE4にモデルをインポートすると 基本的には全て三角化されます #UE4 | @UNREALENGINE
モデルの準備 これらの三角ポリゴンは全てバラバラですが #UE4 | @UNREALENGINE
モデルの準備 「Remove Degenerates」のチェックを入れると 位置、UV、ノーマルなどが同じ頂点は結合されます #UE4 | @UNREALENGINE
モデルの準備 つまり UE4にインポートするという事は 元のモデルとは全く違うモデルが生成されるという事です #UE4 | @UNREALENGINE
モデルの準備 さらに エクスポート時にUE4は 気を利かせて頂点融合してからエクスポートします #UE4 | @UNREALENGINE
モデルの準備 具体例を出しますと 例えばこのモデルは UE4に入れて出すとこうなって出てきたりします #UE4 | @UNREALENGINE
モデルの準備 #UE4 | @UNREALENGINE
モデルの準備 愚か #UE4 | @UNREALENGINE
モデルの準備 ちなみに対処方法 #UE4 | @UNREALENGINE
モデルの準備 UE4からエクスポートしたFBXには 各トランスフォーム情報が含まれています #UE4 | @UNREALENGINE
モデルの準備 UE4からエクスポートしたFBXには 各トランスフォーム情報が含まれています #UE4 | @UNREALENGINE
モデルの準備 これを使って変換行列を作れば 元モデルからレイアウトを再現することが可能です #UE4 | @UNREALENGINE
モデルの準備 https://twitter.com/shiba_zushi/status/1257055294095413248?s=20 詳しくは上記連続ツイートをどうぞ #UE4 | @UNREALENGINE
伝えたいこと 破壊は #UE4 | @UNREALENGINE 計画的に
ワークフロー さて 数々の地雷をくぐり抜け ようやく美しき京都アセットが破壊readyとなりました #UE4 | @UNREALENGINE
ワークフロー UE4で破壊表現する場合 大きく分けて2つのワークフローがあります #UE4 | @UNREALENGINE
ワークフロー UE4で破壊表現する場合 大きく分けて2つのワークフローがあります 事前に破壊する #UE4 | @UNREALENGINE リアルタイムに破壊する
ワークフロー UE4で破壊表現する場合 大きく分けて2つのワークフローがあります 事前に破壊する リアルタイムに破壊する FBX Niagara Alembic PhysX VAT Chaos #UE4 | @UNREALENGINE
ワークフロー 今回の作例は「事前に破壊する」を採用しています 事前に破壊する リアルタイムに破壊する FBX Niagara Alembic PhysX VAT Chaos #UE4 | @UNREALENGINE
ワークフロー Niagaraによるリアルタイム破砕は このあと池田さんの講演で事例がご紹介されます! 事前に破壊する リアルタイムに破壊する FBX Niagara Alembic PhysX VAT Chaos #UE4 | @UNREALENGINE
ワークフロー PhysXとChaosは? 事前に破壊する リアルタイムに破壊する FBX Niagara Alembic PhysX VAT Chaos #UE4 | @UNREALENGINE
ワークフロー …… #UE4 | @UNREALENGINE
ワークフロー こちらの家で検証を行いました #UE4 | @UNREALENGINE
ワークフロー https://www.youtube.com/watch?v=4xUAueQigbo まず上のHoudiniEngineを使う手法で モデルをシミュレート可能なStaticMesh群に変換 #UE4 | @UNREALENGINE
ワークフロー PhysXの場合は約2000弱パーツのStaticMesh #UE4 | @UNREALENGINE
ワークフロー Chaosの場合はそれをGeometryCollection化しました #UE4 | @UNREALENGINE
ワークフロー PhysXの場合(4.25.0) #UE4 | @UNREALENGINE
ワークフロー Chaosの場合(4.25.0) #UE4 | @UNREALENGINE
ワークフロー …… #UE4 | @UNREALENGINE
ワークフロー https://docs.unrealengine.com/ja/Engine/Chaos/ChaosDestruction/index.html #UE4 | @UNREALENGINE
ワークフロー https://docs.unrealengine.com/ja/Engine/Chaos/ChaosDestruction/index.html 現在Chaosはベータ機能となっております #UE4 | @UNREALENGINE
ワークフロー 特にGeometryCollection周りの挙動は マイナーバージョンごとでもどんどん改善されております #UE4 | @UNREALENGINE
ワークフロー Chaosについては また別の機会に 掘り下げてお話させて頂けましたら #UE4 | @UNREALENGINE
ワークフロー https://docs.unrealengine.com/ja/Engine/Chaos/ChaosDestruction/index.html 今すぐにでも触りたいという方は #UE4 | @UNREALENGINE こちら
ワークフロー では「事前に破壊する」ワークフローについて 事前に破壊する リアルタイムに破壊する FBX Niagara Alembic PhysX VAT Chaos #UE4 | @UNREALENGINE
事前破壊 「事前に破壊する」場合 破壊シミュレーション自体は 各DCCツールなどで行っておく必要があります #UE4 | @UNREALENGINE
事前破壊 今回はHoudiniを利用しました #UE4 | @UNREALENGINE
事前破壊 https://www.sidefx.com/ja/products/houdini/whats-new-in-18/ Houdini18より追加されたデストラクション系の機能は 非常に簡単にRBDシミュレーションを組むことが可能です #UE4 | @UNREALENGINE
事前破壊 設定これだけ モデルさえ破壊readyであれば シミュレーションはさほど難しくないです #UE4 | @UNREALENGINE
事前破壊 https://www.sidefx.com/ja/products/houdini/whats-new-in-18/ SideFX Labsを使うと デストラクションデータのエクスポートも非常に簡単です #UE4 | @UNREALENGINE
事前破壊 破壊シミュレーションが用意できたら UE4へインポートして実装していきます #UE4 | @UNREALENGINE
事前破壊 今回検証した実装方法は以下の3種類 事前に破壊する リアルタイムに破壊する FBX Niagara Alembic PhysX VAT Chaos #UE4 | @UNREALENGINE
事前破壊 これらの手法 実装方法は異なりますが 見た目としてはほぼ同じです #UE4 | @UNREALENGINE
事前破壊 それぞれの手法の特徴をご説明します FBX Alembic VAT データサイズ ? ? ? 処理負荷 ? ? ? 作業コスト ? ? ? #UE4 | @UNREALENGINE
FBX まずはFBXから FBX Alembic VAT データサイズ ? ? ? 処理負荷 ? ? ? 作業コスト ? ? ? #UE4 | @UNREALENGINE
FBX FBXと分類していますが 実装としては スケルタルメッシュによるボーンアニメーションです #UE4 | @UNREALENGINE
FBX 破壊モーションはHoudiniで作成し 「Side FX Labs」の 「RBD to FBX」でFBXエクスポートしています #UE4 | @UNREALENGINE
FBX https://www.sidefx.com/ja/tutorials/game-tools-rbd-to-fbx/ 「RBD to FBX」に関してはこちらをご参照下さい #UE4 | @UNREALENGINE
FBX UE4はオブジェクトにアニメーションがベイクされていると スキニングしなくても自動的にボーンを作成してくれます #UE4 | @UNREALENGINE
FBX その際 ルートが原点にできるので アニメーション精度やバウンズにはご注意下さい #UE4 | @UNREALENGINE
FBX また スケルタルアニメーションのメリットとしては ノーティファイを打てる事も挙げられると思います #UE4 | @UNREALENGINE
FBX エフェクトを骨やソケットにアタッチ可能な点も 非常に使い勝手が良いのではないかと思います #UE4 | @UNREALENGINE
FBX また スケルタルアニメーションは アニメーション圧縮が可能な点も強力なメリットです #UE4 | @UNREALENGINE
FBX http://hogetatu.hatenablog.com/entry/2018/12/05/000944 アニメーション圧縮の詳細に関しましては こちらが非常に素晴らしい記事です #UE4 | @UNREALENGINE
FBX 詳細は記事を見て頂けたらと思うのですが 破壊はアニメーションが曖昧でもバレにくく ボーン階層も浅いので PerTrackで荒く圧縮をかけてもいいと思います #UE4 | @UNREALENGINE
FBX また 処理負荷に関しては主にCPUコストとして出てきます #UE4 | @UNREALENGINE
FBX タスクスレッドで 並列処理される アニメーション更新処理 また 処理負荷に関しては主にCPUコストとして出てきます #UE4 | @UNREALENGINE
FBX レンダースレッドで処理される GPUスキニング更新処理 タスクスレッドで 並列処理される アニメーション更新処理 また 処理負荷に関しては主にCPUコストとして出てきます #UE4 | @UNREALENGINE
FBX スケルタルアニメーションの負荷はボーン数に依存します GPUスキニング更新処理は並列化されない点もご注意下さい #UE4 | @UNREALENGINE
FBX という感じで凄くざっくりとまとめますと… FBX Alembic VAT データサイズ ? ? ? 処理負荷 ? ? ? 作業コスト ? ? ? #UE4 | @UNREALENGINE
FBX という感じで凄くざっくりとまとめますと… FBX データサイズ ○ 処理負荷 ? 作業コスト ? #UE4 | @UNREALENGINE Alembic VAT ? ○ アニメーション圧縮が 可能なので ? ? 長尺で有利 ? ?
FBX という感じで凄くざっくりとまとめますと… データサイズ FBX Alembic VAT ○ ? ? 処理負荷 ○ 作業コスト ? #UE4 | @UNREALENGINE 懸念はCPUによる ? ? アニメーション更新コストと GPUスキニング更新コスト (特別重いという事はないです) ? ?
FBX という感じで凄くざっくりとまとめますと… FBX Alembic VAT データサイズ ○ ? ? 処理負荷 ○ ? 作業コスト △ #UE4 | @UNREALENGINE ? パーツ数が多いと インポート処理が結構大変 ? ? 実装手順もそれなりに多い
FBX FBXはこんな感じです! FBX Alembic VAT データサイズ ○ ? ? 処理負荷 ○ ? ? 作業コスト △ ? ? #UE4 | @UNREALENGINE
Alembic では次にAlembic FBX Alembic VAT データサイズ ○ ? ? 処理負荷 ○ ? ? 作業コスト △ ? ? #UE4 | @UNREALENGINE
Alembic https://docs.unrealengine.com/ja/Engine/Content/Importing/AlembicImporter/index.html はじめに #UE4 | @UNREALENGINE Alembicインポータはデフォルトで使用できますが 「実験的機能」である点はご考慮下さい
Alembic また Alembicには3種のインポート方法があります #UE4 | @UNREALENGINE
Alembic 今回はこちらのジオメトリキャッシュを使用しています #UE4 | @UNREALENGINE
Alembic FBX Alembic VAT レベルに配置するとこんな感じです #UE4 | @UNREALENGINE
Alembic 破壊モーションはFBXと同じくHoudiniで作成したものを 「Alembic」ノードでabcエクスポートしています #UE4 | @UNREALENGINE
Alembic 作成したabcファイルは ドラッグ&ドロップで そのままインポートできます マテリアルはフェイスセット によって分けられるので 作成するのを忘れないように ご注意下さい #UE4 | @UNREALENGINE
Alembic また ジオメトリキャッシュは モデルやモーションのプレビューができない点が若干困ります #UE4 | @UNREALENGINE
Alembic シーケンサーのジオメトリキャッシュトラックを使うと プレビューが簡単にできて便利です #UE4 | @UNREALENGINE
Alembic FBX Alembic ジオメトリキャッシュで気をつけるべき点といえば やはり肥大しがちなデータサイズです #UE4 | @UNREALENGINE
Alembic レンダースレッドと タスクスレッドで 大量に処理されている デコード処理など また 並列処理されていますが 頂点全てを操作する為処理負荷も高めです #UE4 | @UNREALENGINE
Alembic という感じでざっくりとまとめますと… FBX Alembic VAT データサイズ ○ ? ? 処理負荷 ○ ? ? 作業コスト △ ? ? #UE4 | @UNREALENGINE
Alembic という感じでざっくりとまとめますと… データサイズ FBX Alembic VAT ○ ✕ ? ○ ? ? △ ? ? 頂点ごとのデータを持つため 処理負荷 データサイズは重い 作業コスト #UE4 | @UNREALENGINE
Alembic という感じでざっくりとまとめますと… FBX Alembic VAT ○ ✕ ? 処理負荷 ○ △ ? 作業コスト △ ? ? 頂点ごとに処理されるため データサイズ 処理負荷も重め #UE4 | @UNREALENGINE
Alembic という感じでざっくりとまとめますと… データサイズ FBX Alembic VAT ○ ✕ ? ○ △ ? △ ○ ? インポート処理が比較的早く 処理負荷 エクスポートも簡単 作業コスト #UE4 | @UNREALENGINE
Alembic Alembicはこんな感じです! FBX Alembic VAT データサイズ ○ ✕ ? 処理負荷 ○ △ ? 作業コスト △ ○ ? #UE4 | @UNREALENGINE
VAT 最後にVAT FBX Alembic VAT データサイズ ○ ✕ ? 処理負荷 ○ △ ? 作業コスト △ ○ ? #UE4 | @UNREALENGINE
VAT VATとはVertex Animation Textureの略で 頂点シェーダーを利用してオフセット表現を行う手法の事です #UE4 | @UNREALENGINE
VAT VATの仕組みに関してはこのあと池田さん 宮本さんの講演で とても丁寧にご説明されておりますので 是非そちらをご覧下さい #UE4 | @UNREALENGINE
VAT 破壊モーションはこれまで同様Houdiniで作成し 「Side FX Labs」の「Vertex Animation Textures ROP」で エクスポートしています #UE4 | @UNREALENGINE
VAT VATテクスチャはインポート後 非圧縮 リニア ニアレストに設定 #UE4 | @UNREALENGINE
VAT VATマテリアルは「Vertex Animation Textures ROP」の テキストをエディタにコピペするだけで簡単に作れます #UE4 | @UNREALENGINE
VAT FBX Alembic VAT データサイズは RBDに関して言えば VATはかなりリーズナブルです #UE4 | @UNREALENGINE
VAT 処理負荷もVATは基本的に全てGPUで処理されるので CPU負荷はほとんどありません #UE4 | @UNREALENGINE
VAT という事でざっくりとまとめますと… FBX Alembic VAT データサイズ ○ ✕ ? 処理負荷 ○ △ ? 作業コスト △ ○ ? #UE4 | @UNREALENGINE
VAT という事でざっくりとまとめますと… FBX データサイズ Alembic ○RBDは破片単位で ✕ ピクセルを持つので データサイズは小さい VAT ○ 処理負荷 ○ △ ? 作業コスト △ ○ ? #UE4 | @UNREALENGINE
VAT という事でざっくりとまとめますと… データサイズ 処理負荷 作業コスト #UE4 | @UNREALENGINE FBX Alembic VAT ○ ✕ ○ ○ △ ◎ △ ○ ? 処理負荷はGPUに依存する 現行コンソールなどであれば 概ね最軽量と考えて良い
VAT という事でざっくりとまとめますと… データサイズ 処理負荷 作業コスト #UE4 | @UNREALENGINE FBX Alembic VAT ○ ✕ ○ ○ △ ◎ △ ○ ✕ マテリアルやテクスチャの 適切な設定と管理が大変 エクスポートも 問題が発生しやすい
VAT VATはこんな感じです! FBX Alembic VAT データサイズ ○ ✕ ○ 処理負荷 ○ △ ◎ 作業コスト △ ○ ✕ #UE4 | @UNREALENGINE
ワークフロー かなり雑な比較ですので あくまで参考程度に… FBX Alembic VAT データサイズ ○ ✕ ○ 処理負荷 ○ △ ◎ 作業コスト △ ○ ✕ #UE4 | @UNREALENGINE
ワークフロー ちなみに もしここにリアルタイム破壊を入れた場合… FBX Alembic VAT PhysX Chaos データサイズ ○ ✕ ○ ? 処理負荷 ○ △ ◎ ? 作業コスト △ ○ ✕ ? #UE4 | @UNREALENGINE
ワークフロー ちなみに もしここにリアルタイム破壊を入れた場合… FBX データサイズ ○ 処理負荷 ○ 作業コスト △ #UE4 | @UNREALENGINE Alembic VAT PhysX Chaos ✕ ○ ◎ △ ◎ ? ○ ✕ ? リアルタイムに計算されるので データサイズは小さい
ワークフロー ちなみに データサイズ もしここにリアルタイム破壊を入れた場合… FBX Alembic VAT PhysX Chaos ○ ✕ ○ ◎ △ ◎ ✕ ○ ✕ ? 処理負荷 ○ 作業コスト △ #UE4 | @UNREALENGINE 数万パーツの破片の演算を リアルタイムで行うのは かなり厳しい
ワークフロー ちなみに もしここにリアルタイム破壊を入れた場合… FBX Alembic VAT PhysX Chaos データサイズ ○ ✕ ○ ◎ 処理負荷 ○ △ ◎ DCCツールと行ったり来たり ✕ ✕ ◎ 作業コスト #UE4 | @UNREALENGINE △ しなくてすむのは非常に楽 ○
ワークフロー こんな感じでしょうか FBX Alembic VAT PhysX Chaos データサイズ ○ ✕ ○ ◎ 処理負荷 ○ △ ◎ ✕ 作業コスト △ ○ ✕ ◎ #UE4 | @UNREALENGINE
ワークフロー 状況に応じて 適宜一番良い手法をご選択頂けたらと思います FBX Alembic VAT PhysX Chaos データサイズ ○ ✕ ○ ◎ 処理負荷 ○ △ ◎ ✕ 作業コスト △ ○ ✕ ◎ #UE4 | @UNREALENGINE
ワークフロー ちなみに今回の作例では Rigid BodyではFBXを FBX Alembic VAT PhysX Chaos データサイズ ○ ✕ ○ ◎ 処理負荷 ○ △ ◎ ✕ 作業コスト △ ○ ✕ ◎ #UE4 | @UNREALENGINE
ワークフロー Soft BodyではAlembicを使用しました FBX Alembic VAT PhysX Chaos データサイズ ○ ✕ ○ ◎ 処理負荷 ○ △ ◎ ✕ 作業コスト △ ○ ✕ ◎ #UE4 | @UNREALENGINE
ワークフロー FBX 日本家屋 街並み全体 (RigidBody) Alembic 豚 のれんなど (SoftBody) 理由としては実装速度重視で 処理負荷を度外視した為です (重すぎたらVATに置き換えようと考えていました) #UE4 | @UNREALENGINE
SoftBody ちなみに SoftBodyに関しては Alembic、VATはそのまま実装可能かと思いますが #UE4 | @UNREALENGINE
SoftBody https://www.sidefx.com/tutorials/game-tools-skinning-converter/ FBXもスキニングコンバーターという手法がありますので 是非お試し頂けたらと思います #UE4 | @UNREALENGINE
シーン製作 さて これでようやく事前破壊したデータを UE4に実装できましたので 見た目を調整していきましょう #UE4 | @UNREALENGINE
シーン製作 まずは破壊データインポート後の マテリアルアサインに関して #UE4 | @UNREALENGINE
自動化BP 今回 少し複雑な破壊でマテリアルの種類が多かったので Editor Utility Widgetでアサインを自動化しました #UE4 | @UNREALENGINE
自動化BP 数十あるマテリアルを手作業で割り当てるのは非常に辛いので 単純作業には是非皆様BPでの自動化をお役立て下さい #UE4 | @UNREALENGINE
自動化BP https://qiita.com/EGJ-Kaz_Okada/items/985b98fb934d751f4f69 http://kinnaji.com/ https://qiita.com/EGJ-Kaz_Okada/items/9f530db3b53d0fde3f20 Editor Utility Widgetに関する情報は ネット上で強い方が沢山発信して下さっております 本当にありがとうございます #UE4 | @UNREALENGINE
エフェクト 見た目が多少整ったところで #UE4 | @UNREALENGINE 次はエフェクト
エフェクト 使用したのはNiagaraとRaymarchingです #UE4 | @UNREALENGINE
Niagara Niagaraの実装は池田さんの本を参考に 完全にそのまま実装しました #UE4 | @UNREALENGINE
Niagara Houdiniで作成した破壊データから Impactの位置や方向などを出し #UE4 | @UNREALENGINE
Niagara SideFXLabsのNiagaraノードを使用して HCSVとして書き出し UE4へインポート #UE4 | @UNREALENGINE
Niagara Niagaraで使用することで 破壊シミュレーションに対応した エフェクトを簡単に出すことが可能です #UE4 | @UNREALENGINE
Niagara https://www.unrealengine.com/ja/release-notes 4.25よりNiagaraはプロダクションレディです 皆様是非ご活用頂けましたら幸いです #UE4 | @UNREALENGINE
Raymarching 次にRaymarching #UE4 | @UNREALENGINE
Raymarching https://shaderbits.com/ こちらはライアンさんのシェーダーを 有り難く使わせて頂いております #UE4 | @UNREALENGINE
Raymarching Volumetricsというプラグインにマテリアルがありますので 皆様すぐにでも使用可能です #UE4 | @UNREALENGINE
Raymarching 今回はRaymarchingで煙を三次元的に動かしたかったので 3Dテクスチャを連番で作成しました #UE4 | @UNREALENGINE
Raymarching Houdiniで 破壊シミュレーションに合わせて 煙のシミュレーションを行い #UE4 | @UNREALENGINE
Raymarching SideFXLabsの「Volume to Texture」ノードで 3Dテクスチャをエクスポート #UE4 | @UNREALENGINE
Raymarching それをVolumetricsマテリアルのレンダーターゲットに 連番として流し込みました #UE4 | @UNREALENGINE
Raymarching レンダーターゲットへの連番適用は シーンキャプチャで撮影したものを力技で流し込みました #UE4 | @UNREALENGINE
Raymarching Pythonを使用し 連番テクスチャをアサインしたプレーンを フレーム数分自動作成して整列させ #UE4 | @UNREALENGINE
Raymarching これらをカメラフェードさせつつシーンキャプチャする事で 連番テクスチャを一枚のレンダーターゲットで扱う事ができます #UE4 | @UNREALENGINE
Raymarching 今回はメモリを 気にしなかったので 大量の高解像度連番テクスチャを 使用しましたが 状況によっては ループ化してしまうのも 良いのではないかと思います #UE4 | @UNREALENGINE
Raymarching またVolumetricsには リアルタイム流体シミュのサンプルもありますので こちらを使ってみるのも楽しいかも知れません #UE4 | @UNREALENGINE
Material 次にマテリアルでの小技 #UE4 | @UNREALENGINE
Material 自然な壊れ感になるように歪ませました #UE4 | @UNREALENGINE
Material 手法としてはPre-Skined Local Positionを利用することで モデルが壊れたタイミングで歪むようにしています #UE4 | @UNREALENGINE
Material Pre-Skined Local Positionはスケルタルメッシュアニメーションでのみ 使用可能なノードですが 非常に便利です #UE4 | @UNREALENGINE
Material AlembicやVATの場合でも UVに壊れる前の位置や 壊れた後の位置を埋め込んでおくことで 自然なひび割れなどを表現することが可能かと思います #UE4 | @UNREALENGINE
Material https://www.slideshare.net/EpicGamesJapan/ue4-139190798 モデルを割るのが厳しい場合は エッジ汚しのUVを追加するのも良い方法かもしれません #UE4 | @UNREALENGINE
撮影 概ね破壊シーンの構築は完了したので ここからは撮影調整です #UE4 | @UNREALENGINE
撮影 https://docs.unrealengine.com/ja/Engine/Plugins/VirtualCameraPlugin/index.html 今回カメラはバーチャルカメラを使用しました 自然な手ブレを追加する為です #UE4 | @UNREALENGINE
撮影 専用のアプリとプラグインを入れるだけで すぐに撮影が可能ですので 是非皆様もお試し頂けましたら #UE4 | @UNREALENGINE
撮影 https://historia.co.jp/archives/7374/ 細かな手ブレなどは補正されてしまいますので カメラシェイクトラックなどを追加するのも良いかと思います #UE4 | @UNREALENGINE
仕上げ ライティングとポスプロは 基本的に京都アセットの設定を そのまま使用させてもらってます #UE4 | @UNREALENGINE
仕上げ 適切なライティング設定が行われていれば 昼と夜を切り替えるのも非常に簡単です #UE4 | @UNREALENGINE
仕上げ ディレクターからの突然の修正にも UE4であればきっと柔軟に 対応する事ができるでしょう #UE4 | @UNREALENGINE
仕上げ と #UE4 | @UNREALENGINE いう感じで……
仕上げ 完成しました!! #UE4 | @UNREALENGINE
仕上げ 完成しました!! #UE4 | @UNREALENGINE
まとめ まとめです #UE4 | @UNREALENGINE
まとめ 破壊シーンを作るには 破壊readyのモデルが必要です 破壊は 計画的に行いましょう #UE4 | @UNREALENGINE
まとめ 破壊シーンを作るには 破壊readyのモデルが必要です 破壊は 計画的に行いましょう UE4には破壊シーンを実装する際 複数のワークフローが存在します 状況に合わせてより良い方法を 選択しましょう #UE4 | @UNREALENGINE
まとめ 皆様の破壊衝動が UE4で合法的に発散されることを願っております #UE4 | @UNREALENGINE
まとめ 良い破壊神ライフを! #UE4 | @UNREALENGINE
ご清聴 ありがとうございました #UE4 | @UNREALENGINE