Stardust考察

この記事は[AfterEffects Advent Calendar 2016](http://qiita.com/advent-calendar/2016/aftereffects)の21日目の記事です。

# はじめに

本稿ではAfter Effectsで使用できるサードパーティープラグイン、Stardust（ http://aescripts.com/stardust/ ）について考察します。
この考察では比較として、現在主に使用されていると考えられるパーティクル生成プラグイン「Trapcode Particular」との比較を主に行います。

筆者が「このプラグインはTrapcode Particularを意識して制作されている」と考えているためです。あらかじめご了承ください。

# Stardustとは

Stardustは、After Effectsのモジュラー3Dパーティクルシステムです。使いやすいノードベースのユーザーインターフェイスがあり、数多くのプリセットが付属しているので、すばらしい効果を素早く簡単に作成できます。（原文ママ）

# Trapcode Particularで主に行われていること

これはもう完全に主観なのですが、実践的に使用することだけを考えて、とりあえずざっくりと挙げてみます。

- レイヤーをエミッタとしてパーティクルを生成する
- パーティクルのサイズや不透明度をグラフで制御する
- 乱流（Turbulamnce）に沿ってパーティクルを動かしたり、個々のパーティクルにスピンをかける。
- パーティクルのある場所をポイントにして、さらにパーティクルを生成する。（Auxiliary）
- パーティクルにモーションブラーをかける（サブフレームの取得のみの模様）

等々。ほぼほぼすべてStardustでも出来ると考えて問題ないです。なのでいきなり「これStardustだから出来ないじゃん！」ということはほとんど無いのではないかと思います。
被写界深度、タイムリマップ、距離クリッピング、シェーディング、Spherical Field、すべて設定できます。（使ったことは無いですが設定する箇所はあります）
数値による変化量が異なるので、慣れが必要なことは否めませんが、基本的なことは簡単に出来るはずです。

無い機能としては3Dレイヤーでパーティクルがバウンドする機能や、PreRunが存在しないなどがあります。PreRunが無いのはちょっと困ります。Disc状にパーティクルが飛ぶ機能もありません。これもそこそこ便利だったんですが。

# Stardustの主な優位点
- ノードベースで操作が出来る
- 1レイヤーで複数のパーティクルを同時に管理できる
- OBJファイルをエミッタに使用できる
- TurbulanceやWindの強度をOverLifeのグラフで指定できる
- エミッタの種類が多い

挙げるときりが無いけど、とりあえずこの５つについて。

## ■ ノードベースで操作が出来る
![2a9c46aa45d08f798095c877abb4a5cf.png](https://qiita-image-store.s3.amazonaws.com/0/151000/ec810bdc-fcd5-de81-9d05-404d7abe0b54.png)
こういうのがあって便利！　というよりは、2つ以上のエミッタからパーティクルを吐くのでツリー図がないと困るのでしょう。実際、エフェクトコントロールウインドウに出てくるエフェクト郡は下図のような有様なので、名前付けをサボるとあっという間にワケの分からない状態になることは、想像に難くないです。

![a215953a02ba3f647117ca4072537c8d.png](https://qiita-image-store.s3.amazonaws.com/0/151000/4de07e57-5879-30b3-6b79-151610e72a96.png)
ちなみに各項目は、開くとたくさん設定できる項目が出てきます。キーフレームを使ってパーティクルを出す数やサイズもフレキシブルに変更できます。Trapcode Particularなどと似たような感じで捉えていただいて問題ないです。

## ■ 1レイヤーで複数のパーティクルを同時に管理できる
![ba2087a01b3c6528fe1b12583c67af33.png](https://qiita-image-store.s3.amazonaws.com/0/151000/6f0130ba-9ee9-8c80-9c33-042f206e873e.png)
こういうことがひとつのレイヤーで出来ます。上のツリーの結果がこれになります。
ひとつのエミッタはテキストを参照し、もうひとつのエミッタはレイヤー（星）を参照しています。

## ■ OBJファイルをエミッタに使用できる
![e724a8a8c6726da7d63240dc0040facf.png](https://qiita-image-store.s3.amazonaws.com/0/151000/e21d9fc0-5185-5fc2-22bf-0403b64dd5c4.png)
そのまんまの機能ですが、これがあったらParticularじゃなくてFormがいらなくね？　と思ったんですが、どうなんでしょうかね。
エッジだけじゃなく、Volumeでの指定も出来るのですが、かなり重いのでお勧めしがたいです。3Dオブジェクトを基にしたパーティクルは手軽にやる場合は有効だと思いますが、3Dデータの内部全体や面をもとにパーティクルを出す場合は、Aftereffects上でやらずに、3Dソフトで、たとえばCinema4DであればX-Particlesをお勧めします。
AfterEffects上でやるんならElementsと併用で面白いことが出来るかも。

## ■ TurbulanceやWindの強度をOverLifeのグラフで指定できる
地味だけど便利な機能だと思います。徐々に速度を下げつつ乱流の強度を上げていくだけならTrapcode Particularでも出来るんですけどね。

ちなみにグラフはこんな感じ。一気に100%近くにまで上げたい場合に。
![overlife.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/be0dc141-9f4b-2705-6689-e87fd5c8194d.jpeg)
余談ですが、このグラフのUIがかなり使いやすい。ベジエ、直線、直書きの3種が可能なんだけど、直書きはドラッグ中に変更内容が見えないため多少使いづらい。

## ■ エミッタの種類が多い
![emitter.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/b1fae5a0-43e0-4af1-5dfc-13f279244da0.jpeg)
なんかいろいろありますね。

下図のように、たとえばレイヤーのマスクを使い、マスクの内部をエミッタとすることもできます。Stardustを使用しているレイヤー自体のマスクも使用可能なので、別個エミッタ用のレイヤーを必要としません。大変便利ですし、Lightがなぜか追加されることもありません。
![maskEmitter1.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/f223091f-1eb3-e8fd-bd3d-5b3c2b7dcd8e.jpeg)

レイヤーのマスク自体は「なし」にして、使用しない設定にしておきましょう。
![maskEmitter2.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/5ece5349-1022-5e65-1b4b-5e431c20008d.jpeg)

他にもなじみの無いものがありますが、残りは後述します。
テキストレイヤーパスなど、魅力的に見える項目もあれば、Ringとかいう使い方のよく分からないものまで存在します。

## ■ その他機能いっぱい
ベンド、バウンド（びよんびよんと跳ねるように動く）など、とにかくたくさん。


# んで結局いくつか思ったこと。

結論から言うと、筆者はTrapcode Particularをまだ使っています。
理由が非常にあいまいで申し訳ないのですが、「なんか重い気がする」「あとガチの案件で使ってるんだけど、めっちゃパーティクルを出すとAE落ちる確率が高い気がするから困る」という理由からです。つまり、まだ重さを比べている段階です。あと、やっぱり慣れてるほうが使いやすいという実も蓋も無い話。

ただ、はじめ「このプラグインはTrapcode Particularを意識して制作されている」と考えていたのですが、蓋を開けてみるとFormや3D Strokeの代用品になるようなものではないかと思うようになってきました。

![NULL_POS.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/37645e89-4514-7908-710f-79b562925844.jpeg)
Nullの軌跡をエミッタにしてパーティクルを出したりできます。これは「軌跡全体から」常にパーティクルが出続けています。

![layerPath.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/7dbeea45-34ae-3abe-0be1-1621df19a3b7.jpeg)
設定はここ。

![9b2b2fae9ea6f19d3c4cffa2b7ea57bf.png](https://qiita-image-store.s3.amazonaws.com/0/151000/ffe8cc83-e8b3-6f87-082a-542a76b4084c.png)
Saberで使ったマスクをStardust側でもエミッタとして使用すると、Saber側でマスクの形を変更した際にStardustのエミッタも勝手に修正されます。
ベクターデータをエミッタとして使えることの利便性は、いろいろあるのではないでしょうか。

![LineSetting.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/77f10042-d84b-b73b-6d62-a88fcac3c6b6.jpeg)
設定はこんな感じ。

他にもテキストの周りをぐるぐる回るベガスのようなものも簡単に。
![vegus.gif](https://qiita-image-store.s3.amazonaws.com/0/151000/3bd981d9-e232-eccf-5fde-eeca5247babc.gif)

このあたりの作業は軽いですし、ぜひStardustを運用していきたいですね。


ちなみに、Trapcode Particularのように、Layerをエミッタとして使用する際の話ですが、レイヤーのアルファを使用する場合、エミッタレイヤー内のアルファは「Texture gets」を「Color」にしなければ無視されます。そのため必ず「Color」を使用することになります。
ですが、「Color」設定にするとエミッタの色を優先し、パーティクルの色を「Particle」ノードから設定できなくなるようなので、以下のようなエミッタ用のレイヤーを作って、エミッタ内でカラーも同時に設定することになります。
![17ab20a6242789d33b1dd62cf0e2eda5.png](https://qiita-image-store.s3.amazonaws.com/0/151000/7d2f6d35-7a57-cb1b-6676-3f2740bc571c.png)

結果がこちら。
![result.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/988660bc-75b7-51f6-ccd9-c67aa49fbd06.jpeg)

なんらかの拘りが無いのであれば、マスクを使うほうが楽です。たぶんそういう設計で考えられています。


なんにしろ、いろいろ機能のあるパーティクルプラグインなので、Trapcode Particularの代用品として考えるというよりは、テキストの味付けに使用したり、きれいな線を描いたりという用途で使うことになるんじゃないか、という気がしています。

ところで、詳細な機能説明だと思った人には申し訳ないです。
詳しくは下図のあたりをクリックしてサンプルを見たほうが分かると思ったので、やりませんでした。
![3805af8723ad44ab5b87a08823e5962b2.png](https://qiita-image-store.s3.amazonaws.com/0/151000/1c2f2f0b-a745-2477-dca0-31a5176f4781.png)

でもね、ホントにね。このプラグイン、「Trapcode Particularってどうしてこれできないかなー」みたいな、個人的には結構重要だけど世間的にはどうでも良いような気になっていたところを解消してくれていたりして、本当に「やるじゃん！」と思えるツールなので、とにかく体験版を触っていただきたいです。タダで触れるので。

最後に、Replicaを使って作った雑な集中線で締めたいと思います。魔貫光殺砲と集中線以外のReplicaの使い方がよく分からない中条でした。
![REPLICA.jpg](https://qiita-image-store.s3.amazonaws.com/0/151000/c0bb23cc-3d26-57c2-535f-2985a14ed70c.jpeg)

明日は @kareobana さんの「変換、逆変換で遊ぶ。」です。