| On this page | 
このページでは、2つの値を加算したり、複数の結果を取得したり、ジオメトリからの情報を取得するといった数値演算用のAPEXグラフを作成して実行する方法について、段階を追って説明します。 このページの例では、以下の基本的な構造を見ていきます:
- 
        
        グラフロジックを作成する方法 
- 
        
        グラフを評価(実行)する方法 
2つの値を加算する ¶
この例では、2つの値を加算するグラフの作成方法を紹介しています。 データをグラフに入力し、そのグラフの出力を表示する基本的なワークフローについて説明します。
グラフロジックを作成する ¶
2つの値(aとb)を加算するロジックを作成します。
グラフを手動で作成する ¶
- 
        ジオメトリレベルで、ネットワークエディタ内に APEX Edit Graph SOPを配置します。 
- 
        APEX Edit Graph SOPを選択したまま、APEXネットワークビューを開きます。APEXネットワークビューでは、APEX Edit Graph SOPにグラフを直接書き込むことができます。 
- 
        APEXネットワークビュー内で、単純な数値演算を実行するグラフを作成します: - 
        
        グラフ入力ノードと出力ノードを追加します: - 
        
        入力パラメータを受け取るノードを追加します。TABを押してTabメニューを開き、 Input 選択します。すると __parms__グラフ入力ノードがグラフに追加されます。
- 
        
        Tabメニューで Output を選択し、グラフ出力ノードを追加します。 
 
- 
        
        
- 
        
        単純な加算演算を実行するAdd<Float>ノードを追加します。 
- 
        
        それらのノードを以下のように接続します。 addノードの b は可変長ポートなので、複数の接続が可能であり、 b<x> という名前のサブポートが作成されます:APEXネットワークビューでノードを接続 
 
- 
        
        
この時点では、グラフは、ジオメトリとして表現されたロジックの一部(ピース)でしかありません。 グラフの入力は定義されておらず、グラフは評価も計算もされていないため、何の出力も結果もありません。
APEX Scriptを使用してグラフを作成する ¶
- 
        ジオメトリレベルで、ネットワークエディタ内にAPEX Script SOPを配置します。 
- 
        APEX Script SOPの Snippet パラメータに以下のスニペットを追加します: a = BindInput(Float()) b = BindInput(Float()) result = a + b BindOutput(result) 
- 
        グラフとして表現されたAPEX Scriptスニペットを確認するために、APEXネットワークビューを開きます。 ペインの上部で、 New Tabアイコンをクリックして、 New Pane Tab Type ▸ Animation ▸ APEX Network View を選択します。 
- 
        APEX Script SOPの Visualizer セクションで、 Show を Component Script に設定します。 APEX Scriptはグラフ入力の後にNullノードを挿入して、入力タイプが明確に定義されるようにします。 値は、未変更のままNullノードを通過します:   グラフとして表現されたAPEX Scriptコード 
入力を定義する ¶
加算演算の入力のaとbを定義します。
数値入力は辞書形式で格納する必要があるため、基本的に辞書が入力データのコンテナとなります。
辞書にはキーと値のペアを格納し、この場合だとaとbがキーです。
Attribute Adjust Dictionary SOPを使用して、入力パラメータの辞書を作成します:
- 
        Attribute Adjust Dictionary SOPの Set Values セクションで、 Number of Entries の横にある をクリックし、2個のエントリを作成します。 
- 
        1つ目のエントリを以下のように設定します: - 
        
        Key : a
- 
        
        Type : Float (float値を加算します) 
- 
        
        Value : 値を aに割り当てます。
 
- 
        
        
- 
        2つ目のエントリを以下のように設定します: - 
        
        Key : b
- 
        
        Type : Float 
- 
        
        Value : 値を bに割り当てます。
 
