Rigging

参考資料

Incredibles 2のエンジニアリングに忠実な髪

Pixar が Incredibles 2 向けに開発したヘアワークフローを紹介するビデオをアップロードしています。 SIGGRAPH 2018でおこなう講演用らしい。プレビューでの再現性が高そうですね。

Tips

modoのセットアップ/静止値の使い方

リギングでの「セットアップ/静止値」の使い方について書いてみます。
modoのセットアップモードには、セットアップモード専用の値として「セットアップ/静止値」があります。スケルトンに位置コンストレインなどを提供してリグを構築する場合は、セットアップモードでチャンネルを右クリックして「セットアップ/静止値に適用」することで、セットアップモード内に値を設定することができます。

■ サンプルファイル

 

セットアップモードの記事で書いた通り、バインドしたスケルトンのトランスフォームには自動的に「セットアップ/静止値」が設定されます。

もし手動でリグを構築しているときに、シーンの編集がセットアップモードに影響をあたえてしまう場合は、「セットアップ/静止値」を明示的に適用してあげるといいと思います。

 

キャラクターリグ用のプラグイン、CharacterBoxではセットアップモードONとOFFでトランスフォームの値が変わります。このためトランスフォームチャンネルに直接チャンネルをリンクするとセットアップモード内の値を上書きしてします。

こういうリグには条件式の「A は B と等しい」を使用するとよいです。「値 A」のチャンネルに「セットアップ/静止値」として1を設定し、セットアップモード OFFのとき 0 に設定します。
以下の画像は足の角度でスカートを自動的にアニメーションさせるためのリグをテストしたものです。

■ サンプルファイル

 
尾リグはプライマリ トランスフォームの値を使用して遅延したアニメーションを実行します。プライマリ トランスフォームのチャンネルを直接書き換えるとセットアップモードの値に影響をあたえてしまうので、条件式を使用してセットアップモードを判断してます。
条件式の「A は B と等しい」を使用することで、セットアップモード ONのときは「出力 True 値」としてスケルトンの「セットアップ/静止値」が出力され、セットアップモード OFFのときは「出力 False 値」として Relationship の値を出力するようにしてます。

 

再利用可能なリグを作る場合はシーンでの編集がセットアップモードの位置に影響をあたえないように、トランスフォームに「セットアップ/静止値」を設定しておくといいような気がします。

Tips

modoで重心制御リグ

modoで重心を制御するリグの作り方について書いてみたいと思います。両足の位置から、自動的に腰の位置を移動してくれるリグです。

■ サンプルファイル

 

スケマティックはこんな感じで、処理自体は単純です。

両脚のIKゴールの「ワールド位置」を Matrix Blend にリンクします。Matrix Blend はその名の通りマトリクスをブレンドするノードです。「ブレンド」を50%にするとIKゴールの中間の位置を出力することができます。

Matrix Blend の「マトリクス出力」を Matrix Vector にリンクして、マトリクスを「移動」の XYZ軸に分解します。分解した「出力 X」と「出力 Z」はそのまま腰のスケルトンの「位置X」「位置Z」にリンクします。これでIKゴールを移動したときに、腰の位置は2つのIKゴールの中間に位置するようになります。

腰のプライマリのトランスフォーム「位置X」「位置 Z」に直接リンクすると、移動ツールで自由に腰の位置を調整できなくなりアニメーションの作成で不便です。そこで腰のスケルトンにトランスフォームアイテムを追加して、追加したトランスフォームを制御用に使用します。 画像だと「CenterControlTransform」が追加したトランスフォームアイテムです。

腰のY軸を制御するために Measure Distance を使用します。 Measure Distance はその名の通り距離測定ノードで、IKゴール間の距離を出力できます。IKゴール間の距離が離れた場合に腰の位置を下げたいので Measure Distance ノードを使用しました。
Measure Distance の「距離出力」と Matrix Vector の 「出力 Y」を Relationship を使用して値を調整します。2つの Relationship を足した値を腰の「位置 Y」にリンクします。

2点間であれば Matrix Blend は便利ですね。値を足したり割ったりしなくてよいのでスケマティックが単純です。

 

このリグで雑に歩行サイクルをつけてみました。IKゴールに1サイクルのキーを設定して、カーブの繰り返しで前進しています。画像のように腰の位置をつねに中間にすると機械的で不自然な動きになります。Matrix Blend のブレンド チャンネルを使用して腰の位置を細かに制御を加えてみると面白いかもしれません。あとは骨盤の回転やタイミングのズレを再現とかでしょうか。

