On this page |
概要 ¶
Houdini20の新しいアニメーションワークフローとリギングワークフローに対応するために、 パックキャラクタフォーマット が導入されました。 これは、ビューポートで1体以上のキャラクタを作成およびアニメーションさせるのに必要なデータを定義し、まとめて、整理することができます。 パックキャラクタフォーマットは、ディスク上のディレクトリ構造に似たフォルダ構造で整理されたジオメトリデータで構成されていて、データは入れ子化(ネスト)された/character/kinefx/パックプリミティブ/model/packed.htmlとして追加します。
パックキャラクタフォーマットには、キャラクタシーン、キャラクタ、キャラクタ要素という3つのレベルのデータコンテナがあります。 パックキャラクタフォーマットの階層は、Rig Treeビューで確認することができます:
キャラクタシーン
キャラクタシーン は、ポージング可能な1体以上のキャラクタを含んだトップレベルのデータコンテナで、複数のキャラクタをお互いに作用させることができます。 このシーンコンテナには、アニメータがAnimateステートでインタラクティブに追加したアニメーションや拘束も含めることができます。 このシーンコンテナは、パックフォルダ構造内の“フォルダ”と考えることができます。
キャラクタ
キャラクタ コンテナには、アニメータがビューポート内で操作するポージング可能なKineFXキャラクタを格納します。 このキャラクタコンテナには、キャラクタをアニメーションさせるのに必要なすべての要素が含まれており、最低でもリグが含まれています。 このキャラクタコンテナは、パックフォルダ構造内の“フォルダ”と考えることができます。
キャラクタ要素
キャラクタ要素 は、キャラクタをアニメーションさせる際に使用される単一のパックジオメトリ要素です。 デフォルトのタイプにはスケルトン、シェイプ、リグ、コントロールがあります。 カスタムの拡張子を使用して独自の要素を定義することができるオプションもあります。 キャラクタ要素は、パックフォルダ構造内の“ファイル”と考えることができます。
パックキャラクタフォーマットを使用すると、様々な要素をパックしてまとめ、シーン内で使い回したり、必要に応じて個々の要素を抽出することができます。
データコンテナ ¶
キャラクタシーンコンテナ ¶
キャラクタシーンコンテナは、お互いに作用し合えるように1体以上のキャラクタを含んだトップレベルのデータコンテナです。 通常、シーンの出発点は、シーンに渡されているキャラクタから始まります。 その後、Animateステートでアニメーションが付けられると、他の要素がシーンに追加されます。 これらの要素には、アニメーション、拘束、scene.graphが含まれます。
Note
アニメーション作業時にシーンに追加される要素(アニメーション、拘束、scene.graph)とキャラクタコンテナ内の キャラクタ要素 を混同しないようにしてください。
アニメーション
Animateステートでアニメーションが付けられると、アニメーション用のチャンネルプリミティブがシーンコンテナの/animation
ディレクトリに追加されます。
このチャンネルプリミティブは、ジオメトリと一緒に保存され、Animateステート用に最適化されたアニメーションカーブになっています。
拘束
拘束は、2個のコントロール間の依存関係を評価するミニリグのようなものです。
拘束がAnimateステートで作成されると、その拘束のグラフがシーンコンテナの/constraints
ディレクトリに追加されます。
scene.graph
scene.graphは、Animateステートでリグと拘束が評価される順番を管理および定義するグラフです。 シーンコンテナ内に作成および格納されます。 scene.graphはリグを実行するだけで、リグを作成しません。
scene.graphは、シーンコンテナ内のすべてのキャラクタを検索し、それらのキャラクタを組み立て、シーンを作成します。 拘束がAnimateステートで作成されると、コントロール間の依存関係がscene.graphに追加されます。 scene.graphには、拘束が作成される順番も格納されます。
Warning
scene.graphは、コントロール/リグ間に依存関係があるシーンに不可欠です(これらは通常、拘束です)。 scene.graphを削除すると、シーン内に作成した拘束が失われます。
1つのHoudiniシーン(.hip
)ファイル内で複数のキャラクタシーンを持つことができます。
これは、様々なバージョンのシーンを使用したい場合などに役立ちます。
キャラクタコンテナ ¶
キャラクタコンテナには、リグと、そのリグが適切に評価されるのに必要なすべてのキャラクタ要素が含まれます。 キャラクタには、任意のタイプのキャラクタ要素を複数含めることができます。 例えば、3個のシェイプをキャラクタコンテナに含めることができます。
キャラクタのオペレーションは“リグ中心”であり、リグがそのリグの入力に基づいて必要とされるキャラクタ要素を決定します。 キャラクタコンテナに特定のキャラクタ要素が含まれていても、その要素が入力としてリグに接続されていない場合、その要素は使用されません。 例えば、キャラクタコンテナに10個のシェイプがあっても、そのうちの2個だけがリグに入力されていたとします。 この場合、リグはその2個のシェイプのみを使用します。 ただし、残りのシェイプを今後使用できるように、キャラクタコンテナ内に保持することは可能です。
Note
“キャラクタコンテナ”という用語は、リグロジックのピースと、そのリグロジックの入力から参照されている要素を含んだ汎用コンテナのことを指します。 実際には、このキャラクタコンテナは、キャラクタ、プロップ、アセットが該当します。
Houdiniでは、パックフォルダ構造内のキャラクタコンテナの名前に.char
拡張子が付いている必要があります。
Houdiniは、この.char
拡張子から、自動的に.char
パックプリミティブがフォルダであると解釈します。
Animateステートは、この.char
拡張子を検出すると、その.char
フォルダ内でリグを検索します(.rig
拡張子を持つ要素がリグです)。
Animateステートは、リグの入力に基づいて、.char
フォルダに格納されているそれに関連するキャラクタ要素(スケルトンやシェイプなど)を取得します。
キャラクタ要素コンテナ ¶
キャラクタ要素は、キャラクタをアニメーションさせる際に使用される単一のパックジオメトリです。 以下がデフォルトのタイプです:
スケルトン(.skel
)
KineFXスケルトン。
シェイプ(.shp
)
変形のための静止スキンとして使用可能なシェイプ。
リグ(.rig
)
スケルトン/シェイプを修正するグラフ。
コントロール(.ctrl
)
ビューポート内でUIイベントがどのように解釈されるかを定義したビューポート操作ツール。 例えば、ビューポート内でドラッグした時の挙動を定義することができます。 コントロールは、グラフとそれに関連付けられたシェイプのセットです。
カスタムの拡張子を使用して、独自の要素を定義することも可能です。
キャラクタデータの組み立てと抽出 ¶
Pack Folder SOP、Unpack Folder SOP、Packed Folder Split SOPを使用して、ディスク上のディレクトリ構造に似たフォルダ構造でキャラクタ要素を整理することができます。
Pack Folder
Pack Folder SOPは、その入力をパックして、フォルダ構造として整理します。 新規のフォルダ構造を作成することも、既存の構造にパックすることもできます。
Unpack Folder
Pack Folder SOPを使用してパックフォルダ構造にデータをパックした後、データを引き出して操作したい場合があります。 このためにはUnpack Folder SOPを使用します。 Unpack Folder SOPは、パックフォルダ構造を入力として受け取り、検索パターンを使用して抽出するデータを決定します。 Unpack Folder SOPには、抽出されたデータを含む単一の出力があります。
パターンマッチング構文の詳細については、Unpack Folder SOPを参照してください。
Packed Folder Split
Packed Folder Split SOPはUnpack Folder SOPと似ていますが、抽出されたデータをただ出力するのではなく、入力のパックフォルダ構造を2つの出力に分割します。 この2つの出力とは、抽出されたデータを取り除いた元のパックフォルダ構造と、抽出されたデータのことです。
Note
キャラクタ内の単一の要素を分析したい場合は、Unpack Folder SOPを使用してその1つの要素を抽出できます。 既存のキャラクタの何かを変更したい場合は(例えば、現在のスケルトンを取得し、ジョイントを追加して、スケルトンに戻すなど)、Packed Folder Split SOPを使用すると良いでしょう。
キャラクタを組み立てる ¶
この例では、パックフォルダ構造にキャラクタ要素を追加して、キャラクタコンテナを組み立てます。 キャラクタ要素は、チューブジオメトリ、チューブのスケルトン、ボーン変形を実行するリグロジックです(スケルトンの作成方法についてはスケルトンの扱い方を、リグロジックグラフの構築についてはAPEXグラフを参照してください)。 Joint Capture Biharmonic SOPは、ボーン変形リグロジックによって変形されるジオメトリ上にキャプチャウェイトを作成するのに使用します。
Pack Folder SOPの2番目の入力は、複数のキャラクタ要素を受け取り、パックフォルダ構造に追加します。 キャラクタ要素をPack Folder SOPに接続すると、そのキャラクタ要素が接続された順番で、自動的に Name パラメータがPack Folder SOPに作成されます。 Name パラメータには、入力ノードの名前が自動的に入ります。この例では以下のようになります:
-
1番目の入力: Name :
create_capture_weights
-
2番目の入力: Name :
create_capture_weights
-
3番目の入力: Name :
bonedeform_rig
入力ノードの名前には拡張子が付いてないため、Pack Folder SOPの Type パラメータには何も入りません。
入力が何であるかを分かるやすくしたい場合は、Pack Folder SOPの以下のパラメータを更新して、パックフォルダ構造内のキャラクタ要素の名前とその拡張子を変更します:
-
1番目の入力: Name :
base
、 Type :shp
-
2番目の入力: Name :
base
、 Type :skel
-
3番目の入力: Name :
base
、 Type :rig
Note
リググラフの入力によって参照されるキャラクタ要素の名前は、パックフォルダ構造内のキャラクタ要素の名前と一致していなければなりません。 こうすることで、リグは、取得して使用すべきキャラクタ要素を特定することができます。
以下の画像が示しているのは、例で使用しているbonedeform_rig
ノードのグラフ入力です。
グラフ入力ポートの名前をクリックすると、そのポート名をパックフォルダ構造と一致するように変更することができます。
グラフの構築と実行の詳細については、APEXグラフを参照してください。
パックフォルダ構造を確認する ¶
パックフォルダ構造の内容は、Rig TreeビューとGeometry Spreadsheetの2つの方法で確認することができます。 Rig Treeビューは、パックフォルダ構造の階層全体を表示し、Geometry Spreadsheetは、パックフォルダ構造のトップレベルのみを表示します。
Rig Treeビュー
-
ネットワークエディタでPack Folder SOPを選択します。
-
Rig Treeビューを開きたいペインの上部にある New Tabアイコンをクリックし、 New Pane Tab Type ▸ Animation ▸ Rig Tree を選択します。
-
Rig Treeビューで、ノード名(ここでは
create_character
)の横にあるドロップダウンボックスを出力に設定します。 -
Type を Packed Folders に設定します。
-
パックフォルダ構造は、2通りの方法で表示することができます。
-
Hierarchy を Topology に設定すると、パックフォルダ構造がツリービューとして表示されます。
-
Hierarchy を Flat List に設定すると、パックフォルダ構造が平坦なリストとして表示されます。
-
次のパックフォルダ構造が表示されます:
/ -- base.shp -- base.skel -- base.rig
Geometry Spreadsheet
-
ネットワークエディタでPack Folder SOPを選択します。
-
Geometry Spreadsheetを開きたいペインの上部にある New Tabアイコンをクリックし、 New Pane Tab Type ▸ Inspectors ▸ Geometry Spreadsheet を選択します。
-
Geometry Spreadsheetの上部のツールバーにある Primitivesをクリックします。キャラクタ要素(base.shp、base.skel、base.rig)がリストされます。
キャラクタシーンを組み立てる ¶
以下の例では、APEX Scene Add Character SOPを使用して各キャラクタをシーンコンテナに追加することで、キャラクタシーンを組み立てます。
それぞれのAPEX Scene Add Character SOPで、 Character Name パラメータにキャラクタの名前を指定します。 アニメーション用にシーンを組み立てる方法の詳細については、アニメーションワークフローを参照してください。
Rig Treeビューでは、シーンコンテナのパックフォルダ階層が次のように表示されます:
/ -- character1.char/ -- base1.shp -- base1.skel -- base1.rig -- character2.char/ -- base2.shp -- base2.skel -- base2.rig
Animateステートでキャラクタにポーズを付けたりアニメーションさせるには:
-
シーンをAPEX Scene Animate SOPに接続します。
-
そのAPEX Scene Animate SOPを選択して表示します。
-
左側のツールバー上の Animateをクリック、または、ビューポート内でEnterを押します。
パックフォルダ構造からデータを抽出する ¶
Unpack Folder SOPまたはPacked Folder Split SOPを使用して、パックフォルダ構造からデータを抽出することができます。 以下の例では、Unpack Folder SOPを使用してシーンからリグを抽出しています。
Unpack Folder SOPで、 Extract Pattern を/character1.char/base.rig
に設定し、character1
コンテナからリグを抽出します。
検索パターンに使用されるパターンマッチング構文の詳細については、Unpack Folder SOPを参照してください。
Warning
検索パターンがシーン内の複数のリグと一致した場合(例えば/**/*.rig
など)、それらの複数のリグが抽出され、それらが1つのアンパックジオメトリに結合されてしまいます。
APEX Network Viewでは有効に見えるグラフが表示されるかもしれませんが、予期せぬ動作を引き起こす可能性があります。
Note
Unpack Folder SOPで、 Unpack Contents がオンの場合、抽出されるリグはアンパックされ、リググラフジオメトリが得られます。 この抽出されたリググラフは、APEXネットワークビューで確認することができます。
Unpack Contents がオフの場合、抽出されるリグはグラフジオメトリではなく、パックプリミティブです。 APEXネットワークビューに、抽出されたリグのパックプリミティブは表示されません。
Rig Treeビューに表示されるのは、パックフォルダ構造に パック されたデータのみです。 Unpack Contents がオンの場合、抽出されるデータはアンパックジオメトリであり、Rig Treeビューに何もデータは表示されません。
抽出された パックプリミティブ ( Unpack Contents はオフ)をRig Treeビューで確認するには:
-
Rig Treeビューで、ノード名(ここでは
extract_rig
)の横にあるドロップダウンボックスを出力に設定します。 -
Type を Packed Folders に設定します。
抽出されるデータは以下のように表示されます:
/ -- base1.rig
How to ¶
To... | Do this |
---|---|
パックフォルダ構造を確認する |
パックフォルダ構造の内容は、Rig TreeビューとGeometry Spreadsheetの2つの方法で確認することができます。 Rig Treeビューは、パックフォルダ構造の階層全体を表示し、Geometry Spreadsheetは、パックフォルダ構造のトップレベルのみを表示します。 Rig Treeビュー
Geometry Spreadsheet
|
Geometry Spreadsheetでプリミティブを確認する |
Geometry Spreadsheetには以下を表示できます:
Note Geometry Spreadsheetには、選択したノードのトップレベルでパックされているものだけが表示されますが、Rig Treeビューでは、パックフォルダ構造の階層全体が表示されます。 Geometry Spreadsheetで
Note Unpack FolderまたはPacked Folder Split SOPで Unpack Contents がオンの場合、抽出されたデータはアンパックされるため、 |
Pack Folder SOP ¶
To... | Do this |
---|---|
パックフォルダ構造を新規に作成する |
Pack Folder SOPの1番目の入力には何も接続しないでください。2 番目の入力に接続されたデータが、新しいパックフォルダ構造を作成するために使用されます。 |
既存のパックフォルダ構造に追加する |
既存のパックフォルダ構造をPack Folder SOPの1番目の入力に接続します。 |
パックフォルダ構造にデータを追加する |
Pack Folder SOPの2番目の入力にデータを接続します。 Name および Type パラメータには、入力から検出された名前と拡張子が自動的に入力されます。 Name パラメータに相対パスを指定することもできます。
例えば、 Parent Folder が |
パックフォルダ構造の特定のフォルダにデータを追加する |
Parent Folder パラメータに、入力データを追加するフォルダのパスを指定します。パスが存在しない場合は作成されます。 または
Note Parent Folder パラメータに存在しないパスを入力した場合、そのパスが作成されます。 Parent Folder パラメータに要素(フォルダ以外)の名前を入力すると、Pack Folder SOPでエラーが発生します。 |
パックフォルダ構造で入力ジオメトリ名を使用する |
2つのボックスジオメトリがMerge Packed SOPに接続され、Merge Packed SOPがPack Folder SOPに接続されている例を考えてみましょう。 Pack Folder SOPの2番目の入力にデータを接続すると、 Name および Type パラメータには、接続した入力から検出された名前と拡張子が自動的に入力されます。
このケースでは、 Name は / -- mergepacked1 Name および Type パラメータの横にあるアクションボタンをクリックし、 Names/Types From Input を選択すると、 Name および Type パラメータに / -- box1.shp -- box2.shp Note Name From Input オプションは、入力ジオメトリに Name SOPを使用する場合は、 Class パラメータを Primitive に設定します。 |
組み込みの拡張子を使用してデータを追加する |
組み込みの拡張子の.charと.ctrlは、パックフォルダ構造にフォルダとして追加され、それ以外の組み込みの拡張子は要素として追加されます。 入力をフォルダとして追加するとき:
|
カスタムの拡張子を使用してデータを追加する |
Type パラメータでカスタムの拡張子を指定します。 アクションボタンの横にあるアイコンメニューには、入力を要素またはフォルダとして追加するオプションがあります。 |
フォルダ構造内の既存データと同じ名前を持つ新しいデータの処理方法を指定する |
Replace Method パラメータで3つのオプションのいずれかを選択します: Add and Replace 新しいアイテムが追加され、既存のアイテムは置き換えられます。 Add and Keep Existing 新しいアイテムが追加され、既存のアイテムはそのまま維持されます。 Replace 新しいアイテムは追加されず、既存のアイテムが置き換えられます。 |
パックオブジェクトの名前/タイプを入力ノードのものにリセットする |
Reload Names ボタンをクリックします。 |
ジオメトリのない入力を無視する |
Ignore Empty Inputs オプションを選択します。 |
アンパックされたデータのみをパックする(パック済みのデータはパックしない) |
これらのパラメータの詳細は、Pack Folder SOPを参照してください。 |
Unpack Folder SOPとPacked Folder Split SOP ¶
To... | Do this |
---|---|
抽出されたデータを確認する |
抽出されたデータは、Rig TreeビューとGeometry Spreadsheetの両方に表示することができます。 Rig Treeビュー:
Geometry Spreadsheet:
|
特定のパスからデータを抽出する |
Extract Pattern パラメータで、 |
特定の名前を持つすべてのデータを抽出する |
例えば、box2.shpという名前のデータをすべて抽出するには、 Extract Pattern パラメータに |
特定の拡張子を持つすべてのデータを抽出する |
例えば、すべての.shpファイルを抽出するには、 Extract Pattern パラメータに |
アトリビュートまたはグループ名に基づいてデータを抽出する |
Extract Pattern パラメータで、検索パターンを“ 例えば、 Note データは、すべてのプリミティブが検索パターンに一致した場合にのみ抽出されます。
例えば、あるデータのプリミティブのインデックスが0-5であり、検索パターンが パスとアトリビュート/グループの検索パターンを組み合わせることもできます。例えば、
|
抽出されたデータをアンパックする |
Unpack Contents パラメータをオンにして、抽出されたデータをアンパックします。 データが複数回パックされている場合(複数レベルのパッキングがある場合)、 Unpack Contents をオンにすると、抽出されたデータのトップレベルのみがアンパックされます。 |
抽出されたデータをPacked Folders出力に保持する(Packed Folder Splitの場合) |
Extract Only パラメータをオンにします。 データは抽出されるだけで、Packed Folders出力から削除されません。 |
抽出されたデータ以外を出力する(Unpack Folderの場合) |
Invert をオンにします。 |
出力の順番を反転させる(Packed Folder Splitの場合) |
Invert Selection をオンにします。 |