Houdini 21.0 キャラクタ KineFX

リグコンポーネントを使ったキャラクタリギング

On this page

概要

このページでは、いくつかの事前構築済みリグコンポーネントを使用してElectraテストジオメトリの完全なリグを構築します。事前構築済みリグコンポーネントは、FK、IK、ボーン変形といったリグ機能を追加するためのインターフェースが用意されたAPEX Autorig Component SOPから利用可能です。

この例では、以下のリグ機能を追加してElectraのリグを完成させます:

  • Electraのスケルトンジョイント階層に基づいたFKリグ階層

  • ボーン変形

  • rootコントロールおよびcogコントロール

  • 背骨ロジック

  • IK(腕と脚)

  • 腕のツイスト機能

  • IK/FKブレンド

  • リバースフット

  • Lookat

  • Electraのコントロールの外観設定

このファイルの例では、事前構築済みリグコンポーネントを使用してElectraのリグを構築する方法を説明しています。

RigCharacter

これ以降のセクションでは、以下の最終ネットワークを構築する手順を段階を追って説明します:

セットアップ

APEX Autorig Component SOPを使用してリグ機能を追加する前に、Electraのキャラクタ要素(スキンとスケルトン)をキャラクタフォルダ構造にパックしておく必要があります:

  1. Electra SOPで、 Output パラメータを Skin Surface に設定します。これによって、Electraのシェイプが1番目の出力として、Electraのスケルトンが2番目の出力として出力されます。

  2. Electraに現在設定されているタグを削除します。Attribute Delete SOPで、 Point Attributestagsに設定します。この例では、一度まっさらにしたスケルトンから開始し、Electraのリグを構築していく中で、必要なタグを追加していきます。

  3. ネットワークエディタのTabメニューで、Attribute Adjust Array SOPのエイリアス(別名)であるAttribute Adjust Tagsを検索します。Attribute Adjust Tagsを使用して、Electraのスケルトンにタグを追加します。これらのタグは、ネットワークの下流で様々なリグコンポーネントがElectraのリグを構築する際に使用されます。デフォルトで、Attribute Adjust Tagsは Attribute Class パラメータを Point に、 Array TypeString に設定します。

    このページの以降のセクションでは、タグがスケルトンに追加されるタイミングについて説明します。以下の画像は、Electraに追加されるタグの一例を示しています:

  4. APEX Pack Character SOPは、Electraの形状とスケルトンをパックキャラクタフォルダ構造に追加します。デフォルトで、 Shape Path/Base.shpに、 Skeleton Path/Base.skelに設定されます。これらは、Electraシェイプとスケルトンがフォルダ構造内にパックされる際、それぞれに適用される名前です。APEX Pack Character SOPを選択し、Rig Treeビューでキャラクタフォルダ構造を確認します。Rig Treeビューで、 TypePacked Folders に設定します:

    /
    -- Base.shp
    -- Base.skel
    

    Note

    Add FK and Bone Deform Components をオンにすると、キャラクタのリグにFKおよびボーン変形機能が自動的に追加されます。そのため、以下のセクションで説明しているFKトランスフォームボーン変形リグコンポーネントを手動で追加する必要はありません。残りのリグを構築するのに、すべてのジョイントがFKコントロールとして利用可能である必要はないので、 Translate GroupRotate GroupScale Group パラメータのエントリを削除してください。

FKおよびボーン変形