最終的には手動で調節するとして、アニメーションの補助として組み込んでみると面白いかも知れません。

 

この重心制御は Project:Messiah のサンプルファイルに入っていたT-Rexが元ネタです。リギングという言葉が一般化する少し前の時代、自動制御されたキャラクターセットアップに衝撃を受けました。現在ではFullBodyIKのように自動制御で動くとポーズ設定しづらいのであまり好まれないのかも知れませんが、リグの研究としては面白いジャンルだと思います。

T-Rexでは腰の位置の制御の他に、ゴールの高さで足が自動で回転するエクスプレッションが書かれてました。懐かしい。

参考資料

The Food Thief RIGG

Mayaの猫のリグブレイクダウン。自由度が凄い。目と口が体と別メッシュなのが面白い。

Tips

modoのタイムノード

modoのタイムモディファイヤについて書いてみたいと思います。タイムモディファイヤはその名の通り時間に関係したチャンネルモディファイヤです。

下の画像は砲台が出てくるアニメーションを設定した後に、Time Offsetを使用してアニメーションの再生速度を制御したものです。メカの変形アニメーションの速度をカットごとに変えたい場合に、リグとして組んでおくと便利に使える気がします。キーフレームは等間隔になるよう設定しておくと、タイミング調節がしやすくなると思います。

 

Time

現在の時間またはフレーム数を出力するシンプルなノードです。何に使うのかイメージしにくいかもしれませんが、毎フレーム値をカウントアップしたい場合や、条件式と組み合わせてタイマー的にパーティクルを制御したりに使用できます。

 

Time Cycler

アニメーションの繰り返し再生を制御するノードです。グラフエディタの「動作」にも同じような設定がありますが、Time Cycler の場合は「完了」の値で繰り返し回数を制御できます。
「オフセット反復」は「入力マトリクス」に対応していなようで、「入力値」から「出力値」を使用した場合に動作するようです。

 

Time Offset

アイテムのアニメーションをオフセットするノードです。残像のようにアイテムが追従するアニメーションを作成することができます。タイプを「定数」にすると、アニメーションの再生速度を制御できます。

単純にアイテムを追従する場合はmodo10.2から追加されてた Simulation Follower の方が加速度がついていい感じになると思うので、アニメーションの再生速度を制御する使い方の方が便利な気がします。
Time Offset で少し残念なのが、マトリクスチャンネルが複数のリンクに対応していないことです。modoのスケマティックは1ノードまでは循環参照を許可しているのですが、位置、回転、スケールのそれぞれをTime Offsetしたい場合は、各チャンネルの数だけTime Offsetノードが必要になります。

循環参照しなくてよい場合は、Matrix Composeを使用して位置、回転、スケールを1つのマトリクスにするといいです。Matrix Compose の「マトリクス入力」はリンク順で計算するの、スケール、回転、位置の順番でリンクする必要があります。

 

Time Warp

カーブを使用してアニメーションを制御するノードです。Time Offset と同じような機能ですが、再生を反転したりカーブで細かな制御ができます。

 

Time Offsetで砲台のアニメーションを制御するのは、Project:Messiahのサンプルファイルを思い出したので作ってみました。modo 12.1からは Driven Actions というアクションの再生速度を制御する機能が搭載されているので、今となってはノードを使う機会は少ないかも知れません。

CG News

MODO – CharacterBox tutorials

CharacterBoxを使用したキャラクターのセットアップ方法を解説した動画が公開されています。フェイシャルのセットアップやアクションなどCharacterBoxの使用にかかわらず参考になる動画シリーズです。
作者の方は日本のCMも制作されてて、ナブテスコの企業CMでもmodoとCharacterBoxを使用していました。

 

 

Tips

modoのリプリケータでモーフ制御

modoのリプリケータで複製したアイテムのモーフ制御する方法について書いてみます。
modoにはリプリケータという、アイテムを頂点やパーティクルの位置に複製する機能があります。この複製したアイテムのモーフを制御したいことがあります。

modo 12 からは MergeMesh を使用することで、リプリケータのモーフを制御できるようになりました。モーショングラフィックなんかで、シーケンシャルにモーフを変更したい場合にフォールオフを使用してアニメーションすることができます。

 

Radial Falloff を使うとこんな感じです。

スケマティックはこんな感じです。

