チャンネル同士を接続するチャンネルリンクの活用法
https://www.youtube.com/watch?v=Cb-OkJ7gTUk
MODOでは時間の経過に従って変化するプロパティの値をすべてチャンネルとして表現していますが、このチャンネル同士の関係性を簡単に定義することができるチャンネルリンクの機能が実装されています。
サンプルとなるシーンには、緑色の円柱と、赤色のボックスとが用意されており、この赤色のボックスに対して移動と回転のアニメーションが設定されています。このボックスの動きに緑色の円柱の移動の動きを合わせたい場合、どうしたらよいでしょうか?
一番単純な方法としては、親子関係を設定するという方法が考えられます。親子関係を設定すれば子アイテムは親アイテムのトランスフォームを受け継ぎますので、そのままボックスの動きが円柱の動きとなります。ただし、親子関係を設定すると、トランスフォームが全て引き継がれることになるため、移動だけではなく回転のトランスフォームも引き継ぐことになり、これをリセットすることはできません。あくまで移動のチャンネルだけを引き継ぎたい場合、ノードで接続を行うこともできますが、円柱とボックスのチャンネルの関係性を定義するチャンネルリンクを使うと非常にシンプルで素早く設定ができます。
セットアップレイアウト > モディファイヤタブにある、チャンネルリンクボタンをクリックすると、チャンネル同士の関係性を定義するためのパネルが表示されます。チャンネルリンクのパネルは大まかに二つの列に分かれています。左側がコントロール元となるチャンネル、右側がコントロール先となるチャンネルとなります。今回の場合、赤いボックスがコントロール元つまりドライバとなりますので、ボックスを選択しドライバ読み込みボタンをクリックしてボックスのチャンネルを表示させます。さらにボックスによりコントロールされるドリブン側が緑色の円柱となりますので、円柱を選択してドリブン読み込みボタンをクリックします。
それぞれのアイテムが保持しているチャンネルが表示されました。移動のチャンネルを接続させたいので、ドライバから位置のチャンネルをクリックしては、ドリブンの対応する位置チャンネルをクリックし、パネル下にある直接リンクボタンがハイライトの状態でリンク追加ボタンをクリックします。シーンのアニメーションを再生してみると、接続したボックスのチャンネルの値がそのまま円柱のチャンネルの値へと移っているのが確認できます。位置XYZのチャンネルをすべて接続すれば、円柱はボックスと全く同じ移動の動きをしながら、回転は独自の回転の動きを保つことができます。
それではこの位置の値だけ、X軸に対して反対の動きを行うようにするにはどうすればよいでしょうか?今までは値がそのまま何の加工もされずにそのまま移されてきましたが、チャンネルの値を加工してドライバ側からドリブン側へと移すことも可能です。いったん位置Xチャンネルの接続を外します。ドライバ側の位置Xチャンネルを選択して、リンク削除ボタンをクリックするだけで設定の解除が可能です。
チャンネルの値を加工して接続する場合には、直接リンクではなくリレーションシップボタンをクリックし切り替えます。リレーションシップがハイライトの状態で先ほどと同様、リンク追加ボタンをクリックすると、ビューポート上にHUDが出てきます。これがチャンネル同士の関係性を定義するためのパネルです。例えば今回の場合、ボックスが4.68mの位置にあるときに、円柱はその対称となる-4.68mの場所にいてほしいので、Drivenに-4.68と入力し真ん中に黄色い四角のキー作成ボタンをクリックします。その真下にあるGraphボタンをクリックするとグラフ編集パネルが開き、二つのチャンネルの関係を示すグラフが現れます。今回の場合、あくまで値が対称となるよう設定するため前後の動作をリニアにして、入力に-1をかけた値を出力するように設定します。
再生して確認してみると、正しくX位置が対象となるよう動いているのが確認できます。今回は単に-1を掛け合わせた対象となる値を出力しましたが、グラフ編集でその関係性を定義することができるため、より柔軟にドリブン側の値をコントロールすることが可能です。
また、これらの設定というのはスケマティックビューでも確認できます。直接リンクで定義したチャンネル接続に関しては直接に、またリレーションシップで接続した接続に関しては、チャンネルリンクのモディファイヤを介して接続されているのがわかります。チャンネルリンクのパネルで定義しなくても、このようにチャンネルリンク用のモディファイヤが用意されていますので、ノードに慣れている方は、スケマティック上で自由に接続していくことも可能です。