FUSIONのノードにカスタムコントロールを追加する

February 3, 2020
FUSIONノードのカスタムコントロール作成についてのノート。前回の記事「FusionでMacro作成」で、FusionのMacro用コントロールUIを作成するという例を書きましたが、そこでUIに使用されているコントロールは全てノードにある既存のコントロールでした。

ユーザーが独自のコントロールを新規に作成したい場合、つまりNUKEでいうところのUser Knobを使用してエクスプレッションなどで独自のコンロトール作成したいという場合の説明です。時々うまく動いてくれなかったりするので、イマイチ自信ない部分もあるので、こういう機能があるという紹介程度に読んでください。

下のスクリーンショットは、RedとGreenという2つの入力画像をDissolveノードで切りえるためのFlowです(NUKEだとSwitchノードが使われたりしますが、FusionではSwitchノードがないのでDissolveで代用します)。

FusionSimpleDissolveExample.png

Dissolveのままだと「0.1-1.0」のスライダなので、ここに自前でコントロールを追加してRedとGreenのノードをプルダウンメニューで切り替えられるようにします。

FlowのDissolveノードの上でマウス右クリックし、「Edit Controls」を実行します。

editcontrolscontextmenu.png
Edit Controlsウィンドウが開きます。開いた時点では「New Control」という名前の新規の空のコントロールが開きます。IDのプルダウンを見てみると、すでにこのノードで使用されているコントロールの設定が入ってます。

editcontrolswindowdefault.png
これを編集して、SelectColというコントロールで「Red」と「Green」切り替えるためのプルダウンメニューを作成します。

fusioneditcontrolspulldownmenusetting.png
  • Nameを任意の名前にします。IDはデフォルトでNameが引き継がれます。特に問題なければそのままでいいです。IDと名前は紐付けられているので、IDを他のものに変更すると自動的に編集するコントロールが切り替わります。

  • Typeでコントロールする指定します。今回はDissolveのBackground/Foregroundのスライダをコントロールするので、「Number」となります。

  • PageはInspectorでどのページにコントロールを追加するかを指定するものです。Background/Foregroundのコントロールがあるトップページに追加する場合はControlを選択します。

  • Defaultでデフォルト値を設定します。今回は0.0または1.0となるので、0.0を入れておきます。

  • Rangeは0.0〜1.0、Allowedも同じく0.0~1.0とします。Integerオプションをオンにしたくなりますが、コントロールしたい変数の型と違うと正しく動作しないので、今回はIntegerはオフのままです。

  • InputCtrlで、プルダウンメニューを設定するために「MultiButtonControl」を選択します。ViewCtrlは今回はNoneのままです(ViewCntrlではUIでカラーホイールなどを表示したい場合に使います)。

  • 「MultiButtonControl」を選択すると、右側にアイテムを設定するためのメニューが出てくるので、Itemsに「Red」と入力して「Add」ボタンで追加します。もう1つ「Green」も同様に追加。1つ目のインデックスが「0」となり、2つ目のインデックス番号が「1」となります。このインデックス番号がこのコントロールから出力されます。


  • DissolveControlページに、SelectColのプルダウンメニューが追加されています。Background/Foregroundを右クリックでExpressionを追加し、作成した「SelectCol」にリンクします。

    これでSelectColのブルダウンメニュー「Red」「Green」で入力を切り替えられるようになります。


    inspectorselectcolmenuadded.png
    すでにあるコントロールを編集したい場合は、EditControlsウィンドウのIDで編集したいIDを選択してください。時々おかしな挙動するので、ノードは編集前にコピーしてバックアップしておくようにしたほうがいいと思います。

    もちろんMacro化する際にも使用できますし、Groupにした際にGourpノードにコントロールを設定してGroup内部のノードのコントールのインターフェースにすることも可能です。


    [関連記事]
    FUSIONでMacro作成
    FUSIONでEnvRelight
    HS_422Chromafix for FUSION