LoginSignup
3
2

More than 3 years have passed since last update.

Houdini Python Script を別のPythonインタプリタから実行する

Last updated at Posted at 2019-10-19

起動中のHoudiniに別のPythonからスクリプトを実行する

環境


Windows 10
Houdini Apprentice 17.5
Python 2.7.14

https://www.sidefx.com/docs/houdini/hom/rpc.html の手順通りやるだけです。

手順

1. Houdini上で以下のPyhtonスクリプトを実行する

import hrpyc


hrpyc.start_server()

2. 別起動しているPythonにパスを通す

add_path_for_hrpyc.py
# coding: utf-8 
import sys


# 各自Houdiniのインストールパスに合わせて書き換えてください。
sys.path += [
    "C:/Program Files/Side Effects Software/Houdini 17.5.293/houdini/python2.7libs",
    "C:/Program Files/Side Effects Software/Houdini 17.5.293/python27/lib/site-packages",
]

# どうでもいいはなし
# 
#   今回の方法は以下の2つのライブラリを利用する必要があります。
#
#   hrpyc: Houdiniのrpycのラッパーライブラリ
#     Houdiniは C:\Program Files\Side Effects Software\Houdini 17.5.293\houdini\python2.7libs  にパスを通して利用しています。
#
#   rpyc: rpcを利用してPython Procedureを呼び出すライブラリ…らしい
#     Houdiniは C:\Program Files\Side Effects Software\Houdini 17.5.293\python27\lib\site-packages にパスを通して利用しています。
#
#   正しくはpipとかでrpycライブラリをインストールするべきですが、
#   面倒なので、今回はHoudiniで利用しているライブラリをそのまま使いました。
#   本番では熟慮しようね!

3. 別起動しているPythonで手順1で起動したサーバーと接続する。

import hrpyc


connection, hou = hrpyc.import_remote_module()

# どうでもいいはなし
#   connection.close() でHoudiniとの接続を切ることもできるが、
#   公式ドキュメントを読む限り、connectionが削除した際や、
#   ガベージコレクタにconnectionが破棄された際に自動的に接続を切るとのこと。

4. 別起動しているPythonでhouモジュールを操作する

geo = hou.node('/obj/').createNode('geo', 'geo_test1')
geo.moveToGoodPosition()

終わりに

Mayaからの移民なのでHoudiniではメチャクチャ簡単にできることに戦慄していますね。
(Mayaのcmds.commandPortと同じく、パット見使えそうだけど、
いざ利用してみるとなんか違う…みたいなものかもしれませんが。)

あと、今回出てきたrpycライブラリは可能性を感じるので、
もう少しここらへんを掘りさげると面白いことができそうだな~と悪巧みしています。

最後になりますが、正直Houdiniはあまり詳しくないので、
概念や用語やしきたりなど間違いがあればご指摘いただけると助かります!

ではでは。

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2