Fusion

Loopツールで遊んでみる&少し解説【Reactor】

Fusionで利用できるパッケージマネージャー「Reactor」から入手できるツール「Loop」を使って遊んでみたので、調べたり試した内容をご紹介します。

Reactorって何?という方は、インストール方法や使い方・事例を紹介している以下の記事をご参照ください。

またNSfarmさんのこちらの動画も参考になります!

オフィシャルな情報を確認したい方は、Fusionユーザーコミュニティを見てみてください。ユーザーのやり取りを見るだけでも面白いですよ。

Loopでできること

Loopの動画を見たときは、インパクトありすぎていったい何をするツールなの?と衝撃をうけました^^

Loopの説明に「面白くて、素晴らしくて、美しくて、予測不可能なビジュアルを作成することができます」とありますが、まさに先ほどの動画がそのとおり!好奇心かき立てられまくってしまいました 笑

Loop is a new and free toolset for Blackmagic Design Fusion that allows you to create interesting, wonderful and delightfully unpredictable visuals.

Loopは、Blackmagic Design Fusion用の新しい無料ツールセットで、面白くて、素晴らしくて、楽しくて、予測不可能なビジュアルを作成することができます。

www.steakunderwater.com

いったん落ち着いてこのツールでできることを見てみると、先ほどのようなカラフルなエフェクトを作成するためのツールというわけではなく、Fusionのノード構成でループの始まりと終わりを指定し、設定したフレーム分処理をループさせてその結果を得るためのツールだということがわかります。

It enables you to create “iterative loops” by continuously rendering over itself. You do this by building an effect between a startpoint and an endpoint in your comp. Loop will render out this effect as an image and use that same image as the input for the next render. You can render image sequences and also have multiple iterations per single frame. There’s a demo setup included which should make all that clear.

自身を連続的にレンダリングすることで、「反復ループ」を作成することができます。これを行うには、コンプの開始点と終了点の間にエフェクトを構築します。ループは、このエフェクトを画像としてレンダリングし、その同じ画像を次のレンダリングの入力として使用します。イメージシーケンスをレンダリングしたり、1つのフレームに複数の反復を行うこともできます。デモセットアップが含まれていますので、それを見ればすべてがわかるでしょう。

www.steakunderwater.com

ツールを導入するとLoopを使ったデモのCompファイルが2つダウンロードされるので、こちらをもとにいじり倒してみました。

Compファイルの保存先フォルダは、画面上部の ワークスペース > Script > Reactor > Tools > Show Comps Folder から確認できます。

デモ1:反応拡散モデル

いきなり反応拡散モデルって何??という感じですが、前述のカラフルな出力を得るためのプロセスとして用いられています。

反応拡散については以下の情報がわかりやすかったので、興味のある方は見てみてください。(私は雰囲気しかわかっていません 笑)

デモファイルの名前は「Reaction_Diffusion.comp」です。YouTubeにアップされている動画と全く同じものではないですが、下図のようにカラフルに色付けされたテキストから各色成分が分離して離れていくような出力になっています。

ノード構成は次のとおりです。もともと縦に組まれていましたが横向きの方が扱いやすいので整形しています。オリジナルから内容は変えていません。

こちらのデモでは、Loopノードに挟まれた次の処理が繰り返されることで先ほどの不思議な効果を得ています。

  • 2種類のブラーを適用してChannelBooleans(Substruct)で合成
  • Gainを上げる
  • 上記結果がLoopStartにInputとして返されて指定フレーム分繰り返される
この処理でさっきの出力(反応拡散)を得ようと思いつくのがすごすぎ!!

Blur2はBlur1の3倍のサイズでブラー効果を適用するようにExpressionが設定されています。

Blur1のサイズを変えてみたり、Blur2の倍率を変えてみたりすると出力が変わりますので、いろいろいじって遊んでみると面白いです^^

ノードを組み終わってループさせるためには、LoopEndノードの「Loop Start」に、対応するLoopStartノードの名前を入力して「Frames」に、レンダーするフレーム数を入力し「Run Loop」ボタンをクリックすればOKです。

