Houdini 20.5 キャラクタ KineFX

スキンのキャプチャ

On this page

キャプチャは、スキン変形用のジオメトリ上にウェイトを作成するための方法です。 キャプチャウェイトはジオメトリ上に作成され、スケルトンジョイントにウェイトが付けられます。 ジョイントが動くと、キャプチャウェイトとジョイントの位置に応じてジオメトリが変形します。

他のDCCソフトウェアとは対照的に、Houdiniのキャプチャの工程は、ウェイト作成と変形で分かれています。 こうして、Houdiniの広範なノードネットワークを使用してプロシージャルにスキンジオメトリをスキニングし、非破壊ワークフローで作業することができます。

キャプチャウェイトは、以下のSOPノードを使用して作成および修正することができます:

キャプチャウェイトの作成

説明

Joint Capture Biharmonic SOP

ジョイントの位置とボリュームに基づいて、滑らかなキャプチャウェイトを作成します。 より柔らかくて、機械的でない、有機的な変形に対してうまく動作します。

Joint Capture Proximity SOP

ジオメトリからスケルトンジョイントまでの距離に基づいて、キャプチャウェイトを作成します。 これは、Joint Capture Biharmonic SOPよりも素早く、計算負荷の低い処理ですが、特に有機的なサーフェスでは、ウェイトがあまり均等に分散されなかったり、滑らかにならなかったりします。 Joint Capture Proximity SOPは、チューブなどの単純なジオメトリのリギングでうまく動作します。

Capture Packed Geometry SOP

これは、指定したジョイントにジオメトリピースが100%のウェイトで割り当てられる剛体のウェイトメソッドです。

Joint Capture Paint SOP

キャプチャウェイトをジオメトリ上にインタラクティブにペイントすることができます。

キャプチャウェイトの修正

説明

Attach Joint Geometry SOP

ジオメトリをジョイントに取り付けて、ジオメトリがキャプチャの結果に影響を与えるようにします。

Joint Capture Paint SOP

既存のウェイトを持つジオメトリ上に、キャプチャウェイトをインタラクティブにペイントすることができます。

キャプチャウェイトの作成

以下は、キャプチャウェイトを作成し、ジオメトリを変形する基本ワークフローです。 Joint Capture Biharmonic SOPがジョイント位置に基づいてジオメトリ上にキャプチャウェイトを作成し、 Joint Deform SOPがキャプチャウェイトに応じてジオメトリポイントを移動します:

基本のジョイント変形ワークフロー

Joint Capture Biharmonic SOPでDisplayフラグをオンにして、各ジョイントの影響を受けているジオメトリ領域を表示します。 下図の例では、赤の領域のジオメトリポイントは、joint_0の位置に追従します。紫の領域のポイントはjoint_1、青の領域のポイントはjoint_2に追従します:

ジョイントキャプチャ領域

Rig Pose SOPを使用することで、スケルトンのポーズを変更することができ、変形したジオメトリをビューポートで確認することができます:

基本のキャプチャワークフロー
  1. Rig Pose SOPを選択します。

  2. Joint Deform SOPのDisplayフラグをオンにします。

  3. 左側のツールバーの Show Handleをクリックするか、ビューポート内にマウスカーソルを置いてEnterを押します。 これで、Rig Poseビューアステートになり、ジョイントを選択および移動すると、変形したジオメトリを確認することができます:

    Rig Pose SOPを使用してジオメトリを変形

キャプチャアトリビュート

キャプチャウェイトは、Joint Capture系ノード(Joint Capture Biharmonic SOP、Joint Capture Proximity SOP、Joint Capture Paint SOP)によって生成されるboneCaptureアトリビュートに格納されます。 このboneCaptureアトリビュートは、“パック”または“アンパック”のどちらのフォーマットでも設定することができます。

Joint Capture系ノードによって生成されるboneCaptureアトリビュートはパックフォーマットになっており、このフォーマットの方が読み込みや移動が簡単です。 アンパックフォーマットは、VEXを使用してboneCaptureアトリビュートを簡単に操作するために存在しています。

