SNS上で2万いいね近くを獲得した、Unreal Engine 4を使った豚による破壊シーン。ゲームVFXのプロフェッショナルをあつめ、オンライン開催されたUE4 VFX Art Diveだがそのトップバッターとなった「豚×京都」は期待通り視聴者の喝采を浴びた。本記事では、そこで語られたシーン制作の舞台裏をさらに掘り下げて紹介する。
※本記事は月刊「CGWORLD + digital video」vol. 265(2020年9月号)からの転載となります。
TEXT_岸本ひろゆき
EDIT_藤井紀明 / Noriaki Fujii(CGWORLD)、山田桃子 / Momoko Yamada
「豚×京都 ~UE4でなろう破壊神~」
-
講演者:斎藤 修氏(@shiba_zushi)
Technical Artist - Developer Relations
Epic Games Japan
UE4 VFX Art Dive Online 各講演動画&資料集
www.unrealengine.com/ja/blog/epicgamesjapanonlinelearning-06
京都アセット
作者:中村基典氏(@motonak_jp)
www.unrealengine.com/marketplace/ja/product/kyoto-alley
UE4における破壊表現と斎藤氏のそこにかける情熱
Unreal Engine 4(以下、UE4)のアートに焦点を当てた勉強会「UE4 Art Dive」の第2回目が、7月5日(日)にオンラインで開催された。制作途中からSNSで話題を呼んでいたのが、Epic Games Japanの斎藤 修氏の豚による破壊シーンだ。本来、斎藤氏は背景テクニカルアーティストであり、VFXというテーマで講演を行うに至ったのにはいくつかの理由があったという。今回のシーン制作には主にUE4とHoudiniが使われており、これは昨年末に開催されたArt Dive第1回目で斎藤氏が発表した「UE4でプロシージャル田植え」と同様だ。ただ、もともと斎藤氏は「田植え」のようにモデリング・レイアウト用途で両ツールを使うことを基本としてきた。「今回VFXというテーマでの登壇ということもあり、いわゆるエフェクトの中でも背景との密接な連携が必要となる破壊表現を題材にしようと考えたんです」(斎藤氏)。
ここで、前職時代に背景チームに所属しながら破壊シーンの作成に関わった経験が活かされたという。具体的には、背景制作・エフェクト制作両方のフローを把握し、またエフェクトチームには背景のフローを意識してもらうという、"お作法の伝達"を根気よく続ける必要があり、その中で破壊シーンにおける背景・エフェクト双方が理解しておくべき落とし穴を経験値として蓄積してきた。今回のArt Diveにおいても、両者の連携の重要性は強く説かれており、特に破壊モデルに対し適切に破壊可能になるよう前準備を行なっておくという点に関しては、講演の序盤1/3ほどを費やして非常に丁寧に語られていた。
「私はもともと破壊表現が好きで両方の技術を習得するに至ったのですが、もし別セクションの方が関わり合って破壊シーンをつくり上げる必要が出たときに、今回の内容がお互いの理解を深めることにつながれば嬉しいです」(斎藤氏)。
<1>適切な結果を得るための「破壊Ready」という概念
ゲーム用に最適化されたモデルと破壊シーン作成における落とし穴
まず最初に取りかかったのは、破壊するためのモデルを用意することだった。準備期間との兼ね合いからUE4マーケットプレイスを利用することにしたが、同サイトで提供されている背景アセットは数多い。今回斎藤氏が求めた条件としては、見た目が美しいだけではなく、ゲーム制作用の最適化度合いが重視された。「当初はそのクオリティの高さからMegascansなどの利用も考えたのですが、実際のゲーム開発現場において発生しがちな問題を再現したかったので、ゲームアセットとして精度の高いモデルを用意する必要がありました。その点、京都アセットはその条件を完璧に満たしてくれました」(斎藤氏)。
京都アセットは本誌259号でも取り上げたとおり、非常にクオリティの高いフォトグラメトリーアセットである。斎藤氏が求めた「破壊Ready」を満たすワークフローを説明するのには最適だった。講演の中でも語られたが、破壊とは本質的に"物理的な挙動"であり、何かにぶつかったり、跳ね返ったり、またぶつかったり、といった一連の動きが物理法則に従って起こる。つまり適切に破壊を行うには、使用されるアセットも物理的に正しい状態である必要がある。その条件としては「モデルが閉じていること」「めり込んでいないこと」の2点を挙げ、両方を満たした状態を斎藤氏は「破壊Ready」と表現した。「破壊Readyとは私の造語ですが、ゲーム開発向けに最適化されたアセットは基本的にはそれを満たさないどころか、真逆の状態であることが多いんです」(斎藤氏)。
破壊Readyに関してはいくつかの具体例と共に語られた。例えば「見えない部分のポリゴンを削る」「見えるところだけを結合して、一体成型にする」といった最適化は一般的に行われるが、これらは結果として形状・構造ともに物理的には正しくないものとなり、破壊シミュレーションの際に問題となってしまう。斎藤氏は今回、それらの対応が簡単なものではないと示すため、Houdini上で実際に行なった「破壊Readyにするための改変」を可視化したが、視聴者からは多くの驚きの声が漏れていた。「重要なのは、これらの最適化は全て丁寧に、工数をかけて行われたものであり、破壊Readyの観点から遠ざかるほど、背景のアセットとしては優秀だという点です」(斎藤氏)。多くの工数をかけて最適化を行なった後、さらにそこから破壊Readyの手間を割くほど無駄なことはない、と伝えるために「破壊は計画的に」という標語が提示され、場はコミカルな空気に占められた。ちなみに、豚モデルはHoudiniユーザーにはお馴染み「Test Geometry : Pig Head」をそのまま使用している。
Houdiniによる破壊Readyの可視化
「モデルが閉じている」「めり込んでいない」という破壊Readyの二大条件をHoudini上で可視化。判定手法としては、Unshared Edgesの検出でモデルの閉じを判定し、VDBとポイントクラウドを用いてめり込み判定を行うHDAを自作している。また、講演では最適化によって破壊Readyでなくなる具体例も多く共有された
モデルをパーツごとに並べ、破壊Readyの可視化を行なっている様子。赤色は破壊Readyではない
最適化によって破壊Readyでなくなる具体例
破壊Readyでないモデルを用いたシミュレーション
破壊Readyモデルでのシミュレーション。破壊Readyでないモデルは、物理的に正しくないためシミュレーションを行うと爆発してしまう。モデルの事前準備の大切さがよくわかる結果となっている
UE4インポートによる破壊Readyモデルの破綻
モデル自体が破壊Readyであったとしても、UE4へとインポートすることでモデルが破綻してしまうことがある
UE4へインポート、エクスポートしたことによって破綻してしまったモデル
レイアウトをFBXのトランスフォーム情報から復元。詳しい手法は斎藤氏のTwitterにて解説されている(twitter.com/shiba_zushi/status/1257055294095413248)
[[SplitPage]]<2>UE4による様々な破壊実装のワークフロー
ファイル形式ごとに異なる破壊シーン実装の選択肢
次に斎藤氏が語ったのは、UE4における破壊シーンを実装するための様々なワークフローについてだ。UE4での破壊には大きく「事前に破壊する」と「リアルタイムに破壊する」という2通りのワークフローがあるが、今回は「事前に破壊する」ワークフローを選択。「Art Diveは名前の通りアーティストからの注目度が高いイベントなので、見た目のクオリティを高めるため事前に破壊する手法を選びました。さらに事前破壊の中にもいくつかのワークフローが存在し、今回はそれら全てを網羅的に検証しました」(斎藤氏)。
事前破壊におけるワークフローとして考えられるのは3つ。【FBX】を用いた【スケルタルメッシュアニメーション】、【Alembic】形式の【ジオメトリキャッシュ】、【頂点シェーダ】とテクスチャによる【Vertex Animation Texture】(以下、VAT)だ。「実装後の見た目という観点ではどれも大きく変わらないのですが、実装フローの特徴が異なるため、適切に選択する必要があります。特にFBXはキャラクター実装でも使用されるメジャーな手法なので、これを軸に他の手法を適宜組み合わせるのが良いのではないでしょうか」と斎藤氏は語る。FBXはゲーム業界では一般的に使用されているファイル形式であり、UE4でも様々な箇所で利用されているため、安定性の面では申し分ない。逆にAlembicは現在UE4上では実験的機能であり、安定しているとは言いづらいところだが、映像制作分野で広く受け入れられており、実装コストも高くない。「とりあえず実装する、というような場合には、Alembicはオススメできます。VATは、コストをかけてでも処理負荷を下げたい、という場合には一考する価値があると思いますね」(斎藤氏)。
今回は、もともとHoudini愛好家である斎藤氏はHoudiniでのエクスポートを採用したが、どのDCCツールであっても、ファイル形式さえ同じであれば同じワークフローが選択可能とのことだ。「同じ破壊シーンを実装するにしても、ケースバイケースで手法を適切に選択する必要があります。ただ、これまではそれを一覧化した資料はありませんでした。ざっくりでもいいので知りたい、と私もかねてから考えていたので、この機会にかなりおおまかですが資料をまとめてみました」(斎藤氏)。これらの手法は状況に応じてさらに細かく検証するのが適切だが、処理負荷なども含め、破壊シーンを実装する一手目の資料としては重要な手がかりになるのではないだろうか。
見た目のちがいがない3種の実装手法
【FBX】【Alembic】【VAT】の各手法で実装した破壊シーン。見た目のちがいがほとんどないことがわかる
UE4における破壊実装手法の特徴を表にまとめたもの。ケースバイケースで状況は異なるため、実際にはきちんと検証することが必要だが、VATは作業コスト、Alembicはデータサイズに難があり、FBXは中庸であることがわかる。なおChaos Destructionは処理負荷以外で優秀だが、事例・情報に乏しい。また、PhysXは将来的には非サポートとなることが発表されている
RigidBody/SoftBodyの双方で実装可能な各ワークフロー
昨今の破壊表現では、リアリティを高めるためにSoftBody表現も随所に必要となってきている。今回の作例では、豚モデルや布、のれん、すだれなどでSoftBodyシミュレーションが行われたが、その実装には【Alembic】が使用されている
【Alembic】によって実装された各SoftBody
【FBX】によって実装された骨アニメーションによるSoftBody。骨アニメーションにベイクされるため、頂点単位の精度の高いアニメーションは再現できないものの、ゲーム開発においても現実的な処理負荷とメモリに収めやすいとのことだ
[[SplitPage]]<3>クオリティを底上げする各種TIPS
ひと手間を惜しまず加えることで破壊の見た目が映えていく
続いて共有されたのは、破壊シーンのクオリティを上げるための様々なTIPS。例えばエフェクト実装に関しては、UE4の最新エフェクトツールであるNiagaraや、昨今のリアルタイムレンダリングでますます存在感を強めるレイマーチング手法による煙など、多彩かつテクニカルな手法が説明された。これらのTIPSは見た目に関するものに限らずEditor Utility Widgetを用いたマテリアルアサインの自動化といった現場で求める声の多いものなど、斎藤氏の幅広い知見が惜しみなく共有された。斎藤氏によれば「今回のレイマーチングに関しては、見た目重視の力技でのりきった面もあって若干恥ずかしくもあるのですが、そういう方法も情報のひとつかなと考え、思いきって盛り込んでみました」とのことだが、もちろん力技で押しきるだけでなく、マテリアルによる歪み表現なども盛り込んだ、テクニカルとアートのバランス感覚が垣間見える内容となっていた。
講演の最後には、UE4における撮影手法、バーチャルカメラやカメラシェイクトラックによる手ブレなど、映像制作の分野に訴求しそうな手法が紹介され、リアルタイムレンダリングの強みであるイテレーションの速さ、ライティングの瞬時の切り替えなども実例と共に紹介された。「今回たまたま、Twitterで『豚の目を光らせよう』というリプライをもらい、テンションが上がってしまってすぐに対応するということがありました。これはとても『あぁ、これ現場でもよくあるな』という修正要望で、実際の制作現場での無理や無茶を肯定したくはないのですが、UE4のリアルタイム性能を活かした良い例になったなと思っています」(斎藤氏)。変更内容としては影響範囲の小さい要望で、UE4上では再レンダリングも含めて15分ほどで対応したそうだが、プリレンダであれば数十分~数時間かけて全フレーム再レンダリングする可能性もある。リアルタイムレンダリングの対応力の高さを端的に物語るひとコマとなった。
今回の作例は、実際の破壊シーンのクオリティもさることながら、その裏にある数多くの下準備、ワークフロー、仕上げるための広範な知見が網羅的に提供され、高品質なアートワークには数々の技術が必要となることを改めて実感できるものであった。また、今回はオンライン上でのイベントとなったが、ライブストリーミング配信で見る場所を選ばないという利点やスムーズな運営など、視聴者からは多くの好評をSNS上で見かけることができた。今後の勉強会開催の指針にもなり得る素晴らしい勉強会だったように思う。「背景、VFXと展開してきたArtDiveですが、ひき続き各分野で開催していきたいと思っています」(斎藤氏)。
レイマーチングによる各種煙の実装
レンダーターゲットを用いた連番3Dテクスチャによる煙。4Kテクスチャを実に100枚以上使用という暴力的な実装。また、レンダーターゲットにレンダリングするために、実際にプレーンを100枚以上並べそれを撮影するというアイデアも面白い。「実際の開発でこの手法を使用したら怒られると思うので気をつけてください」(斎藤氏)とのことだが、当然である
メモリを節約するためにループ化されたレイマーチング煙。20fほどの長さで、中間フレームは補間もされている
メモリを削減したい場合、UE4にはリアルタイム流体オプションも用意されている。斎藤氏いわく「Volumetricsというプラグインもありますが、現行コンソールでは少し厳しい処理負荷です。映像用途には使えるかもしれません」とのこと
マテリアルによる動的な歪み
Pre-Skined Local Positionノードを用いての動的で自然な歪み。歪み自体はノイズノードを利用してワールドポジションオフセットで実装されている
実際のシーンにオフセットを適用したもの。板面などに有機的な歪みが追加され自然な壊れ感を演出している
UE4よる瞬時のライティングの切り替え
京都アセットには昼と夜のライティングがもともと用意されている。今回はそれを切り替えるだけで雰囲気のガラッとちがった破壊シーンを作成することができたとのことだ
Twitter上で要望された豚の目を光らせる修正を行なったもの。豚の目はエミッシブで光らせただけとのことだが、面白い雰囲気が醸し出されている