On this page
この機能はまだ開発中です。現在の機能は未完成で変更される予定であり、 ドキュメントが手薄だったり、なかったりします。 これを使用するときは、そのことに我慢してください。

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

APEXグラフ

APEXパスパターンは、graph::FindNodesgraph::FindPortsなどのグラフ系ノードで使用して、ノードおよびポートの特定のグループを検索します。 また、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で終わる要素には一致しません。

ポート構文

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

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

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

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

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

関数

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

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

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

関数

説明

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

ノードに対して動作します。 <node_path>で指定されたノードを起点とする親コネクションを持つすべてのグラフノードを検索します。.

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

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

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

例:

  • %ancestors(<node>)

  • %ancestors(<node>, traverse)

  • %ancestors(<node>, inclusive)

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

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

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

  • %ancestors(<node>, it)

%callback(<callback_name>)

ノードに対して動作します。 コールバック名<callback_name>と一致するすべてのサブネットレベルのグラフノードを検索します。 コールバック名は、ノード上のcallbackアトリビュートに格納されています。

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

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

ノードに対して動作します。 <node_path>で指定されたノードを起点とする子コネクションを持つすべてのグラフノードを検索します。

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

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

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

例:

  • %descendants(<node>)

  • %descendants(<node>, traverse)

  • %descendants(<node>, inclusive)

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

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

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

  • %descendants(<node>, it)

%isconnected()

ノードとポートに対して動作します。 コネクションを持つすべてのノード/ポートを検索します。

%ispromoted()

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

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

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

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

%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>のタグを持つすべてのノードと一致します。

%valuetype(<type_name>)

ポートに対して動作します。 値の型が<type_name>(Vector3Matrix3など)であるすべてのポートを検索します。

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

KineFX

概要

キャラクタ要素の準備

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

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

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

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

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

変形

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

H20以前

ペイン

別表