Cube には球体になるモーフマップを作成しています。背景コンストレイントで適当に作った物です。MergeMeshを使用すると、Morph Influence にはCube のモーフマップを設定できるようになります。Morph Influence に設定したフォールオフをアニメーションするとモーフをアニメーションさせることができます。

もちろんParticleにも使えます。花や傘が開くアニメーションなんかに使えそう。

難点は MergeMesh を使用するので、ポリゴンが多いと処理が重くなります。リプリケータのモーフを直接制御できれば便利で軽そうなんですけどね。

 

参考

https://community.foundry.com/discuss/topic/139207/using-falloff-to-control-morph-animation-along-replicas-solved-using-modo-12?mode=Post&postID=1121667

Tips

modoでグリッドアセンブリの作り方

手続き的にグリッドを表示するアセンブリの作り方を書いてみます。

modoのロケータはデフォルトで十字アイコンですが、「シェイプ」を「カスタム」にすることで、リギングに使えるプリミティブ形状を設定することができます。LightWaveには「Item Shape」という同じような機能があるのですが、modoに搭載されていないシェイプ形状として「 グリッド 」があります。

modo11.0からプロシージャルメッシュを「ワイヤフレーム」表示することができるようになったので、プロシージャルのCubeをリギングすれば簡単にグリッドのアセンブリを作ることができます。

アセンブリの中身はこんな感じです。

作り方で迷いそうなのは、軸XYZを切り替えたときにCubeのサイズXYZへの出力を切り替える部分でしょうか。
軸の切り替えはチャンネルタイプ「軸」の値を、条件式ノード「A は B と等しい」を使用してスイッチしています。値が等しい場合は「1」を、値が異なる場合は「0」を出力します。
あとは条件式ノードの出力値を演算ノードで乗算することで、指定された軸にみえるCubeの「サイズ」にのみ「Scale X」「Scale Y」の値が流れるようにしています。

スクリプトとかプログラム的なことはよくわからないので、条件式を使った切り替え方法としてこういう使い方が正しいのかわかりませんが、やりたいことはできている気がします。

補足ですが、ビューポートでアイテムをワイヤフレーム表示するには「3Dビューポートプロパティ / アクティブメッシュ」で、「描画スタイルの独立」をONのする必要があります。

 

Cubeの大きさに合わせてセグメントの分割数を増やす動作は、モデリング系のアセンブリにも使えるんじゃないかと思います。

Tips

modoで関節の位置にあるロケータでアップベクターを制御する方法

前回に引き続きIK制御に関連したリグの作り方です。IKで制御されている関節の位置にコントローラーを配置して、そのコントローラーを回転してアップベクターを制御するリグの作り方を書いてみます。

 

このリグは好き好きあると思いますが、IKの「モディファイヤ依存ループ」を回避する方法として紹介してみたいと思います。基本的には「IKゴールの移動範囲を制限する方法」と同じで、IK制御に関連しない階層を使用するのがポイントです。

作成手順です。

  1. IKとアップベクターが設定されてたシーンファイルを準備します。
  2. ロケータを3個追加します。
    追加したロケータはそれぞれ、スケルトンの位置、アップベクター位置、IKゴール位置に配置します。アイテムの配置はドロップアクションの「位置を一致」を使用すると便利です。
  3. ロケータに親子関係を設定します。
    アップベクターに配置したロケータを、IKゴールに配置したロケータにペアレントします。IKゴールに配置したロケータを、IKゴールにペアレントします。
    アイテムのペアレントはドロップアクションの「同位置でペアレント」を使用すると便利です。
  4. スケルトンの「ワールド位置」を、スケルトンの位置に配置したロケータにリンクします。
    チャンネルビューポートから「ワールド位置」をスケマティックに追加して、ロケータの「ワールド位置」にリンクします。これにより異なる階層にあるロケータが、スケルトンにペアレントしたように動作します。
  5. 同様にアップベクターの位置に配置したロケータの「ワールド位置」を、アップベクターにリンクします。
    本来はスケルトンの位置のロケータに、アップベクターを直接ペアレントできればスマートなのですが、「モディファイヤ依存ループ」が発生してしまいます。このため異なる階層にあるロケータの「ワールド位置」をアップベクターにリンクすることで「モディファイヤ依存ループ」を回避しています。
  6. スケルトンの位置のロケータの回転Yを、IKゴール位置のロケータにリンクします。
    これでスケルトンの位置にあるロケータを回転させることで、アップベクターの位置を変更することができるようになります。

