Houdini 19.5 キャラクタ KineFX

コンストレイント(拘束)

On this page

拘束は、あるオブジェクト( 駆動される側 )のトランスフォーム(移動、回転、スケール)を別のオブジェクト( 駆動させる側 )に拘束させることができます。

Note

駆動される側のオブジェクト のことを ドリブンオブジェクト駆動させる側のオブジェクト のことを ドライバオブジェクト と呼ぶことにします。

KineFXでは、VOPs(VEXオペレータ)を使用して拘束を作成することができます。 SOPネットワークでVOP拘束をセットアップできるようにするには、まず最初に Rig Attribute VOP SOPノードを配置する必要があります。

メモ

  • KineFXでの拘束の大多数は、トランスフォーム行列で機能します。

  • 拘束ネットワークで使用する予定のすべてのトランスフォーム用のポイントをシーン内に作成する 必要はありません

  • Rig Attribute VOP SOPノードのドキュメントの下部にはサンプルファイルがあって、色々なSOPネットワークでこれらの拘束の使い方を説明しています。

  • このドキュメントのページでは、説明をわかりやすくするために、 トランスフォーム行列 という用語の代わりに オブジェクト という用語を使用します。

Look At拘束

Look At拘束( Aim拘束 とも呼びます)は、ドリブンオブジェクトが常にドライバオブジェクトの方を向くようにするために、あるオブジェクトが他のオブジェクトの位置に向くように拘束することができます。

例えば、Look At拘束を使用することで、キャラクタの目を空中を漂うボールに追従させたり、セキュリティカメラをシーン内のキャラクタに追従させるようにすることができます。

Look At拘束をセットアップするには、以下のノードを組み合わせて使用する必要があります:

Look At Axis パラメータを使用することで、ドライバオブジェクトの方へ向けるドリブンオブジェクトの軸を指定することができます。 Up Axis パラメータを使用することで、ドリブンオブジェクトのUp軸を設定することができます。

Look At Constraint VOPノードの Blend パラメータは、ドリブンオブジェクトへのドライバオブジェクトの影響力の 強さ を決めます。 この強さの範囲は0(影響なし)から1.0(完全に拘束を適用)です。 このパラメータをVOPからプロモート(露出)させて使用することで、Look At拘束の強度を設定したりキーを打つことができます。 これは、ドリブンオブジェクトをアニメーション内の特定の時間にLook At追従動作から若干逸脱させたい時に役立ちます。

Look At Constraint VOPノード上の Update Offset ボタンは、ドライバオブジェクトとドリブンオブジェクトの現行トランスフォームをスタッシュ(貯蔵)し、 それらのスタッシュしたトランスフォームを利用してドリブンオブジェクトの新しい開始位置を記録します。 ドリブンオブジェクトのアニメーション内のどこかの時間でこのボタンをクリックすることで、その現行入力が拘束の Rest(静止)ポーズ または開始ポーズとしてスタッシュすることができます。 これは、Look At追従動作に若干の差異を追加したい時に役立ちます。 Clear Offsets ボタンは記録されたオフセットをリセットします。

プロシージャルまたは手動でオフセットを拘束に追加したい場合、Look At拘束ネットワークに Offset Transforms VOPノードを追加します。

サンプル1: ピラミッドとボールのプリミティブの方を向くように、ティーポットプリミティブの軸を拘束する方法

このLook At(KineFX) VOP拘束のサンプルでは、ティーポットプリミティブ(ドリブンオブジェクト)のX軸がピラミッドプリミティブ(Look Atドライバオブジェクト)の方を向いて追従し、Y軸がボールプリミティブ(Upドライバオブジェクト)の方が上になるように向いています。

Look At拘束VOPネットワーク
ピラミッドの方を向いて且つ追従するようにLook At拘束されたティーポット

サンプル2: ティーポットプリミティブのLook At拘束トランスフォームをオフセットまたはブレンドする方法

以下のLook At Constraint VOPのサンプルでは、ティーポットプリミティブ(ドリブンオブジェクト)のX軸がピラミッドプリミティブ(Look Atドライバオブジェクト)の方を向いて追従し、Y軸がボールプリミティブ(Upドライバオブジェクト)の方が上になるように向きますが、その拘束の強度が変化します。

Blendパラメータをプロモート(露出)させたLook At拘束VOPネットワーク
拘束の強度を75%程度にしてピラミッドの方を向いて追従するようにLook At拘束されたティーポット

以下のLook At Constraint VOPのサンプルでは、ティーポットプリミティブ(ドリブンオブジェクト)のX軸がピラミッドプリミティブ(Look Atドライバオブジェクト)の方を向いて追従し、Y軸がボールプリミティブ(Upドライバオブジェクト)の方が上になるように向きますが、ドリブンオブジェクトの開始方向と開始位置がオフセットされています。

オフセットさせてピラミッドの方を向いて追従するようにLook At拘束されたティーポット