- 
        
        
デフォルトでは、 Attribute Name がparms、 Attribute Class が Detail に設定されているため、parmsという名前のDetailアトリビュートが作成されます。
この新しいparmsアトリビュートは、Geometry Spreadsheetで確認することができます:
- 
        ペインの上部で、 New Tabアイコンをクリックして、 New Pane Tab Type ▸ Inspectors ▸ Geometry Spreadsheet を選択します。 
- 
        上部のツールバーから Detailを選択します。 
グラフロジックを評価する ¶
これでグラフロジックとグラフ入力が定義されました。 グラフを呼び出す(評価する)には、APEX Invoke Graph SOPを使用します。
- 
        追加したノードを接続します: - 
        
        APEX Invoke Graph SOPの1番目の入力はAPEXグラフを受け取ります。 ネットワークエディタ内で、(APEXグラフを含んでいる)APEX Script SOPの2番目の出力をAPEX Invoke Graph SOPの1番目の入力に接続します。 グラフロジックを手動で作成している場合、APEX Script SOPをAPEX Edit Graph SOPに置き換えてください。 
- 
        
        APEX Invoke Graph SOPの2番目の入力は、入力として使用したいデータを受け取ります。 辞書形式の数値でも、通常のジオメトリでも構いません。 Attribute Adjust Dictionary SOPをAPEX Invoke Graph SOPの2番目の入力に接続します。 
   グラフを使用して2つの数値を加算するネットワーク 
- 
        
        
- 
        APEX Invoke Graph SOPで、入力を指定します: - 
        
        Input Bindings の横にある をクリックして、入力を追加します。 
- 
        
        デフォルトで、 Dictionary To Bind はオンで、 parmsに設定されています。 Attribute Adjust Dictionary SOPを使用してparmsという名前の入力を辞書として定義しているので、これは既に望ましい設定になっています。
 
- 
        
        
- 
        APEX Invoke Graph SOPで、取得する出力を指定します: ここでは(ジオメトリではなく)数値を取得したいので、 Output Dictionary Bindings の横にある をクリックして、取得したい出力を指定します。 出力は辞書形式で格納されます。 - 
        
        Apex Outputs Group は、グラフ内の出力ノードの名前です。ここでは、 outputです。
- 
        
        Output Attrib には、出力される辞書の名前( output_parms)を設定します。
 この新しい output_parms辞書に計算結果が格納されます。 Geometry Spreadsheetの上部のツールバーからDetailを選択することで、これを確認することができます。 output_parms辞書では、result(グラフのoutputノードのポート名)キーの値にa+bが設定されています。APEX Invoke Graph SOPはAPEXグラフのロジックを評価し、その結果を返します。 Attribute Adjust Dictionary SOPで aやbの値を変更すると、そのAPEX Invoke Graph SOPで計算された出力の辞書が新しい合計値に更新されます。
- 
        
        
2つの結果を取得する ¶
これから、前の例のグラフロジックを使用し、元の結果に対して別の演算を実行して2つの結果を取得したいと思います。
グラフロジックを作成する ¶
グラフを手動で作成する ¶
- 
        APEXネットワークビューで、以下のグラフを作成します。 divideノードとoutputノードのサブポート名は変更しています。divideノードの b ポートは可変長入力です:  2つの結果を出力するグラフロジック 
- 
        divideノードで値を設定します:- 
        
        divideノードを選択してPを押して、そのノードパラメータウィンドウを表示します。
- 
        
        divideは a を b で除算します。ノードパラメータウィンドウで、 a の値を1.0などに設定します。denominatorは前の加算演算からの値です。
 
- 
        
        
APEX Scriptを使用してグラフを作成する ¶
- 
        以下のスニペットを、APEX Script SOPの Snippet パラメータに追加します: a = BindInput(Float()) b = BindInput(Float()) add_result = a + b add_divide_result = 1.0/add_result # 複数の結果を出力します BindOutput(add_result, add_divide_result) 
