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

このページでは、グラフノードおよびポートで利用可能なメタデータを載せています。

タグ

タグは、グラフノードおよびポートのマークやフィルタリングに使用される識別子で、要素名とは関係なく、ノードおよびポートのグループを識別することができます。 リグ上およびグラフ上の要素名はよく変わるため、これが役に立ちます。

タグは、グラフノード上のtagsと呼ばれる文字列配列アトリビュートに格納されます。 graph::FindNodesgraph::FindPortsなどのグラフノードでAPEXパスパターン関数%tag()を使用することで、特定のタグを持つノードやポートを検索することができます。 また、事前構築済みリグコンポーネント%tag()関数を使用して、キャラクタリグ内のノードやポートにラベルを付けたり検索することもできます。

グラフノード上にタグを作成する方法がいくつかあります:

  • APEXネットワークビュー内でタグの作成と編集を行なうことができます。

  • (APEXネットワークビュー内で、または、APEX Scriptを使用して)“スクリプト”のように機能するグラフを構築することで、タグ付きの別のグラフを作成することができます。

  • 事前構築済みリグコンポーネントで、キャラクタリグにタグを追加することができます。 例えば、fktransformコンポーネントスケルトンジョイント上に作成済みのタグを取得し、それらのタグをリグ内の呼応するノード上に配置することができます。 また、一部のリグコンポーネントは、作成するノード上にもタグを追加します。

APEXネットワークビュー内でタグを作成および編集する

APEXネットワークビュー内でタグを作成および編集するには:

  1. ノード(s)をクリックし、 Edit Tags を選択します。

  2. Edit Tagsウィンドウで:

    • タグを作成するには、をクリックしてタグ名を入力します。

    • タグを編集するには、タグをダブルクリックしてそのタグを更新します。

    • タグを削除するには、そのタグを選択してをクリックします。

  3. Accept をクリックします。ノードの上部にタグが表示されます:

    Note

    ポートタグはグラフノード上に<port>:<tag>形式で格納されます。

APEX Scriptでのタグの扱い方

タグを作成する

この例では、APEX Scriptを使用してノードタグおよびポートタグ付きのグラフを作成します:

  1. APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

    # グラフを初期化します
    graph = ApexGraphHandle()
    
    # タグを作成します
    tags1: StringArray = ['abc', 'both']
    tags2: StringArray = ['t:abc', 'r:xyz', 'both']
    
    # 新しいグラフにTransformObjectノードを追加します
    graph.addNode('test1', 'TransformObject', tags=tags1)
    graph.addNode('test2', 'TransformObject', tags=tags2)
    
    # グラフをジオメトリとして書き出します
    geo = graph.writeToGeo()
    BindOutput(geo)
    
  2. APEXネットワークビューでこのAPEX Scriptスニペットのグラフ表現を確認するには、 Visualizer セクションで ShowComponent Script に設定します(ノードのレイアウトと色が分かりやすく変更されています):

  3. このAPEX Scriptスニペットによって作成された新しいグラフを確認するには:

    • Bind Output Geometry<output_node>:<output_port>に設定します(ここではoutput:geo)。

    • Visualizer セクションで、 ShowOutput 1 に設定します。

  4. Geometry Spreadsheetでタグを確認するには:

    • 新しいグラフはAPEX Script SOPの1番目の出力で利用可能です:

    • new_graphノードを選択します。

    • Geometry Spreadsheetで、上部のツールバーの Pointsを選択します:

タグに基づいてノードおよびポートを検索する

この例では、graph::FindNodesおよびgraph::FindPortsでAPEXパスパターンのタグ関数を使用して、特定のタグ付きのノードおよびポートを検索します。

Tip

