Search Unity

Unity 2019.3 で「検証済み」に移行した Visual Effect Graph で美しく複雑なエフェクトを作成しよう

, 2月 21, 2020

皆さまから頂いたフィードバックに基づいて Visual Effect Graph にはフィードバックに多くの新機能と修正が盛り込まれ、HDRP(HD レンダーパイプライン)と組み合わせて製品開発への活用ができるようになりました。ノードベースのエディターで、美しく複雑なエフェクトを作り出すことができます。

Visual Effect Graph は Unity の次世代ビジュアルエフェクトソリューションで、Unity のスクリプタブルレンダーパイプラインに対応しています。ハイエンドのハードウェア(PC、PlayStation 4、Xbox One など)をターゲットにしており、その他、計算能力の高いデバイスなら動作します。HDRP(HD レンダーパイプライン)を使用して効率的にレンダリングします。また、ユニバーサルレンダーパイプラインにも対応しており、機能の実装完了後のリリースで検証される予定です。エフェクトのシミュレーションは GPU 上で実行されるため、数十から数百万のシミュレーション要素にも対応し、リアルタイム性に優れた性能を発揮します。

「検証済み」の意味

Visual Effect Graph はここまで 1 年間、プレビュー版パッケージとして提供されており、皆様からのフィードバックをもとに機能を改善してきました。この間にコードが成熟し、小規模なリアルタイムの本番プロジェクトで Visual Effect Graph が実用に耐えることを実証することができました。

Unity ではこれまでに「The Heretic」、「Spaceship Demo」、「FPS Sample」や、Visual Effect Graph のサンプルセットで Visual Effect Graph を使用してきました。これらのプロジェクトはそれぞれ、ゲーム制作にインスピレーションを与えることができる、さまざまな実用的なユースケースを示しています。

Visual Effect Graph パッケージのバージョン 7.2.0 はプレビュー版から「検証済み」に移行し、本番プロジェクトでの利用が可能になります。これは Unity が安定性、プラットフォームサポート、アップグレードパスについて保証していることを意味します。将来のバージョンのビジュアルエフェクトグラフにプロジェクトデータとコードを安全に移行できるように細心の注意を払いつつ、Unity はビジュアルエフェクトグラフの機能開発と拡張に取り組み続けます。

この場合「検証済み」とは、Visual Effect Graph には拡張性と最適化のオプション、さまざまなアーティストツール、多くの実用的なケースの戦略が盛り込まれていることも意味します。これらの長所について関心がある方は、本記事の続きをお読みください。

制作ワークフロー

ノードベースのエディターを使用すると、テクニカルアーティストや VFX アーティストは、シンプルで一般的なパーティクルの動作から、パーティクル、ライン、リボン、トレイル、メッシュを含む複雑なシミュレーションまで、幅広いエフェクトをデザインすることができます。システムやシミュレーションの内部のメカニクスのほとんどをカスタマイズすることができます。アーティストは、カスタムプロパティやイベントを使って複雑な表現グラフを作成することができます。Visual Effect Graph の基礎にある仕組みは、複雑さと簡素化された操作を作り出すことの両方を可能にし、VFX アーティストは、レベルデザイナーやゲームプログラマーのためのエフェクトや、他の VFX アーティストが使用するためのビルディングブロックを簡単に作成することができます。

Visual Effect Graph はアセットとして保存されるので、シーン全体で再利用したり、オーバーライドを介してプロパティインターフェイスでカスタマイズすることができます。また、プレハブにビジュアルエフェクトの事前設定済みバージョンを保存して、エフェクトのバリアントライブラリを作成することもできます。こうして作ったエフェクトであれば、元となっているグラフを編集して、最適化や機能の改善をバリアント全体に伝播させることもできます。

このツールにはビルトインの機能ライブラリが付属していますが、これは Unity の将来のバージョンで拡張される予定です。このライブラリは最も一般的なケースをカバーしていますが、独自のグラフをオーサリングして、それをサブグラフとして保存することができます。演算子の再帰ツリーを使用して、それらを便利な Operator サブグラフにパックしたり、ブロックと演算子のセットをバンドルして Block サブグラフを作成することもできます。また、これらのサブグラフをマスターグラフに入れ子にすることで、他のよりシンプルなグラフから完全なエフェクトを構築することもできます(Visual Effect Subgraph)。

タイムラインを使ってビジュアルエフェクトイベントをシーケンス化し、通常のアニメーションを使ってそのプロパティをアニメーション化することができます。Animation トラックと互換性がありますが、Visual Effect Activation トラックを追加したり、専用のクリップを使ってシーン内のエフェクトのインスタンスにカスタマイズされたイベントを送ることもできます。

公開しているプロパティは、PropertyBinder を使用して他のシーン要素と同期させることもできます。これらの小さなスクリプトは、公開しているプロパティ(例えば、Sphere プロパティ)とシーンの要素(例えば、Sphere Collider)をバインドします。正しくバインドされると、プロパティは他の要素の値に応じて自動的にアニメーションします。多くの種類のプロパティバインダーが存在し、シーンのオブジェクト、コライダー、物理レイキャスト、UI、サウンドをリンクすることができます。

静的ジオメトリの詳細レベル(LOD)の実装は非常に簡単ですが、ビジュアルエフェクトのすべての LOD が、より柔軟な方法で適応する必要があります。レンダーカメラのプロパティにアクセスし、表現グラフを使用することで、ユーザーはカスタムの振る舞いを定義して、エフェクトの数、サイズ、および全体的なコストを制御することができます。