FKリグを作成し、ボーン変形ロジックを追加してElectraのFK機能を確認します:

  1. APEX Autorig Component SOPfkノードは、FKトランスフォームリグコンポーネント|/character/kinefx/rig_components/fktransform]で、Electraのスケルトンをリグ階層に変換することでリググラフを作成します。各スケルトンジョイントを受け取り、リググラフにTransformObjectノードを作成します。APEXネットワークビューでTransformObjectノードを確認することができます。

    • fkノードで、 Component Source パラメータを FK Transform に設定します。

    • デフォルトでは、FKトランスフォームコンポーネントによって作成されるリグの名前は( Rig セクションの Name パラメータで指定されている)Base.rigです。

    • Source タブの Guide Skeleton パラメータで、リグ階層を作成するのに使用するスケルトンを指定します。

    • FKトランスフォームコンポーネントにキャラクタフォルダ構造にリググラフを追加します。fkノードを選択し、Rig Treeビューでフォルダ階層を確認します:

      /
      -- Base.rig
      -- Base.shp
      -- Base.skel
      
  2. APEX Autorig Component SOPのbone_deformは、ボーン変形ロジックをリググラフに追加するボーン変形リグコンポーネントです。bone_deformノードで、 Component SourceBone Deform に設定します。 Rest SkeletonRest GeoOutput Geo パラメータのデフォルト値は、キャラクタフォルダ構造のキャラクタ要素の名前に一致します。

  3. AnimateステートでElectraにFKポージングを実行します:

    • bone_deformノードを選択し、そのDisplayフラグをオンにします。

    • 左側のツールバーにある Animateをクリックするか、ビューポート内でEnterを押します:

      ElectraのFKの挙動
  4. Electraのジョイントは、移動および回転させることができます。なぜなら、Electraのスケルトンにはpromoteプロパティが格納されているからです。スケルトンのプロパティを確認するには:

    • Electra SOPを選択します。

    • Geometry Spreadsheetを開きます。

    • 上部のツールバーのElectraの名前の横にあるドロップダウンメニューから、 Capture Pose を選択します。

    • 上部のツールバーでを選択し、各ジョイントの情報を表示します。

    • properties 列の下のエントリクリックし、 Inspect を選択します。ジョイントのプロパティがリストされ、そのうちの"promote":"t r"は、ジョイントの移動および回転コンポーネントがプロモートされたことを示します。

  5. 残りのリグを構築するのに、すべてのジョイントがFKコントロールとして利用可能である必要はないので、Electraのジョイントからpropertiesアトリビュートを削除します:

    • Attribute Delete SOPで、 Point Attributes パラメータにpropertiesを追加します。これで Point Attributes は“tags properties”に設定されました。

    • fkノードの Controls タブで、 T Promote GroupR Promote GroupS Promote Group パラメータのすべてのエントリを削除します。

rootコントロールおよびcogコントロールを追加する

トランスフォームドライバリグコンポーネントを使用して、Electraリグにrootおよびcogコントロールを追加します。rootコントロールはスケルトンのルートジョイントにあり、cogコントロールはスケルトンの骨盤ジョイントにあります。cogコントロールは、背骨ジョイントチェーンの親として後ほど使用します。

  1. Attribute Adjust Array SOPで、骨盤にタグを追加します。pelvisタグは、トランスフォームドライバリグコンポーネントによって取得されます。タグの作成についての詳細はスケルトンを準備するを参照してください。

    骨盤のタグ
  2. APEX Autorig Component SOPのadd_controlsは、Electraにrootコントロールおよびcogコントロールを追加します。add_controlsノードで、 Component Source パラメータを Transform Driver に設定します。

  3. rootコントロールに対して以下を設定します:

    • Driven タブで、 Driven TransformsC_rootに設定します。これは新しいコントロールによって駆動されるジョイントです。

    • Control タブで、 Driver を新しいrootコントロールの名前に設定します。この例では、 DriverMainに設定します。

    • Driver GuideC_rootに設定します。これにより、新しいコントロールがルートジョイントに配置されます。

    • Shape タブでコントロールシェイプを変更します。 Shape パラメータで、ここにリストされているAPEXコントロールシェイプのいずれかを指定します。

  4. Setups の横にあるをクリックし、もう1つコントロールを追加します。

  5. cogコントロールに対して以下を設定します:

    • cogコントロールがC_pelvisジョイントを駆動するようにしたいので、 Driven タブの Driven TransformsC_pelvisに設定します。 Driven Transforms パラメータはAPEXパスパターンにも対応しているので、#pelvisなどの#tag構文を使用してジョイントを指定することができます。

      Note

      ジョイント名とタグは大文字と小文字を区別します。

    • Control タブの DriverCogに設定します。これは新しいcogコントロールの名前です。

    • cogコントロールを骨盤ジョイントに配置したいので、 Driver GuideC_pelvisまたは#pelvisに設定します。

    • cogコントロールの親をメインコントロールに設定するため、 Driver ParentMainに設定します。

    • Shape タブでコントロールシェイプを変更します。

  6. Animateステートで新しいコントロールを確認します:

    rootおよびcogコントロール付きのElectra

