On this page |
概要 ¶
リグの挙動は、グラフを作成することで手動で構築することも、リグコンポーネントのつなぎ合わせで構築することもできます。 リグコンポーネントは、Houdiniに同梱されている事前構築済みコンポーネント、または、異なるリグで再利用できるように独自に作成したコンポーネントのどちらでも構いません。 APEX Autorig Component SOPは、キャラクタのリグロジックを構築するためにFK、IK、ボーン変形などの機能を追加するいくつかの事前構築済みリグコンポーネントへのインターフェースです。
まずは、いくつかの単純なサンプルを通して、Houdiniの事前構築済みリグコンポーネントの紹介から始めます。 それから、リグコンポーネントを使用して、Electraテストジオメトリに対して基本的なリグを構築します。 最後に、キャラクタリグを構築するための色々な手法を紹介します。
事前構築済みリグコンポーネント ¶
このセクションでは、APEX Autorig Component SOPで利用可能な事前構築済みリグコンポーネントの基本的なサンプルをいくつか紹介します。 まずは、3本のジョイントが入ったチューブジオメトリに、FK、ボーン変形、コントロールシェイプを追加することから始めます。 それから、IK、スパイン、トランスフォームドライバーリグコンポーネントを紹介します。
FK ¶
この例では、APEX Autorig Component SOPを使用して、3本のジョイントが入ったチューブジオメトリにFKリグロジックを追加しています。
-
まず、チューブジオメトリのスケルトンを描画することから始めます。このスケルトンは
point_0
、point_1
、point_2
のジョイントを持ちます。point_0
はpoint_1
の親で、そのpoint_1
はpoint_2
の親です。スケルトンの作成に関する詳細はスケルトンの扱い方を参照してください。この例では、ボーン変形をリグロジックに追加しないので、これ以降は、このチューブジオメトリはもはや必要ありません。
-
チューブ“キャラクタ”の異なる入力要素(ジオメトリ、スケルトン、リグ)を格納するパックフォルダ構造にスケルトンを追加します。 Animateステートでは、パックフォルダ構造に追加されている要素のみが表示可能です。 Animateステートで評価されるキャラクタデータを準備する方法の詳細は、パックキャラクタフォーマットを参照してください。
Note
パックフォルダ構造内の“キャラクタ”という用語は、リグロジックとそのリグロジックの入力が参照している要素を含んだ汎用コンテナのことを指します。 実際には、キャラクタコンテナは、キャラクタ、プロップ、アセットが該当します。
-
APEX Autorig Component SOPを使用してリググラフを作成します。リグロジックの構築はFKリグコンポーネントから始めるのが簡単です。FKリグコンポーネントはスケルトンのジョイント階層に基づいてFK階層を作成します。
ノード |
説明 |
||||||||
---|---|---|---|---|---|---|---|---|---|
|
キャラクタ要素をパックフォルダ構造に追加します。
この例では、チューブスケルトンをパックフォルダ構造に追加し、名前を Rig Treeビューで、パックフォルダ構造の内容を確認します:
以下のパックフォルダ階層が表示されます: / -- tube.skel これで、APEX Autorig Component SOPを使用してリググラフをパックフォルダ構造に追加できるようになりました。 |
||||||||
|
この事前構築済みFKリグコンポーネントは、パックフォルダ構造内のチューブスケルトンをリグ階層に変換してリググラフを作成します。 FKリグコンポーネントは、各スケルトンジョイントを受け取り、そのスケルトンジョイントの位置を表現したTransformObjectノードを作成します。そして、そのTransformObjectノードの restlocal パラメータには、そのジョイントの静止位置が設定されます。 このTransformObjectノードは、Animateステートでユーザが操作可能なコントロールに変換することができます。 FKリグコンポーネントは、リググラフをパックフォルダ構造に追加します。 APEX Autorig Component SOPの Component パラメータを fktransform に設定します。 Note FKリグコンポーネントは、スケルトンをリグ階層に変換するので、リグロジックを構築する際の最初の事前構築済みコンポーネントとして使用するのに役立ちます。
これでパックフォルダ構造にはスケルトンとリググラフが追加されました。
/ -- tube.skel -- Base.rig 下図のリググラフがFKリグコンポーネントによって生成されています(わかりやすくするために、ノードの配置を変更し、色を追加しています)。
緑のTransformObjectノードは、スケルトンジョイントを表現していて、そのスケルトンジョイント階層に基づいて接続されています。
各TransformObjectノードの移動パラメータと回転パラメータはプロモートされています( TransformObjectノードとSetPointTransformsノードに関する詳細は、ジオメトリ変形を参照してください。 Note APEX Autorig Component SOP上のリググラフを確認するには、Unpack Folder SOPを使用して、パックフォルダ構造からリグを抽出する必要があります。 すると、Unpack Folder SOP上でそのリググラフを確認することができます:
AnimateステートでFK機能を確認する:
|
ボーン変形 ¶
これから、前のFKリグにボーン変形リグロジックを追加します。 ボーン変形を実行するには、まず最初にJoint Capture Biharmonic SOPを使用して、ジオメトリ上にキャプチャウェイトを作成します。 次に、この更新されたジオメトリをスケルトンと一緒にパックフォルダ構造に追加します。
Note
他のDCCでは、ウェイトの生成はデフォーマ上で行なうことが多いです。 Houdiniでは、ウェイトの生成は変形工程から分離されています。 このようになっているので、APEXに入ってリグロジックを作成する前に、正しいウェイトを持つ入力ジオメトリを準備することができます。
ノード |
説明 |
||||||||
---|---|---|---|---|---|---|---|---|---|
|
以下のキャラクタ要素をパックフォルダ構造に追加します:
Note Pack Folder SOPの2番目の入力の順番は、Pack Folder SOPのパラメータエディタにリストされている Name と Type のパラメータの順番に必ず合わせてください。 パックキャラクタフォーマットでのキャラクタ要素の命名に関する詳細は、パックキャラクタフォーマットを参照してください。 以下のパックフォルダ構造がRig Treeビューに表示されます: / -- tube.skel -- tube.shp |
||||||||
|
上流のFKリグコンポーネントによって作成されたリググラフにボーン変形ロジックを追加します。 そのAPEX Autorig Component SOPの Component パラメータを bonedeform に設定します。 Component Parameters セクションに何もパラメータが表示されていなければ、 Reload Setup Parms アイコンをクリックします。
このボーン変形リグコンポーネントは、前のサンプルのFKリググラフにリグロジックをさらに追加します。 Animateステートでは、選択可能なコントロールがチューブジオメトリ上に用意されるので、FKポージングを実行することができます。 |
コントロールの設定 ¶
APEX Configure Controls SOPを使用して、コントロールのシェイプと色を設定します。
ノード |
説明 |
||||||||
---|---|---|---|---|---|---|---|---|---|
|
Control Configs の隣りにあるアイコンをクリックして、コントロールグループ別に設定を追加します。
|
IK ¶
この例では、チューブスケルトンに対してIKリグを構築します。 まず最初にそのスケルトンからFKリグ階層を作成し、次に、そのFKリグの上にIK機能を追加します。
ノード |
説明 |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
チューブスケルトンをパックフォルダ構造に追加します。
そのスケルトンの名前を |
||||||||||
|
チューブスケルトンをリグ階層に変換します。 APEX Autorig Component SOPの Component パラメータを fktransform に設定します。
|
||||||||||
|
上流のFKリグコンポーネントで作成されたリググラフにIKリグロジックを追加します。 APEX Autorig Component SOPの Component パラメータを smoothik に設定します。
AnimateステートでのIK機能: |
スパイン(背骨) ¶
スパインオートリグコンポーネントは、スパインカーブに基づいて基本的なスパインセットアップを追加します。 このリグコンポーネントを、曲げや捩れのセットアップの開始点として使用すると良いでしょう。 この例では、スパインリグロジックをチューブスケルトンに追加します。
ノード |
説明 |
||||||
---|---|---|---|---|---|---|---|
|
スパインリグの効果が良く分かるように、ここでは9本のジョイントスケルトンを作成します。 |
||||||
|
そのチューブスケルトンをパックフォルダ構造に追加します。
このスケルトンの名前を |
||||||
|
チューブスケルトンをリグ階層に変換します。 APEX Autorig Component SOPの Component パラメータを fktransform に設定します。
|
||||||
|
上流のFKリグコンポーネントによって作成されたリググラフにスパインリグロジックを追加します。 APEX Autorig Component SOPの Component パラメータを spine に変更します。
|
||||||
|
ジョイントとコントロールのシェイプと色を設定します。 このSOPを選択してAnimateステートに入ると、スパイン機能が表示されます。 スケルトンジョイントは赤、スパインコントロールは青です: |
トランスフォームドライバ ¶
トランスフォームドライバリグコンポーネントを使用すれば、スケルトン内の既存コントロールのトランスフォーム(移動、回転、スケール)を駆動させる新しいコントロールを作成することができます。 基本的には、その既存コントロールはその新しいトランスフォームドライバコントロールに拘束されます。 その新しいトランスフォームドライバコントロールは、新しくスケルトンコントロールを作成することなく既存のスケルトンジョイントのピボットと向きを別の値で定義することができます。 もし新しいスケルトンコントロールを作成するとなれば、下流で何かのボーン変形に影響を与えてしまうことでしょう。
APEXグラフでは、そのトランスフォームドライバリグコンポーネントは、新しいTransformObjectノードを作成し、 その新しいTransformObjectノードと駆動される既存のTransformObjectノードの間に拘束を追加します。 その新しいTransformObjectノードはスケルトンに追加されません。 その新しいTransformObjectノードは、単にスケルトンジョイントを駆動するために使用される追加コントロールにすぎません。
ノード |
説明 |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
3本のジョイントスケルトンから始めます。 |
||||||||||||
|
スケルトン上の既存コントロールを駆動させる新しいコントロールを追加します。 APEX Autorig Component SOPの Component パラメータを transformdriver に設定します。 この例では、トランスフォームドライバコントロールの
2つ目のトランスフォームドライバコントロールの追加 これから2つ目のトランスフォームドライバコントロールの トランスフォームドライバが異なる位置でジョイントを駆動させる トランスフォームドライバコントロールが、それが駆動しているジョイントとは異なる位置に留まっている場合、そのトランスフォームドライバコントロールは親拘束のように動作します。 トランスフォームドライバコントロールを回転させると、駆動されるTransformObjectとその子すべてがそのトランスフォームドライバコントロールを中心に回転します。 トランスフォームドライバコントロールが トランスフォームドライバコントロールが トランスフォームドライバコントロールが |
キャラクタリグの構築 ¶
この例では、事前構築済みリグコンポーネントを使用して、Electraテストジオメトリに対してリグを構築します。 以下のピースを追加して最終リグを構築します:
-
Electraスケルトンジョイント階層に基づいたFKリグ階層
-
IKロジック
-
追加コントロール
-
スパインロジック
-
コントロールの設定
FKリグの作成 ¶
Electraテストジオメトリに対してFKリグを作成し、そのキャラクタでのFK機能が確認できるようにするために、そのリググラフにボーン変形ロジックを追加します。
ノード |
説明 |
||||||
---|---|---|---|---|---|---|---|
Electraテストジオメトリノードの Output パラメータを Skin Surface に設定します。 これは、Electraの形状を1番目の出力として出力します。 2番目の出力はElectraのスケルトンです。 |
|||||||
|
Electraテストジオメトリから以下のキャラクタ要素をパックフォルダ構造に追加します:
この時点で、Electraテストジオメトリのスキンとスケルトンがパックフォルダ構造に追加されています。 Rig Treeビューには、以下のパックフォルダ階層が表示されます: / -- Base.shp -- Base.skel |
||||||
|
Electraスケルトンをリグ階層に変換してリググラフを作成します。 そのリググラフがパックフォルダ構造に追加されます。 そのAPEX Autorig Component SOPの Component パラメータを fktransform に設定します。
これでRig Treeビューには、以下のパックフォルダ階層が表示されます: / -- Base.shp -- Base.skel -- Base.rig |
||||||
|
リググラフにボーン変形ロジックを追加します。 そのAPEX Autorig Component SOPの Component パラメータを bonedeform に設定します。 restgeo 、 restskeleton 、 outputgeo のパラメータのデフォルト値は、パックフォルダ構造内のキャラクタ要素の名前と一致します。 AnimateステートでElectraに対してFKポージングを実施します:
|
IKリグロジックの追加 ¶
上記のFKリグロジック上に腕と足のIK機能を加えます。 IKリグコンポーネントは、単一IKチェーン(オプションでミラージョイント)の機能を定義するので、 腕と足で別々にIKリグコンポーネントが必要になります。
ノード |
説明 |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
キャラクタの腕にIK機能を追加します。 そのAPEX Autorig Component SOPの Component パラメータを smoothik に設定します。
|
||||||||||
|
キャラクタの足にIK機能を追加します。 そのAPEX Autorig Component SOPの Component パラメータを Use Second Input に設定します。 これは、前のAPEX Autorig Component SOPの設定を現行SOPにコピーします。 その後に、様々なパラメータを有効にすることえ、前のコンポーネントの設定を上書きすることができます。
|
||||||||||
|
ElectraのIKの挙動を確認します:
|
スパインリグロジックの追加 ¶
これからElectraリグにスパインリグロジックを追加します。 スパインリグコンポーネントを追加する前に、Electraリグにさらにコントロール階層(それぞれのコントロールは、スパインコントロールとしてそのスパインコンポーネントで使用します)を追加します。
ノード |
説明 |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
リグに2個のコントロール( そのAPEX Autorig Component SOPの Component パラメータを transformdriver に設定します。 setups マルチパラメータの隣にあるをクリックして、新しいコントロール毎にパラメータセットを追加します。
|
||||||||||||||
|
リグにスパインリグロジックを追加します。 そのAPEX Autorig Component SOPの Component パラメータを spine に設定します。
以下の動画では、スパインロジックが追加されたリグと追加されていないリグの違いを示しています。 スケルトンのスパインジョイントは黄、スパインロジックのスパインコントロール(右側の動画)は緑です。 |
コントロールを設定する ¶
APEX Configure Controls SOPを使用して、コントロールのシェイプとカラーを設定します。
Rig Source パラメータで、コントロールを設定するリグを指定します。
この例では、 Rig Source をBase.rig
に設定します。
コントロールを設定したら、Electraのリグの構築は完了です。
ガイドスケルトンを使用してリグ階層を作成する ¶
この例では、ジョイントをベーススケルトンに追加することで、 ガイドスケルトン を作成します。 このガイドスケルトンは、初期のリグ階層を作成するために使用し、リグロジックピースをそのリグ階層に追加して最終リグを構築します。 そこで追加したジョイントは、後で(実質的にジョイントで表現された)コントロールを作成する際の参照として使用します。 このため、適切なジョイントがベーススケルトンに追加されるように、リグにおいてあなたが欲しいコントロールを事前に知っておく必要があります。 コントロールがジョイントで表現されているわけなので、コントロールの階層と静止位置をガイドスケルトンの一部として定義することができます。
リグを構築する手順:
-
ジョイントをベーススケルトンに追加してガイドスケルトンを作成します。
-
FKリグコンポーネントを使用して、そのガイドスケルトンからFK階層リググラフを作成します。 これ以降は、そのガイドスケルトンはもはや使用しません。リグの構築に必要なすべての情報は、そのリググラフから取得することとなります。
-
リグロジックピース(IK、ボーン変形など)を追加して、最終リグを構築します。
キャラクタを作成する ¶
まずはElectraテストジオメトリから始めて、そのスケルトンをベーススケルトンとして使用します。 そして、ジョイントをベーススケルトンに追加してガイドスケルトンを作成します。 次に、そのElectraのスキン、ベーススケルトン、ガイドスケルトンをパックフォルダ構造に追加します。
ノード |
説明 |
---|---|
Electraテストジオメトリノードの Output パラメータを Skin Surface に設定します。 これは、Electraの形状を1番目の出力として出力します。 2番目の出力はElectraのスケルトンで、ベーススケルトンとして使用します。 |
|
|
Skeleton SOPは、Electraスケルトンのコピーを作成し、このコピーにさらに ガイドスケルトン と呼ばれるジョイントを追加します。 追加されたジョイントは、後でコントロールを作成する際の参照として使用します。 |
|
以下のキャラクタ要素をパックフォルダ構造に追加します:
|
リグロジックを構築する ¶
いくつかの事前構築済みリグコンポーネントを使用することで、キャラクタのリグロジックを構築することができます。 以下に載せている各APEX Autorig Component SOPは、リグロジックピースをキャラクタ全体のリグロジックに追加します。
それぞれのリグコンポーネントの詳細は、事前構築済みリグコンポーネントを参照してください。 以下のテーブルには、ガイドスケルトンを持つリグの構築に特化した設定に焦点を当てています。
ノード |
リグコンポーネント |
説明 |
---|---|---|
|
fktransform |
パックフォルダ構造内のガイドスケルトンをリグ階層に変換してリググラフを作成します。 これ以降は、そのガイドスケルトンはもはや使用しません。リグの構築に必要なすべての情報は、このFKコンポーネントによって作成されたリググラフから取得することとなります。 Source タブの skeleton パラメータを |
|
transformdriver |
情報はリググラフから取得し、ガイドスケルトンから取得しないので、 guidesource パラメータを無効にします。 |
|
spine |
guidesource パラメータを無効にします。 |
|
smoothik |
guidesource パラメータを無効にします。 |
|
Use Second Input |
guidesource パラメータを無効にします。 |
キャラクタをシーンに追加する ¶
APEX Scene Add Character SOPおよびAPEX Scene Animate SOPを使用して、キャラクタをシーンに追加し、アニメーションさせます。 詳細は、アニメーションワークフローを参照してください。
コントロールシェイプが追加されたガイドスケルトンの使用方法 ¶
この例では、ジョイントをベーススケルトンに追加することで、ガイドスケルトンを作成します。 次に、コントロールシェイプをガイドスケルトンに追加し、この最終ガイドスケルトンをパックフォルダ構造に追加します。
リグロジックをさらに深く構築する時に、コントロールの位置とシェイプに関する情報は、ガイドスケルトンから取得されます。 これは、リググラフから情報を取得するよりも高速です。
ノード |
リグコンポーネント |
説明 |
---|---|---|
|
fktransform |
ベースのElectraスケルトンをリグ階層に変換してリググラフを作成します。
Source タブの skeleton パラメータを |
|
transformdriver |
リグにコントロールを追加し、ガイドスケルトンをチェックして正しい位置を取得します。
guidesource パラメータを |
|
spine |
guidesource パラメータを無効にします。 |
|
smoothik |
guidesource パラメータを無効にします。 |
|
Use Second Input |
guidesource パラメータを無効にします。 |
|
N/A |
ガイドスケルトンからコントロールシェイプが取得されるようにするために、 Guide Source パラメータを |