Houdini 20.5 キャラクタ KineFX

ジオメトリ変形用のグラフ

On this page
この機能はまだ開発中です。現在の機能は未完成で変更される予定であり、 ドキュメントが手薄だったり、なかったりします。 これを使用するときは、そのことに我慢してください。

このページでは、3つのジョイントを含むチューブジオメトリを変形するためのSOPネットワークとグラフリグロジックの例を紹介します。

SOPネットワーク

以下は、キャラクタ要素からアニメーション環境までのSOPネットワークです:

  1. キャラクタ要素は、スケルトン、チューブジオメトリ、ジオメトリ上にキャプチャウェイトを作成することで用意します。

  2. リグロジックは、bone_deform_rigノード内のAPEXグラフに存在します。

  3. create_characterノードはキャラクタ要素をキャラクタに組み立て、assemble_sceneノードはキャラクタをアニメーションシーンに追加します。詳細は、パックフォルダ構造にデータを組み立てるを参照してください。

  4. アニメーションシーンは、animateノードでHoudiniのアニメーション環境(Animateステート)に入力されます。

ボーン変形ネットワーク

リグロジック

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

ボーン変形リグロジック

FK階層

3つのTransformObject(緑)ノードが、joint_0joint_1の親とし、joint_1joint_2の親とする、3ジョイントのFK階層を確立しています。joint_0joint_1joint_2 TransformObjectノードのワールドトランスフォームがskel::SetPointTransformsノードに接続され、スケルトンのジョイントが更新されます。skel::SetPointTransformsの出力はアニメーションスケルトンで、それがsop::bonedeformノードに渡されます。

skel::SetPointTransforms

skel::SetPointTransformsはスケルトンデフォーマです。トランスフォームを受け取り、それをスケルトンのジョイントに適用します。これは特殊なノードで、 transforms 可変長入力のサブポート名が重要になります。サブポート名が入力スケルトン( geo 入力)のジョイント名にマッピングされるからです。例えば、 joint_0 サブポートに渡されるトランスフォームに加えられた変更は、スケルトンのjoint_0を更新します。

Important

このため、skel::SetPointTransformsのサブポート名を、スケルトンのジョイント名と一致するように更新する必要があります(サブポート名をクリックして、そのサブポートの名前を変更します)。

スケルトンジョイント名とskel::SetPointTransformsサブポート名の関係

Note

APEX Edit Graph SOPUpdate Rest Transforms From Skeleton ボタンを使用してスケルトンからリグ階層の静止位置を更新しない場合、TransformObjectノードの名前をスケルトンジョイン名に一致させる必要はありません(これを行なう方法に関する詳細は、How-toを参照してください)。

この例では、スケルトンのジョイント名をデフォルトのpoint_0point_1point_2からjoint_0joint_1joint_2に変更しました。Skeleton SOPでジョイントの名前を変更するには:

  1. Skeleton SOPを選択し、ビューアステートに入ります(ビューポートでEnterを押します)。

  2. ビューアステートツールバーで、 ModeModify に設定します(またはビューポート上でFを押します)。

  3. スケルトンの各ポイントをクリックし、ビューアステートツールバーの Name フィールドでジョイントの名前を変更します。

Valueノード

静止スケルトンは、ジオメトリ変形を実行するための参照として使用されます。静止スケルトンとアニメーションスケルトンのトランスフォームの差を計算し、この差を使用して、ジオメトリの変形方法を決定します。skel::SetPointTransformsは接続されたジオメトリのインプレース変更を実行するため、Value<Geometry>ノードを使用して静止スケルトンのコピーを作成してから、skel::SetPointTransformsに接続する必要があります。コピーが作成されなかった場合、skel::SetPointTransformsは静止スケルトンを更新してしまいます。その結果、静止スケルトンとアニメーションスケルトンが同じになり、差分のないトランスフォームがジオメトリ変形に適用されることになります。

ボーン変形

sop::bonedeformグラフノードの最初の3つの入力は、Bone Deform SOPノードの3つの入力に呼応しています。

ジオメトリ変形の表示

Animateステートでジオメトリ変形を表示するには:

  1. ネットワークエディタでAPEX Scene Animate SOPを選択して、Displayフラグをオンにします。

  2. 左側のツールバーにある Animateをクリックします。

Note

Animateステートのジオメトリが正しく見えない場合は、リググラフの静止トランスフォームが適切に設定されていない可能性があります。スケルトンに基づいて静止トランスフォームを設定するには:

  1. TransformObjectノードの名前がスケルトンのジョイント名と一致していることを確認します。

  2. ネットワークエディタでAPEX Edit Graph SOPを選択します。

  3. パラメータエディタで Update Rest Transforms From Skeleton をクリックします。

  4. ダイアログが表示されたら、ネットワークエディタでSkeleton SOPを選択すると、ダイアログで自動的にSkeletonノードが選択されます。

  5. Accept をクリックします。

  6. APEX Scene Animate SOPを選択し、 Reset All をクリックします。

  7. Animateステートに入ります。

How-to

To...Do this

スケルトンに呼応したリグ階層を作成する

APEX Edit Graph SOPImport KineFX Skeleton ボタンを使用してください。

スケルトンからリグ階層の静止位置を更新する

  1. APEX Edit Graph SOPのパラメータの Rigging Scripts セクションで、 Update Rest Transforms From Skeleton をクリックしてください。

    Note

    このスクリプトを正しく実行させるには、TransformObjectノードの名前がスケルトンのジョイント名と一致している必要があります。

  2. ダイアログが開いたら、ネットワークでSkeleton SOPを選択して Accept をクリックします。TransformObjectノードの restlocal パラメータが更新されます(TransformObjectノードを選択し、 P を押してノードパラメータウィンドウを表示すると、更新された値を確認できます)。

KineFX

概要

キャラクタ要素の準備

APEXグラフを使用したリギング

APEXスクリプトを使用したリググラフの構築

リグコンポーネントを使用したリギング

ビューポート内でアニメーションを付ける

SOPベースのアニメーション

変形

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

H20以前

ペイン

別表