背骨

splineリグコンポーネントを使用して、Electraリグに背骨ロジックを追加します:

  1. Attribute Adjust Array SOPで、spineタグを背骨ジョイントに追加します。これらのタグはsplineリグコンポーネントによって取得されます。

    背骨のタグ
  2. APEX Autorig Component SOPのspineは、spline機能をElectraに追加します。spineノードで、 Component Source パラメータを Spline に設定します。

  3. Driven タブの Driven#spineに設定します。

  4. Parent タブで背骨のコントロールの親を設定します - Root および Tip先ほど追加したコントロールのCogに設定します。

  5. Shape タブでコントロールシェイプを変更します。

  6. Animateステートで背骨の機能を確認します:

IK

マルチIKリグコンポーネントを使用して腕と脚にIK機能を追加します:

  1. Attribute Adjust Array SOPで、L_ArmR_ArmL_LegR_Legという腕と脚のタグを追加します。これらのタグはマルチIKリグコンポーネントによって取得されます。

    腕の脚のタグ

    Note

    Electraの腕には、肩と肘にそれぞれ2つのジョイントがあります - 1つは通常のスケルトンジョイントで、もう1つはツイストジョイントです:

    • 肩のジョイント - *_upperarmおよび*_upperarm_01_twist

    • 肘のジョイント - *_lowerarmおよび*_lowerarm_05_twist

    肩と肘のツイストジョイントにはタグを付けないようにしてください。Attribute Adjust Array SOPの Operation パラメータのジョイントリストに*twistジョイントが含まれていないことを確認します。例えば、タグL_armの場合、 Operation@name=L_upperarm @name=L_lowerarm @name=L_handに設定されている必要があります。@name=L_upperarm_01_twist @name=L_lowerarm_05_twist @name=L_handに設定されていてはいけません。

  2. APEX Autorig Component SOPのikは、IK機能をElectraに追加します。ikノードで、 Component Source パラメータを Multi IK に設定します。

  3. Driven タブの Segments を、IKを追加したいタグに設定します。この例では、 Segments*arm *legに設定します。

    Note

    Segments パラメータは、#tag関数などのAPEXパスパターンを受け取りません。代わりに、このフィールドでは直接タグ名を指定してください。

  4. Parent タブで、 TipMainに設定します。 Pole Vector が空っぽの場合、極ベクトルはtipに親子化されます。

  5. Shape タブでコントロールシェイプを変更します。

  6. AnimateステートでIKの挙動を確認します:

ツイスト

ツイストリグコンポーネントを使用して腕にツイスト機能を追加します:

  1. Attribute Adjust Array SOPで、腕にツイストタグを追加します。肩から肘まで、そして肘から手までの腕のセクション毎に、それぞれ別のタグセットが必要です。ツイストタグは、ルートジョイント、先端のジョイント、およびルートと先端の間にあるツイストジョイント(ルートにあるツイストジョイントも含む)に対して追加しなければなりません。これらのタグはツイストリグコンポーネントによって取得されます:

    ツイストタグ

    Note

    ルートジョイントや先端のジョイントと同じ位置に、ツイストジョイントがある場合があります。Attribute Adjust Array SOPの Operation パラメータでジョイントのリストを確認し、正しいジョイントにタグを付けていることを確認してください。

    例えば、Electraの左上腕の場合、 Operation は以下のように設定されている必要があります:

    • ルートジョイント - @name=L_upperarm

    • 先端のジョイント - @name=L_lowerarm

    • ルートと先端の間のツイストジョイント(ルートにあるツイストジョイントを含む) - @name=L_upperarm_01_twist @name=L_upperarm_02_twist @name=L_upperarm_03_twist @name=L_upperarm_04_twist

    ツイストコンポーネントにおけるジョイントのタグ付け方法についての詳細は、ツイストコンポーネントを参照してください。

    スケルトンジョイント名を確認するには:

    1. Attribute Delete SOPの Point Attributes パラメータで、前に追加したproperties値を削除します。

    2. APEX Autorig Component SOPのfkを選択し、そのDisplayフラグをオンにして、左側のツールバーにある Animateをクリックします:

  2. APEX Autorig Component SOPのtwistは、ツイスト機能をElectraの腕に追加します。twistノードで、 Component Source パラメータを Twist に設定します。

  3. Driven タブの Segments を、ツイスト機能を追加したいタグに設定します。この例では、 Segments*arm_twist*に設定します。

  4. ツイスト機能の効果を確認するために、上腕のジョイントチェーンのルート(肩のジョイント)をピン留めします。ルートをピン留めしないと、すべてのツイストジョイントが同じ量だけ回転してしまいます。

    • 上腕セグメントにpinタグを追加します - Attribute Adjust Array SOPで、L_arm_twist_upperおよびR_arm_twist_upperマルチパラメータに対して、 Values の横にあるをクリックして新しい Value パラメータをpinに設定します。

    • APEX Autorig Component SOPのtwistで、 Settings タブの Pin Root をオンにし、 Pin Tagpinに設定します。ジョイントチェーンのルートに追加されたピンクのコントロールは、そのピンのUpベクトルです。

      ピン留めされていないルート(左)、ピン留めされたルート(右)