Parent拘束

Parent拘束は、ドリブンオブジェクトがドライバオブジェクトの のような挙動になるように、あるオブジェクトを他のオブジェクトに拘束することができます。 これによって、異なる別の階層のオブジェクト間で親子関係を模倣することができます。

例えば、Parent拘束を使用してプロップをキャラクタに取り付けることができるので、帽子を頭に被せたり、オウムを肩に乗せることができます。

Parent拘束を作成するには、以下のノードを組み合わせて使用する必要があります:

Parent Constraint VOPノードの Blend パラメータは、ドリブンオブジェクトへのドライバオブジェクトの影響力の 強さ を決めます。 この強さの範囲は0(影響なし)から1.0(完全に拘束を適用)です。 このパラメータをVOPからプロモート(露出)させて使用することで、Parent拘束の強度を設定したりキーを打つことができます。

Parent Constraint VOPノード上の Update Offset ボタンは、ドライバオブジェクトと親オブジェクトの現行トランスフォームをスタッシュ(貯蔵)し、 それらのスタッシュしたトランスフォームを利用してドリブンオブジェクトの新しい開始位置を記録します。 Clear Offsets ボタンは、ドリブンオブジェクトの開始位置を元々の開始ポーズにリセットします。

サンプル1: アニメーションティーポットプリミティブをアニメーションボールに拘束する

このサンプルでは、ティーポットプリミティブ(ドリブンオブジェクト)をボールプリミティブ(ドライバオブジェクト)の子としてParent拘束しています。

Blendパラメータをプロモート(露出)させたParent拘束VOPネットワーク
Blendを使ったボールとティーポットのParent拘束
新しいオフセットを使ったボールとティーポットのParent拘束

サンプル2: アニメーションティーポットプリミティブを新しい親の子に変更する

このサンプルでは、ティーポットプリミティブ(子)とピラミッドプリミティブ(親)は、先程のサンプルのジョイント階層の部分です。 ピラミッドの移動はワールド空間でアニメーションされていて、ティーポットの回転はローカル空間でアニメーションされています。 (移動と回転が)アニメーションされたボールプリミティブ(ドライバオブジェクト)は、Parent拘束を使ってティーポット(ドリブンオブジェクト)の親に 再親子化 したいオブジェクトです。

ピラミッドとボールのバインドポーズは、そのParent拘束の開始位置と 古い 親(ピラミッド)と 新しい 親(ボール)間のオフセットを定義します。

再親子化オペレーションとBlendパラメータをプロモート(露出)させたParent拘束VOPネットワーク
Blendを使ったボールとティーポットのParent拘束

Path拘束

Path拘束( Tangent とも呼びます)は、ドリブンオブジェクトが必ずカーブのパスに沿ったドライバ位置に追従するようにするために、オブジェクトをカーブ沿いの位置に拘束することができます。 これによって、シーン内のオブジェクトの動きがパス沿いの位置で駆動させることができます。

例えば、Path拘束を使用することで、ローラーコースター、電車、車、走るキャラクタをシーン内の特定の経路に沿って移動させることができます。

Path拘束を作成するには、以下のノードを組み合わせて使用する必要があります:

Transform From Path VOPノードの Curve Position パラメータは、その拘束のカーブ沿いのドリブンオブジェクトの位置を決めます。 このパラメータをVOPからプロモート(露出)させて使用することで、ドリブンオブジェクトのカーブ沿いの位置をアニメーションさせることができます。

特定の方法でドリブンオブジェクトがカーブから離れるようにオフセットさせたいのであれば、Path拘束ネットワークに Offset Transforms VOPノードを追加すると良いでしょう。

サンプル1: ティーポットプリミティブがカーブのパスに追従するように拘束する

Curve Positionパラメータをプロモート(露出)させたPath拘束VOPネットワーク
Curve Positionの値を変更してカーブのパス沿いに拘束されたティーポットを移動

サンプル2: Path拘束したティーポットをその注ぎ口がカーブのパスの方へ向くように回転オフセットさせる

Curve Positionパラメータをプロモート(露出)させて回転オフセットしたPath拘束VOPネットワーク
ティーポットのX軸回転を-90度オフセットさせたのでその注ぎ口がカーブのパスの方へ向きました

Surface拘束

Surface拘束( Geometry拘束 とも呼びます)は、ドリブンオブジェクトがドライバオブジェクトのサーフェスが変形しても一緒に移動するように、または、ドリブンオブジェクトがドライバオブジェクトのサーフェストポロジーがアニメーションしてもそれを考慮して追従するように、あるオブジェクトを他のオブジェクトのサーフェスに拘束することができます。

例えば、Surface拘束を使用することで、馬にサドルを取り付けたり、歩行キャラクタが歩く地形のトポロジーを考慮するようにしたり、瞼を眼球の上に滑らせたりすることができます。