graph::FindNodesとgraph::FindPortsは、matchNodes()matchPorts()に対して名前マッピングされています。

  1. 前の例で作成したグラフを使用し、それを2つ目のAPEX Script SOPに入力します:

  2. find_tags APEX Script SOPで、定義済みのヘッダを使用して、入力グラフを受け取って修正するAPEX Scriptコマンドを自動的に追加します:

    • Header パラメータをオンにします。

    • Header セクションで、 TemplateGraph に設定します。すると、以下のコードがAPEX Scriptスニペットの先頭と末尾に追加されます:

      ヘッダ

      geo: Geometry = BindInput()
      graph = geo.loadFromGeo()
      

      フッタ

      geo = graph.writeToGeo()
      BindOutput(geo)
      
  3. find_tagsノードの入力を指定します - Invocation セクションの Input1 Bindings で、 Bind To Geometry Parameter をオンにして、そのパラメータをgeoに設定します。geoは、APEX Script SOPに入力されるグラフジオメトリで、前の手順のヘッダで指定されています。

  4. 入力グラフでタグを検索するには、以下のコードを Snippet パラメータに追加します:

    # 特定のタグを持つノードとポートを検索します
    abc_node_tag = graph.FindNodes('%tag(abc)')
    both_node_tag = graph.FindNodes('%tag(both)')
    xyz_port_tag = graph.FindPorts('%tag(xyz)')
    
    # 見つかったノードおよびポート名を出力のために配列に追加します
    both_nodes = StringArray()
    for n in both_node_tag:
        n_name = n.data()
        both_nodes.append(n_name)
    
    abc_nodes = StringArray()
    for n in abc_node_tag:
        n_name = n.data()
        abc_nodes.append(n_name)
    
    xyz_ports = StringArray()
    for p in xyz_port_tag:
        p_name = p.data()
        xyz_ports.append(p_name)
    
    # ノード配列およびポート配列を出力します
    BindOutput(abc_nodes, both_nodes, xyz_ports)
    

    Note

    ポートタグがグラフノード上にr:xyzとして格納されていても、graph.FindPorts()の使用時は、タグ関数内には(ポート名でなく)タグ名のみを指定します。 例えば、graph.FindPorts('%tag(r:xyz)') ではなくgraph.FindPorts('%tag(xyz)')を使用します。

  5. デフォルトで、APEX Script SOPの Invocation セクションにある Output Dictionary Bindings の最初のエントリは、以下のように設定されています:

    • Apex Outputs Groupoutputに設定されています。これは、グラフの出力ノードの名前です。

    • Output Attribparmsに設定されています。これは、ノード配列およびポート配列を格納する出力辞書の名前です。

  6. 見つかったノードとポートをGeometry Spreadsheetで確認するには:

    • find_tagsノードを選択します。

    • Geometry Spreadsheetで、上部のツールバーの Detailを選択します。

    • parmsアトリビュートの Detail 列のエントリをクリックし、 Inspect を選択します:

      "abc_nodes":["test1"]
      
      "both_nodes":["test1","test2"]
      
      "xyz_ports":["test2"]
      

タグを更新する

この例では、graph::UpdateNodegraph::UpdateNodeTagsを使用してグラフのタグを更新します:

  1. 前の例で作成したグラフを使用し、それを2つ目のAPEX Script SOPに入力します:

  2. update_tags APEX Script SOPで、定義済みのヘッダを使用して、入力グラフを受け取って変更するAPEX Scriptコマンドを自動的に追加します:

    • Header パラメータをオンにします。

    • Header セクションで、 TemplateGraph に設定します。

  3. update_tagsノードの入力を指定します - Invocation セクションの Input1 Bindings で、 Bind To Geometry Parameter をオンにして、そのパラメータをgeoに設定します。

  4. 更新されたグラフを出力するには、 Bind Output Geometryoutput:geoに設定します。

  5. update_tagsノードは入力グラフを受け取り、それを変更せずに出力するようになりました。 グラフ出力を確認するには、 Visualizer セクションで ShowOutput 1 に設定します。

  6. 入力グラフノードでタグを更新するには、以下のコードを Snippet パラメータに追加します:

    new_tags1 = ['new_tag']
    new_tags2 = ['def', 'xform:xyz']
    
    node1 = graph.test1
    node2 = graph.test2
    
    # 既存のタグに追加します
    graph.UpdateNodeTags(nodeid=node1, tags=new_tags1)
    
    # 既存のタグを置き換えます
    graph.UpdateNode(nodeid=node2, tags=new_tags2)
    
  7. APEXネットワークビューでAPEX Scriptスニペットのグラフ表現を確認します - Visualizer セクションで、 ShowComponent Script に設定します(ノードのレイアウトと色が分かりやすく変更されています):

  8. APEX Scriptスニペットで作成した新しいグラフを確認するには、 Visualizer セクションで ShowOutput 1 に設定します:

    元のタグ(左)と更新したタグ(右)

プロパティ

グラフノード上のプロパティは、グラフ内の後の時点で使用できるカスタム情報を格納します。 それらは、propertiesと呼ばれる辞書アトリビュートに格納されます。 properties辞書にデータを追加したり変更するには、graph::UpdateNodeおよびgraph::UpdateNodePropertiesを使用します。 また、graph::FindNodesなどのグラフノードでAPEXパスパターン関数%properties()を使用することで、プロパティをフィルタリングすることもできます。

Note