このあたりのリグの組み方がわかると、IKの「モディファイヤ依存ループ」に苦しまずに済むかも知れません。

Tips

modoでIKゴールの移動範囲を制限する方法

前回modoのIKについて書いたので、ついでにIKに関連したリグの組み方の例として、IKゴールの移動範囲を腕や脚の長さより遠くに移動しないように制限する方法を書いてみます。

 

LightWave のIKには「ゴールを接着 (Keep Goal In Reach)」という機能があり、IKチェーン(IKによって制御されているスケルトン)の長さより遠くにIKゴールが移動しない設定がありました。この設定をmodoで再現したものです。

作り方は単純でDistance Constraint を使用してアイテムの移動範囲を制限します。

作成手順です。

  1. IKの始点と同位置にロケータを作成して、ロケータの子のスケルトンにIKを適用します。
    これはFBIKのアップベクターの作成手順で使用する階層構造と同じです。
  2. Distance Constraint を作成します。
    Distance Constraint はその名の通り、距離でコンスレイントするモディファイヤです。
  3. ロケータを作成して、IKゴールの位置に移動します。
    ロケータをビューポートでドラッグアンドドロップ(長押し)すると、ドロップアクションメニューが表示されるので「位置を一致」を選択すると簡単に同じ位置にアイテムを移動できます。
  4. IKゴールをロケータの子にし、ロケータの「ワールド位置」をスケマティックに追加します。
  5. Distance Constraint を設定します。
    IKチェーンの親のロケータと、IKゴールの親のロケータの「ワールド位置」を Distance Constraint の「起点」と「終点」にリンクします。Distance Constraint のプロパティでクランプを「最大」、距離をIKチェーンの長さに設定します。画像ではIKチェーンの長さを計るために、測定モディファイヤの Measure Distance を使用しています。
  6. 最後にMeasure Distanceの「位置出力」を、IKゴールの親のロケータにリンクします。
    IKを制御するときはIKゴールを直接編集するのではなく、ロケータを編集することでIKチェーンの長さより遠くに移動しない状態になります。親アイテムを移動したときもIKゴールが一緒に引っぱられて動きます。
    注意点としては、見た目は制限されていてもトランスフォームの値は生きていることです。IKゴールを遠くまで移動してしまうと、IKチェーンの親アイテムを移動したときに、なかなかゴールに到達しない感じになります。

IKに関連したリグを組もうとすると発生しやすい問題が「モディファイヤ依存ループ」です。IKはIKゴールの位置を使用してスケルトンの位置や角度を計算するため、IKチェーン内のスケルトンの位置や角度を使用してIKゴールを操作しようとすると処理がループしてしまい計算不能になります。

IKに関連したリグを作るときは、IKチェーンと関係ない階層のアイテムを使用するとうまく行くと思います。

Tips

modoのインバースキネマティクス

modoのIKについて書いてみたいと思います。
modoには「Dual Joint Planar IK」と「Full Body IK」2種類のIKがあります。それぞれメリットとデメリットがあり、アニメーション用途で安定したIKが必要な場合は「Dual Joint Planar IK」がいいかもしれないという話です。

 

IK とは?

3DCGでアニメーションを作成する場合、ざっくり「FK」と「IK」2種類の制御方法に分かれます。

IKは元々工業用のロボットアーム制御用に開発された技術で、人間の腕のように複数の関節で構成されている階層構造を効率的に制御するための機能です。
ロボットの関節角度を決めるとき、階層構造の親から順に計算する方法を FK (フォワードキネマティクス) 、子の位置から親の関節角度を計算する方法を IK (インバースキネマティクス) といいます。

例えば腕が何かをつかむ場合に、「上腕」「前腕」「手のひら」を個別に回転して姿勢を決める方法が FK です。

 

複数の関節位置を「IKゴール」と「アップベクター(ポールベクター)」を使用して姿勢を決める方法が IK です。「IKゴール」は手の到達位置、「アップベクター」は肘の方向を指定するのに使用します。

FK は関節を個別に回転する必要があるので、関節数が多い場合にアイテムを一つ一つ回転する必要があります。IK は「IKゴール」と「アップベクター」2アイテムで全ての関節を制御できます。

一見FKよりIKの方が便利なように見えますが、それぞれアニメーションの内容によって向き不向きがあります。例えば走るアニメーションの場合、手の振りはFKが使いやすく、脚の動きはIKが向いています。そのため多くのIKはFKとブレンドしたり、切り替えることができるようになっています。

 

