Created on | Updated on

Packed character format

Houdini20.5の英語ドキュメントはこちら

 

※この記事が書かれた時点ではこの機能は現在も開発中です。現時点での機能は未完成であり、変更される可能性があります。

 

Packed character formatは、1体以上のキャラクタをビューポートで作成およびアニメートするために必要なデータを定義し、バンドルし、整理する方法です。このフォーマットは、ディスク上のディレクトリ構造に似たフォルダ構造で整理されたジオメトリデータで構成されており、そのデータはネストされたパックプリミティブとして追加されます。

パックキャラクタフォーマットには、3つのデータコンテナのレベルがあります。それは、Character scene、Character、Character elementです。Packed character formatの階層は、リグツリービューで確認することができます。

kinefx_packedcharformat_levels.png

Character scene

Character sceneは、1体以上のポーズ可能なキャラクタを含む最上位のデータコンテナであり、これらのキャラクタが互いに連携できるようになっています。シーンコンテナには、アニメーターがアニメート状態でインタラクティブに追加するアニメーションや制約も含まれることがあります。シーンコンテナは、パックフォルダ構造における「フォルダ」のように考えることができます。

 

Character

キャラクタコンテナは、アニメーターがビューポートで操作するポーズ可能なKineFXキャラクタを保持します。このコンテナには、キャラクタをアニメートするために必要なすべての要素が含まれています。最低限、リグが含まれています。キャラクタコンテナは、パックフォルダ構造における「フォルダ」のように考えることができます。

 

Character element

Character elementは、キャラクタをアニメートする際に使用される単一のパックジオメトリ要素です。デフォルトのタイプには、スケルトン、シェイプ、リグ、コントロールがあります。また、カスタム拡張子を使用して独自の要素を定義することも可能です。Character elementは、パックフォルダ構造における「ファイル」のように考えることができます。

 

Packed character formatを使用すると、異なる要素をまとめてパックし、シーン内で渡したり、必要に応じて個別の要素を抽出することができます。

 

データコンテナ

Character Sceneコンテナ

Character sceneコンテナは、互いに連携できる1体以上のキャラクタを含む最上位のコンテナです。シーンの開始点は通常、シーンに読み込まれたキャラクタです。その後、アニメート状態でアニメーションが行われるにつれて、他の要素がシーンに追加されます。これらの要素には、アニメーション、コンストレイン、そしてscene.graphが含まれます。

注意

アニメーション中にシーンに追加される要素(アニメーション、コンストレイン、scene.graph)は、キャラクタコンテナ内のキャラクタ要素と混同しないようにしてください。

kinefx_packedcharformat_scene.pngシーン内のエレメント

 

animation

アニメート状態でアニメーションが実行されると、アニメーション用のチャンネルプリミティブがシーンコンテナ内の/animationディレクトリに追加されます。チャンネルプリミティブはジオメトリと共に保存されるアニメーションカーブであり、アニメート状態に最適化されています。

 

constraints

コンストレインは、2つのコントロール間の依存関係を評価するミニリグのようなものです。アニメート状態でコンストレインが作成されると、そのコンストレイン用のグラフがシーンコンテナ内の/constraintsディレクトリに追加されます。

 

scene.graph

scene.graphは、アニメート状態でリグやコンストレインが評価される順序を管理・定義するグラフです。これはシーンコンテナ内に作成され、保存されます。scene.graph自体はリグを作成するわけではなく、それを実行する役割を担います。

scene.graphはシーンコンテナ内のすべてのキャラクタを探し、それらを組み立ててシーンを作成します。アニメート状態でコンストレインが作成されると、コントロール間の依存関係がscene.graphに追加されます。また、scene.graphはコンストレインが作成された順序も記録します。

 

警告

scene.graphは、コントロールやリグ間に依存関係があるシーン(通常はコンストレイン)において必須です。scene.graphを削除すると、シーン内で作成したコンストレインが失われてしまいます。

 

Houdiniシーンファイル(.hip)内には複数のCharacter sceneを含めることができます。これは、たとえば異なるバージョンのシーンを作業したい場合などに便利です。

Character コンテナ

