On this page |
このページでは、3つのジョイントを含むチューブジオメトリを変形するためのSOPネットワークとグラフリグロジックの例を紹介します。
SOPネットワーク ¶
以下は、キャラクタ要素からアニメーション環境までのSOPネットワークです:
-
キャラクタ要素は、スケルトン、チューブジオメトリ、ジオメトリ上にキャプチャウェイトを作成することで用意します。
-
リグロジックは、
bone_deform_rig
ノード内のAPEXグラフに存在します。 -
create_character
ノードはキャラクタ要素をキャラクタに組み立て、assemble_scene
ノードはキャラクタをアニメーションシーンに追加します。詳細は、パックフォルダ構造にデータを組み立てるを参照してください。 -
アニメーションシーンは、
animate
ノードでHoudiniのアニメーション環境(Animateステート)に入力されます。

リグロジック ¶
以下のグラフに示すのは、3つのジョイントを含むチューブジオメトリを変形するためのbone_deform_rig
のリグロジックです:

FK階層
3つのTransformObject(緑)ノードが、joint_0
をjoint_1
の親とし、joint_1
をjoint_2
の親とする、3ジョイントのFK階層を確立しています。joint_0
、joint_1
、joint_2
TransformObjectノードのワールドトランスフォームがskel::SetPointTransformsノードに接続され、スケルトンのジョイントが更新されます。skel::SetPointTransformsの出力はアニメーションスケルトンで、それがsop::bonedeformノードに渡されます。
skel::SetPointTransformsはスケルトンデフォーマです。トランスフォームを受け取り、それをスケルトンのジョイントに適用します。これは特殊なノードで、 transforms 可変長入力のサブポート名が重要になります。サブポート名が入力スケルトン( geo 入力)のジョイント名にマッピングされるからです。例えば、 joint_0 サブポートに渡されるトランスフォームに加えられた変更は、スケルトンのjoint_0
を更新します。
Important
このため、skel::SetPointTransformsのサブポート名を、スケルトンのジョイント名と一致するように更新する必要があります(サブポート名をクリックして、そのサブポートの名前を変更します)。

Note
APEX Edit Graph SOPの Update Rest Transforms From Skeleton ボタンを使用してスケルトンからリグ階層の静止位置を更新しない場合、TransformObjectノードの名前をスケルトンジョイン名に一致させる必要はありません(これを行なう方法に関する詳細は、How-toを参照してください)。
この例では、スケルトンのジョイント名をデフォルトのpoint_0
、point_1
、point_2
からjoint_0
、joint_1
、joint_2
に変更しました。Skeleton SOPでジョイントの名前を変更するには:
-
Skeleton SOPを選択し、ビューアステートに入ります(ビューポートでEnterを押します)。
-
ビューアステートツールバーで、 Mode を Modify に設定します(またはビューポート上でFを押します)。
-
スケルトンの各ポイントをクリックし、ビューアステートツールバーの Name フィールドでジョイントの名前を変更します。
Valueノード
静止スケルトンは、ジオメトリ変形を実行するための参照として使用されます。静止スケルトンとアニメーションスケルトンのトランスフォームの差を計算し、この差を使用して、ジオメトリの変形方法を決定します。skel::SetPointTransformsは接続されたジオメトリのインプレース変更を実行するため、Value<Geometry>ノードを使用して静止スケルトンのコピーを作成してから、skel::SetPointTransformsに接続する必要があります。コピーが作成されなかった場合、skel::SetPointTransformsは静止スケルトンを更新してしまいます。その結果、静止スケルトンとアニメーションスケルトンが同じになり、差分のないトランスフォームがジオメトリ変形に適用されることになります。
ボーン変形
sop::bonedeformグラフノードの最初の3つの入力は、Bone Deform SOPノードの3つの入力に呼応しています。
ジオメトリ変形の表示 ¶
Animateステートでジオメトリ変形を表示するには:
-
ネットワークエディタで
APEX Scene Animate SOPを選択して、Displayフラグをオンにします。
-
左側のツールバーにある
Animateをクリックします。
Note
Animateステートのジオメトリが正しく見えない場合は、リググラフの静止トランスフォームが適切に設定されていない可能性があります。スケルトンに基づいて静止トランスフォームを設定するには:
-
TransformObjectノードの名前がスケルトンのジョイント名と一致していることを確認します。
-
ネットワークエディタで
APEX Edit Graph SOPを選択します。
-
パラメータエディタで Update Rest Transforms From Skeleton をクリックします。
-
ダイアログが表示されたら、ネットワークエディタで
Skeleton SOPを選択すると、ダイアログで自動的にSkeletonノードが選択されます。
-
Accept をクリックします。
-
APEX Scene Animate SOPを選択し、 Reset All をクリックします。
-
Animateステートに入ります。
How-to ¶
To... | Do this |
---|---|
スケルトンに呼応したリグ階層を作成する |
|
スケルトンからリグ階層の静止位置を更新する |
|