Houdini 20.0 Pythonスクリプト

RPC

他のPythonセッションからHOMスクリプトを使ってネットワーク越しにHoudiniを制御することができます。

On this page

How to

  1. 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)をコールします。

  2. 次に、他のプロセスまたは他のコンピュータの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セットアップ(例えば、ファイアーウォール)でサーバーポートへの未認証アクセスを解決するようにしてください。

Pythonスクリプト

はじめよう

次のステップ

リファレンス

  • hou

    Houdiniにアクセスできるサブモジュール、クラス、ファンクションを含んだモジュール。

導師レベル

Python Viewerステート

Pythonビューアハンドル

プラグインタイプ