Search Unity

『The Heretic』のメイキング:VFX で出来たキャラクター「Morgan」

, 6月 29, 2020

Visual Effect Graph を使用してキャラクターを作成することは、Unity の Demo チームにとって興味深い挑戦でした。Unity の Demo チームのテクニカルアーティスト Adrian Lazar は、それまでのキャリアでレンダリングの完了待ちに非常に長い時間を費やしてきた経験を振り返って、リアルタイムなオーサリングによっていくつもの制作上の選択肢が可能になることを高く評価しています。これからお届けする記事では、「Morgan」というキャラクターを作り上げるプロセスの詳細な分析と、Unity でビジュアルエフェクトの制作に取り組む人に向けた有用なヒントを紹介します。

こんにちは。Adrian Lazar です。広告のポストプロダクションからキャリアをスタートさせ、2009 年にゲーム開発でリアルタイムグラフィックスの仕事へと移るという経歴で、18 年ほどコンピューター生成グラフィックスに関連する仕事をしてきました。私にはジェネラリストとしてのバックグラウンドがありますが、ここ数年はテクニカルアートの仕事を担当する比率が増してきています。この仕事での経験を活かして、小さいながら才能に溢れたメンバーとチームを組んで、自分のインディーゲームを発売することができました。

2019 年の初めにテクニカルアーティストとして Unity の Demo チームに参加したとき、チームは『The Heretic』の第 1 部をリリースする準備をしており、そこで私はいくつかの仕上げのエフェクトの仕事を手伝わせてもらいました。その後すぐ、このショートフィルムの第 2 部で登場する、神のような姿をした、ビジュアルエフェクトで描かれたキャラクターである Morgan について議論をはじめました。

ストーリーテリングの面では、Vess(『The Heretic』の脚本、監督、クリエイティブディレクターを務めた Veselin Efremov)から、明確な要件がいくつも示されました。Morgan は、冷静と怒りの間、女性と男性の間、あるいはこれらの軸を組み合わせた状態の間で揺れ動く姿をとること、人間の身長の何倍もの高さに成長すること、崩れ落ちたり、炎をまとったりすることなど、さまざまな要件がありました。

一方、外見については、Vess は意図的にかなりオープンなままにしておき、思索や実験をしやすいようにしました。元同僚の Georgi Simeonov が作成した初期段階のコンセプトはいくつかありましたが、それらは最終的な外観の基本となるビジュアルエフェクトやシェイプシフトには触れていませんでした。つまり、私はまったく白紙の状態からスタートすることになったわけです。これは非常にチャレンジングなことでしたが、同時に楽しい要素もありました。

コンセプトアート

私は以前から慣れ親しんでいるツールである Houdini 3D を使って初期のテストを始めました。このテストでは、Vess と一緒に初期段階のアイデアを検討したり、アイデアを引き出したりする良い機会になりました。

もちろん、リアルタイムショートフィルムの制作では、Morgan を構築するエフェクトを Unity 内で開発したいと考えていました。そうすれば、キャラクターを反復的に修正して、キャラクターをその周囲で起きていることに正しく反応させられるようになります。そのため、別のソフトウェアでエフェクトを事前にシミュレーションするのではなく、別のソリューションを探す必要がありました。

Unity の Demo チームに入ってから、ストレステストを行い、改善し、時には多くのユーザーが日常的に利用できるツールやプロセスを開発する機会を得られるようになったのですが、私にとってはそれも楽しみの一部です。

初期のテスト版動画

Morgan の制作では、普段の倍の機会が得られました。つまり、リアルタイムで動作する、複雑なビジュアルエフェクトで出来たキャラクターを作成することと、同様に重要なこととして、複雑なエフェクトのリアルタイムオーサリングへの第一歩を踏み出すこと、この 2 つに同時に取り組む機会を得られたということです。これは私にとって非常にエキサイティングなことでした。

考えてみてください。最終的な環境で、望み通りのカメラアングルから、最終的なライティング、ポストプロセッシング、その他のビジュアルエフェクトも使いながら、キャラクターの外観を組み上げて、しかも反復的に修正を加えることもできるのです。ほんの数年前には考えられなかったであろう、夢のような環境です。

決して平坦な道のりではありませんでしたが、良いチームワークに助けられて、両方をやり遂げることができました。

その後、実験的なビジュアルルックと、リアルタイム再生とリアルタイムオーサリングという 2 つの技術的目標を掲げて、当時まだ初期段階にあった Unity のツール、すなわち Julien Fryer とパリのチームが開発した Visual Effect Graph に目を向けました。