さて、ここから本題です。
modoには「Dual Joint Planar IK」と「Full Body IK」2種類のIKがあり、それぞれメリットデメリットがあります。

 

Dual Joint Planar IK

シンプルなIKモディファイヤです。IKで制御可能な関節数が2つに限定されています。

  • 使用できる関節数に制限あり(2関節)
  • アップベクター対応

IKで制御される関節の位置は、IKの始点となる関節位置、IKゴール、アップベクターの3点からなる仮想平面上を移動するように動作します。このためIKの始点、IKゴール、アップベクターのいずれかが完全に重なった(平面が形成できない)場合は、IKは計算することができなくなります。

3DソフトのIKは、だいたいこんな動作になってると思います。

 

Full Body IK

IKinemaというライブラリを組み込んだフルボディーIKシステムです。
Full Body IKはその名の通り、手を引っぱると自動で体全体が自然な姿勢を保ってくれる、聞くだけなら夢のようなIKシステムです。またモーションキャプチャデータを体格の異なるスケルトンにリターゲッティングするのに使用されます。
Dual Joint Planar IK のように関節数に制限はありませんがアップベクターをサポートしていません。

  • 使用できる関節数に制限なし
  • アップベクター非対応
  • モーションのリターゲット

画像ではアップベクターの設定にmodo標準の「方向コンストレイント」を使用しています。IKの始点の関節と全く同じ位置にロケータを作成し、IKを設定するスケルトンをロケータの子の階層におきます。ロケータからIKゴールに方向コンストレイントを設定します。方向コンストレイントの「上方ベクトル (アップベクター)」を設定することで、IKのアップベクターのような動作を設定しています。

 

Full Body IKは不安定?

Full Body IKは高機能で便利そうですが、modoではアップベクターをサポートしていないためリグを構築したりする場合に不安定になるという問題があるようです。

スケルトンの位置にいくつか制限があり、スケルトンが完全に直線的に配置されてる場合に不安定になります。
一般的に直線的に関節が配置されてる場合は、Dual Joint Planar IKを含めIKが正しく動作しないか不安定になります。IKを使用する場合は少し関節を曲げるのがIKのお作法ですが、Full Body IK ではIK制御下にない親の位置も影響するような気がします。IKが上手く動かないときは、スケルトンの位置をずらすと上手く動くようになるかも知れません。

上の画像のように方向コンストレイントを設定する方法はmodo 601のチュートリアルビデオ 「Fireboy」で紹介されていたもので、後にMattさんやMODO JAPAN GROUPさんがビデオで紹介しています。
親が回転するからそれっぽく動いてるだけで、Full Body IK がアップベクターとして計算に使用してるわけではないので、この疑似アップベクターではIKが不安定になるのではないかと思われます。

Full Body IK を安定させる方法として、「精度」を 2 から 3 に上げるといくらか改善することがあります。

 

Full Body IK が不安定という問題は Foundry フォーラムで繰り返し話題になっていて、以下のスレッドでは Sergio さんが Full Body IK についてコメントしています。
https://community.foundry.com/discuss/topic/122645/fbik-leg-rig-is-acting-super-strange

これが私がFBIKソルバを多く使うことができない理由の1つです。
それは気の利いたアップベクターが欠けている!! 誰かがそれを取り上げる前に、Mattの回避策は必ずしも機能しません。

FBIKはやんちゃで、 Planar IKは途方もなく制限されています。
使用可能なIKソルバーを取得するまで、Modoでキャラクターを作成することは苦痛を伴うことになるでしょう。(それは自分のコースのスレッドで述べていますが、これは本当に対処する必要があります。)

Mattの回避策でも作業するのは非常に難しく、アップベクターの位置を常に調整しなければならない。

そのような脚は古い方法が良いと思う。複数のPlanar IKチェーンを重ねる。 1つは脚、2つは足用です。

Sergio Mucino さんは Maya、Modo、Softimage、3ds maxを使用するTD/Riggerの方で、映画「アイアンマン3」や「デッドプール」に参加されてます。有料チュートリアル「キャラクターリギングコース」をリリースしている方でmodoに精通していると思われます。

Sergio さんが難しいと言ってる以上、Full Body IKを使用して安定したアップベクターの設定方法を見つけるのは難しいように思います。

 

 

まとめ

