On this page

概要

APEXパスパターン構文は、APEXグラフスケルトン、ジオメトリ、およびパックキャラクタフォルダ構想内の特定の要素をフィルタリングして選択できるルールセットです:

APEXグラフ

APEXパスパターンは、graph::FindNodesgraph::FindPortsなどのグラフ系ノードで使用して、ノードおよびポートの特定のグループを検索します。また、APEXパスパターンは、タグやプロパティなどのグラフメタデータをフィルタリングするのにも使用することができます。グラフノード上のタグは、事前構築済みリグコンポーネントでリグ内のノードにラベルを付けたり検索するのに広く使用されています。

スケルトンとジオメトリ

APEXパスパターンは、skel::FindJointsskel::FindFirstJointなどのグラフ系ノードで使用して、ジオメトリ内の特定のポイントやスケルトン内のジョイントを検索します(スケルトンとはポイントの階層です)。また、APEXパスパターンは、タグやプロパティなどのスケルトンメタデータをフィルタリングするのにも使用することができます。タグは、スケルトンジョイントにラベルを付けるのに使用されます。これを事前構築済みリグコンポーネントが取得することで、キャラクタのリグ機能が構築されます。

パックキャラクタフォルダ構造

APEXパスパターンをUnpack Folder SOP内で使用して、アニメーション用のキャラクタ要素が格納されている、ネストされたパックキャラクタフォルダ構造から特定の要素を抽出することができます。

APEXパスパターン構文

以下の表に、APEXパスパターン構文のルールを示します。この表内の“階層レベル”とは以下を指します:

  • ネスト(入れ子)化したサブネット(APEXグラフの場合)。

  • スケルトン階層内のレベル。ジオメトリがスケルトン(階層)でない場合、すべてのポイントは最上位の階層レベルにあるとみなされます。

  • パックキャラクタフォルダ構造のネスト化したフォルダ。

構文

説明

*

名前内の任意の数の文字に一致します。

例えば、root/*/element_*は、rootから2レベル下にある名前がelement_で始まるすべての要素に一致します。

**

任意の数の階層レベルに一致します。

例えば、**/*extは、任意の階層レベルにあるextで終わるすべての要素に一致します。

?

任意の1文字に一致します。

[]

大括弧内の任意の1文字に一致します。

例えば、root/object[1234]root内のobject1object2object3object4という名前の要素に一致します。

{}

グループとアトリビュートは、中括弧内に配置されます。

例えば、{@name=test3.rig @index=2-3}は、test3.rigと、2または3のindexアトリビュートを持つすべての要素に一致します。

Note

グループおよびアトリビュートとのパターンマッチは、パックキャラクフォルダ構造でのみサポートされ、グラフ要素やジオメトリのポイントではサポートされていません。

パターンと&+-を組み合わせる