Visual Effect Graph は、当時はまだ新しく出てきたばかりのツールで、リアルタイムオーサリングの用途に本気で使えるようになるまでにはまだ長い道のりがあるという段階でした。しかし、Visual Effect Graph がうたうメリットは非常に大きいものでした。エフェクトを DCC でシミュレートし、エクスポートして Unity で評価した後、また DCC に戻って微調整するという工程に時間をかける必要がなくなるということに、期待が膨らみました。
チームとして、最終〆切の数時間前などという本当の最後の最後まで修正を加えられるようになりたいと考えており、このツールがあればそれは可能になる、つまりこのツールはリアルタイムグラフィックスの実現を保証するツールの 1 つであると思ったのです。

Morgan の初期バージョンの 1 つ。パーティクルが体全体に流れるようになっている

ビジュアルと技術、どちらが先か

これはどちらの仕事もしている人にはおなじみの問題ですね。まず、達成したいことのアイデアを持ち、それを実現するための技術を構築する必要があります。しかし、他のどのようなクリエイティブなプロセスでもそうですが、物事はそうそう一筋縄ではいきません。アイデアはプロセスを経るうちに変更されたり、修正されたりします。それらの変更や修正は、創造的なディレクションによるものもあれば、技術的な制約によるものもあります。

また、複雑なビジュアルエフェクトで構成されるキャラクターをリアルタイムでオーサリングする仕事をやろうとしていて、その仕事自体が未知の領域に属するものなのに、その仕事で使うツールはこれまでそれに必要な規模で使われたことがないという事情がさらに物事を複雑にしていました。

キャラクターの 2 番目のメジャーバージョン

モーフィングエフェクトの第 2 版


そのため、技術とルックデブは互いに密接に連携して、私が両方を担当していたときは、反復的な修正と実験が迅速に行われる環境にあり、全体的にとても楽しく仕事をすることができました。この創造的な自由さは中毒性があり、ビジュアルはプロダクションというよりもコンセプトアートに近い作業をするようなやり方で方向性をどんどんと変えていきました。

素早く実験を行うことの利点の 1 つに、顔全体のディテールに取り組んでいたときにそれを実感したのですが、すぐに方向性を変えてテストを再利用できるということが挙げられます。顔全体のディテールに取り組んでいたときの成果物は、結局その目的に役立つものにはなりませんでしたが、髪の表現について、より落ち着いた方向に向かわせる新しい方向性を打ち出すためのインスピレーションを与えてくれました。

髪の表現の進化


しかし、他の部分なしには先に進めないという部分が出て、行き詰ったことも何度かありました。キャラクターをどこに持っていけばいいのかわからなかったり、持っている技術でやりたいことができなかったりすると、物事が前に進まないのです。

こうした事態に直面しても、幸運なことに、私には助けを貸してくれる同僚がいました。この場を借りてお礼をしたいと思います。

  • Vlad Neykov(グラフィックステストのリードエンジニア)は、私の質問に辛抱強く答えてくれ、さまざまな技術的な問題を解決する方法についてアイデアを提供してくれました。
  • Julien Fryer(Visual Effect Graph のリードプログラマー)は、『The Heretic』向けに Morgan を最適化するのを手伝ってくれました。『The Heretic』のような内部での制作物を使って Unity のツールのストレステストを行うことで、改善のための新たなきっかけを発見することができました。Morgan のパフォーマンス要件は、Julien による LOD システムの開発につながりました。このシステムは Visual Effects Graph のユーザーの皆さんに近日中にお届けできる見込みです。
  • Paco(Plamen Tamnev。Demo チームの 3D アーティスト)は、Morgan にぜひとも使いたかったビジュアルパスを提供してくれました。彼と仕事ができたことは貴重な経験です。
  • Krasi(Krasimir Nechevski。アニメーション監督)は、キャラクターのリグとアニメーションに関する指導と監修を行い、モーションキャプチャーの実施まで担当してくれました。また、隕石のエフェクトや棘が湧き出るショットの挙動について貴重なフィードバックをしてくれました。

3 つのメジャーバージョンの制作と数え切れないほどの小さな実験を経て、最終〆切が近づいてきた頃、ついに Morgan の最終バージョンが出来上がってきました。

Morgan の最終バージョン

