こんにちは、篠島です。この間はコンパイルブロックによって複数のノードを一つのノードのようにできると説明しました。Pythonでも同様に一つのPythonノードに複数の処理をまとめて書いて一つのノードの様に振る舞うことが出来ます。
SOPの動詞化
SOPノードを普通に追加すると、それぞれのノードは次の3つの事をします。
- メモリの割り当てと開放、インプットのキャッシュ、データを加工後アウトプットをキャッシュ。
- SOPの実際の処理
- パラメーターの評価(UIの部分)
この2番目のSOPの処理の部分だけを抜き出して動詞として使う(要はPyhonの中でメソッドとして呼び出せる)ことができるようになりました。
とりあえずPythonコードを見てみましょう。H16のヘルプから抜き出して、一番上の行だけ変更したものです。
コピペしたい人用にテキストでも載せておきます。
追記 : なぜかブログ上ではシングルクォーテーションが ‘ の記号に変わってしまいます・・・。エラーが出る人は記号の変化に気をつけてください。
node = hou.pwd() # Get a hou.SopVerb that knows how to subdivide. # Pass in a dictionary mapping parameter names to values. # SopVerb.execute() takes a target hou.Geometry to write the results into, # Now do an isooffset node.geometry().clear() |
Python内部で Subdivide と IsoOffset の処理を書いています。これはSOPを別々に作って繋げるのと全く同じです。Python SOPの中でそれぞれのSOPをメソッドから呼び出すことにより、Python SOPの中に処理がまとめられているのが分かるかと思います。
Pythonの詳しい説明は次回に・・・。