Characterコンテナには、リグとリグが正しく評価されるために必要なすべてのキャラクタ要素が含まれています。キャラクタには、同じ種類のキャラクタ要素が複数含まれる場合もあります。たとえば、キャラクタコンテナに3つのシェイプを含めることができます。

キャラクタの動作は「リグ中心」であり、リグの入力に基づいて必要なキャラクタ要素が決定されます。キャラクタコンテナに特定のキャラクタ要素が含まれていても、その要素がリグに入力として渡されていない場合、その要素は使用されません。たとえば、キャラクタコンテナに10個のシェイプがあっても、そのうち2つだけがリグの入力として使用されている場合、リグはその2つのシェイプのみを使用します。ただし、ユーザーは将来的に使用するために残りのシェイプをキャラクタコンテナに保持しておくこともできます。

 

注意

「characterコンテナ」という用語は、リグロジックの一部と、そのリグロジックの入力で参照される要素を含む汎用的なコンテナを指します。実際には、characterコンテナはキャラクタだけでなく、小道具やアセットである場合もあります。

 

Houdiniでは、パックフォルダ構造内のcharacterコンテナの名前に「.char」拡張子が付いていることが期待されます。Houdiniが「.char」拡張子を検出すると、そのパックプリミティブを自動的にフォルダとして認識します。アニメート状態では「.char」拡張子を基に、そのフォルダ内にあるリグを探します(リグは「.rig」拡張子が付いた要素です)。リグの入力に基づいて、アニメート状態は「.char」フォルダ内に保存された関連するキャラクタ要素(例えば、スケルトンやシェイプ)を読み込みます。

 

kinefx_packedcharformat_levels (1).png

Character element コンテナ

Character elementは、キャラクタをアニメートする際に使用される単一のパックジオメトリです。デフォルトの種類は以下の通りです:

 

Skeleton (.skel)
KineFXスケルトン。

 

Shape (.shp)
変形用のリファレンスとして使用されるシェイプ。

 

Rig (.rig)
スケルトンやシェイプを修正するためのグラフ。

 

Control (.ctrl)
ビューポート内でのUIイベントの解釈方法を定義するインタラクションツール。たとえば、ビューポート内でドラッグした際の特定の挙動を定義することができます。コントロールは、グラフとそれに関連付けたシェイプのセットで構成されます。

 

また、カスタム拡張子を使用して独自の要素を定義することも可能です。

 

キャラクタデータの組み立てと抽出

Pack Folder、Unpack Folder、および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つに分割します。1つは抽出データが削除された元のパックフォルダ構造(デフォルト設定)、もう1つは抽出されたデータです。

 

キャラクタ内の単一の要素を分析したい場合、Unpack Folder SOPを使用してその要素を抽出することができます。既存のキャラクタに何かを修正したい場合(例えば、現在のスケルトンを取得し、ジョイントを追加して再度スケルトンに戻す)、Packed Folder Split SOPを使用することができます。

 

キャラクタの組み立て

この例では、キャラクタ要素をパックフォルダ構造に追加して、characterコンテナを組み立てます。

以下のキャラクタ要素があります:チューブジオメトリ、チューブ用のスケルトン、ボーン変形を実行するリグロジックです。Joint Capture Biharmonic SOPは、ボーン変形リグロジックによって変形されるジオメトリにキャプチャウェイトを作成するために使用されます。

kinefx_packedcharformat_createchar.png

Pack Folder SOPの2番目の入力には、複数のキャラクタ要素を接続してパックフォルダ構造に追加します。要素がPack Folder SOPに接続されると、それに応じてNameパラメータが順番に自動生成されます。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

 

リググラフの入力で参照されるキャラクタ要素名は、パックフォルダ構造内のキャラクタ要素名と一致する必要があります。これにより、リグがどのキャラクタ要素を使用するかを正しく認識できます。

以下の画像は、この例で使用しているbonedeform_rigノードのグラフ入力を示しています。グラフ入力ポートの名前をパックフォルダ構造に合わせて変更するには、ポート名をMMBクリックしてリネームします。グラフの作成や実行の詳細については、APEXグラフを参照してください。

 

kinefx_packedcharformat_riginputs.png

 

パックフォルダ構造の表示