- 
        APEXネットワークビューで、APEX Scriptスニペットをグラフとして表示します(赤のノードが新たに追加したノードです)。これで、 outputノードの2つのポートが接続されました:  2つの結果を出力するグラフロジック 
グラフロジックを評価する ¶
グラフ入力は変わっていないため、Attribute Adjust Dictionary SOPでは何も変更する必要はありません。
グラフ出力に関しては、APEX Invoke Graph SOPは前と同じようにグラフのoutputノードから取得します。
違いは、1つの結果( add_result の2つの入力の合計値)だけでなく、2つ目の結果( add_divide_result の除算結果)も取得することです。
SOPで、両方の結果が1つの辞書に格納されます。
Geometry Spreadsheetで、グラフのoutputノードから取得された値を確認します:
- 
        ネットワークエディタでAPEX Invoke Graph SOPを選択します。 
- 
        Geometry Spreadsheetで、上部のツールバーから Detailを選択します。 
- 
        outputノードから、 add_result と add_divide_result の2つの値が取得されています。
Note
出力される辞書には、APEX Invoke Graph SOPの Apex Outputs Group パラメータで指定したグラフ出力ノードの すべて の結果が含まれます。
部分評価 ¶
この例では、 部分評価 という考え方を紹介します。 この考え方は、要求された出力のみを取得します。 そしてその出力のみを計算して、残りのグラフロジックは無視します。
グラフロジックを作成する ¶
前の例の加算と除算のグラフから開始し、もう1つ出力ノードを追加し、元の出力ノードと異なる名前を付けます:
- 
        以下のスニペットを、APEX Script SOPの Snippet パラメータに追加します: a = BindInput(Float()) b = BindInput(Float()) add_result = a + b add_divide_result = 1.0/add_result multiply_result = 2.0 * add_divide_result BindOutput(add_result, add_divide_result, __name='output') BindOutput(multiply_result, __name='output2') __nameは、ノードに名前を付けるのに使用する特殊関数の引数です。
- 
        APEXネットワークビューで、APEX Scriptスニペットをグラフとして表示します(赤のノードが新たに追加したノードです):   グラフロジックの部分評価 
グラフロジックを評価する ¶
取得された結果を確認します:
- 
        ネットワークエディタでAPEX Invoke Graph SOPを選択します。 
- 
        Geometry Spreadsheetで、上部のツールバーから Detailを選択します。 
グラフ内に別の出力ノードがあっても、outputノードからの値のみが取得されます。
ここでは部分評価が起きています。グラフロジックを介してoutputノードへのパスのみが実行されます。output2の値を計算するロジックは無視されます。
新しい出力ノードのoutput2からも値を取得するには:
- 
        APEX Invoke Graph SOPで、 Output Dictionary Bindings の横にある をクリックし、取得する出力ノードをもう1つ追加します。 
- 
        新しい Output Dictionary Bindings エントリで: - 
        
        Apex Outputs Group を output2に設定します。ドロップダウンボックスからoutput2を選択することができます。
- 
        
        Output Attrib には、出力される辞書の名前( output2_parms)を設定します。
 
- 
        
        
- 
        取得された値を確認します: - 
        ネットワークエディタでAPEX Invoke Graph SOPを選択します。 
- 
        Geometry Spreadsheetで、上部のツールバーから Detailを選択します。 
 2個の出力ノードの outputとoutput2からの値が計算され、取得され、それらの結果がoutput_parmsとoutput2_parmsという2つの辞書に格納されています。
- 
        
数値演算に基づいてジオメトリを修正する ¶
この例では、加算演算の結果に基づいてボックスジオメトリのサイズを修正する方法を説明します。
グラフロジックを作成する ¶
- 
        APEX Script SOPの Snippet パラメータに以下のスニペットを追加します: a = BindInput(Float()) b = BindInput(Float()) result = a + b # add_resultはボックスのサイズに影響を与えます geo = apex.sop.box(scale=result) BindOutput(result, geo) 