IK/FKブレンド

IK/FKブレンドリグコンポーネントを使用して、腕と脚のIKおよびFK間をブレンドする機能を追加します:

  1. APEX Autorig Component SOPのikfkblendは、IK/FKブレンド機能をElectraに追加します。ikfkblendノードで、 Component Source パラメータを IK / FK Blend に設定します。

  2. Driven タブの Segments を、IK/FKブレンドを追加したいタグに設定します。この例では、 Segments*arm *legに設定します。

  3. AnimateステートでIK/FKブレンドの挙動を確認します:

    Note

    IK/FKブレンドコントロールは2つのパーツで構成されています。1つはIKとFKの間のブレンド値を駆動する抽象コントロールで、もう1つはその抽象コントロールを移動できる位置コントロールです:

    IK/FKブレンドコントロール

    ハンドルパラメータUse Click and Drag がオフの場合、抽象コントロールを最初に選択してから、ドラッグしてIK/FKブレンドの効果を確認する必要があります。 Use Click and Drag がオンの場合は、抽象コントロールを一度にクリックアンドドラッグすることができます。

リバースフット

リバースフットリグコンポーネントを使用してリバースフット機能を追加します:

  1. Attribute Adjust Array SOPで、足のタグ(L_footR_foot)、球ジョイントのタグ(ball)、足首ジョイントのタグ(ankle)を追加します。これらのタグはリバースフットリグコンポーネントによって取得されます:

  2. APEX Autorig Component SOPのreverse_footで、 Component Source パラメータを Reverse Foot に設定します。

  3. Driven タブで:

    • Segments*footに設定します。

    • デフォルトでは、 Ankle#ankleに、 Ball#ballに設定されています。これらはElectraのタグ名と一致します。

    • IK Driven パラメータはデフォルトで#ik_tipに設定されています。ik_tip上流のマルチIKリグコンポーネントによって追加されたタグです( Tags タブの _Target パラメータ)。

  4. Parent タグで、 RootMainに設定します。これは上流のトランスフォームドライバコンポーネントによって作成されたルートコントロールです。

  5. Animateステートでリバースフットの挙動を確認します:

    Tip

    以下のホットキーは、ビューポートで抽象コントロール(つま先の前にある白の球)をドラッグする際の挙動を変更します:

    ドラッグの挙動

    アクション

    抽象コントロールの値を整数のステップサイズ単位で変更する

    ⌃ Ctrlを押しながらドラッグします。

    抽象コントロールの値をより遅い速度で変更する

    ⇧ Shiftを押しながらドラッグします。

    抽象コントロールの値をより速い速度で変更する

    ⌃ Ctrl + ⇧ Shiftを押しながらドラッグします。

つま先ジョイントを追加する