Morgan の主な特徴

  • VFX Morphing:Morgan を包むエフェクトは、明るいバージョンと暗いバージョンの間でモーフィングすることができます。これは色を変更するだけではありません。2 つの独立なシステムが動いていて、それぞれジオメトリ、密度、色、エフェクトなどを設定しています。このアイデアは、皮を剥いだり、剥がしたりできる皮膚の層のように振る舞いつつも、見た目が気持ち悪かったり、いかにもグラフィックスという感じにはならないエフェクトを作るためのものでした。モーフィングしている間、パーティクルはボディから排出され、顔はまた、変化の輪郭を描きつつ光を放射するエッジを持っています。ボディの色やメッシュの変更、パーティクルの数や排出されるパーティクルの数、見た目など、リアルタイムでこのエフェクトをカスタマイズするための複数のオプションがあります。
  • Body Morphing:VFX Morphing とは独立した形で、ブレンドシェイプを使用してボディをモーフィングさせることができます。女性から男性へと姿形を変え、エフェクトもまた、ボディの新しい形状に適応します。
  • Fire:実物の炎とは少し違ってアンバーのように見えますが、この高度にカスタマイズ可能なエフェクトは、必要に応じて光の強度を足すレイヤーを追加するために使用することができます。最終〆切の数週間前に作られた、Morgan に最後に追加されたエフェクトです。
    寄与量は各ボディパーツ(ヘルメット、頭部、目、ボディ、クロス)ごとに設定でき、方向や乱流はリアルタイムで変更可能で、モーフィングの 2 つの状態の間で炎の色のグラデーションを変更することもできます。また、3 つの出力モードを選択することができます。lit メッシュ(『The Heretic』で使用)、unlit メッシュ(Morgan のスタンドアロンパッケージで使用)、スクリーン空間ブラー/歪み(最終的なビデオには登場しませんでしたが、Morgan のアセットストアパッケージの Fire オプションで利用可能な実験的なモード)です。

初期の炎のエフェクトはエネルギーバーストの一種のようだった

  • Crumble:その名の通り、Morgan はバラバラに崩れるようになっています(※)。そして、崩れ方を制御するオプションがいくつかついています。
    このエフェクトでは、ユーザーが設定できる起点(『The Heretic』では右手の人差し指の先)を使用し、その起点の位置を使って、ボディ全体に放射状のグラデーションを作成します。このグラデーションは、2 つのノイズマスクによって変調され、最終的な結果は、Crumble A と Crumble B の 2 つのスライダーを制御するために使用されます。2 つのスライダーを使用するというアイデアは、アニメーション中のクランブル効果をもう少しコントロールしやすくするためのものです。Crumble A がノイズパターンの 1 つを横切るだけで、ボディを完全に崩壊させることはありません。一方、Crumble B は、少しのディレイを持たせたアニメーションをさせて完全に崩壊させることができます。
    バラバラに崩れるエフェクトがトリガーされた後、キャラクターを以前の状態に戻すには、Reset または Recompile VFX Graph オプションのいずれかを使用する必要があります。この操作が必要なのは、Crumble が Update でいくつかの物理的な力をアクティベートするためです。つまり、以前の状態を再生することはできず、リセットするしか元に戻す方法がありません。

『The Heretic』のショートフィルムでは、より物理的な挙動を再現した崩壊エフェクトが必要だったので、Houdini からエクスポートしたシミュレーションとこのバラバラに崩れるエフェクトを組み合わせました。
※訳注:Morgan というブランドの Crumble(ポロポロと崩れる生地で出来たお菓子・料理)にちなんでいるようです。

初期の Crumble のテスト

  • Debug:早い段階でプロパティをデバッグできるようになることは、このキャラクターのさまざまなバージョンを使って実験を行えるようになるための重要な要件でした。これが可能になっていれば、たとえば、上で説明したノイズマスクの動作を確認するためにデバッグオプションを使用することができます。デバッグオプションは、それぞれのメイン機能に沿った形で作成されています。
  • Realtime Customization:上記の各機能には、Morgan のインスペクターで公開されているいくつかのカスタマイズオプションがあります。合計で 300 以上のパラメーターがあり、これらのパラメーターは、必要に応じて時間をかけながらアニメーションさせることができます。
  • Other Related Effects:ほとんどの時間が Morgan のキャラクターに費やされましたが、他にも 2 つの重要なエフェクトがあります。腕の一部が Gawain に向かって動くときの隕石のエフェクトと、彼を突き刺す棘のエフェクトです。

制作途中の隕石のエフェクト

最終バージョンの Morgan の作成

Morgan は 17 個の Visual Effect Graph で構成されており、それぞれのグラフが異なる部分をカバーしています。これは、Morgan の各部分にかかるエフェクトを管理しやすくするために行ったものです。

まず、キャラクターのアニメーション中に、スキンメッシュ上にパーティクルを生成し、それに沿ってパーティクルを生成する必要がありました。Visual Effect Graph では、スキンメッシュはデフォルトではサポートされていないため、別の方法で対応する必要がありました。

ベースメッシュの位置、法線、接線は UV 空間でレンダリングされ、Visual Effect Graph のテクスチャパラメーターとして設定されます。これにより、キャラクター上でパーティクルに正しい位置と回転の情報を与えることができます。
頂点カラーとアルベドテクスチャも UV 空間でレンダリングされます。これらのテクスチャは、サイズ、スケール、角度、ピボットなどの特定のプロパティを操作するために使用されます。Morgan のパッケージでは、テクスチャを生成するプロセスが私の同僚である Robert Cupiz(『The Heretic』の技術・レンダリング部門のリード)と Torbjorn Laedre(Unity の Demo チームのプリンシパルエンジニア)によって、大幅に改良されています。