- 
        APEXネットワークビューで、APEX Scriptスニペットをグラフとして表示します。加算演算の合計値はボックスのサイズに影響します:   ボックスジオメトリのサイズに影響する数値演算 
グラフロジックを評価する ¶
今回は、数値ではなくジオメトリを取得します。ボックスを表示するには、outputノードでボックスジオメトリを取得する必要があります:
- 
        APEX Invoke Graph SOPで、 Bind Output Geometry をオンにし、その値を output:geo(<name_of_output_node>:<geometry_on_output_node>)に設定します。
- 
        APEX Invoke Graph SOPのDisplayフラグをオンにし、ビューポートにボックスを表示します。 
- 
        Attribute Adjust Dictionary SOPを選択し、パラメータエディタにグラフ入力パラメータの aとbを表示します。ただし、APEX Invoke Graph SOPのDisplayフラグはオンのままにします。Attribute Adjust Dictionary SOPでaとbの値を調整すると、ビューポートでボックスのサイズが変わります。  入力パラメータを調整し、ジオメトリを表示するネットワーク 
ジオメトリから情報を取得して使用する ¶
ジオメトリから情報を取得し、その情報を使用して追加で演算を実行することができます。 この例では、ボックスのコーナーに球を配置します。入力パラメータを変更すると、ボックスと球体の両方のサイズが変化します。
グラフロジックを作成する ¶
前の例からボックスジオメトリのグラフを追加します。
- 
        以下のスニペットを、APEX Script SOPの Snippet パラメータに追加します: a = BindInput(Float()) b = BindInput(Float()) # add_resultはボックスのサイズに影響を与えます add_result = a + b box_geo = apex.sop.box(scale=add_result) # box_pointをボックス上のポイント0(コーナーの1つ)の # 位置(アトリビュート'P')に設定します box_point = box_geo.pointAttribValue(0, 'P', valuetype=Vector3) # multiply_resultは球のサイズに影響を与えます multiply_result = 0.5 * add_result # 球のトランスフォーム(t)はbox_pointに設定されているため # 球の中心はbox_pointになります sphere_geo = apex.sop.sphere(t=box_point, scale=multiply_result) # ボックスと球のジオメトリを結合します box_sphere_geo = apex.geo.mergePacked(box_geo, sphere_geo) BindOutput(add_result, box_geo, box_point, box_sphere_geo) 
- 
        APEXネットワークビューで、APEX Scriptスニペットをグラフとして表示します(赤のノードが新たに追加したノードです)。球はボックスジオメトリ内の特定のコーナーに配置され、球とボックスは1ジオメトリとして結合さ、出力されます:   ボックスジオメトリから情報を取得し、追加の演算を実行 
グラフロジックを評価する ¶
ボックスと球を一緒に表示するには、outputノードからボックスと球が結合されたジオメトリを取得する必要があります:
- 
        APEX Invoke Graph SOPで、 Bind Output Geometry をオンにし、その値を output:box_sphere_geo(<name_of_output_node>:<merged_geometry_on_output_node>)に設定します。
- 
        APEX Invoke Graph SOPのDisplayフラグをオンにし、ビューポートにボックスと球を表示します。 
- 
        Attribute Adjust Dictionary SOPを選択し、パラメータエディタにグラフ入力パラメータの aとbを表示します。 ただし、APEX Invoke Graph SOPのDisplayフラグはオンのままにします。 Attribute Adjust Dictionary SOPでaとbの値を調整すると、ビューポートでボックスと球のサイズが変わります。ボックスのポイント上に留まる球 
How-to ¶
| To... | Do this | 
|---|---|
| グラフから数値を取得する | APEX Invoke Graph SOPで、取得する値を指定します: 
 上部のツールバーから 2つの値を加算する例を参照してください。 | 
| グラフからジオメトリを表示する | 
 ジオメトリを修正する例を参照してください。 |