さらに、HDRP と組み合わせて Visual Effect Graph を使用することで、標準のライティングモデルと比較して、パーティクルのライティングを簡素化することができます。ユーザーは、低解像度でレンダリングコストの高いエフェクトをレンダリングして、画質の低下を無視できるレベルに抑えつつ、レンダリング効率を最大化する方針を取ることもできるようになります。

2019.3 の新機能

VFX Shader Graph(プレビュー版)

標準的なパーティクルレンダリングを超える表現を実現できるようにするため、新しい種類の Shader Graph を追加しました。それが VFX Shader Graph です。この特別なマスターノードは、アーティストがビジュアルエフェクトのために専用のフラグメントシェーダーを書くことを可能にします。VFX Shader Graph は、オプションでパーティクル出力を参照して組み込みのレンダリングを置き換えることができ、アーティストはクリエイティブなコントロールが可能になります。公開されたシェーダーのプロパティは、出力コンテキストで利用可能な新しいポートとなり、パーティクルの属性をこれらのプロパティにリンクすることができます。

VFX Shader Graph は現在プレビュー機能として提供されており、今後のリリースで改良される予定です。

Particle Strip(プレビュー版)

新しい種類のシミュレーションデータも実装されました。Particle Strip です。このシミュレートされたデータは、互いにリンクされたパーティクルのチェーンで構成されており、四角形(Quad)の帯または線としてレンダリングすることができます。この機能を使用すると、ユーザーは GPU のイベントを使用して、他のパーティクルによって誘導されるアニメーション化されたトレイルを作成することができます。ただし、トレイルの各点は誘導しているパーティクルとは独立に動くので、風や力、乱流を適用することもできます。

Particle Strip は、VFX Shader Graph と組み合わせて使用することができます。

内部シーケンシング:ループと遅延

内部シーケンシングを改善するために、スポーンコンテキストをループさせたり遅延させたりすることができるようになりました。これは基本的なシーケンシング機能で、スポーンコンテキストを一定時間実行したり、遅延時間経過後に実行したり、あるいは一定時間後に停止またはループさせたりすることができます。もちろん、新しく作成されたパーティクルは、このコンテキストのスポーン時間属性にアクセスすることができます。

VisualEffectGraph Additions

Visual Effect Graph のインストール後、Import into Project ボタンをクリックして、追加のアセットを展開することができます。このパッケージには、フリップブック用のテクスチャ、サンプルのグラフ、シェーダー、サブグラフが含まれ、皆さんのプロジェクトで再利用可能です。また、プロジェクト用に独自のノードやブロックライブラリを作成することもできます。

VFX Shader Graph の機能の導入をスムーズに始めていただくために、組み込みの振る舞いの多くを再現するシェーダーグラフのサブグラフをご用意しました。これにより、カットやリニア、モーションベクターを使ったフリップブックのサンプルを作成することができます。また、Soft Particle Helper サブグラフも提供しています。

この追加サンプルのパッケージには、25 個のテクスチャ(CC0 でライセンスされています)も含まれており、これらを組み合わせてエフェクトやエフェクトのシェーダーグラフで使用することができます。

実践的なサンプルから学ぶ

GitHub の Visual Effect Graph Samples レポジトリには、Visual Effect Graph のユースケースが十数種類用意されています。これらのサンプルには、Visual Effect Graph のいくつかの機能を実演する、シンプルでありながら美麗なシーンが収録されています。

実制作でのユースケースをもっと深く知りたいのであれば、「Spaceship Demo」をご覧ください。最近、GitHub の Spaceship プロジェクトリポジトリが更新され、Unity 2019.3 でお試しいただけるようになりました。このプロジェクトでは、ゲーム制作において一般的に見られるビジュアルエフェクトの多くを使用し、高品質のグラフィックを確保しながら、まとまりのあるパフォーマンスの高いシーンを構築する方法を紹介しています。デモは、標準スペックの PS4 で 30fps、ゲーミング PC で 60fps 以上を目標とし、実際のゲーム制作で使われる環境で制作されました。

今すぐお試しください

Visual Effect Graph は、HD レンダーパイプラインを使用するすべてのプロジェクトで使用できます。ユニバーサルレンダーパイプラインを使用しているプロジェクト(計算能力に余裕があるターゲット)には、別途インストールすることができます。試してみて、フォーラムで議論してみてください。

7 replies on “Unity 2019.3 で「検証済み」に移行した Visual Effect Graph で美しく複雑なエフェクトを作成しよう”

I posted it at unity forum but didn’t got a reply. Graph VFX keep crashing all macs I have tested. It does not crash Unity but it restart all the OS with fatal gpu error.
After enabling metal support (emulation) unity and graphs vfx get very unstable (not only the os restart but Unity UI get super buggy) Is there a way to fix it or is only available for pc developers?

Ran into this today also (MBP 16″). Everything ran well and good with the VFX Graph till I tried to add a new script – complete system hangup and had to force restart.

Thanks so much for the improvements! I’ve been loving playing around with the VFX graph, and my mind has been racing with the possibilities after reading over this blog post.

Veering off topic now: Is there an official way in the VFX graph to have particles react to one another? Like flocking, or repulsion if they get too close together? I’m dreaming about making some smoke effects that resemble fluid dynamics.

Doh! Now I feel like an idiot. A quick google answered that question. I’ll see myself out.

I was also looking for that how to react to one another. I asked google So I cant’find answer.
Please tell me answer or URL that write answer.

Comments are closed.