Morgan を構成するすべてのグラフはカスタムエディターで一元管理されており、共有されているプロパティを素早く更新することが容易になりました。公開されているパラメータは約 300 個ですが、追加できるパラメータの数に制限はありません。しかし、インターフェースにあまりに多くのパラメーターを持つと、作業することが困難になってきます。

Morgan を構成する 17 のグラフのうちの 1 つ

Unity の Visual Effect Graph の注意点

  • アニメーションカーブサンプラーを使用すると、アニメーションに様々な種類のイーズインとイーズアウトを追加したり、ディレイを追加したりすることができます。これらは非常に汎用性が高く、私は 2 つの値(浮動小数点数、ベクター、カラーなど)の間で線形補間をかけるためにこれを多用しています。
  • 複数のプロパティやアクションを 1 つのパラメーターに結びつけるのはとても強力な方法です。例えば、炎の強さを制御するスライダーに連動して、炎に関連した複数のプロパティが制御されるようになっています。ただ、繰り返しになりますが、こうした手法は便利さとスピード、それに最終的に公開されるパラメーターの粒度のバランスを考えて適用するところを検討することが重要です。

炎のエフェクトの進化

  • サブグラフは、複数のグラフで同じノードを再利用する上で優れた方法ですが、開発のどの時点でサブグラフを追加するかには注意が必要です。現在実装されている方法では、サブグラフを更新してコンパイルするたびに、それを使用しているすべてのグラフが再コンパイルされます。メイングラフの数や重さにもよりますが、再コンパイルには長い時間がかかります。私の提案は、1 つのグラフでロジックをテストしたときにサブグラフを追加し、頻繁にサブグラフを更新する必要がある場合には、メイングラフの 1 つにノードをコピーペーストして、変更を加えてからサブグラフにコピーペーストして結果を戻すというやり方で、現状だとこの方が早い可能性があります。便利な方法ではありませんが、調整のたびにすべてのグラフをコンパイルするためにかかる時間が長すぎるケースが何度かあり、そのときはこのやり方を取る必要がありました。
  • ほとんどの場合、公開しているパラメーターをスライダーで調整するようにしたほうが数値入力する形式よりも使いやすいと思います。値を調整するときには、スライダーがあったほうがより流動的で自然な感じがしますし、値の範囲の設定を行なって、エフェクトを壊さない安全な値の範囲でユーザーに作業してもらうこともできます。
  • グラフのすべてのパラメーターは、ユーザーがインスペクターから変更できるように公開することができますが、とにかく公開すればすべてよし、というわけではありません。あまりにも多くのオプションを見せて、自分やエフェクトを使う人が圧倒されないように注意してください。Morgan では、どのパラメーターを公開するか、何度も変更を行い、アクセスのしやすさと性能の間の良いバランスを探していました。
  • 技術的なヒントではありませんが、今回のケースでは、技術的な課題とアート面の課題の両方を解決する難しさは、これら 2 つの問題がどのように連動しているかという点が影響して、2 つの問題の難しさの総量をただ足しただけよりも大きかったと思いました。これは私が問題の難しさを過小評価していた点です。

Morgan アセットをダウンロードしよう

Morgan について詳しく知るには、スタンドアロンパッケージをダウンロードして遊んでみるのが一番です。『The Heretic』のランディングページでは、このプロジェクトの背景にある制作プロセスについてのブログ記事やビデオを見ることができます。

シミュレーションやレンダリングが終わるまで長い間待っていた人にとって、現在、多くの産業を再形成しつつあるリアルタイム革命は夢のような出来事です。次のチャレンジに挑む日を楽しみにしています。

6 replies on “『The Heretic』のメイキング:VFX で出来たキャラクター「Morgan」”

Hi Adrian, thank you for sharing this project. When I load the project the scripts cannot be loaded and the VFX Graphs are not showing. Could you please help me troubleshoot? Thank you

AK

Awesome post and information, thanks for that!
One point that clearly comes out: Unity has so much potential that could be used, if the demo team wasn’t only a demo team, but a game team, building actual released games.
Every experience and improvement you get/inject on the way of development, the Unity users would benefit from that.

Maybe you positions allows yout to push internally towards that goal…

Thanks for the useful information. This is an amazing and informative article. Good job!

Thank you for the detailed breakdown! Love all the little tips and tricks you mentioned. I’m excited to download the sample and pick it all apart myself 😄

Comments are closed.