概要
HoudiniのメインメニューのWindow > Python Source Editorで、サンプルコードをさくっと書いて実行できるという事を知っている人は多いと思う。で、そのWindowのところをよく見ると、 Source File のところで hou.session module というのが記載されている。これ何?なんか意味あんの?ではここの意義ってなんだろう??
とりあえず基本の使い方
Python Source Editorは、Python Shell(Python Panel)などのインラインコード入力と違いコードの維持が複数行にわたって可能なため、以下の様にテストとして利用するケースがある。
hou.session とは?
とりあえず、これに関してはドキュメントがあるので、そのリンクを貼っておく。
まぁ、つまり書いている事をとりあえず、やってみるとこういうこと。
とりあえず、これだけ入力してApplyしておく。
import hou
def checkPrimCount(node):
geo = node.geometry()
print len(geo.prims())
そんでもって、Python Shell(Python Panel)にて実行してみる。
っと入力してると…,
予測変換に出てくる!!
で、実行すると、
実行できる!
ということで、つまるところ、デフォルトで Python Source Editorで実行されたものはhou.sessionのオブジェクトアトリビュートとして格納される。そして、このhou.sessionはhipシーン内のどこでも利用出来るため、Python Source Editorの中で実行したものが実行出来るようになる!
とまぁ、これはPython使ってると、よくみる使い方だったりはする。hou.sessionは、Houdiniがこういった用途で様々な場所で使えるように用意されたスペースのようものと捉えればよいかと。
なので、ボタンに使って実行してみたりと、関数化でコードを書きつつ実行テストみたいなのも出来たりする。
hou.session に色々突っ込む
hou.sessionに対して関数が適応されたのは認識した。
ということで、この挙動から気づく人も要ると思うが、このhou.sessionオブジェクトにアトリビュートをどんどん追加していける。
hou.session.defaultValue = 100
とか、ただのIntegerのやつを突っ込んで、以下のように入力すると、代入した値が返ってくる。
hou.session.defaultValue
まとめ
いろいろツール構えの実行テストとかでとりあえず関数作ってみたりとか、あと、いろいろ値を突っ込める様に用意されているクラスがこのhou.sessionだったりする。さらに、それらはhipシーン内のどこでも利用が出来る。
まぁ、実にPythonらしいというかなんというか、こういう事もできちゃうのだけれど、オブジェクト指向を認識してない人だと、ちょっと混乱してしまうかもしれない。これを機会に、Pythonの中身をじっくり勉強してみるのも良いのでは??
ついでにオススメ書籍
パーフェクトPython - どちらかというとPythonプログラミング経験者向けの書籍だけれども、ざっくりと挙動の事が書かれてたりして読みやすい。