Media & Entertainment Collection and Arnold キャンペーンMedia & Entertainment Collection and Arnold キャンペーン

チュートリアル / Bifrostはじめました
第2回:Bifrost Aeroの実践

2017.11.13

  • Maya
  • シミュレーション
  • チュートリアル
  • 中級者
  • 学生・初心者

Bifrost Aeroを使用した爆発の作成

前回はBifrostを使って簡単なシーンを作成しました。シーンを作成することでBifrostの基本的な作法を学んでいただけたと思います。今回はその経験をベースとしてAeroを使用して爆発のシーンを作成していきましょう。

まずは今回用に作成したムービーをご覧ください。

この爆発を作成していくステップを紹介していきます。

エミッターの設定

前回の作例では何も考えずにトーラスを使用して発生源として設定しました。今回は爆発なので、最初に爆発自体の形やアニメーションをコントロールしたいと考えています。そこでAutodesk Maya 2018からサポートされたスーパーシェイプを使用しましょう。

エミッターの設定

クリックすると何の変哲もない球体が呼び出されます。

何の変哲もない球体

このままでは使い物になりません。
そこでpolySuperShapeに入り、まず分割数を水平垂直共に60に変更します。複雑な形状や変形に耐えるようにするためです。

polySuperShapeに入り、まず分割数を水平垂直共に60に変更

次に形状をスーパー楕円から球面調和に変更し、適切なパラメータを入れてください。

爆発の元にしたいので、下半分を選択して消去してください。

下半分を選択して消去

このままだと硬い形ですよね。あとダイナミックスさも全然足りていないです。そこでこのオブジェクトにテクスチャーデフォーマーを設定します。

このオブジェクトにテクスチャーデフォーマーを設定

変形の対象になるテクスチャーはノイズシェーダーを選択しましょう。その際にスペースがUV、方向は法線であることを確認してください。

テクスチャーデフォーマーがあたりましたが、たぶんこんな感じではないでしょうか?思いっきりディテイルが潰れた状況ですね。

思いっきりディテイルが潰れた状況

ではパラメータを変更して形を整えていきましょう。

ここでは振幅の大きさを押さえ、そしてそのままだと変化の波を小さくするために周波数を少し大きくしました。
ただこのままではアニメーションをしても形状はそのままなんですね。自然現象を表現したいので、常に動いているようにしたいと思っています。そこで次のように設定を行います。

ここでは時間をアニメーションのタイムフレームの動きに合わせ、パラメータが自動で変更されるようにExpressionを組みました。あとノイズパターンも変更しておきます。どうでしょうか。プルプルっとした動きが気持ちよくないでしょうか?
折角なので、先ほどのExpressionを簡単に解説しておきます。

エクスプレッションのところにはnoise1.time=time*4と入力

今回エクスプレッションのところにはnoise1.time=time*4と入力しました。
今回の数式はノイズシェーダーの中の時間のアトリビュートがnoise1.timeにあたります。そこにMayaの現在のフレームを24で割ったもの(24フレームで1秒に設定しているので)、つまり現在のフレームを秒数にしたものが入力されます。そのままだと値が小さいので*4で4倍にしました。つまり、Mayaでアニメーションが再生されるとノイズシェーダーの中のパラメータがフレームに合わせて更新されるように設定したわけです。

Bifrost Aeroの設定

ではいよいよBifrostを設定しましょう。エミッターオブジェクトを選択してBifrost流体>Aeroを選択します。では結果を見てみましょう。

このように単にきのこ雲が生成されただけです。何も面白くありません。
私はCGの物理シミュレーションの面白さは、シミュレーションに演出を加え、煙や火花にも演技をさせることができることだと思っています。そこでエミッターのオブジェクトを選択し、爆発する初期状態を作っちゃいましょう。

ここでは単純にスケールのアニメーションを設定しています。1フレーム目で初期状態のキーを、15フレーム目で5倍の大きさに、20フレーム目でもとに戻るという具合です。
ついでにテクスチャデフォームの方も同様にアニメーション付けしましょう。

では初期状態のアニメーションもつけ終わったので、再生してみましょう。

このように下に突き抜けてしまいました。下に行ってしまったパーティクルがもったいないです。単純にキルフィールドや、プレーンで特定領域以外は消去するのも可能なのですが、爆発たるもの、床からの反発があると面白いですよね。

衝突の設定

そこで衝突計算用のオブジェクトとして立方体を用意します。適当にスケールを調整し、エミッターからの粒子が突き抜けないように配置します。

衝突計算用のオブジェクトとして立方体を用意

ここでグリッドではなく、キューブを使用したのは、体積が無いと衝突判定が上手くいかなくなる可能性があるためです。
ではコリジョンの設定を行いますので、bifrostAeroとキューブをアウトライナーを使用して選択してください。

bifrostAeroとキューブをアウトライナーを使用して選択
bifrostAeroとキューブをアウトライナーを使用して選択

ついでに最初の爆発の形があざとすぎるので、ノイズデフォーマーのパラメータを変更します。周波数と振幅を大きくしてみました。

ノイズデフォーマーのパラメータを変更

エミッターの形状はこんな感じになりますね。

エミッターの形状はこんな感じ

では計算してみましょう。計算結果はこんな感じですね。

おおーっと最初のサンプルとしてお見せした「きのこ雲」から離れた結果になってしまいました。ただ、これも面白いのでよしとしましょう。
次にもう少し演出を付け加えていきたいと思います。
具体的には爆風が、全体に広がるのではなく、横方向に広がって次に全体に広がるイメージです。
実際のオペレーションとしては、スケールのアニメーションを追加でつけていきます。
15フレーム目までは拡大、16-20フレームで縦方向につぶします。この時に横方向のスケールアニメーションもつけてあげます。こんな感じの計算結果になったと思います。

これはこれで良いのですが、煙の寿命が短すぎて、途中で消えてしまっています。
そこでbifrostAeroPropertyContainerにアクセスします。大気のアトリビュートの中に煙の消失がありますのでこれを1>0.5に変更します。ついでに動きにランダム性も持たせたいので速度のランダム性のパラメータも付加しておきます。

bifrostAeroPropertyContainerにアクセス

では再生してみましょう。

こんな感じでBifrost Aeroですが、意外と簡単に使えることが分かったと思います。
次回以降でBifrostの本領である液体のシミュレーションに進んでいきます。

全体のオペレーションも通した動画も用意しました。
こちらも是非ご覧ください。

その前に

と書きましたが、次回のコラムではBifrostを理解するうえで重要な単位や温度、粘性、各ノードについて説明していきたいと思います。なぜなら流体シミュレーションを実行するうえでは漫然と同じパラメータでシミュレーションを設定してもミルクと海の違いの表現はできないためです。というわけで、お楽しみに。

今回のシーンデータはこちらからダウンロードできます。
Bifrost シーンデータ

著者

門口 洋一郎

門口 洋一郎

オートデスク株式会社
技術営業本部
M&Eマネージャー