※LoopStartノードをドラッグして、図の「Loop Start」のところにドロップしてもOKです。

なぜか「Run Loop」や「Open Cache Folder」ボタンをクリックしたときに「Please make sure the Loop Out node is selected before pressing the button.」と表示されて進めなくなることがありました。

根本的な解決策はわかりませんが、プロジェクトファイルを開きなおすことで解消されるようです。

デモファイルの構成にちょっと付け足してパラメータいじって書き出してみたのがこちらです。このうねうねの動きは実際には超ゆっくりなので速度を4500倍ぐらいにして逆再生しています。

そのためフレーム数も14000ほどとかなりでかくなり、調子に乗ってたくさんレンダーしていたらDiskCacheが62GBまで膨れてしまったので焦りました 笑

レンダー量にもよるとは思いますが、このツールはDiskCacheの容量を結構消費するみたいなのでこまめに削除したほうがよさそうです。

色合いがはっきりと分かれている素材に対して適用すると、デモと同じような効果を得やすいみたいです。この効果を使うシーンがよくあるかというと微妙なところですが、刺激的なエフェクトであることは間違いなしですね。

デモ2:軌跡を表現

2つ目は、オブジェクトの軌跡を表現するデモです。Compファイルの名前がそのまんまなのですが、得られる出力は「Trails」ツールと似たような結果になるようです。

コミュニティ上でも、Trailsツールを再現するにはどうすればよいかといった会話が行われていました。

I’d have to see your setup to know for sure, but if you want to emulate a Trails tool, you have to insert the animation inside the loop, or it won’t be used. Loop will only ever take one image from the LoopStart input and iterate on top of that.

あなたの設定を見てみないと何とも言えませんが、もしTrailsツールをエミュレートしたいのであれば、ループの中にアニメーションを挿入しないと、使用されません。LoopはLoopStartの入力から1つの画像だけを取り出して、その上で反復処理を行います。

www.steakunderwater.com

私自身Trailsツールを使ったことがないので比較ではなくLoopツールでの挙動という観点で、確認したこと/試したことをご紹介します。

先ほど紹介したデモファイル(Trails.comp)のノード構成は次のとおりです。

構成自体はシンプルで、内容を見てみると以下のようになっています。

  • Ellipseで円を作成して(CenterにShakeのModifiersを設定)
  • Gainを下げて
  • サイズを少し大きくして
  • ブラーをかける
  • 上記処理の繰り返し

ちょっとずつGainを下げるちょっとずつサイズを大きくするちょっとずつブラーをかける、の繰り返しで軌跡が拡散して薄まっていくような効果を表現しています。

時間の経過で複利の効果が効いてくるみたいな感じですね!(わかりづらいたとえですみません 笑)

LoopEndからLoopStartに渡される出力がどうなっているのか、このサンプルだけではイメージしづらかったのでEllipseの代わりに数字(フレーム数)を表示するようにアニメーションを設定した動画で確認してみました。

こちらを見ると、フレーム数ごとに表示される値が以下のようになっていることがわかります。

フレーム数表示される値
00
11, 0
22, 1, 0
33, 2, 1, 0

フレーム数に合致した値+ひとつ前のフレーム数~0までのすべての値が表示されているので、ひとつ前のフレームでレンダーした結果をそのままLoopStartの入力に戻しつつ、これにプラスして新しいフレームでの出力を加えているような処理をしている、ということがよくわかりました!

※LoopStartに戻ってきた出力と、新しいフレームでの出力をMergeして処理されているようなので、ノードの順番も大事ですね。

さいごに

若干挙動が不安定な部分があったり、DiskCacheが大きくなったりと気になる点もありますが、アイデア次第でいろんなことができそうな面白いツールだと感じました^^

ちなみにLoopツールがどんな感じになっているのかを確認したい場合、ツールをコピーしてメモ帳で開き、“LoopStart = MacroOperator {“となっている部分を“LoopStart = GroupOperator {“に置き換えてFusionページにペーストすると中身を確認することができます。

※ペーストした状態だとグループ化されているので、Expand Groupで展開してあげてください。

以上です!