On this page |
Houdini Engineを使用するには、Houdini Engineセッションを作成する必要があります。 Houdini Engineセッションを作成すると、それに必要なHoudiniライブラリとプラグインがロードされ、様々な環境設定や環境変数に応じてHoudini Engineがセットアップされます。
Socket(ソケット) ¶
Socketセッションは、Houdini Engineにシンクライアントが導入された時に追加されました。 つまり、このシンクライアントのおかげで、メインのHoudini Engine処理を別プロセスで(Mayaプロセス外で)行なうことができています。 Socketセッションでは、TCPソケットがMayaプロセスとHoudini Engineプロセス間の通信に使用されます。
Socketセッションを使用するには、Houdini Engineサーバーを既知のマシンの既知のポートを用いて手動で起動する必要があります。 すると、そのホストとポートの情報がプラグインに渡されます。
Named Pipe(名前付きパイプ) ¶
Named Pipeセッションは、Houdini Engineにシンクライアントが導入された時に追加されました。 つまり、このシンクライアントのおかげで、メインのHoudini Engine処理を別プロセスで(Mayaプロセス外で)行なうことができています。 Named Pipeセッションでは、Named PipeがMayaプロセスとHoudini Engineプロセス間の通信に使用されます。 これは、シンクライアントを同じローカルマシン内で使用する場合に推奨されている方法です。
Named Pipeセッションは、Houdini Engineサーバーの自動起動に対応しています。
プラグインの初期化時に、Houdini Engineサーバーが自動的に起動され、Named Pipeが自動的に選択されます。
Linuxでは場合によっては、LD_LIBRARY_PATH
が設定されているとライブラリの干渉が発生してHARSの開始に失敗することがありました。
現在はHoudini Engineサーバーの起動前にLD_LIBRARY_PATH
の設定を解除する(もちろん、後で値を復元することができます)環境設定が用意されています。
その環境設定はデフォルトで有効になっていますが、LD_LIBRARY_PATH
を Houdini Engineに渡す必要がある場合は、この環境設定を無効にすることができます。
同様に、PYTHONPATH
が設定されていると干渉が発生してしまう場合があることも分かりました。
Unset PYTHONPATH を有効にすると、Houdini Engineサーバーを起動する前や、Houdiniで“View Assets in Houdini”メニューアイテムを介してアセットを表示する際に、PYTHONPATH
変数がクリアされます。
この環境設定は、下位互換向けにデフォルトで無効になっていますが、すべてのオペレーティングシステム向けに存在します。
HARSへの接続タイムアウトも設定することができます。
これは、Houdiniを開始するのに長い時間がかかる場合に役立ちます。
Houdini Engineサーバーは、既知のNamed Pipeを用いて手動で起動することもできます。 すると、そのNamed Pipeの情報がプラグインに渡されます。
Within Maya Process(Mayaプロセス内) ¶
Within Maya Processセッションタイプは、Houdini 17.0以降から対応しなくなりました。
Houdini Engineにシンクライアントが導入される以前は、Mayaプロセス内でHoudini Engineセッションを作成することで、Houdini Engineが初期化されていました。 すべてのHoudiniライブラリとそれに必要なファイルがMayaプロセス内に直接ロードされていました。 これが原因で、Houdiniのライブラリやプラグインとそのライブラリの依存関係は、Mayaのライブラリやプラグインと互換性がある必要がありました。 互換性がなかった場合、ダイナミックライブラリの干渉、ライブラリシンボルの干渉、クラッシュが発生してしまうことがありました。 Houdini Engineの導入以来、さらなる問題や干渉に遭遇したため、もはやこのセッションタイプに対応することができなくなりました。
optionVarでセッションタイプがWithin Processに設定されている場合、代わりに自動起動が有効なNamed Pipeが使用されます。 一部のLinuxシステムでは、その自動起動が上手くいかない場合があります。 その場合、HARSへ接続するには手動でそのHARSを開始する必要があります。
OptionVar ¶
ライブラリ干渉が原因でデフォルト設定でHoudiniプラグインをロードできない場合、そのプラグインをロードする前に、セッションタイプをコントロールするoptionVarを手動で設定すると良いでしょう。
Socketセッションで、デフォルトのポートとホストを使用する場合:
optionVar -iv "houdiniEngineSessionType" 1; optionVar -iv "houdiniEngineThriftPort" 9090; optionVar -sv "houdiniEngineThriftServer" "localhost";
Named Pipeセッションで、自動起動を有効にする場合:
optionVar -iv "houdiniEngineSessionType" 2; optionVar -sv "houdiniEngineThriftPipe" "hapi"; optionVar -iv "houdiniEngineSessionPipeCustom" 0; optionVar -iv "houdiniEngineTimeout" 10000;
サーバー ¶
クライアント側でSocketセッションを使用できるようにするには、Houdiniのインストールに含まれているHARSサーバー実行可能ファイルを開始する必要があります。 HARSは、単純なコマンドラインの引数を用いるコンソールアプリケーションです。
$ HARS -h 使用可能なオプション: -h [ --help ] このヘルプメッセージを作成します。 -s [ --socket-port ] arg サーバーポート(TCPソケットセッションを使用している場合)。 -n [ --named-pipe ] arg パイプ名(Named Pipeセッションを使用している場合)。 -a [ --auto-close ] すべてのクライアント接続の終了時に、サーバーを自動的に終了します。 -r [ --ready-handle ] arg サーバーがサービスの準備ができた時に通知するイベント(自動化されたサーバー起動向け)。
HARSは、libHAPIとコアHoudiniライブラリとその依存関係に直接リンクされます。 Thrift IPCはクロスプラットフォームのため、サーバープロセス(HARS)は異なるプラットフォーム上で実行されても構いません。 また、Named Pipeセッションで自動起動が指定されていない場合、HARSサーバーをNamed Pipeセッションに使用しても構いません。 ポートやパイプは、Houdini Engineの環境設定で指定されたものと同じである必要があります。 詳細は、Houdini Engineドキュメントのセッションセクションを参照してください。
Note
現在のところ、HARSサーバーは単一クライアント接続のみに対応しています。 クライアントがサーバーに接続されていて、他のクライアントがそのサーバーに接続を試みると、その2番目のクライアントは最初の接続が閉じるまでブロックされます。
セッションのクリーンアップ ¶
サーバーが自動起動に設定されている場合、プラグインをアンロードするとサーバーは強制終了され、Houdini Engineライセンスが開放されます。 プラグインがリロードされるとサーバーが再起動し、サーバーは最初のアセットがロードされる時にライセンスを取得します。
HARSサーバーを手動で起動した場合、自動終了オプションが設定されていない限り(そして他のクライアントがサーバーに接続されていない場合)、自動的に強制終了されることはありません。
HARSサーバーは、しばらくの間実行されていると、削除されたMayaノードに属していた入力ノードやMergeノードがUndoキューに残ったままの雑然とした状態になってしまいます。時々Undoキューをクリアして、これらのノードを削除するようにしてください。