HQueueクライアントがFXライセンスを取得してしまう時の対策


この記事では、HQueueで分散シミュレーション/レンダリングなどを行う際にHQueueクライアントが
Houdini EngineではなくHoudini FXやCoreのライセンスを取得してしまう際の対策についてご紹介します。

このような場合における対策については、以下の2点の環境変数を設定する手法が挙げられます。

1. HAPI_LICENSE_MODEを設定する

こちらはHoudini Engineを起動する際にどのライセンスを優先して利用するか、というものです。
デフォルトではこれは、Houdini Engine ->Houdini Core-> Houdini FX の順番になっております。
従って最初にHoudini Engineのライセンスを見ます。
ライセンスが存在し、かつHoudini Engineを起動しようとしている場合はHoudini Engineが起動します。

この順番が何かしらの原因で上書きされ、先にFXライセンスを見に行ってしまっている可能性が原因の一つとして考えられます。

そのような場合は、HAPI_LICENSE_MODE環境変数を以下のようにすることで、Engineライセンスのみを取得する設定にできます。

HAPI_LICENSE_MODE="engine_only"

2. HOUDINI_SCRIPT_LICENSEを設定する

こちらはHoudiniではなく、Pythonスクリプトがhouモジュールを使用する際にどのライセンスを利用するかを指定する環境変数です。
こちらはモジュールの内の機能を制限する役割もあり、指定する値によって利用可能な機能が変わるようになっています。

こちら標準ではhbatchなのですが、もしこれが何らかの原因でhoudiniになっていますと、FXやCoreのライセンスを消費します。

こちらを以下のように設定し、Houdini Engineライセンス以外はhouモジュールのライセンスとして利用しないようにします。

HOUDINI_SCRIPT_LICENSE= hbatch -R

HQueueでの環境変数の設定方法

通常、Houdiniの環境変数はhoudini.envに記述することで設定します。
この方法でも設定はできるのですが、HQueueの場合、以下のような懸念が考えられます。

  • クライアントが複数台あるので、全てに対して設定を行うことが手間であること
  • クライアントの中に他者の作業マシンが含まれている場合、設定を上書きしてしまうと作業を行う際に影響が出ること

よって今回は、HQueueノードのパラメータを利用することで、HQueueの処理の間のみ、
クライアントマシンの環境変数設定を上書きするような手法を採用します。

これには、HQueueノードのAdvancedタブのEnvironmentパラメータを利用します。

以上のように設定することで、HQueueで正常にHoudini Engineライセンスが利用できるようになるはずです。
※標準では自動でHoudini Engineライセンスが利用されますので、問題がなければ設定は必要ありません。