Electraのスケルトンにはつま先ジョイントがありませんが、リバースフットコンポーネントは自動的につま先を作成するので、 Driven タブの Toe パラメータには何も指定する必要はありません。独自のつま先ジョイントを追加したい場合:

  1. Rig Attribute VOP SOPを使用してつま先ジョイントを追加します:

  2. Rig Attribute VOP SOPで、Electraのballジョイントを参照として使用して、つま先ジョイントを作成します:以下のようにネットワークを構築する方法については、ガイドスケルトンにジョイントを追加するを参照してください:

    Rig Attribute VOP SOPでつま先ジョイントを追加
  3. Offset Transform VOPTranslate パラメータを調整して、つま先ジョイントの位置を設定します。

  4. 左のつま先のAdd Joint VOPで、 NameL_toeに設定します。同様に、右のつま先のAdd Joint VOPで、 Name パラメータをR_toeに設定します:

    追加されたつま先ジョイント
  5. Attribute Adjust Array SOPで、つま先ジョイントにtoeR_FootL_Footというタグを追加します:

  6. APEX Autorig Component SOPのreverse_footで、 Driven タブの Toe#toeに設定します。

  7. Settings タブで、 Toe Offset および Toe Control Offset を必要に応じて調整します。

Look At

Look Atリグコンポーネントを使用してLook At機能を追加します:

  1. Attribute Adjust Array SOPで、頭部にタグを追加します。このタグはLook Atリグコンポーネントによって取得されます。

    頭部のタグ
  2. APEX Autorig Component SOPのlookatで、 Component Source パラメータを Look At に設定します。

  3. Driven タブの Driven#headに設定します。これはLook Atコントロールによって駆動されるジョイントです。

  4. Driven タブで頭部、ターゲット、Upコントロールの名前を設定します。ここでは Driverhead_driverTargethead_targetUphead_upに設定します。

  5. Electraの頭部が離れてしまわないよう、頭部のドライバの回転のみをプロモートします - Driven タブで Driver Promote R をオンにして、 Driver Promote T をオフに設定します。

  6. ターゲットコントロールの位置を設定します。 Settings タブで World Space をオンにし、 Target Position を調整します。

  7. Upコントロールの位置を設定します:

    • Driven タブで Use Up をオンにして、ビューポートにUpコントロールを表示させます。

    • Settings タブで、 Up Position を調整します。

  8. Shape タブで コントロールのスケールとカラーを設定します:

  9. AnimateステートでLook Atの挙動を確認します:

コントロールを設定する

APEX Configure Controls SOPを使用して、コントロールの形状とカラーを設定します:

  1. APEX Configure Controls SOPで、 Control Configs の横にあるをクリックして、コントロールのグループ毎に設定を追加します。

  2. 設定するコントロールを指定します。 Control Group パラメータで、ドロップダウンリストから選択するか、APEXパスパターン構文を使用してTransformObjectノードのグループを指定します。

  3. Control Configs マルチパラメータのコントロールのグループ毎に、 Use Shape OverrideUse ShapeoffsetUse Color パラメータをオンにし、希望するコントロールの形状、サイズ、カラーを指定します。

    コントロールを設定したら、Electraのリグの構築は完了です:

    コントロールを設定する前(左)と後(右)

アニメーションシーンにElectraを追加する

APEX Scene Add Character SOPおよびAPEX Scene Animate SOPを使用して、Electraをアニメーションシーンに追加します。詳細は、アニメーションワークフローを参照してください。

Full Body IK

この例では、Full Body IKリグコンポーネントを使用してElectraにFull Body IKを追加します:

  1. Attribute Adjust Array SOPで、足、骨盤、手首、首などのジョイントにfbikというタグを追加します。このタグはFull Body IKリグコンポーネントによって取得されます:

  2. APEX Autorig Component SOPのfkノードで、 Controls タブにある T Promote GroupR Promote GroupS Promote Group パラメータのすべてのエントリを削除します。

  3. APEX Autorig Component SOPのfbikで、 Component Source パラメータを Full Body IK に設定します。デフォルトで、 Drivers タブの Drivers パラメータは%tag(fbik)に設定されているため、fbikとタグ付けされたジョイントがFull Body IKの挙動を駆動します。

  4. AnimateステートでFull Body IKの挙動を確認します:

KineFX

概要

キャラクタ要素の準備

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

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

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

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

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

変形

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

H20以前

ペイン

別表