Houdini 21.0 キャラクタ KineFX

グラフ構築向けのAPEX Scriptの基本

On this page

概要

APEX Scriptは、APEXグラフを構築するためのコードインターフェースです。 Pythonライクな構文を使用して、コードロジックを表現したグラフを生成することができます。 APEX Scriptスニペットは、APEX Script SOP内で記述することができます。 そのAPEX Script SOPは入力を受け取り、コードスニペットを実行し、その結果を出力します。 APEX Autorig Component SOPにも、APEX Scriptスニペットを記述するためのインターフェースが用意されています。

APEX Scriptスニペットは、APEXグラフとして直接的に表現されます。 APEX Scriptコードを入力すると、そのグラフ表現がAPEXネットワークビューで生成されるのを確認することができます:

APEX Scriptは、新しいグラフを構築したり、既存のグラフを修正したり、グラフデータを取得するためのツールとして使用することができます。 詳細は、以下のページを参照してください:

  • グラフの扱い方では、APEX Scriptを使用してグラフ要素にアクセスおよび操作する方法、グラフロジックを別のグラフに直接追加する方法、グラフ内から他のグラフを呼び出す方法を説明しています。

  • コードスニペット内ではAPEX Scriptの関数を独自に作成したり、ビルトインのAPEX関数を使用することができます。

  • APEX Scriptを使用することで、グラフ用のインターフェースを作成してカスタマイズすることができます。

  • APEX Script言語リファレンスでは、APEX Scriptの構文および言語要素(用意されている型、演算、ステートメントなど)を説明しています。

APEX Scriptをグラフとして表示する

APEX Scriptでは、BindInput()はグラフの入力を定義する特殊関数です。 BindInput()関数は、グラフ入力を表現したポートを持つparmsノードを作成します。 BindOutput()関数は、グラフ出力を定義し、グラフから出力される値を表現したポートを持つoutputノードを作成します。

この例では、入力として値を受け取り、同じ値を出力するAPEX Scriptスニペットを記述します:

  1. 以下のスニペットを、APEX Script SOPSnippet パラメータに配置します:

    a = BindInput(3.5)
    
    BindOutput(a)
    
  2. グラフとして表現されたAPEX Scriptスニペットを確認するために、APEXネットワークビューを開きます。 ペインの上部で New Tabアイコンをクリックして、 New Pane Tab Type ▸ Animation ▸ APEX Network View を選択します。

  3. APEX Script SOPの Visualizer セクションで、 ShowComponent Script に設定します。

    グラフとして表現されたAPEX Scriptコード

グラフ入力を表示する

グラフ入力値を表示するには:

  1. Geometry Spreadsheetで、ノード名の横にあるドロップダウンメニューから Apex Script Graph を選択します。

    または

    APEX Script SOPの2番目の出力(APEX Script Graph出力)をNull SOPに接続し、Null SOPを選択します。

  2. Geometry Spreadsheetで、上部のツールバーの Detailをクリックします。入力パラメータは、グラフのparms Detailアトリビュートに格納されています。

APEX Script SOPで Reload Setup Parmsボタンをクリックすると、調整可能なパラメータとして、パラメータエディタにグラフ入力が表示されます。

グラフ出力を表示する

グラフ出力値を表示するには:

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

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

    • Output Attribparmsに設定されています。これは、辞書形式で格納される出力の名前です。任意の名前に設定することができます。

  2. Geometry Spreadsheetで、ノード名の横にあるドロップダウンメニューから Invoked を選択します。

  3. 上部のツールバーの Detailをクリックします。グラフ出力は、 Output Attrib で指定した辞書に格納されます。

新規グラフを構築する

この例では、APEX Scriptを使用して単一のTransformObjectノードを含む新規グラフを作成します:

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

    # グラフを初期化します
    graph = ApexGraphHandle()
    
    # 新しいグラフにTransformObjectノードを追加します
    graph.addNode('test_a', 'TransformObject')
    
    # グラフをジオメトリとして書き出します
    geo = graph.saveToGeometry()
    BindOutput(geo)
    
  2. APEXネットワークビューでAPEX Scriptスニペットのグラフ表現を確認します。APEX Script SOPの Visualizer セクションで、 ShowComponent Script に設定します:

    グラフとして表現されたAPEX Script
  3. ジオメトリとしてグラフを出力するには、 Bind Output Geometry<output_node>:<output_port>に設定します。この場合は、output:geoです。

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

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

      または

    • APEX Script SOPの1番目の出力をNull SOPに接続し、Null SOPを選択します。

      APEX Scriptによって作成されたグラフ

既存のグラフを変更する

この例では、APEX Scriptを使用して既存のグラフにTransformObjectノードを追加します:

  1. APEX Graph SOPで、入力ノードと出力ノードのみを含むグラフを作成します:

    元のグラフ
  2. グラフを入力としてAPEX Script SOPに接続します:

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

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

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

      ヘッダ

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

      フッタ

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

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

  6. APEX Script SOPは入力グラフを受け取り、それを変更せずに出力するようになりました。 APEX Script SOPによって出力されるグラフを確認するには:

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

      または

    • APEX Script SOPの1番目の出力をNull SOPに接続し、Null SOPを選択します。

  7. TransformObjectノードを入力グラフに追加するには、以下のコードを Snippet パラメータに配置します:

    graph.addNode('test_a', 'TransformObject')
    
    更新されたグラフ

How-to

To...Do this

コードの変更を反映させる

コードスニペットを変更した後、⌃ Ctrl + Enterを押します。

APEX Scriptの行番号に関連付けられたグラフノードを確認する

  1. ShowComponent Script に設定します。

  2. Inspect Line パラメータをオンにします。APEXネットワークビューで、APEX Scriptの行番号に関連付けられたグラフノードが赤で表示されます。

グラフにノードをレイアウトする

APEX Scriptスニペットにgraph.layout()を追加します。

コードブロックをコメント化またはコメント解除する

コードブロックを選択し、⌃ Ctrl + /を押します。

コードスニペットのフォントサイズを変更する

Snippet パラメータ内をクリックし、⌃ Ctrl + +または⌃ Ctrl + -を押します。

グラフをAPEX Scriptコードに変換する

グラフをAPEX Scriptコードに変換するを参照してください。

KineFX

概要

キャラクタ要素の準備

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

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

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

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

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

変形

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

H20以前

ペイン

別表