Surface拘束をセットアップするには、以下のノードを組み合わせて使用する必要があります:

Transform From Surface VOPノードの Primitive Number パラメータと UV Position パラメータは、ドライブオブジェクトの取り付け先のドライバサーフェス上のプリミティブを決めます。

Surface Constraint VOPノードの Bias パラメータは、ドリブンオブジェクトへのドライバオブジェクトの影響力の 強さ を決めます。 この強さの範囲は0(影響なし)から1.0(完全に拘束を適用)です。 このパラメータをVOPからプロモート(露出)させて使用することで、Surface拘束の強度を設定したりキーを打つことができます。

サンプル1: ティーポットプリミティブをRubber Toyサーフェス上の特定のプリミティブに取り付ける

このサンプルでは、ティーポット(ドリブンオブジェクト)をRubber Toyモデルの特定の プリミティブ番号 のサーフェス(ドライバサーフェス)上に取り付けています。

Surface拘束VOPネットワーク
Rubber Toyの頭の指定したプリミティブにティーポットを接着したSurface拘束

サンプル2: ティーポットプリミティブをRubber Toyのサーフェスの一番近いプリミティブに取り付ける

以下のサンプルでは、入力のティーポットポーズを見て、そこからドライバサーフェス(Rubber ToyのRestサーフェス)上の一番近くにあるプリミティブを検索してから、そのプリミティブを使用してアニメーションRubber Toyの プリミティブ番号UV位置 のパラメータを設定することで、ティーポット(ドリブンオブジェクト)をそのアニメーションRubber Topyモデルのプリミティブ(ドライバオブジェクト)に取り付けています。

最近接プリミティブのセットアップをしたSurface拘束VOPネットワーク
Rubber Toyの尻尾の一番近くにあるプリミティブにティーポットを接着させるSurface拘束

以下のサンプルでは、 Blend Transforms VOPノードでSurface拘束に Bias を追加しています。 この Bias パラメータにキーを打つことで、Rubber Toyの後を追うようにティーポットを動かしてから、そのRubber Toyのサーフェスの一番近くにあるプリミティブにそのティーポットが接着するようにすることができます。

最近接プリミティブのセットアップとBiasパラメータをプロモート(露出)させたSurface拘束VOPネットワーク
BiasパラメータをアニメーションさせてRubber Toyの尻尾の一番近くにあるプリミティブにティーポットを接着させるSurface拘束

Blend Transforms拘束

Blend Transforms拘束は、オブジェクト間(例えば、1つのオブジェクトともう1つのオブジェクト間、または、1つのオブジェクトと2つのオブジェクト間)でフルトランスフォーム(移動、回転、スケール)をブレンドすることができ、不要な移動、回転、スケールを対象外にすることもできます。 これは、あるオブジェクトと別のオブジェクトの移動をブレンドしたいものの、それらのオブジェクトの回転とスケールは維持したい時に役立ちます。

例えば、Blend Transforms拘束を使用することで、プロップとキャラクタの両手の移動をブレンドさせることで、キャラクタの両手間でプロップが等距離に配置されるように動かすことができます。

Blend Transforms拘束をセットアップするには、以下のノードを組み合わせて使用する必要があります:

Blend Transforms VOP ノードの入力がドライバオブジェクトで、出力がドリブンオブジェクトです。

Blend Transforms VOPノードの Bias パラメータは、ドリブンオブジェクトへのドライバオブジェクトの影響力の 強さ を決めます。 この強さの範囲は0(影響なし)から1.0(完全に拘束を適用)です。 このパラメータをVOPからプロモート(露出)させて使用することで、Blend Transforms拘束の強度を設定したりキーを打つことができます。

この拘束にオフセットを追加したいのであれば、拘束ネットワークに Offset Transforms VOPノードを追加します。

特定の時間でトランスフォームをブレンドさせたい場合は、トランスフォーム(移動、回転、スケール)毎に Blend Transforms VOP ノードを作成してから、 Bias パラメータで値を設定したりキーを打つ必要があります。 スケール のトランスフォームをブレンドしたい場合は、さらにあなたが求めている挙動に応じて拘束ネットワークに Compliment VOPノードを追加する必要があります。 この Compliment VOP ノードは、ドリブンオブジェクトのトランスフォームに書き出されるスケール値を反転します。

サンプル: アニメーションするティーポットプリミティブのトランスフォームをピラミッドと球の間でブレンドする

このサンプルでは、Blend Transforms拘束は、ピラミッド(1番目の入力のドライバオブジェクト)とボール(2番目の入力のドライバオブジェクト)のトランスフォームを見てから、その結果の値をティーポット(ドリブンオブジェクト)のトランスフォームに書き出します。

Blend Transforms拘束VOPネットワーク
ティーポットの移動、回転、スケールをピラミッドとボールの間でブレンド
See also

KineFX

プロシージャルリギング

互換性

アニメーションのリターゲット

ペイン