04 Operators
主要ノードを解説します。
Compile SOP
Compile Blockは、Block Begin Compile【A】とBlock End Compile【B】の2つが連動して動作します。それぞれ単独で使用することはほとんどありません。これらの内部がコンパイルされた状態となり、メモリの節約や、Multithreadなどを使って処理能力を向上させます。Block Begin Compileノードに接続され入力だけをCookingする状態で、Block内全てのノードを各々で処理しないため、無駄なキャッシュを省けます。また、Forと併用すれば並列処理も可能な点が、最も特筆すべきポイントになります。Unload Behaviour【1】では、中間データのアンロードに関する設定ができます。デフォルトでは、Alwaysになっており、キャッシュ状態を保存する設定となっています。Force Compile【2】では強制的に再コンパイルします。これはコンパイルエラーなどが起きた際、再度生成する際に重宝します。
Invoke Compile Blockは、コンパイルされているBlockを指定して【3】、 それを再度呼び出すことができるオペレータです。Invokeは「呼び出す」や「召喚する」という意味があります。Block Begin Compile にはInput Name【4】が追加され、Invoke Compile Block のInput Name【5】と一致させることで、指定したBlockと同等の処理を行えます。これにより、HDAを定義しなくても、Compile Blockの処理と同等の結果を得ることができます。
最後にCompileを使用する際に注意しなければならないのが、全てのオペレータが対応している訳ではないと言う点です。Network View Display Optionから、Non-Compilable SOPBadge【6】を表示すると、例えばCopy Stamp SOPのように対応していないオペレータが確認できます【7】。またその他にも、ローカル変数が使えないことや、ジオメトリの参照などにも制限があります。それらを踏まえて、正しい使用方法を身に着けましょう。