Houdini 20.5 キャラクタ KineFX

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

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

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

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

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.writeToGeo()
    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 Edit 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.writeToGeo()
      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以前

ペイン

別表