Houdini 21.0 キャラクタ KineFX

単純なジオメトリのリギング

On this page

完全なキャラクタリグは、小さいリグコンポーネントを組み合わせることで構築することができます。Houdiniに同梱されている事前構築済みリグコンポーネントを使用したり、様々なリグで再利用できる独自のコンポーネントを作成することができます。Houdiniの事前構築済みリグコンポーネントは、APEX Autorig Component SOPから利用可能です。これらのSOPには、FK、IK、ボーン変形などの機能を追加するリグコンポーネントへのインターフェースが用意されています。

このページでは、FK、ボーン変形、IKロジックを3つのジョイントのチューブジオメトリに追加しながら、Houdiniの事前構築済みリグコンポーネントについて説明します。その後、トランスフォームドライバリグコンポーネントを使用して、チューブスケルトン上の既存のコントロールを駆動する新しいコントロールを作成します。

FK

この例では、FKトランスフォームリグコンポーネントを使用して、3つのジョイントのチューブジオメトリにFKリグロジックを追加します:

  1. まずチューブジオメトリに対してスケルトンを描画します(スケルトンの作成に関する詳細は、スケルトンの扱い方を参照してください):

    チューブジオメトリにスケルトンを作成
    • Tube SOPで、 Rows3に設定し、他のパラメータを調整してチューブのサイズを変更します。

    • 3つのジョイント(point_0point_1point_2)があるスケルトンを描画します。point_0point_1の親で、point_1はpoint_2の親です。

      チューブスケルトン
  2. 以下のネットワークを接続して、キャラクタにFKリグロジックを追加します(この例では、リグロジックにボーン変形を追加しないため、チューブジオメトリは必要ありません):

    チューブジオメトリにFKリグロジックを追加
  3. Pack Folder SOPは、チューブスケルトングをパックキャラクタフォルダ構造に追加します。このスケルトンの名前をtube.skelにしたいので、そのPack Folder SOPで NametubeTypeskelに設定します。

  4. パックキャラクタフォルダ構造の中身は、Rig Treeビューで確認することができます:

    • ネットワークエディタでPack Folder SOPを選択します。

    • ペインの上部で New Tabアイコンをクリックし、 New Pane Tab Type ▸ Animation ▸ Rig Tree を選択します。

    • Rig Treeビューで、ノード名(ここではadd_to_packed_folder)の横にあるドロップダウンボックスを“Output 1”に設定します。

    • TypePacked Folders に設定します。すると、以下のパックフォルダ構造が表示されます:

      /
      -- tube.skel
      
  5. APEX Autorig Component SOPで、 Component Source パラメータを FK Transform に設定します。このFKリグコンポーネントは、チューブスケルトンをリグ階層に変換することでリググラフを作成します。つまり、このFKリグコンポーネントは、各スケルトンジョイントを受け取り、リググラフ内にTransformObjectノードノードを作成します。その後、TransformObjectノードは、Animateステートでユーザが操作可能なコントロールに変換することができます。

    デフォルトで、FKコンポーネントは、すべての作成されたTransformObjectノードに“bindタグを追加しますこのタグは、 Tags パラメータで指定されます。その後、bindタグは下流の他のリグコンポーネントによって取得され、リグ内のすべての“ジョイント”(TransformObjectノード)に機能を追加します。

    Tip

    FKコンポーネントはスケルトンをリグ階層に変換するため、キャラクタのリグを構築する時は、これを最初の事前構築済みコンポーネントとすると役に立ちます。

    Note

    デフォルトでは、FKコンポーネントによって作成されるリグの名前は( Rig セクションの Name パラメータで指定されている)Base.rigです。このリグの名前を変更しても構いませんが、他のすべての事前構築済みリグコンポーネントのリグ名もデフォルトでBase.rigに設定されているので、ネットワーク内のAPEX Autorig Component SOPチェーン上のすべてのリグ名を更新する必要があることに注意してください。

  6. ガイドスケルトンがないので、 Guide Sourcetube.skelに設定します。

  7. Settings タブの Output Skeleton パラメータで、出力するスケルトン(この例ではtube.skel)を指定します。

  8. Source タブの Skeleton パラメータで、リグ階層を作成するのに使用するスケルトン(この例ではtube.skel)を指定します。

  9. リグ上にコントロールを作成するために、 Controls タブの Promote* パラメータには、コントロールに変換したいTransformObjectノードを指定します。APEXパスパターン構文を使用すると、TransformObjectノードのグループを指定することができます。この例では、すべてのコントロールの移動と回転をプロモートしたいので、 Promote TPromote R*に設定します。

  10. FKコンポーネントは、リググラフをパックキャラクタフォルダ構造に追加します。Rig Treeビューには以下のパックフォルダ構造が表示されます:

    /
    -- Base.rig
    -- tube.skel
    

    以下のAPEXネットワークビューで、FKコンポーネントによって生成されたリググラフを確認することができます(わかりやすくするために、ノードの配置を変更し、色を追加しています)。TransformObjectノードはスケルトンジョイントを表現していて、そのスケルトンジョイント階層に基づいて接続されています。各TransformObjectノードの移動パラメータと回転パラメータはプロモートされています:

    FKリグコンポーネントによって生成されたリググラフ

    TransformObjectノードとskel::SetPointTransformsノードに関する詳細は、ジオメトリ変形を参照してください。

  11. AnimateステートでFK機能を確認します:

    • APEX Autorig Component SOPを選択し、そのDisplayフラグをオンにします。

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

      AnimateステートでのFK機能