パックキャプチャアトリビュート

前の例では、チューブジオメトリでBiharmonic(重調和)キャプチャを実行しました。 以下の画像では、チューブジオメトリのポイント110は主にスケルトンのjoint_1(紫の領域)から影響を受け、joint_0(赤の領域)からはあまり影響を受けていないことが分かります:

チューブジオメトリのBiharmonicキャプチャ

boneCaptureアトリビュートのパックフォーマットは、Point Index Pairアトリビュートです。 ジオメトリの各ポイントで、そのポイントに影響を与えるジョイント毎に値のペアが格納されます。 値のペアは、ジョイントキャプチャ領域とそれに呼応するウェイトで構成されます。 ウェイト値はキャプチャ領域間で正規化されます。

Geometry Spreadsheetは、チューブジオメトリの各ポイントのboneCaptureアトリビュートを表示します:

  1. Joint Capture Biharmonic SOPを選択します。

  2. ペインの上部で、 New Tabアイコンをクリックして、 New Pane Tab Type ▸ Inspectors ▸ Geometry Spreadsheet を選択します。

  3. Geometry Spreadsheetで、上部のツールバーから Pointsを選択します。下の例では、ポイント110は主にjoint_1(より高いウェイトを持つ)から影響を受け、joint_0の影響は少ないことが分かります:

    Index Pair boneCaptureアトリビュート

アンパックキャプチャアトリビュート

Index Pairアトリビュートは配列アトリビュートに“アンパック”することができ、これによりVEXで操作しやすくなります。 boneCapture配列アトリビュートは、DetailおよびPointアトリビュートで構成され、Capture Attribute Unpack SOPを使用してIndex Pairアトリビュートから取得することができます:

アンパックboneCaptureアトリビュート

アンパック配列アトリビュート

アトリビュートタイプ

説明

boneCapture_pCaptData

Detail

キャプチャ時のキャプチャ領域の逆静止トランスフォームと、その領域の追加データを含む配列。 これは領域毎に20個のfloatの配列です:(4×4マトリックスに16個、テーパーに2個、最小/最大ウェイトに2個)。 KineFXは4×4マトリックスのみを使用します。他のデータは、レガシーのオブジェクトベースのキャラクタシステムで使用されます。

boneCapture_pCaptPath

Detail

キャプチャ工程で使用されるジョイントが格納されている配列。

boneCapture_index

Point

boneCapture_pCaptPathDetailアトリビュートのインデックスが格納されている配列。

boneCapture_data

Point

boneCapture_indexで参照されている各ジョイントに関連付けられているウェイトが格納されている配列。

アンパック配列アトリビュートは、Geometry Spreadsheetで確認することができます:

  1. Capture Attribute Unpack SOPを選択します。

  2. Geometry Spreadsheetで、上部のツールバーから Detailまたは Pointsを選択します:

    アンパックboneCapture配列Detailアトリビュート

    boneCapture_dataPointアトリビュートでのウェイト値は、パックIndex Pair boneCaptureアトリビュートのそれと一致します:

    アンパックboneCapture配列Pointアトリビュート

アンパックboneCapture配列アトリビュートは、Capture Attribute Pack SOPを使用してIndex Pairアトリビュートにパックすることができます。

キャプチャジオメトリシェイプを使用してキャプチャウェイトを修正する

Attach Joint Geometry SOPを使用すると、スケルトンジョイントにジオメトリを取り付けることができます。 このジオメトリは、下流のJoint Capture Biharmonic SOPでのキャプチャウェイト作成の結果に影響を与えます。

Biharmonic(重調和)キャプチャに影響を与えるジオメトリシェイプを作成する工程:

  1. キャプチャジオメトリシェイプを作成します。

  2. キャプチャジオメトリシェイプをスケルトンジョイントに割り当てます。

  3. キャプチャジオメトリシェイプをBiharmonicキャプチャ工程に適用します。