Full Body IK がアニメーションで動作が安定しないなと思った場合には、「Dual Joint Planar IK」を試すといいかもしれません。
アニメーションの作成方法は様々です。アップベクターが不安定でもキーをたくさん打て制御するのが苦にならなければ Full Body IK で問題ないと思います。3ds MaxのBipedはアップベクターもなく「鎖骨」「上腕」「前腕」「手のひら」全部まとめて1つのキーフレームで管理する変わったシステムだったりするので、気にしなければ気にならない問題かもしれません。

 

ちなみにフルボディーIKの特長である「手を引っぱると自動で体全体が自然な姿勢」というのは、手付けのアニメーションでは使われることが少ないようです。フルボディーIKらしいIKを使ったことないので具体的なことは書けませんが、決めたポーズが勝手に動いてしまうのでアニメーターには不評なようです。

Mayaには MotionBuilder 由来の HumanIK  というフルボディーIK機能を搭載していますが、個人サイトや小規模なアプリ開発を除くと、フル3Dの映画やゲームのモーション制作に使われているという事例を見かけることが少ない気がします。

ゲームのようにインタラクティブにアニメーションが変化するものや、アニメーションのリターゲッティング、モーションキャプチャのデータ補正には有用な技術だと思います。

LightWaveもVer 9まではIKが弱くアニメーションでガクガク震えることがありましたが、まさかmodoでもIKに悩まされるとは思いませんでした。(´Д`υ)

Tips

modoでカメラ ブレンド リグの作り方

トランスフォーム コンストレイントを使用して、複数のアイテムの位置や回転をブレンドするリグの作り方について書いてみたいと思います。

3DCGは意外とカメラの制御が難しかったりします。例えば商品説明のように決められたカメラ位置の間を滑らかに移動したい場合や、宇宙探査機のスイングバイのように異なる運動曲線間をスムーズに繋げるのに苦労することがあります。
複数アイテムのマトリクスをシーケンシャルにブレンドすることで、下の画像のようなカメラブレンド アセンブリを作ることができます。

画像ではカメラ直接使用していますが、カメラをペアレントしたロケータをブレンドした方がいいと思います。
アセンブリの中身です。

左から右に解説します。

  1. グループロケータにユーザーチャンネル「Mixer」を追加しています。チャンネルタイプは「パーセンテージ」、マトリクスのブレンド制御用のチャンネルです。
  2. 同じくグループロケータにユーザーチャンネル「Pos_x」「Rot_x」を追加します。チャンネルタイプは「行列」で、位置と回転用のマトリクスチャンネルです。
    グループロケータ「Item_x」が複数存在するのは、Transform Constraint の仕様に対処するためです。Position Constraint の「Weight.」チャンネルを見るとわかりますが、Transform Constraintは入力されたアイテム名でチャンネルを管理します。このため1つのグループロケータに複数のマトリクス チャンネルを追加して管理しようとしても同じチャンネルとみなされて上手く動きません。
    これらのユーザーチャンネルは「アセンブリ入力」としてチャンネル公開します。
  3. Position Constraint と Rotation Constraint ノードを追加します。
    Constraint ノードの「入力」にマトリクスチャンネルをリンクすると「Weight.アイテム名」チャンネルが追加されます。「入力」には複数のマトリクスをリンクすることができ、各「Weight.」の値でコンストレイントの強さをブレンドすることができます。
  4. Channel Relationship を追加します。
    「Mixer」チャンネルの値を Channel Relationship を経由して「Weight.」チャンネルを制御します。
    制御方法は単純です。「Mixer」が100%のとき「Weight.Item_1」が100%、それ以外の「Weight.」は0%になるようにすれば、Weightを制御できます。同様に「Mixer」が200%のとき「Weight.Item_2」が100%、それ以外の「Weight.」は0%になるようにするため、Relationshipのグラフはリニアな山型に設定します。各ノードで100%ずつシフトしてる感じです。
  5. 最後にConstraint ノードの「出力」を、グループロケータのユーザーチャンネル「Out_Ppos」「Out_Rot」を経由して「アセンブリ出力」します。

Constraint ノードの「Weight.」が全て0とき全て0を出力するようで、 「Mixer」が 0のときアイテムが突然ワールド原点に移動するような挙動になります。

結構単純なアセンブリですが、モーションミキサー作ってるみたいで面白いですね。
今回は位置と回転だけのブレンドですが、Scale Constraintを使えばスケールも対応する事ができます。好みに応じてカスタマイズすると面白いと思います。