プロパティはノードにのみ使用されます。 ポートプロパティはありません。

グラフノードのプロパティを表示するには:

  1. ネットワークビューで、グラフを含むノードを選択します。

  2. Geometry Spreadsheetで、上部のツールバーの Pointsを選択します:

  3. properties 列の下のエントリをクリックし、 Inspect を選択してproperties辞書を表示します。

ユーザが追加したカスタム情報に加え、properties辞書には、コントロールシェイプ、リグパラメータ制限、リグ/スケルトンマッピングに関する情報が格納された事前定義済みエントリも含まれています。 ユーザはこの情報を使用したり修正することができます。事前定義済みエントリは以下のとおりです:

{
    control: {
        color: Vector3
        shapeoffset: Matrix4
        shapeoverride: String
        visibility: Int
    }
    max:<parameter_name>: Vector3
    min:<parameter_name>: Vector3
    max_lock:<parameter_name>: Vector3
    min_lock:<parameter_name>: Vector3
    mapping:<skeleton or rig>: String
}    

mappingプロパティはAPEX Map Character SOPを使用して設定することができ、 他のプロパティはAPEX Configure Controls SOPを使用して設定することができます。

プロパティ

タイプ

説明

control

dict

ビューポート内のコントロールの見た目に関する情報を含んだ辞書。

color

Vector3

コントロールのカラー。

shapeoffset

Matrix4

コントロールの位置。

shapeoverride

string

コントロールの形状。

visibility

int

Animateステートでコントロールが見えるかどうか。

max, min

Vector3

リグトランスフォームパラメータのソフトリミット。 Vector3値は、パラメータのx、y、z値に対する制限値です。 ユーザは、制限を強制するかどうか、またはAnimateステートで制限を視覚的なインジケータとして使用するかどうかを制御することができます。 詳細は、トランスフォーム制限を参照してください。

maxプロパティおよびminプロパティの形式:

[max|min]:<parameter_name>: [<x_value>, <y_value>, <z_value>]

max_lock, min_lock

Vector3

リグトランスフォームパラメータのハードリミット。Vector3値は、パラメータのx、y、z値に対する制限値です。 これは、Animateステートでオフにすることができません。 詳細は、トランスフォーム制限を参照してください。

max_lockプロパティおよびmin_lockプロパティの形式:

[max_lock|min_lock]:<parameter_name>: [<x_value>, <y_value>, <z_value>]

mapping

string

リグ/スケルトンからTransformObjectノードへのマッピングを指定します。 これは、スケルトンジョイントをコントロールにマッピングしたり、1つのリグが別のリグを駆動する場合には、2つのリグ間でコントロールをマッピングするのに便利です。 このマッピング情報は、TransformObjectノードに格納されています。

mappingプロパティの形式:

mapping:<skeleton|rig>: <element name or APEX path pattern>

properties辞書内の事前定義済みエントリの例:

{
    "control":{
        "color":[0.5,0,1],
        "shapeoffset":[0.3,0,0,0,0,0.3,0,0,0,0,0.3,0,0,0,0,1],
        "shapeoverride":"torus",
        "visibility":1
    },
    "max:t":[5, 5, 5],
    "min:t":[-5, -5, -5],
    "max_lock:t":[10, 10, 10]
    "min_lock:t":[-10, -10, -10],
    "mapping:Base.skel":"lowerarm_l"
}

アトリビュート

APEXグラフジオメトリは以下のアトリビュートを持っています:

名前

クラス

タイプ

説明

name

point

string

ノードの名前。

callback

point

string

ノードのコールバック名(ノードタイプ)。

Cd

point

float

ノードのカラー。

portname

vertex

string

ポートの名前。

portalias

vertex

string

サブポート名または名前が変更されたポート。

portindex

vertex

int

ポートのインデックス番号。

parms

point

dict

ポートのデフォルト値の辞書。

tags

point

string[]

グラフノードの識別子として使用される文字列の配列。 タグは、graph::FindNodesなどのグラフノードでAPEXパスパターン関数%tag()を使用して一致させることができます。

properties

point

dict

ノードの追加メタデータの辞書。 プロパティは、graph::FindNodesなどのグラフノードでAPEXパスパターン関数の%properties()を使用して一致させることができます。

コールバック

一部のグラフエレメントには特別なコールバック名があります:

ノード

コールバック名

グラフ入力ノード

__parms__

グラフ出力ノード

__output__

サブネット

__subnet__

ステッキーノート

__stickynote__

KineFX

概要

キャラクタ要素の準備

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

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

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

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

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

変形

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

H20以前

ペイン

別表