| On this page |
|
概要 ¶
Houdiniのビューポートアニメーション環境用のキャラクタデータは、ディスク上のディレクトリ構造に似たフォルダ構造で定義され、まとめられ、整理されています。このフォルダ構造は、キャラクタデータが入れ子化(ネスト)されたパックトプリミティブとして追加されることから、 パックトキャラクタフォーマット と呼ばれることもあります。ビューポートアニメーションに使用されるビューアステートであるAnimateステートでは、パックトキャラクタフォーマットのデータのみを表示することができます。
パックキャラクタフォルダ構造には、アニメーションシーン、キャラクタ、キャラクタ要素という3つのレベルのデータコンテナがあります。パックフォルダ構造の階層は、Rig Treeビューで確認することができます:
アニメーションシーン
アニメーションシーンは、ポージング可能な1体以上のキャラクタを含んだトップレベルのデータコンテナで、複数のキャラクタをお互いに作用させることができます。このシーンコンテナには、アニメータがAnimateステートでインタラクティブに追加したアニメーションや拘束も含めることができます。シーンコンテナは、パックフォルダ構造内の“フォルダ”と考えることができます。
キャラクタ
キャラクタコンテナには、アニメータがビューポート内で操作できるポージング可能なKineFXキャラクタを格納します。このキャラクタコンテナには、キャラクタをアニメーションさせるのに必要なすべての要素が含まれており、最低でもリグが含まれています。キャラクタコンテナは、パックフォルダ構造内の“フォルダ”と考えることができます。
キャラクタ要素
キャラクタ要素は、キャラクタをアニメーションさせる際に使用される単一のパックジオメトリです。デフォルトのタイプにはスケルトン、シェイプ、リグ、コントロールがあります。カスタムの拡張子を使用して独自の要素を定義することもできます。キャラクタ要素は、パックフォルダ構造内の“ファイル”と考えることができます。
パックキャラクタフォルダ構造を使用すると、様々な要素をパックしてまとめ、シーン内で使い回したり、必要に応じて個々の要素を抽出することができます。
キャラクタデータをパック/アンパックするためのノード ¶
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は、パックフォルダ構造を入力として受け取り、APEXパスパターン構文を使用して抽出するデータを検索します。Unpack Folder SOPの1本の出力には、その抽出されたデータが格納されます。
Packed Folder Split
Packed Folder Split SOPはUnpack Folder SOPと似ていますが、抽出されたデータをただ出力するのではなく、入力のパックフォルダ構造を2つの出力に分割します。この2つの出力とは、抽出されたデータを取り除いた元のフォルダ構造(デフォルト設定)と、抽出されたデータのことです。
さらに、APEX Pack Character SOPと
APEX Unpack Character SOPを使用することで、KineFXキャラクタ(スキン、静止ポーズ、アニメーションポーズを含む)をパックフォルダ構造に簡単に変換することができます。
データコンテナ ¶
アニメーションシーンコンテナ ¶
アニメーションシーンコンテナは、お互いに作用し合えるように1体以上のキャラクタを含んだトップレベルのデータコンテナです。通常、シーンの出発点は、シーンに渡されているキャラクタです。その後、Animateトステートでアニメーションが付けられると、他の要素が追加されます。これらの要素には、アニメーション、拘束、scene.graphが含まれます。
Note
アニメーション作業時にシーンに追加される要素(アニメーション、拘束、scene.graph)とキャラクタコンテナ内の キャラクタ要素 を混同しないようにしてください。
アニメーション
Animateステートでアニメーションが付けられると、アニメーションクリップのフォルダ(*.clip)がシーンコンテナの/animationディレクトリに追加されます。
拘束
拘束は、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拡張子が付いている必要があります。この.charパックプリミティブは、自動的にパックキャラクタフォルダ構造内のフォルダであると解釈されます。Animateステートは、その.charフォルダ内でリグ(.rig拡張子)を検索し、そのリグの入力に基づいて、その.charフォルダに格納されているそれに関連するキャラクタ要素(スケルトンやシェイプなど)を取得します。
キャラクタ要素コンテナ ¶
キャラクタ要素は、キャラクタをアニメーションさせる際に使用される単一のパックジオメトリです。以下がデフォルトのタイプです:
スケルトン(.skel)
KineFXスケルトン。
シェイプ(.shp)
変形のための静止スキンとして使用可能なシェイプ。
リグ(.rig)
スケルトン/シェイプを修正するグラフ。
コントロール(.ctrl)
ビューポート内でUIイベントがどのように解釈されるかを定義したビューポート操作ツール。例えば、ビューポート内でドラッグした時の挙動を定義することができます。コントロールは、グラフとそれに関連付けられたシェイプのセットです。
カスタムの拡張子を使用して、独自の要素を定義することもできます。
アニメーション用データを組み立てる ¶
Pack Folder SOPを使用することで、キャラクタ要素をパックフォルダ構造に組み立てることができます。Pack Folder SOPは、新規にフォルダ構造を作成したり、キャラクタ要素を既存のフォルダ構造にパックすることもできます。
パックフォルダ構造にキャラクタ要素を追加する ¶
この例では、パックフォルダ構造にキャラクタ要素を追加します。キャラクタ要素には、チューブジオメトリ、チューブのスケルトン、ボーン変形を実行するリグロジックがあります。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 :
rig
入力ノードの名前には拡張子が付いてないため、Pack Folder SOPの Type パラメータには何も入りません。
入力が何であるかを分かるやすくしたい場合は、Pack Folder SOPの Name および Type パラメータを更新して、パックフォルダ構造内のキャラクタ要素の名前とその拡張子を変更します:
-
1番目の入力: Name :
Base、 Type :shp -
2番目の入力: Name :
Base、 Type :skel -
3番目の入力: Name :
Base、 Type :rig
Note
リググラフの入力によって参照されるキャラクタ要素の名前は、パックフォルダ構造内のキャラクタ要素の名前と一致していなければなりません。こうすることで、リグは、取得して使用すべきキャラクタ要素を特定することができます。
以下の画像が示しているのは、上記の例で使用しているAPEX Graph SOPである
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ビューで、ノード名(ここでは
assemble_character_elements)の横にあるドロップダウンボックスを出力に設定します。 -
Type を Packed Folders に設定します。
-
パックフォルダ構造は、2通りの方法で表示することができます:
-
Hierarchy を Topology に設定すると、パックフォルダ構造がツリービューとして表示されます。
-
Hierarchy を Flat List に設定すると、パックフォルダ構造が平坦なリストとして表示されます。
次のパックフォルダ構造が表示されます:
/ -- Base.rig -- Base.shp -- Base.skel
-
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は、キャラクタの要素をキャラクタ(.char)フォルダに追加してから、キャラクタをアニメーションシーンに追加します:
それぞれのAPEX Scene Add Character SOPで、 Character Name パラメータにキャラクタの名前を指定します。アニメーションシーンを組み立てる方法の詳細については、アニメーションワークフローを参照してください。
シーンコンテナ内には以下のパックフォルダ階層が出来ます(Pack Folder SOP内のキャラクタ要素の名前を変更した後):
/
-- character1.char/
-- Base.rig
-- Base.shp
-- Base.skel
-- character2.char/
-- Base.rig
-- Base.shp
-- Base.skelAnimateステートでキャラクタにポーズを付けたりアニメーションさせるには:
-
シーンを
APEX Scene Animate SOPに接続します:
APEX Scene Animate SOPでアニメーションを実行する -
そのAPEX Scene Animate SOPを選択してDisplayフラグを有効にします。
-
左側のツールバーにある
Animateをクリックします。
パックフォルダ構造からデータを抽出する ¶
Unpack Folderや
Packed Folder Split SOPを使用することで、パックフォルダ構造からキャラクタ要素を抽出することができます。どちらのSOPもパックフォルダ構造を入力として受け取り、APEXパスパターン構文を使用して、抽出したいデータを検索することができます。Unpack Folder SOPは、抽出されたデータが格納された1本の出力を持つのに対して、Packed Folder Split SOPは、入力のパックフォルダ構造を2本の出力に分割します。1つ目の出力は、抽出されたデータが除去された元々のパックフォルダ構造(デフォルト設定)で、2つ目の出力は、抽出されたデータです。
Note
キャラクタ内の単一の要素を分析したい場合は、Unpack Folder SOPを使用してその1つの要素を抽出できます。既存のキャラクタの何かを変更したい場合は(例えば、現在のスケルトンを取得し、ジョイントを追加して、スケルトンに戻すなど)、Packed Folder Split SOPを使用すると良いでしょう。
この例では、Unpack Folder SOPを使用して、シーンからリグを抽出します:
Unpack Folder SOPで、 Extract Pattern を/character1.char/Base.rigに設定し、character1コンテナからリグを抽出します。
Warning
検索パターンがシーン内の複数のリグと一致した場合(例えば/**/*.rigなど)、それらの複数のリグが抽出され、それらが1つのアンパックジオメトリに結合されてしまいます。APEXネットワークビューでは有効に見えるグラフが表示されるかもしれませんが、予期せぬ動作を引き起こす可能性があります。
Note
Unpack Folder SOPでは:
-
Unpack Contents がオンの場合、抽出されたリグはアンパックされ、リググラフジオメトリが得られます。このリググラフは、APEXネットワークビューで確認することができます。
-
Unpack Contents がオフの場合、抽出されたリグはグラフジオメトリではなく、パックプリミティブです。APEXネットワークビューには、このパックプリミティブリグは表示されません。
Rig Treeビューに表示されるのは、パックフォルダ構造に パック されたデータのみです。 Unpack Contents がオンの場合、抽出されるデータはアンパックジオメトリであり、Rig Treeビューに何もデータは表示されません。
抽出されたパックプリミティブをRig Treeビューで確認するには:
-
Unpack Folder SOPで、 Unpack Contents をオフにします。
-
Rig Treeビューで、ノード名(ここでは
extract_rig)の横にあるドロップダウンボックスを出力に設定します。 -
Type を Packed Folders に設定します。
抽出されるデータは以下のように表示されます:
/ -- Base.rig
KineFXキャラクタをパックフォルダ構造にパックする ¶
APEX Pack Character SOPを使用すると、KineFXキャラクタ(スキン、静止ポーズ、アニメーションポーズを含む)をパックフォルダ構造に簡単にパックすることができます。このSOPには、キャラクタに対して、FKやボーン変形機能を備えたリグを自動的に作成できるオプションもあります。
APEX Unpack Character SOPは、APEX Pack Character SOPとは逆の操作を行ないます。パックフォルダ構造からキャラクタをアンパックし、キャラクタのスキン、静止ポーズ、アニメーションポーズを出力します。
パックフォルダ構造にキャラクタを追加する ¶
この例では、APEX Pack Character SOPを使用して、Capybaraテストジオメトリのスキン、静止ポーズ、アニメーションポーズをパックフォルダ構造に追加します:
-
既存のキャラクタまたはシーンがAPEX Pack Character SOPに入力されていない場合(1番目の入力が接続されていない場合)、そのキャラクタ要素はトップレベルの要素として新しいパックフォルダ構造に追加されます。パックフォルダ構造は、Rig Treeビューで確認することができます:
/ -- Base.shp -- Base.skel
-
キャラクタリグもパックフォルダ構造に追加するには、 Add FK and Bone Deform Components をオンにします。これにより、すべてのジョイントのFK階層とボーン変形機能を含むリグが作成されます。詳細は、ジオメトリ変形用のグラフを参照してください。パックフォルダ構造は以下のようになります:
/ -- Base.rig -- Base.shp -- Base.skel -- Guides.skel
(
Guides.skelは、APEX Pack Character SOP内でfkリグコンポーネントによって作成されたガイドスケルトンです。) -
この時点で、APEX Pack Character SOPを
APEX Scene Add Character SOPに接続し、アニメーションシーンを組み立てることができるようになります:
-
APEX Scene Add Character SOPで、 Character Name を設定します。この例では、 Character Name を
capyに設定します。パックフォルダ構造は以下のようになります:/ -- capy.char/ -- Base.rig -- Base.shp -- Base.skel -- Guides.skel -- scene.graphscene.graphについての詳細は、アニメーションシーンコンテナを参照してください。
既存のシーンに追加する ¶
上記の例のCapybaraに、2体目のCapybaraのアニメーションを追加します:
-
既存のアニメーションシーンをAPEX Pack Character SOPである
add_animationの1番目の入力に接続します。 -
アニメーションを追加し、他のキャラクタ要素はパックしない場合、2体目のCapybaraである
capy2の3番目の出力(アニメーションポーズ)のみをAPEX Pack Character SOPに接続する必要があります。 -
APEX Pack Character SOPの
add_animationで:-
Character Name をオンにして、それをアニメーションを追加したいキャラクタの名前、
capyに設定します。 -
Shape Path の値を削除します。元のCapybaraのスキンを置き換えたくはないためです。
Note
アニメーションを追加する際、ノードがアニメーションを追加するスケルトンとリグを見つけられるように、 Skeleton Path および Rig Path を指定しておく必要があります。
-
Animation パラメータをオンにします。
-
デフォルトで、Capyのアニメーションは各フレームにキーとして書き出されます。キーを設定するフレームを変更するには、Houdiniのグループの構文を使用して Frame Pattern を更新します。例えば、
1-100:2 ^10-20は、フレーム10から20を除く、フレーム1から100までの間で、1フレームおきにキーを設定します。
パックフォルダ構造は以下のようになります:
/ -- animation/ -- default.clip/ -- capy.char/ -- Base.rig -- Base.shp -- Base.skel -- Guides.skel -- scene.graphCapyのアニメーション -
-
APEX Scene Animate SOPを使用して、アニメーションを更新します:
-
Animateステートに入ります - APEX Scene Animate SOPを選択して、そのDisplayフラグをオンにしたら、左側のツールバーにある
Animateをクリックします。
-
コントロールを選択し、キーを編集します。
アニメーションの更新後 - ミッション中のCapy -
パックフォルダ構造からキャラクタをアンパックする ¶
この例では、APEX Unpack Character SOPを使用して前のアニメーションシーンをアンパックします:
-
APEX Unpack Character SOPで、 Character Name を
capyに設定します。 -
APEX Unpack Character SOPを使用すると、アンパックされたキャラクタ要素をビューポートで確認することができます:
-
APEX Unpack Character SOPのDisplayフラグを設定します。
-
Visualize Output ドロップダウンメニューの利用可能なオプションから選択します。
-
-
APEX Unpack Character SOPの2番目、3番目、4番目の出力で、Capyのスキン、静止ポーズ、アニメーションポーズが利用可能です。これで、
Rig Pose SOP、
Joint Deform SOP、
ROP FBX Character Output SOPといった様々な非APEXのKineFX SOPを使用して、キャラクタデータにさらなる処理を行なえるようになりました。
Capybaraのアンパック後にKineFX SOPを使用
How to ¶
| To... | Do this |
|---|---|
|
パックフォルダ構造を確認する |
パックフォルダ構造の内容は、Rig TreeビューとGeometry Spreadsheetの2つの方法で確認することができます。詳細は、パックォルダ構造を確認するを参照してください。
|
|
Geometry Spreadsheetでプリミティブを確認する |
Geometry Spreadsheetでは以下を確認することができます:
Note Geometry Spreadsheetには、選択したノードのトップレベルでパックされているものだけが表示されますが、Rig Treeビューでは、パックフォルダ構造の階層全体が表示されます。 Geometry Spreadsheetで
Note Unpack Folder SOPまたは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つのボックスジオメトリが
Pack Folder SOPの2番目の入力にデータを接続すると、 Name および Type パラメータには、接続した入力から検出された名前と拡張子が自動的に入力されます。このケースでは、 Name は / -- mergepacked1 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 オプションをオンにします。 |
|
アンパックされたデータのみをパックする(パック済みのデータはパックしない) |
これらのパラメータの詳細は、 |
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 SOPの場合) |
Extract Only パラメータをオンにします。データは抽出されるだけで、Packed Folders出力から削除されません。 |
|
抽出されたデータ以外を出力する(Unpack Folder SOPの場合) |
Invert をオンにします。 |
|
出力の順番を反転させる(Packed Folder Split SOPの場合) |
Invert Selection をオンにします。 |