そのまんまなんですが。
最近Houdini使ってて、Expressionなどもある程度ちょこちょこ使いつつ作業をしていたのですが、どこまでがノードでどこまでがExpressionでなのか、というところが徐々に見えてきました。
となったところで丁度良く大量のノードを扱いたくなりまして。
ざっくり言うと、アニメーション済みのオブジェクトをMayaに持っていくために、1つのオブジェクトをグループごとに切り分けて大量のオブジェクトを作成しないといけなかったのです。
それこそ数百という数だったし、グループ名にもルールはあるものの手で直せる量ではなかったため、これはスクリプトの出番だな、と思ってえいやっとPython書きました。
それに関するメモなど。
まずHoudiniの場合、オペレータ(つまりノードのこと)を操作するにはHScriptかPython(HOM)を使用する必要があります。
HScriptは古くからのHoudini言語で、UNIXのShellと非常に似た作りになっています。
Pythonはv9.0からの新機能で、主にhouというモジュールをインポートして使用します。
これらと似たようなものにExpressionがありますが、これは基本的にはHScriptのサブセットだと思って良いと思います。
HScriptとExpressionの違いは主に用途です。
Expressionはチャンネルに直接突っ込むなどして、そのノードやチャンネルの情報をいじります。
なので関数ベースのアニメーションや、動的なグループの作成などが主な用途としてあげられます。
HScriptはノードを操作するためのものです。
ノードを作成したり、setAttr的なことをやったり、などなど。
僕もまだ詳しくはわかっていませんが、なんとなくそんな感じのようでした。
HOM、つまりPythonはHScriptとExpression両方の代わりとして使えます。
HOMは、Mayaのようなただのラッピングとは違い、Pythonの良さを活かしてスクリプティングが出来るような仕組みになっています。
Pythonの良さというかオブジェクト指向を上手く使っていると言いますか。
まぁ順当なPythonスクリプティングが出来ますよ、ということです。
MayaPythonはあくまでもMELと一緒で文字列ベースですからね。イカンです。
と、思わず批判。失礼しました。
MayaPythonでもpymelとか使えば随分楽にスクリプティング出来るようですよ!試してませんが。
HScriptもMEL同様、基本文字列であれこれいじる言語なので、めんどくせーなと思ってHScriptで書く方向は考えませんでした。
スクリプトをまるごと載せれたら良かったんですが、すみません、忘れてきました。
今度コピペしときます。
上で書いたところで使ったもの意外にも、いくつか簡単なスクリプト書いたのですが、まだPythonに実装されていない関数を使いたいケースなども、100%HScriptのリプレイスは出来ていないようです。
ですが、houモジュールを通してHScriptやExpressionの実行が出来るようなので、あまり問題ではありませんでした。
今回はたしかprimitive groupを取得するための関数、たしかprimgrouplistとかそういうやつだったと思うんですが、それがまだPythonになくて、こんな感じで取得してやったような気がします。
path = ‘/obj/geo1/null1′
grps = hou.hscriptExpression(‘primgrouplist(“%s”)’ % path).split(‘ ‘)
↑簡単に説明するとhou.hscriptExpressionでprim groupの値を取得するとスペースで区切られた文字列になっているので、スペースを区切り文字にして区切って配列を受け取る、と言うような内容です。
Pythonだとサクっとこういう事が出来てしまうので、HScriptはExpressionメインで他はPythonで書くのがいいなー、と思いました。
Python自体はExpressionにも使えるので、どっちもPythonにしてしまっても良いと思うのですが、やはり記述は長くなりがちなので、HScriptも覚えてると便利だなーというのが僕の意見です。
Mayaの時もそうでしたが、スクリプトやAPIを覚えることでソフトの中身が垣間見えてくる部分があるので、Houdiniでも積極的にスクリプト系には手を出していきたいところ。
なんかまだまとめて書けないのが歯痒いです。
最近マニュアルとかOd forceのWikiとかも読んだりしているので、
何か良さそうなのあれば自分の知識なども踏まえてあれこれ載せたいです。
もちろん可能な限り日本語で、、、!!
しばらくHoudini系でいくよーーー!
思い出しながら書いたので、あれこれごちゃごちゃですみません。
いずれ何とか、どうにかまとめたいと思ってます。
そろそろApprentice HD買わないと、だなー。
- Newer: [HOM] カレントディレクトリをExplorerで開く
- Older: [Houdini]メモ
Comments:3
- ますお 2010/01/22
HoudiniのPythonはまだちょっとbuggyな感じですよ.実装されてないものもあるし.お気をつけてー
- inagaki 2010/01/26
9のPythonを少し使ったことがあるんですが、
そのときはエラーメッセージがほとんど出なくて悲惨でした。
今は改善されているんですかね?- tai 2010/01/28
はー、最近忙しくてなかなかこっちまで手回らないです。すみません。。
>ますおさん
なるほど、、まだ致命的なバグにはぶつかってないですが、用心しておきます・・・!!
今はそれよりも実装されてないものが結構あるので困ってますww
結局HScriptかよ!みたいなのが多いですw
でもやっぱり圧倒的に書きやすいです:D>inagakiさん
エラーが出ないとか、、悲惨すぎます。。
H10では多少良くなってるんでしょうか?まだそういう状況にはなってないです。
Mayaみたいに徐々に良くなっていくと願いたいです!
というかMayaも早くまともなPythonバインディングして欲しいですマジで・・・。
Trackbacks:0
- Trackback URL for this entry
- http://blog.taikomatsu.com/2010/01/22/houdini-hom%e3%83%87%e3%83%93%e3%83%a5%e3%83%bc%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/trackback/
- Listed below are links to weblogs that reference
- [Houdini] HOMデビューしました from memlog