パックフォルダ構造の内容を表示するには、2つの方法があります。Rig tree viewを使用する方法と、ジオメトリスプレッドシートを使用する方法です。Rig tree viewでは、パックフォルダ構造全体の階層が表示されますが、ジオメトリスプレッドシートでは、パックフォルダ構造のトップレベルのみが表示されます。

Rig tree view

  1. ネットワークエディタでPack Folder SOPを選択します。
  2. リグツリービューを開きたいペインの上部にある「新しいタブ」アイコンをクリックし、「New Pane Tab Type」▸「Animation」▸「Rig Tree」を選択します。
  3. リグツリービューで、ノード名(この例ではcreate_character)の横にあるドロップダウンボックスを「Output」に設定します。
  4. 「Type」を「Packed Folders」に設定します。
  5. パックフォルダ構造を表示する方法は2つあります:
    • 「Hierarchy」を「Topology」に設定して、パックフォルダ構造をツリービューとして表示します。
    • 「Hierarchy」を「Flat List」に設定して、パックフォルダ構造をフラットリストとして表示します。

 

Geometry spreadsheet

  1. ネットワークエディタでPack Folder SOPを選択します。
  2. ジオメトリスプレッドシートを開きたいペインの上部にある「新しいタブ」アイコンをクリックし、New Pane Tab Type ▸ Inspectors ▸ Geometry Spreadsheetを選択します。
  3. ジオメトリスプレッドシートの上部ツールバーで「Primitives 」をクリックします。キャラクタ要素(base.shp、base.skel、base.rig)が一覧表示されます。
  4.  

character sceneの組み立て

この例では、APEX Scene Add Character SOPを使用して、それぞれのキャラクタをシーンコンテナに追加し、character sceneを組み立てます。

kinefx_packedcharformat_assemblescene.png2体のキャラクタを使ってシーンを組み立てる

 

それぞれのAPEX Scene Add Character SOPで、Character Nameパラメータにキャラクタの名前を指定します。アニメーション用のシーンを組み立てる方法については、アニメーションワークフローを参照してください。

リグツリービューでは、シーンコンテナのパックフォルダ階層は次のようになります。

キャラクタをアニメート状態でポーズおよびアニメーションするには、次の手順を行います:

  1. APEX Scene Animate SOPに接続します。
  2. APEX Scene Animate SOPを選択して表示します。
  3. 左側のツールバーで「Animate」をクリックするか、ビューポートでEnterキーを押します。

kinefx_packedcharformat_animate.png

 

パックフォルダ構造からデータを抽出する


Unpack Folder SOPやPacked Folder Split SOPを使用して、パックフォルダ構造からデータを抽出することができます。この例では、Unpack Folder SOPを使用してシーンからリグを抽出します。

kinefx_packedcharformat_assemblescene (1).png

Unpack Folder SOPで、Extract Patternを「/character1.char/base.rig」に設定して、character1コンテナからリグを抽出します。検索パターンで使用されるパターンマッチング構文の詳細については、Unpack Folder SOPを参照してください。

警告

検索パターンがシーン内の複数のリグに一致した場合(たとえば、/**/*.rigのようなパターン)、複数のリグが抽出され、それらが1つのアンパックジオメトリに統合される可能性があります。APEXネットワークビューでは、グラフが有効に見えるかもしれませんが、グラフが予期しない動作を示すことがあります。

 

注意

Unpack Folder SOPで「Unpack Contents」がオンになっている場合、抽出されたリグはアンパックされ、リググラフのジオメトリが得られます。この抽出されたリググラフは、APEXネットワークビューで表示できます。

「Unpack Contents」がオフの場合、抽出されたリグはグラフジオメトリではなく、パックプリミティブとして抽出されます。APEXネットワークビューでは、抽出されたリグのパックプリミティブは表示されません。

リグツリービューは、パックフォルダ構造にパックされたデータのみを表示します。したがって、「Unpack Contents」がオンの場合、抽出されたデータはアンパックされたジオメトリであり、リグツリービューにはデータが表示されません。

 

アンパックされたプリミティブ(「Unpack Contents」がオフの場合)をリグツリービューで表示するには、以下の手順を行います:

  1. リグツリービューで、ノード名(この例ではextract_rig)の横にあるドロップダウンボックスを「出力」に設定します。
  2. 「Type」を「Packed Folders」に設定します。

抽出されたデータは次のように表示されます。

 

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