このファイルのサンプルでは、ジョイントに取り付けたジオメトリを使用してBiharmonicキャプチャの結果に影響を与える方法を説明しています。

capturegeoexample

キャプチャジオメトリシェイプの作成

ネットワークエディタで、キャラクタのボリューム内部のワールド空間位置にキャプチャジオメトリシェイプを作成します。 ボリューム内部のキャプチャジオメトリポイントのみが、Biharmonic(重調和)計算で考慮されます。 キャプチャジオメトリのサイズまたはシェイプを変更するには、Edit SOPまたはTransform SOPなどのSOPノードを使用します。

Warning

キャプチャシェイプにはポリゴンジオメトリのみを使用してください。 NURBSは適切に動作 しません

キャプチャシェイプライブラリ
ビューポートでのワールド空間シェイプ

Merge Packed SOP(create_capture_geo_library)は、キャプチャジオメトリのセットをマージしてシェイプのライブラリを作成します。Merge Packed SOPで:

  • Name Primitive Attribute パラメータはデフォルトでオンになっています。 入力をMerge Packed SOPに接続すると、 Name パラメータが自動的に作成され、入力ノードの名前が入力されます。 Name パラメータをwrist_lefthips_tiltなどの分かりやすい名前で更新することで、キャプチャジオメトリシェイプに新しい名前を定義することができます。

  • Name Override Attribute パラメータをオンにすると、デフォルトでnameアトリビュートに設定されます。 Name Override Attribute がオンの時、Merge Packed SOPは入力ジオメトリに存在するnameアトリビュートの値にシェイプ名を設定します。 nameアトリビュートが存在しない場合、代わりに Name パラメータが使用されます。

Warning

下流のAttach Joint Geometry SOPを使用してシェイプをジョイントに割り当てた後は、Merge Packed SOPの Reload Node Names ボタンをクリック しないでください 。 そのボタンをクリックすると、シェイプの名前がデフォルトに戻って、シェイプとジョイントとのすべての割り当てが無効になってしまいます。

キャプチャジオメトリシェイプをジョイントに割り当てる

Attach Joint Geometry SOPを使用して、キャプチャジオメトリシェイプをスケルトンジョイントに割り当てます。 これによりシェイプをジョイントにリンクして、シェイプをジョイントの キャプチャオブジェクト として指定することができます:

Attach Joint Geometry SOPで、 Role パラメータを Capture Geo に設定すると、取り付けられたジオメトリを使用してBiharmonicキャプチャに影響を与えられるようになります。

キャプチャジオメトリシェイプをキャラクタのジョイントに割り当てるには:

  1. Attach Joint Geometry SOPを選択します。

  2. 左のツールバーの Show Handleをクリックするか、ビューポートにマウスカーソルを移動してEnterを押します。 これで、Attach Joint Geometryビューアステートになります。

  3. ビューアステートのツールバーで、 Mode ▸ Assign Shapes を選択してその操作モードをシェイプ割り当てに設定し、 Assign in World Space をオンにします。 ワールド空間シェイプは青で表示されます:

  4. ビューアステートで、スケルトンのジョイントをクリックし、Gを押したまま、そのジョイントに割り当てたいシェイプをクリックします。

    パラメータエディタの Add Shapes タブに、ジョイントの新しい Assign Shapes マルチパラメータが以下のパラメータとともに表示されます:

    • Group - 選択したジョイント。

    • Shape Name - キャプチャジオメトリシェイプ。

    • Keep Shape World Transform はオンになっています。

    ジョイントの周りには、それにシェイプが割り当てられていることを示す青いリングが表示されます。 これで、 Shape Name パラメータのキャプチャジオメトリシェイプが、 Group パラメータのジョイントに割り当てられました。 ワールド空間シェイプの位置(ワールド空間の位置とキャラクタに対する相対位置)は 変わりません

    ジョイントにシェイプが割り当てられたことを示す青いリング

    ビューアステートツールバーの Create New Group ボタンをクリックするか、パラメータエディタで手動でマルチパラメータを追加しても、新しく Assign Shapes マルチパラメータを作成することができます。

