On this page |
How to ¶
-
HoudiniはデフォルトではRPCポートを開放していません。HoudiniでRPCサーバーを起動させることで、他のコンピュータからそのサーバーに接続することができます:
import hrpyc hrpyc.start_server()
-
デフォルトでは、RPCサーバーは
18811
ポートをリッスンします。ポート番号を設定するには、hrpyc.start_server(port=portnum)
をコールします。 -
RPCサーバーは、別スレッドで起動し、他のプロセスからのRPCコールを待ちます。メインスレッドでRPCサーバーを起動したいのであれば、
hrpyc.start_server(use_thread=False)
をコールします。
-
-
次に、他のプロセスまたは他のコンピュータのPythonセッション(例えば、Maya Pythonシェル)からRPCサーバーに接続します:
connection, hou = hrpyc.import_remote_module()
connection
は、ネットワーク接続を表現したオブジェクトです。このオブジェクトが削除またはスコープ外になってガーベージコレクトされると、その接続が失なわれるので、接続を開いたままにしたいのであれば、参照を維持するようにしてください。hou
は、Houdiniのhou
パッケージと同じように動作するオブジェクトです。これは、まるでHoudiniのhython
またはPythonシェルでhou
をインポートするような感じで使用します:node = hou.node("/obj/sphere1") node.parm("scale").set(2.0)
重要な情報に関しては、以下の注意事項を読んでください。
メモ ¶
-
hrpyc
は、rpycライブラリを非常に簡素にしたラッパーです。これは、サードパーティライブラリで提供されている機能に制限されています。 -
このライブラリは、オブジェクトと関数をプロキシ化することで動作します。リモート側で関数やメソッドをコールすると、そのプロキシオブジェクトがそのリクエストをネットワークに送信し、Houdini側でその結果を送り返します。
rpyc
プロキシオブジェクトは、Python演算子に 対応していません (このライブラリは、__eq__
などの特殊メソッドをプロキシ化しません)。 プロキシは等号演算子に対応していないので、例えばリモート側で2個のhou.OpNode
プロキシを比較して同じノードなのかどうか判断することができません:# これは失敗します。 node1 == node2
代わりにプロキシ化したオブジェクトそのものではなく、そのままのPythonの関数/メソッドのコールの結果を比較するようにコードを修正してください:
# これは動作します。 node1.path() == node2.path()
-
RPCサーバーは、何も認証処理を しません 。RPCを使用する場合は、必ずITセットアップ(例えば、ファイアーウォール)でサーバーポートへの未認証アクセスを解決するようにしてください。