複数のパターンは&+-演算子と組み合わせることができます。パターンマッチは左から右に適用されます。

  • +”またはスペースは“or”演算のように動作します。“+”またはスペースによって区切られたパターンのいずれかに一致する要素が返されます。

  • &”は“and”演算のように動作します。“&”の両側にあるパターンに一致する要素が返されます。

  • -”は減算のように動作します。1番目のパターンに一致するが、2番目には一致しない要素が返されます。

    例えば、root/* - *extroot内のextで終わらないすべての要素を返します。

()

丸括弧は、組み合わされたパターンの実行順を示します。

例えば、root/left* - (*arm & *leg)は、root内のleftで始まり、armまたはlegで終わらないすべての要素に一致します。

APEXグラフのポート構文

APEXグラフにおいて、graph::FindPortsノードは、以下の構文を使用してグラフポートをフィルタリングすることができます:

<node_path>:<port_name>[in|out][<subport_name>]

  • オプションの[in]/[out]は、ポートがノードの入力ポートか出力ポートかを指定します。

  • オプションの[<subport_name>]は、可変長ポート<port_name>のサブポート名を指定します。

例えば、joint_*:xform[in][leg]は、joint_で始まるノードにおける、入力可変長ポート xformlegという名前のサブポートに一致します。

関数

APEXパスパターン関数は、グラフ、グラフノード、ポート、ジオメトリのポイントに対して特定のフィルタリング処理を実行します。関数はパックキャラクタフォルダ構造には使用されません。

APEXパスパターン構文では、関数は頭に%が付き、複数の引数を受け取ることができます:

%<function>(<argument1>, <argument2>, ...)

また、別の構文として、タグ名の前に“#”を付けることで、例えば#<tag_name>のようにタグを指定することも可能です。

APEXグラフ関数

ノード関数

以下の関数はノードに対して動作します:

関数

説明

%ancestors(<node_path>, [inclusive, traverse])

<node_path>で指定したノードの祖先であるグラフノードを検索します。

inclusiveオプションは、返されるノードのリストに<node_path>のノードも含めます。例えば、%ancestors(trs_output, inclusive)は、trs_outputの祖先に加え、trs_output自体も返します。

traverseオプションは、サブネットおよびテンプレート内の祖先を含む、<node_path>の祖先を返します。

短縮形だと、inclusiveオプションにはi、traverseオプションにはt、両方にはitを使用することができます。

例:

  • %ancestors(<node>)

  • %ancestors(<node>, inclusive)

  • %ancestors(<node>, traverse)

  • %ancestors(<node>, inclusive, traverse)

  • %ancestors(<node>, traverse, inclusive)

  • %ancestors(<node>, i, t)

  • %ancestors(<node>, it)

%callback(<callback_name>)

コールバックとは、APEXグラフノードのタイプです(例: graph::AddNode)。%callbackは、コールバック名<callback_name>と一致するすべてのサブネットレベルのグラフノードを検索します。コールバック名は、ノード上のcallbackアトリビュートに格納されています。

<callback_name>にはワイルドカードを指定することができます(%callback(graph*)など)。

%descendants(<node_path>, [inclusive, traverse])

<node_path>で指定したノードの子孫であるグラフノードを検索します。

inclusiveオプションは、返されるノードのリストに<node_path>のノードも含めます。例えば、%descendants(trs_output, inclusive)は、trs_outputの子孫に加え、trs_output自体も返します。

traverseオプションは、サブネットおよびテンプレート内の子孫を含む、<node_path>の子孫を返します。

短縮形だと、inclusiveオプションにはi、traverseオプションにはt、両方にはitを使用することができます。

例:

  • %descendants(<node>)

  • %descendants(<node>, inclusive)

  • %descendants(<node>, traverse)

  • %descendants(<node>, inclusive, traverse)

  • %descendants(<node>, traverse, inclusive)

  • %descendants(<node>, i, t)

  • %descendants(<node>, it)

%isconnected()

コネクションを持つノード/ポートを検索します。ポートのいずれかが接続されている場合、そのノードは接続されているとみなされます。

%ispromoted()

入力または出力としてプロモートされる(グラフの入力/出力ノードに接続されている)ノードを検索します。また、トップレベルのグラフ入力/出力ノードまで遡ってプロモートされる、ネスト化されたサブネット内のノードも検索します。

%properties(<property_name>, [<value>])

プロパティは、ノード上のproperties辞書アトリビュートに格納されています。%properties関数は、<property_name>と一致するキーを持つエントリがproperties辞書アトリビュートに含まれているすべてのノードを検索します。

プロパティの値は、オプションの2つ目の引数として指定することができます。

%tag(<tag_name>)

タグは、ノード上のtag文字列配列アトリビュートに格納されています。%tag関数は、タグ<tag_name>を含んでいるすべてのサブネットレベルのノードを検索します。

<tag_name>内にはワイルドカードを指定することができます(%tag(left_*)など)。

<tag_name>内では複数のエントリを指定することができ、各エントリはカンマまたはスペースで区切られます。例えば、%tag(<tag1>, <tag2> <tag3>)<tag1><tag2><tag3>のタグを持つすべてのノードと一致します。

#<tag_name>

%tag関数に加えて、#leftのようにタグ名の前に“#”を付けることで、タグをフィルタリングすることも可能です。

<tag_name>にはワイルドカードを指定することができます(#left_*など)。

%tagと異なり、#<tag_name><tag_name>にスペースを含めることはできません。

ポート関数

以下の関数はポートに対して動作します:

%isconnected()

接続されているポートを検索します。

%ispromoted()

入力または出力としてプロモートされる(グラフの入力または出力ノードに接続されている)ポートを検索します。また、トップレベルのグラフ入力/出力ノードまで遡ってプロモートされる、ネスト化されたサブネット内のポートも検索します。

%tag(<tag_name>)

タグは、ノード上のtag文字列配列アトリビュートに格納されています。%tag関数は、タグ<tag_name>を含んでいるすべてのサブネットレベルのポートを検索します。

ポートタグは、グラフノード上に<port>:<tag>の形式で格納されています。%tagを使用してポートを検索する場合、ポート名なしでタグ名だけを指定してください。例えば、%tag(r:xyz)ではなくて%tag(xyz)を使用します。

<tag_name>内にはワイルドカードを指定することができます(%tag(left_*)など)。

<tag_name>内では複数のエントリを指定することができ、各エントリはカンマまたはスペースで区切られます。例えば、%tag(<tag1>, <tag2> <tag3>)<tag1><tag2><tag3>のタグを持つすべてのノードと一致します。

#<tag_name>

%tag関数に加えて、#leftのようにタグ名の前に“#”を付けることで、タグをフィルタリングすることも可能です。

<tag_name>にはワイルドカードを指定することができます(#left_*など)。

%tagと異なり、#<tag_name><tag_name>にスペースを含めることはできません。

%valuetype(<type_name>)

値の型が<type_name>(%valuetype(Vector3)など)であるポートを検索します。

<type_name>内にはワイルドカードを指定することができます(%valuetype(Vector*)など)。

スケルトンおよびジオメトリ関数

以下の説明において、<joint_pattern>とはスケルトンジョイントをフィルタリングするのに使用されるパターンです。<joint_pattern>には、APEXパスパターンAPEXパスパターン関数を含めることができます。

関数

説明

%ancestors(<joint_pattern>, [<start>], [<steps>])

スケルトンに対して動作します。<joint_pattern>で指定したジョイントの祖先であるジョイントを検索します。

<start> - <joint_pattern>のジョイントから、祖先ジョイントを返す前に、階層を遡るレベルの数です。この値はオプションで、デフォルトは1です。

<steps> - <start>からさらに遡って一致させるジョイントのレベルの数です。負の値は、<start>より上のすべてのジョイントを一致させます。この値はオプションで、デフォルトは-1です。

例えば、root → pelvis → thigh → calfという階層がある場合:

  • %ancestors(calf_l)は、thigh、pelvis、rootに一致します。

  • %ancestors(calf_l, 0)は、calf、thigh、pelvis、rootに一致します。

  • %ancestors(calf_l, 2)は、pelvisとrootに一致します。

  • %ancestors(calf_l, 0, 0)はcalfに一致します。

  • %ancestors(calf_l, 1, 1)は、thighとpelvisに一致します。

%children(<joint_pattern>)

スケルトンに対して動作します。<joint_pattern>で指定したジョイントの子であるジョイントを検索します。

%descendants(<joint_pattern>, [<start>], [<steps>])

スケルトンに対して動作します。<joint_pattern>で指定したジョイントの子孫であるジョイントを検索します。

<start> - <joint_pattern>のジョイントから、子孫ジョイントを返す前に、階層を下るレベルの数です。この値はオプションで、デフォルトは1です。

<steps> - <start>からさらに下って一致させるジョイントのレベルの数です。負の値は、<start>より下のすべてのジョイントを一致させます。この値はオプションで、デフォルトは-1です。

例えば、calf → ball → footという階層がある場合:

  • %descendants(calf)はballとfootに一致します。

  • %descendants(calf, 0)はcalf、ball、footに一致します。

  • %descendants(calf, 2)はfootに一致します。

  • %descendants(calf, 0, 0)はcalfに一致します。

  • %descendants(calf, 1, 2)はballとfootに一致します。

%group(<group>)

ジオメトリに対して動作します。<group>に一致するジオメトリ上のポイントを検索します。<group>はHoudiniのグループの構文を使用します(例: %group(@P.x>0))。

%leaves([<joint_pattern>])

スケルトンに対して動作します。スケルトンのリーフ(末端)であるジョイントを検索します。

オプションの<joint_pattern>は、そのパターンに一致するジョイントのリーフを検索します。

%parents(<joint_pattern>)

スケルトンに対して動作します。<joint_pattern>で指定したジョイントの親であるジョイントを検索します。

%properties(<property_name>, [<value>])

ジオメトリに対して動作します。プロパティは、ポイント上のproperties辞書アトリビュートに格納されています。%properties関数は、<property_name>と一致するキーを持つエントリがproperties辞書アトリビュートに含まれているすべてのポイントを検索します。

プロパティの値は、オプションの2つ目の引数として指定することができます。<value>は、整数または文字列です。

%roots([<joint_pattern>])

スケルトンに対して動作します。スケルトンのルートであるジョイントを検索します。

オプションの<joint_pattern>は、そのパターンに一致するジョイントのルートを検索します。

%tag(<tag_name>)

ジオメトリに対して動作します。タグは、ポイント上のtag文字列配列アトリビュートに格納されています。%tag関数は、タグ<tag_name>を含んでいるジオメトリ上のポイントを検索します。

<tag_name>内にはワイルドカードを指定することができます(%tag(left_*)など)。

<tag_name>内では複数のエントリを指定することができ、各エントリはカンマまたはスペースで区切られます。例えば、%tag(<tag1>, <tag2> <tag3>)<tag1><tag2><tag3>のタグを持つすべてのポイントと一致します。

#<tag_name>

ジオメトリに対して動作します。%tag関数に加えて、#leftのようにタグ名の前に“#”を付けることで、タグをフィルタリングすることも可能です。

<tag_name>にはワイルドカードを指定することができます(#left_*など)。

%tagと異なり、#<tag_name><tag_name>にスペースを含めることはできません。

KineFX

概要

キャラクタ要素の準備

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

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

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

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

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

変形

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

H20以前

ペイン

別表