Tip

シェイプの割り当てからジョイントを削除したい場合、ビューアステートで⌃ Ctrlを押したままそのジョイントをクリックします。

キャプチャジオメトリシェイプをキャプチャ処理に適用する

Joint Capture Biharmonic SOPは、キャプチャジオメトリシェイプをジョイントに割り当てた、更新されたスケルトンを受け取り、キャラクタジオメトリ上にキャプチャウェイトを作成します。 その後、キャラクタジオメトリはJoint Deform SOPによって変形されます:

キャプチャシェイプをBiharmonicキャプチャに適用する

Joint Capture Biharmonic SOP(create_capture_weights)で、 Capture Geo Role パラメータはデフォルトで Capture Geo に設定されています。 これにより、キャプチャジオメトリがBiharmonicキャプチャの結果に影響を与えるようになります。

キャプチャジオメトリシェイプを対称化する

キャプチャジオメトリシェイプがスケルトンの片側に割り当てられている場合、Skeleton Mirror SOPを使用して、シェイプをもう片側に対称化することができます。 その後、対称化されたシェイプは別のAttach Joint Geometry SOPを使用して入力スケルトンに転送されます:

“”“キャプチャジオメトリシェイプを対称化して入力スケルトンに転送”

keep_left_side_joints

このDelete Joints SOPは、スケルトンの片側のジョイントを削除して、後続の対称化の手順をすっきりと開始できるようにします(キャプチャシェイプとジョイントの両方を対称化する場合)。 例えば、キャプチャシェイプがスケルトンの左側に追加される場合、スケルトンの 側のジョイントをすべて削除します。 後続のSkeleton Mirror SOPでは、スケルトンの左側にあるジョイントとキャプチャシェイプが右側に対称化されます。

Group パラメータで、削除したいジョイントのセットを指定します。

mirror_joints_and_capture_geo

このSkeleton Mirror SOPは、対称化の手法でスケルトン上のポイントを複製します。 Skeleton Mirror SOPの出力は、ジョイントシェイプがキャラクタの両側で対称化されたスケルトンです。

Find Tokens パラメータを、スケルトンジョイントの接頭辞または接尾辞と一致するように設定します。 対称化されたジョイントの名前は、元のジョイント名の接頭辞または接尾辞を Replace Tokens パラメータで置き換えたものになります。 例えば、 Find TokensL_で、 Replace TokensR_の場合、L_Armの対称化されたジョイントはR_Armになります。

transfer_mirrored_capture_geo

このAttach Joint Geometry SOPは、対称化されたシェイプをスケルトンに転送します。

Add Shapes タブで、 RoleCapture Geo に設定します。

Shape Template タブで、対称化したシェイプをスケルトンに転送する方法を指定します:

  • Target Joints - 新しく対称化されたシェイプを適用するスケルトンジョイントを指定します(例えば、@name=R_*)。

  • Template Joints - スケルトンに転送するシェイプを指定します(例えば、@name=R_*)。

  • Match ByAttribute Value に設定します。 これは、シェイプとジョイントのnameアトリビュートに基づいて、キャプチャジオメトリライブラリのシェイプをスケルトンジョイントに一致させます(nameアトリビュートは、 Attribute to Match パラメータで指定されます)。

  • Keep Template World Transform をオンすると、シェイプのワールド位置を使用することができます。

シェイプテンプレート

Attach Joint Geometry SOPのShape Template入力(3番目の入力)を使用すると、キャプチャジオメトリライブラリのシェイプをスケルトンジョイントに自動的に割り当てることができます:

キャプチャジオメトリライブラリをシェイプテンプレートとして使用

promote_prim_to_point

