#046:Alembicデータを読み込んでみる
Blenderには流体のシミュレーション機能が標準で搭載されていますが、外部アプリでパーティクルシミュレーションツールSTORMというのがあるのをご存じでしょうか?
Modoには流体シミュレーションツールがなかったため、このSTORMというシミュレーションツールを使って、液体や流体などの表現を行うようにしていました。これもすごく面白いツールなんですよね。
STORMからはシミュレーションしたパーティクルのデータ、またそのパーティクルをメッシュ化したデータをAlembic形式などで出力することができます。今までSTORMで作ったアセットもあるので、今回はBlenderにおけるAlembicデータの読み込み方法について調べてみようと思います。
STORMからAlembicの出力
まずはSTORMからデータをAlembic形式で出力します。細かい出力方法などについては、STORMを購入すると付属する日本語ビデオマニュアルで解説されていますので、ここでは省略。
今回サンプルとして使用したSTORMのコンテンツは、DStormのサイトから配布されていますし、作り方の日本語解説ビデオも公開しています。
ここにはいろんなパターンのチュートリアルを用意してあるのですが、今回はこの壁にペンキぶちまけシーンを使ってみようと思います。

このデータを出力します
STORMからAlembic形式で出力できるのは、シミュレーションしたパーティクルのデータ、さらにそれをメッシュ化したデータの2種類。パーティクルのデータは連番のAlembicファイルでも良いですし、ひとつにまとめた一個のAlembicファイルでもOKです。
メッシュ化したAlembicデータの読み込み
ではまず、シミュレーションしたパーティクルをメッシュ化して出力したAlembicデータを読み込んでみます。
読み込み方はいたって簡単。ファイルメニュー > インポート > Alembic(.abc)から出力したAlembicファイルを指定するだけです。それだけで、メッシュ化したデータファイルが読み込まれます。

あとは通常通り、マテリアルを設定してレンダリングするだけ:
いいですね!でろーんと滴り落ちる感じが素敵。ハロウィンとかに使いたい。シミュレーションじゃないと、こういった表現は難しいんじゃないかな。
パーティクルのAlembicデータの読み込み
では今度はメッシュ化する前のパーティクルのAlembicデータを読み込んでみます。
こちらも基本的には上記と同様なのですが、一つのファイルにまとめられていない連番のパーティクルAlembicファイルを読み込む際には、分割ファイルのオプションをオンにしておきます。

一個しかファイルが読み込まれない・・・
せっかくパーティクルデータを読み込んだので、インスタンスを割り当ててみます。今回、インスタンスの割り当てはジオメトリノードを使います。
ジオメトリノードで新規ボタンをクリックすると、デフォルトではこうなってます:

まずはインスタンスを割り当てるために、追加 > インスタンス > ポイントにインスタンス作成を追加します。これでAlembicパーティクルがインスタンスのポイントソースになります。
次にインスタンスとして割り当てるために、アウトライナーからインスタンス用に作っていたオブジェクトをドラッグ&ドロップして、そのジオメトリをインスタンスへと接続します。割り当てたインスタンスオブジェクトの大きさはスケールで調整します。
シンプルな球体ならこれでも良いのですが、インスタンスがまったく同じ回転値で配置されると気持ち悪いので、回転にランダムさを加えます。追加 > ユーティリティ > ランダム値のノードを接続すれば完了!

メッシュ化されたAlembicの表現とは違う味があります。

では、いざレンダリング!
おぉぉ!かなり粘度の高いもったりどろっとねちょりんこな泥映像ができました。いいですねー。好きです。コンクリートとか、中身が固まり切っていないどろどろ表現には、メッシュ化していないほうが適しているかもしれません。
今回Alembicを取り上げましたが、外部ファイルフォーマットをスムーズに読み込むことができると、他のソフトとの連携もしやすくなりますよね。もちろん、Blenderに標準搭載されている流体シミュレーションも、今後いろいろ試してみる予定なのですが、STORMのような機能に特化したソフトに任せてしまうというのも、またひとつの手かもしれません。
それでは今回はここまで!最後までお読みいただき、ありがとうございました。
