Python
HOUDINI

hou.session とかいう、地味便利機能

More than 1 year has passed since last update.

概要

HoudiniのメインメニューのWindow > Python Source Editorで、サンプルコードをさくっと書いて実行できるという事を知っている人は多いと思う。で、そのWindowのところをよく見ると、 Source File のところで hou.session module というのが記載されている。これ何?なんか意味あんの?ではここの意義ってなんだろう??

Screenshot from 2017-11-19 01-24-51.png

とりあえず基本の使い方

Python Source Editorは、Python Shell(Python Panel)などのインラインコード入力と違いコードの維持が複数行にわたって可能なため、以下の様にテストとして利用するケースがある。

Screenshot from 2017-11-19 02-02-54.png

hou.session とは?

とりあえず、これに関してはドキュメントがあるので、そのリンクを貼っておく。

hou.session module

まぁ、つまり書いている事をとりあえず、やってみるとこういうこと。

とりあえず、これだけ入力してApplyしておく。

import hou    

def checkPrimCount(node):
    geo = node.geometry()
    print len(geo.prims())

そんでもって、Python Shell(Python Panel)にて実行してみる。

っと入力してると…,

Screenshot from 2017-11-19 02-05-27.png

予測変換に出てくる!!

で、実行すると、

Screenshot from 2017-11-19 02-08-17.png

実行できる!

ということで、つまるところ、デフォルトで Python Source Editorで実行されたものはhou.sessionのオブジェクトアトリビュートとして格納される。そして、このhou.sessionはhipシーン内のどこでも利用出来るため、Python Source Editorの中で実行したものが実行出来るようになる!

とまぁ、これはPython使ってると、よくみる使い方だったりはする。hou.sessionは、Houdiniがこういった用途で様々な場所で使えるように用意されたスペースのようものと捉えればよいかと。

なので、ボタンに使って実行してみたりと、関数化でコードを書きつつ実行テストみたいなのも出来たりする。

Screenshot from 2017-11-19 02-12-22_edit.png

hou.session に色々突っ込む

hou.sessionに対して関数が適応されたのは認識した。

ということで、この挙動から気づく人も要ると思うが、このhou.sessionオブジェクトにアトリビュートをどんどん追加していける。

hou.session.defaultValue = 100

とか、ただのIntegerのやつを突っ込んで、以下のように入力すると、代入した値が返ってくる。

hou.session.defaultValue

まとめ

いろいろツール構えの実行テストとかでとりあえず関数作ってみたりとか、あと、いろいろ値を突っ込める様に用意されているクラスがこのhou.sessionだったりする。さらに、それらはhipシーン内のどこでも利用が出来る。
まぁ、実にPythonらしいというかなんというか、こういう事もできちゃうのだけれど、オブジェクト指向を認識してない人だと、ちょっと混乱してしまうかもしれない。これを機会に、Pythonの中身をじっくり勉強してみるのも良いのでは??

ついでにオススメ書籍

パーフェクトPython - どちらかというとPythonプログラミング経験者向けの書籍だけれども、ざっくりと挙動の事が書かれてたりして読みやすい。