このAttribute Promote SOPは、キャプチャジオメトリライブラリ(create_capture_geo_library)の Primitive nameアトリビュートを、Attach Joint Geometry SOPがShape Template入力で受け入れる point アトリビュートに変換します。

以下のパラメータを設定します:

  • Original Name = name

  • Original Class = Primitive

  • New Class = Point

  • Delete Original をオンにすると、Primitive nameアトリビュートが削除されます(もう必要ないため)。

attach_capture_geo_to_joints

Add Shapes タブで、 RoleCapture Geo に設定します。

Shape Template タブで、シェイプテンプレートのシェイプをスケルトンに転送する方法を指定します:

  • Target Joints - シェイプテンプレートを適用するスケルトンジョイントを指定します。

  • Template Joints - スケルトンに割り当てるシェイプを指定します。

  • Match By パラメータを Attribute Value に設定します。 これは、シェイプとジョイントのnameアトリビュートに基づいて、シェイプテンプレートをスケルトンジョイントに一致させます(nameアトリビュートは、 Attribute to Match パラメータで指定されます)。

  • Keep Template World Transform をオンすると、シェイプのワールド位置を使用することができます。

キャプチャウェイトのペイント

Joint Capture Paint SOPを使用すると、キャプチャウェイトをジオメトリ上にインタラクティブにペイントすることができます。 新しいキャプチャウェイトを作成したり、既存のキャプチャウェイトを変更するのに使用することができます:

キャプチャウェイトの作成(左)と既存のウェイトの変更(右)

またRig Pose SOPを使用してアニメーションを追加し、その変形を表示しながら、Joint Capture Point SOPでウェイトをペイントすることもできます:

アニメーションにウェイトをペイント

関連ノード

キャプチャウェイトを作成、編集、ペイント、使用するには、以下のSOPノードを使用します:

ノード

説明

Attach Joint Geometry SOP

ジオメトリをジョイントに取り付けて、Biharmonicキャプチャの結果に影響を与えるようにします。 ジョイント毎に影響する領域を細かく制御できるため、純粋にジョイント位置をベースにしたBiharmonicキャプチャ(Joint Capture Biharmonic SOP)やウェイトペイント(Joint Capture Paint SOP)よりも効果的です。

Capture Attribute Pack SOP

配列アトリビュートのセットを受け取り、命名規則を使用してそれらを単一のIndex Pairアトリビュートに変換します。

Capture Attribute Unpack SOP

Index Pairアトリビュートを受け取り、命名規則を使用してそれを配列アトリビュートのセットに変換します。

Capture Mirror SOP

キャラクタの片側のウェイトをもう片方の側に対称化します。

Capture Packed Geometry SOP

ジオメトリ全体を制御できるジョイントを設定します。これは主に、剛体として変形されるキャラクタの部分に使用されます。

Joint Capture Biharmonic SOP

ジョイントの位置とボリュームに基づいて、ジオメトリ上に滑らかなキャプチャウェイトを作成します。 ジオメトリはその後、Joint Deform SOPによって変形されます。 より柔らかくて、機械的でない、有機的な変形に対してうまく動作します。

Joint Capture Paint SOP

キャプチャウェイトをジオメトリ上にインタラクティブにペイントすることができます。

Joint Capture Proximity SOP

ジオメトリポイントからジョイントまでの距離に基づいて、キャプチャウェイトを作成します。 これは、Joint Capture Biharmonic SOPよりも素早く、計算負荷の低いオペレーションですが、特に有機的なサーフェスでは、ウェイトがあまり均等に分散されなかったり、滑らかにならなかったりします。 Joint Capture Proximity SOPは、チューブなどの単純なジオメトリのリギングでうまく動作します。

Joint Deform SOP

Joint Capture系ノード(Joint Capture Biharmonic SOP、Joint Capture Proximity SOP、Joint Capture Paint SOP)と併用することで、ジオメトリを変形させることができます。

KineFX

概要

キャラクタ要素の準備

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

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

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

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

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

変形

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

H20以前

ペイン

別表