ボーン変形

ボーン変形リグコンポーネントを使用して、FKリググラフにボーン変形ロジックを追加します。ボーン変形を実行するには、まずJoint Capture Biharmonic SOPを使用して、ジオメトリ上にキャプチャウェイトを作成する必要があります。次に、この更新されたジオメトリをスケルトンと一緒にパックキャラクタフォルダ構造に追加します:

ボーン変形リグロジックを追加

他のDCCでは、ウェイトの作成はデフォーマ上で行なうことが多いです。Houdiniでは、ウェイトの作成は変形工程から分離されているため、APEXに入ってリグロジックを作成する前に、正しいウェイトを持つ入力ジオメトリを準備することができます。

  1. Pack Folder SOPはチューブジオメトリとスケルトンをパックキャラクタフォルダ構造に追加します:

    • Pack Folder SOPのSource Inputs入力の1つ目の入力は、変形に使用されるチューブジオメトリです。このジオメトリの名前をtube.shpにします( NametubeTypeshpに設定します)。

    • Pack Folder SOPのSource Inputs入力の2つ目の入力はチューブスケルトンです。このスケルトンの名前をtube.skelにします( NametubeTypeskelに設定します)。

    Note

    Pack Folder SOPのSource Inputs入力の順番は、そのPack Folder SOPの NameType パラメータの順番に合わせる必要があります。パックキャラクタフォルダ構造のキャラクタ要素の命名に関する詳細は、アニメーション用データを組み立てるを参照してください。

    Rig Treeビューには以下のパックフォルダ構造が表示されます:

    /
    -- tube.shp
    -- tube.skel
    
  2. APEX Autorig Component SOPのbonedeformは、上流のFKコンポーネントによって作成されたリググラフにボーン変形ロジックを追加します。bonedeformノードで、 Component SourceBone Deform に設定します。デフォルトで、ボーン変形コンポーネントは( Rig セクションの Name パラメータで設定された)Base.rigにロジックを追加します。

  3. Settings タブで、パックキャラクタフォルダ構造内のジオメトリとスケルトンの名前に合わせて以下のパラメータを変更します:

    • Rest Geo = tube.shp。変形したいキャプチャウェイト付きジオメトリです。

    • Rest Skeleton = tube.skel。キャプチャウェイトのベースとなる入力スケルトンの名前です。 Rest Skeleton のジョイントは Rest Geo のキャプチャウェイトと一致する必要があります。

    • Output Geo = tube.shp。表示したい出力ジオメトリの名前です。これは通常、 Rest Geo と同じです。

  4. ボーン変形コンポーネントがFKリググラフに追加したリグロジックを確認します(紫が追加されたボーン変形ロジックです):

    ボーン変形ロジック
  5. Animateステートでボーン変形を確認します:

IK

この例では、前の例のFKリグから始め、マルチIKリグコンポーネントを使用してIK機能を追加します:

IKリグロジックを追加
  1. IKコントロールのみを操作したいので、FKジョイントをコントロールにプロモートする必要はありません。fkノードで、 Controls タブの Promote* パラメータからすべてのTransformObjectノードを削除します。

  2. APEX Autorig Component SOPのikで、 Component Source パラメータを Multi IK に設定します。

  3. Guide Source をパックキャラクタフォルダ構造のスケルトンtube.skelに設定します。

  4. Driven タブの Segmentsbindに設定します。ドロップダウンメニューから bind を選択しても構いません。bindは、FKトランスフォームリグコンポーネントによって作成されたTransformObjectノードに事前に追加されたタグです。 Segments パラメータでbindを指定することで、マルチIKコンポーネントはリグ階層内の適切なTransformObjectノードを取得し、それにIK機能を追加します。

  5. AnimateステートでIK機能を確認します:

トランスフォームドライバ

トランスフォームドライバリグコンポーネントは、スケルトンの既存のコントロールのトランスフォーム(移動、回転、スケール)を駆動する新しいコントロールを作成するために使用されます。既存のコントロールは基本的に、新しいコントロールに拘束されます。トランスフォームドライバコンポーネントを使用すると、既存のジョイントに異なるピボットと向きを定義することができます。新しいスケルトンコントロールを作成する必要がないため、下流のボーン変形に影響を与えることもありません。

APEXグラフで、トランスフォームドライバコンポーネントは新しいTransformObjectノードを作成し、新規ノードと既存ノードの間に拘束を追加します。新しいノードはスケルトンに追加されません。単に追加コントロールとして、スケルトンジョイントを駆動するために使用されます。

Note

FKトランスフォームコンポーネントはガイドスケルトン上の既存のジョイントからのみコントロールを作成できるのに対し、トランスフォームドライバコンポーネントは新しいコントロールを追加したり、既存のコントロールを変更することができます。また、トランスフォームドライバコンポーネントを使用して、TransformObjectノードを親子化したり拘束することも可能です。例えば、特定のコンポーネントの親子化セットアップを変更したい場合は、トランスフォームドライバを使用して親子化の階層を編集することができます。

この例では、前の例のFKリグに新しいコントロールを追加します:

トランスフォームドライバリグロジックを追加
  1. APEX Autorig Component SOPのtransformdriverで、 Component Source パラメータを Transform Driver に設定します。

  2. guidesource をパックキャラクタフォルダ構造のスケルトンtube.skelに設定します。

  3. point_0の位置に留まり、point_0の移動と回転を駆動する、トランスフォームドライバコントロールのrootを追加します:

    • Settings タブで、 use_tuse_ruse_s をオンにします。

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

    • Control タブの driver パラメータで、新しいコントロールの名前を指定します。 driverrootに設定します。

    • driverguidepoint_0に設定します。これは新しいrootコントロールの位置です。(新しいroot TransformObjectノードの restlocal パラメータは、point_0の位置に設定されます。) driverguide に何も設定しない場合、新しいコントロールは原点に作成されます。

    • コントロールによって駆動されるトランスフォームコンポーネントを指定します。 makecontrolpromotet (移動)、 promoter (回転)をオンにします。

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

      トランスフォームドライバコントロールがジョイントチェーンのルートに留まります
  4. point_2の位置に留まり、point_2の移動と回転を駆動する、2つ目のトランスフォームドライバコントロールのtipを追加します。rootトランスフォームドライバコントロールを移動または回転しても、point_2tipコントロールに拘束されているため、もはや移動しません:

    • setups マルチパラメータの隣にあるをクリックして、tipコントロールに新しいパラメータセットを追加します。

    • Settings タブで、 use_tuse_ruse_s をオンにします。

    • Driven タブで、 driventransformspoint_2に設定します。

    • Control タブで、 drivertipdriverguidepoint_2に設定します。

    • makecontrolpromotetpromoter をオンにします。

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

    ジョイントチェーンのrootとtipにあるトランスフォームドライバコントロール
  5. トランスフォームドライバコントロールが、それが駆動しているジョイントとは異なる位置に留まっている場合、そのトランスフォームドライバコントロールは親拘束のように動作します。トランスフォームドライバコントロールを回転させると、駆動されるTransformObjectとそのすべての子がトランスフォームドライバコントロールを中心に回転します。

    トランスフォームドライバコントロールがpoint_0に留まり、point_1を駆動します
    トランスフォームドライバコントロールがpoint_0に留まり、point_2を駆動します
    トランスフォームドライバコントロールがpoint_2に留まり、point_1を駆動します

KineFX

概要

キャラクタ要素の準備

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

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

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

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

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

変形

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

H20以前

ペイン

別表