| On this page | 
Public APIは、C++、ブループリント、Pythonで利用可能です。
Public APIは以下をサポートしています:
- 
        
        
HDAをアクターとしてワールドでインスタンス化する
 - 
        
        
パラメータと入力を設定する
 - 
        
        
HDAをクックする
 - 
        
        
出力を検査、反復、ベイクする
 
Houdini Public APIインスタンス ¶
UHoudiniPublicAPIクラスには、セッションを制御したり、Houdini Asset Actorをインスタンス化するための関数が備わっています。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     有効なHoudini Engineセッションが実行/接続されている場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     現在のセッションがない場合、新しいHoudini Engineセッションを開始します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     現在のHoudini Engineセッションを停止します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     停止して、新しいHoudini Engineセッションを開始します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定したワールド/レベルでHDAをインスタンス化します。インスタンス化されたアセットのラッパーを返します。HDAをインスタンス化するを参照してください。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     アセットのクックが停止中の場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     アセットのクックを停止します(まだ停止していない場合)。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     アセットのクックを再開します(停止されていた場合)。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     新しい空っぽのAPI入力オブジェクトを作成します。ユーザはこれに入力を追加して、アセットラッパーの入力として設定する必要があります。入力を参照してください。  | 
            
        
    
HDAをインスタンス化する ¶
InstantiateAsset関数は、インスタンス化されたHDAとやり取りするためのAPIラッパークラス(UHoudiniPublicAPIAssetWrapper)を返します。
Warning
Public APIは、InstantiateAssetで作成後のUHoudiniPublicAPIAssetWrapperのライフサイクルを管理しません。
    UPropertyまたはブループリント変数を使用して、予期せぬラッパーのガーベジコレクションを防ぎます。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     インスタンス化するHDA uasset  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     HDAアクターをインスタンス化するトランスフォーム  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     
  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     
  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     Trueの場合(デフォルト)、インスタンス化後と、パラメータ、トランスフォーム、入力の変更後に、HDAが自動的にクックされます。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     Trueの場合、クック後にHDA出力が自動的にベイクされます。デフォルトはFalseです。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     HDA出力のアトリビュートにベイクパスが設定されていなかった場合にベイク先となるディレクトリ  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ベイクターゲット(アクターvsブループリントへ)  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     Trueの場合、HDA一時出力はベイク後に削除されます。デフォルトはFalseです。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ベイクされたアクターの中心を境界ボックスの中心に変更します。デフォルトはFalseです。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     Trueの場合、すべてのベイクで、以前のベイクの出力(アセットとアクター)を新しいベイクの出力に置き換えます。デフォルトはFalseです。  | 
            
        
    
Public API Asset Wrapper ¶
APIは、インスタンス化されたHDAをUHoudiniPublicAPIAssetWrapperのインスタンスにラップします。
このクラスを使用すると、パラメータや入力の設定、出力のクック、ベイク、アクセスを行なうことで、インスタンス化されたHDAを操作することができます。
既存のHDAアクターのラッパーを作成する ¶
HDAのインスタンス化セクションでは、新しいHDAをインスタンス化し、UHoudiniPublicAPIAssetWrapperを返すInstantiateAsset関数について説明しましたが、既存のHDAアクター/コンポーネントのラッパーを作成することもできます。
UHoudiniPublicAPIAssetWrapperのCreateWrapper静的関数(Editor Utility BlueprintでもCreate Wrapperとして利用可能)は、既存のHDAアクターまたはコンポーネントを引数として受け取り、指定したHDAアクター/コンポーネントをラップするUHoudiniPublicAPIAssetWrapperを作成および返します。
または、CreateEmptyWrapper関数を使用して、HDAアクター/コンポーネントを最初はラップしないUHoudiniPublicAPIAssetWrapperを作成することも可能です。
その後、UHoudiniPublicAPIAssetWrapperのWrapHoudiniAssetObject関数を使用して、既存のHDAアクター/コンポーネントをラッパーでラップできます。
Warning
Public APIは、CreateEmptyWrapperまたはCreateWrapperで作成後のUHoudiniPublicAPIAssetWrapperのライフサイクルを管理しません。
    UPropertyまたはブループリント変数を使用して、予期せぬラッパーのガーベジコレクションを防ぎます。
デリゲート ¶
多くの場合、プラグインはHoudini Engineと非同期でやり取りします。 つまり、操作が完了した後にコールバックを受け取るには、デリゲートをバインドする必要があります。
例えば、パラメータを変更したい場合、ノードをクックしてから、出力を取得します。 プロセスが完了した後でコールバックを受け取るには、適切なデリゲートをバインドする必要があります。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     HDAがインスタンス化される前にブロードキャストします。HDAのデフォルトパラメータを使用して、設定することができます。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     アセットが正常にインスタンス化された後にブロードキャストします。最初のクック前に入力を設定/構成することをお勧めします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     クックが完了した後にブロードキャストします。まだ作成または更新されていないオブジェクト/アセットを出力します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     前処理の段階の最後(クック後)にブロードキャストします。まだ作成または更新されていないオブジェクト/アセットを出力します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     Unrealで出力処理後にブロードキャストします。まだ作成または更新されていないオブジェクト/アセットを出力します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     アセットをベイクした後にブロードキャストします(コンテンツブラウザにベイクされた個々の出力にはコールされません)。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     TOPネットワークのクックが完了した後にブロードキャストします。ワークアイテムの結果は必ずしもロードする必要はありません。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG出力をベイクした後にブロードキャストします(コンテンツブラウザにベイクされた個々の出力にはコールされません)。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     このラップされたアセットのすべてのプロキシメッシュを微調整した後にブロードキャストします。  | 
            
        
    
Note
ブループリントでは、Public APIはEditor Utility Graphでのみ利用可能です。 デリゲートにバインドされたブループリントのイベントや関数では、 Call In Editor を有効にする必要があります。 そうしないと、デリゲートのブロードキャスト時、イベント/関数が実行されません。
パラメータ ¶
以下の関数を使用して、名前付きパラメータタプルのパラメータ値を設定および取得することができます。 パラメータタプル名は必須の引数で、タプルのパラメータのインデックスは任意です(デフォルトは0)。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     floatパラメータ値を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     floatパラメータ値を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     floatパラメータ値を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     floatパラメータ値を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     integerパラメータ値を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     integerパラメータ値を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ブーリアン/トグルパラメータ値を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ブーリアン/トグルパラメータ値を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     文字列パラメータ値を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     文字列パラメータ値を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     UObjectからアセットリファレンスとして文字列パラメータ値を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     文字列パラメータによって参照されたUObjectインスタンスを取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ボタンパラメータのコールバックスクリプトを実行します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     すべてのパラメータタプルの値を構造体の配列として取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定した構造体の配列にパラメータタプルの値を設定します。  | 
            
        
    
以下の関数によって、ランプパラメータの取り扱いを簡素化することができます:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     ランプパラメータのポイントの数を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ランプパラメータのポイントの数を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     インデックスで浮動小数点ランプのポイントの位置、値、補間を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     インデックスで浮動小数点ランプのポイントの位置、値、補間を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     配列から浮動小数点ランプパラメータのすべてのポイントを設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     浮動小数点ランプパラメータのすべてのポイントを配列として取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     インデックスでカラーランプのポイントの位置、値、補間を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     インデックスでカラーランプのポイントの位置、値、補間を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     配列からカラーランプパラメータのすべてのポイントを設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     カラーランプパラメータのすべてのポイントを配列として取得します。  | 
            
        
    
入力 ¶
APIラッパークラスでは入力のタイプがサポートされています。
ラップされ、インスタンス化されたHDAに入力を設定するには、適切な入力クラスをインスタンス化してから、入力オブジェクトを設定し、設定を行なう必要があります。
UHoudiniPublicAPIAssetWrapper::CreateEmptyInput()関数を使用することで、入力をインスタンス化することができます。
この関数は、入力のクラスを唯一の引数として受け取ります。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     入力の基本クラス。新しい入力タイプのサブクラスを作成するときのみ使用します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ジオメトリ入力  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     カーブ入力  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     アセット入力(入力として別のインスタンス化されたアセットを使用)  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ワールド入力(入力としてワールドからアクターを使用)  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     入力としてのランドスケープ  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ラップされたアセットの既存のノード入力を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ラップされたアセットの既存のパラメータベースの入力を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ノード入力を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     パラメータベースの入力を設定します。  | 
            
        
    
Note
GetInputAtIndex()およびGetInputParameter()関数は、ラップされたアセットの入力設定のコピーを返します。
    プロパティまたは入力オブジェクトを変更しても、ラップされたアセットの入力は自動的に更新されません。
    変更を適用するには、SetInputAtIndex()またはSetInputParameter()を使用して、入力を再度設定する必要があります。
カーブ入力 ¶
カーブ入力には、ポイントからカーブを構築する追加のヘルパークラスのUHoudiniPublicAPICurveInputObjectがあります。
オブジェクトには、カーブポイントを設定または追加する関数があり、各ポイントはFTransformで表現されます。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     カーブポイントをFTransformの指定した配列に設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ポイントをFTransformとしてカーブに追加します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     カーブからすべてのポイントを削除します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     カーブのポイントをFTransformの配列として取得します。  | 
            
        
    
UHoudiniPublicAPICurveInputObjectと以下の関数を使用することで、NURBSカーブ、Bezierカーブ、開いたカーブ、閉じたカーブなどのカーブプロパティを設定することもできます:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     カーブが閉じている場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     閉じたカーブとして設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     カーブが逆になっている場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     逆のカーブとして設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     enum(ポリゴン、NURBS、Bezier、ポイント)として、カーブタイプを取得します:   | 
            
        
    
                  | 
            
        
            
                
    
            
    
     
  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     enum(CV、ブレークポイント、フリーハンド)としてカーブメソッドを取得します:   | 
            
        
    
                  | 
            
        
            
                
    
            
    
     enum   | 
            
        
    
出力 ¶
UHoudiniPublicAPIAssetWrapperクラスには、クック後にHDAの出力にアクセスする関数が備わっています:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     HDAの出力の数を返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定した出力インデックスの出力のタイプ(EHoudiniOutputType: メッシュ、インスタンサー、ランドスケープ、カーブ、スケルタル)を返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定した出力インデックスの  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     
  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     
  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     現行のプロキシメッシュを含む出力がある場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     出力が指定されたインデックスの場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定されたインデックスと識別子の出力が現行プロキシの場合、Trueを返します。  | 
            
        
    
出力をベイクする ¶
UHoudiniPublicAPIAssetWrapperクラスも、出力のベイクをサポートしています。
ベイクする方法は3通りあります:
- 
        
自動ベイクを有効にします。これは、クック後に出力を自動的にベイクし、インスタンス化されたHDAに設定されているベイク設定を使用します。
 - 
        
HDAのすべての出力を手動でベイクします。
 - 
        
出力インデックスおよび識別子によって識別された特定の出力オブジェクトのみベイクします。
 
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     正常なクック後の自動ベイクを有効/無効にします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     自動ベイクが有効な場合、Trueを返します。  | 
            
        
    
自動クックは、クック後に出力を自動的にベイクし、インスタンス化されたHDAに設定されているベイク設定を使用します。
これらの設定は、以下を使用して照会または設定することができます。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     ベイクメソッド(アクター、ブループリント、フォリッジいずれかにベイク)を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ベイクメソッドを取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ベイク後、ワールドからの一時HDA出力の自動削除を有効/無効にします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ベイク後に一時HDA出力がワールドから削除される場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ベイクされた出力アクターの中心を境界ボックスの中心へと変更することを有効/無効にします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     中心の変更が有効な場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ベイク置換モードを有効/無効にします。有効な場合、以前のベイクのアセットとアクターが置き換えられます(名前が一致する場合)。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     置換モードが有効な場合、Trueを返します。  | 
            
        
    
HDAのすべての出力を手動でベイクします:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     ラッパーを使って構成した設定で、すべての出力をベイクします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     すべての出力をベイクしますが、ベイク設定が関数に渡され、ラッパーで構成された設定を上書きします。  | 
            
        
    
出力インデックスおよび識別子によって識別された、特定の出力オブジェクトのみベイクします。
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     出力インデックスおよび識別子によって指定された出力オブジェクトをベイクします。  | 
            
        
    
ブループリント非同期プロセッサ ¶
HDAのインスタンス化およびクックは、プラグイン内で非同期に実行されます。
デリゲートは、HDAプロセスが特定のフェーズに入ったり、クックが完了するタイミングを通知するのに役立ちます。
これは、APIを使用してスクリプトやツールを記述しながら、手動でデリゲートのバインドやバインド解除を行なう必要があることを意味します。
ブループリントではこれを簡素化するために、APIにはBlueprint Async Actionノード(UHoudiniPublicAPIProcessHDANodeまたはProcessHDA)も含まれています。
ProcessHDAノードには、UHoudiniPublicAPI::InstantiateAsset()関数のすべてのオプションと、以下のような役立つ機能があります:
- 
        
        
FNameからFHoudiniParameterTupleへのマップを受け取って、デリゲートに手動でバインドすることなくパラメータを設定できます。 - 
        
        
int32からUHoudiniPublicAPIInputへのマップを受け取って、デリゲートに手動でバインドすることなくインデックスベースのノード入力を設定できます。 - 
        
        
FNameからUHoudiniPublicAPIInputへのマップを受け取って、デリゲートに手動でバインドすることなくパラメータベースの入力を設定できます。 - 
        
        
OnPreInstantiateDelegate、OnPostInstantiateDelegate、OnPostProcessDelegateといった様々なデリゲートにバインドされた出力ピン付きのレイテントノードを使用すると、カスタムロジックを簡単にこれらのイベントにバインドできます。 
Process HDAノードとブループリントバージョンのカーブ入力サンプルのスクリーンショット。
MakeGeoInputおよびMakeCurveInput関数がUHoudiniPublicAPIGeoInputおよびUHoudiniPublicAPICurveInputを作成および追加するように、こちらは多少変更されています。
Python非同期プロセッサ ¶
PythonはProcessHDAブループリントノードと似ています。
ProcessHDA Pythonクラスは、HoudiniEngineV2.asyncprocessorモジュール内にあります。
ProcessHDAクラスコンストラクタは、Async Blueprintノードとして同じ引数を受け取ります。
ProcessHDA.activate()関数を使用して、処理を開始します。 
違いは、ProcessHDAクラスにはデリゲート毎に関数があることです:
- 
        
        
on_failure - 
        
        
on_complete - 
        
        
on_pre_instantiation - 
        
        
on_post_instantiation - 
        
        
on_post_auto_cook - 
        
        
on_pre_process - 
        
        
on_post_processing - 
        
        
on_post_auto_bake 
これらは内部的にUHoudiniPublicAPIAssetWrapperにバインドされ、デリゲートがブロードキャストする際に呼び出されます。
ProcessHDAをサブクラス化し、上記の関数を上書きして、独自の機能を実装します。
以下は、ProcessHDAのサブクラスとして実装されているカーブ入力の例です:
import math
import unreal
from HoudiniEngineV2.asyncprocessor import ProcessHDA
_g_processor = None
class ProcessHDAExample(ProcessHDA):
    def on_failure(self):
        print('on_failure')
        global _g_processor
        _g_processor = None
    def on_complete(self):
        print('on_complete')
        global _g_processor
        _g_processor = None
    def on_post_processing(self):
        # HDAによって生成されたすべての出力を表示します。
        num_outputs = self.asset_wrapper.get_num_outputs()
        print('num_outputs: {}'.format(num_outputs))
        if num_outputs > 0:
            for output_idx in range(num_outputs):
                identifiers = self.asset_wrapper.get_output_identifiers_at(output_idx)
                print('\toutput index: {}'.format(output_idx))
                print('\toutput type: {}'.format(self.asset_wrapper.get_output_type_at(output_idx)))
                print('\tnum_output_objects: {}'.format(len(identifiers)))
                if identifiers:
                    for identifier in identifiers:
                        output_object = self.asset_wrapper.get_output_object_at(output_idx, identifier)
                        output_component = self.asset_wrapper.get_output_component_at(output_idx, identifier)
                        is_proxy = self.asset_wrapper.is_output_current_proxy_at(output_idx, identifier)
                        print('\t\tidentifier: {}'.format(identifier))
                        print('\t\toutput_object: {}'.format(output_object.get_name() if output_object else 'None'))
                        print('\t\toutput_component: {}'.format(output_component.get_name() if output_component else 'None'))
                        print('\t\tis_proxy: {}'.format(is_proxy))
                        print('')
def make_geo_input():
    """ 立方体をジオメトリ入力にします。 """
    # APIシングルトンを取得します。
    houdini_api = unreal.HoudiniPublicAPIBlueprintLib.get_api()
    # ジオメトリ入力を作成します。
    geo_input = houdini_api.create_empty_input(unreal.HoudiniPublicAPIGeoInput)
    #この入力に入力オブジェクト/アセットを設定します。
    geo_object = unreal.load_object(None, '/Engine/BasicShapes/Cube.Cube')
    geo_input.set_input_objects((geo_object, ))
    return geo_input
def make_curve_input():
    """ 螺旋を入力カーブにします。 """
    # APIシングルトンを取得します。
    houdini_api = unreal.HoudiniPublicAPIBlueprintLib.get_api()
    # カーブ入力を作成します。
    curve_input = houdini_api.create_empty_input(unreal.HoudiniPublicAPICurveInput)
    # カーブラッパー/ヘルパーを作成します。
    curve_object = unreal.HoudiniPublicAPICurveInputObject(curve_input)
    # それをNURBSカーブにします。
    curve_object.set_curve_type(unreal.HoudiniPublicAPICurveType.NURBS)
    # カーブのポイントを設定します。
    # この例では、100ポイントで構成される螺旋を作成します。
    curve_points = []
    for i in range(100):
        t = i / 20.0 * math.pi * 2.0
        x = 100.0 * math.cos(t)
        y = 100.0 * math.sin(t)
        z = i
        curve_points.append(unreal.Transform([x, y, z], [0, 0, 0], [1, 1, 1]))
    curve_object.set_curve_points(curve_points)
    # 入力オブジェクトとしてカーブラッパーを設定します。
    curve_input.set_input_objects((curve_object, ))
    return curve_input
def make_parameters():
    """ `upvectoratstart`と`scale`を含むHoudiniParameterTupleの辞書を作成します。 """
    parameters = {}
    parameter_tuple = unreal.HoudiniParameterTuple()
    parameter_tuple.bool_values = (False, )
    parameters['upvectoratstart'] = parameter_tuple
    parameter_tuple = unreal.HoudiniParameterTuple()
    parameter_tuple.float_values = (0.2, )
    parameters['scale'] = parameter_tuple
    return parameters
def run():
    # 事前設定された入力を用いてプロセッサを作成します。
    global _g_processor
    _g_processor = ProcessHDAExample(
        unreal.load_object(None, '/HoudiniEngine/Examples/hda/copy_to_curve_1_0.copy_to_curve_1_0'), 
        parameters=make_parameters(),
        node_inputs={0: make_geo_input(), 1: make_curve_input()},
    )
    # プロセッサをアクティブ化すると、インストールが始まり、その後クックします。
    if not _g_processor.activate():
        unreal.log_warning('Activation failed.')
    else:
        unreal.log('Activated!')
if __name__ == '__main__':
    run()同期処理 ¶
一部のケースでは、Public APIを非同期で使用できない場合があります。
例えば、コマンドレット内でAPIを使用する場合など該当します。 コマンドレットはプラグインの非同期プロセッサをTick(定期処理)せずに、すぐに返されるからです。
この問題は、AssetWrapperの ProcessComponentSynchronous  関数(Pythonではprocess_component_synchronous)を手動でコールすることで解決することができます。
この関数はブロッキングであり、ラップされたHoudini Asset Componentが非アクティブ状態になるまで、インスタンス化、クッキング、プロセッシングをすべて1コール内で実行します。
この関数を使用した場合でも、登録されているすべてのデリゲートコール(OnPostInstantiate/Cook/Process)が発生するので、それらのコールをHDAのデータに対する追加処理に使用することができます。
PDG/TOPネットワーク ¶
Public APIは、HDAに1つまたは複数のTOPネットワークが含まれている場合、PDG Asset Linkとのやり取りをサポートします。
PDG関連のイベントには2つのデリゲートがあります:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     HDAのTOPネットワークをクックした後にブロードキャストします。ワークアイテムの結果はまだロードする必要はありません。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG出力をベイクした後にブロードキャストします。  | 
            
        
    
以下の関数は、PDG Asset Linkとやり取りするためのUHoudiniPublicAPIAssetWrapperで利用可能です:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     ラップされたアセットが有効で、PDG Asset Linkがある場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     HDAのすべてのTOPネットワークのパス(インスタンス化されたアセットを基準にした相対パス)を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ネットワークのすべてのTOPノードのパス(指定されたTOPネットワークを基準にした相対パス)を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     このアセットのすべてのTOPネットワークをDirty化(変更あり)します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定したTOPネットワークをDirty化(変更あり)します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定したTOPノードをDirty化(変更あり)します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定したTOPネットワークのすべての出力をクックします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定したTOPノードをクックします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     アセットの設定を使用して、インスタンス化したアセットのPDGコンテキストのすべての出力をベイクします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     指定した設定を使用して、インスタンス化したアセットのPDGコンテキストのすべての出力をベイクします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDGワークアイテムを正常にロードした後、それらを自動的にベイクするかどうかを設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG自動ベイクが有効な場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDGベイクに使用するベイクメソッド(アクター、ブループリント、フォリッジへのいずれか)を設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDGベイクに使用するように現在設定されているベイクメソッド(アクター、ブループリント、フォリッジへのいずれか)を取得します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG向けにベイクする出力を設定します。例えば、すべて、選択したネットワーク、選択したノードなどです。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG向けにベイクする出力を取得します。例えば、すべて、選択したネットワーク、選択したノードなどです。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG Asset LinkでのPDGベイクの後、ベイクされたアクターの中心を境界ボックスの中心に変更するかどうかを決定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG Asset LinkでのPDGベイクの後、ベイクされたアクターの中心を境界ボックスの中心に変更する場合、Trueを返します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDGベイクに使用する置換モードを設定します(以前のベイク出力を置き換えるvs出力名をインクリメント)  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDGベイクに使用する置換モードを取得します。  | 
            
        
    
Note
PDG/TOPネットワークのクックは、HDAクックに直接リンクされていません。
    HDAの自動クックが有効になっている場合(または、アセットがbEnableAutoCook == trueでインスタンス化されている場合)、PDGは自動でクックされません。
    PDG Asset Linkの自動クック設定は、現在Public APIを介してアクセスできないため、ユーザはPDGCookNode()またはPDGCookOutputsForNetwork()を呼び出してPDGをクックする必要があります。
追加のサンプル ¶
プラグインのコンテンツおよびサンプルディレクトリには、HDA、Pythonスクリプト、Editor Utility Widget、Editor Utility Actorのサンプルが含まれています。
利用可能なC++サンプルには以下のようなものがあります:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     APIを使用してHDAをインスタンス化する の  | 
            
        
    
利用可能なブループリントのサンプルには以下のようなものがあります:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     APIを使用してHDAをインスタンス化するのブループリントサンプル  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     インスタンス化とHDAおよび設定パラメータの様々なオプションを含む、サンプルのEditor Utility Widget  | 
            
        
    
利用可能なPythonサンプルには以下のようなものがあります:
コマンド  | 
            
        
            
                
    機能  | 
            
        
    
|---|---|
                  | 
            
        
            
                
    
            
    
     アセット入力を使用したサンプルスクリプト  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     クック後にHDAのすべての出力をベイクするサンプルスクリプト  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     クック後に、指定した出力オブジェクトをコンテンツブラウザにベイクするサンプルスクリプト  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     入力カーブを使用したAPIを使用してHDAをインスタンス化するによく似たサンプル  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     APIを使用してHDAをインスタンス化するのサンプルPythonスクリプト  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ジオメトリ入力を使用したサンプルスクリプト  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     パラメータを設定し、インスタンス付きのHDAを出力としてクックします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ランドスケープ入力を使用します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     HDAをクックした後、出力を反復します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     PDG出力をクックおよびベイクします。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ProcessHDAクラスを使用して、デリゲート処理を簡素化します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     APIでヘルパー関数を使用して、ランプパラメータポイントを設定します。  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     Houdini Engineセッションを開始する簡単なサンプル  | 
            
        
    
                  | 
            
        
            
                
    
            
    
     ワールド入力を使用します。  | 
            
        
    
エラーメッセージ ¶
Public APIでよくあるエラーは、関数が成功か失敗かを示すブーリアンを返すことです。
エラーが発生した場合は、GetLastErrorMessage()関数を使用すると直近のエラーメッセージを取得することができます。
これは、UHoudiniPublicAPI、UHoudiniPublicAPIAssetWrapperなどのUHoudiniPublicAPIObjectBaseから派生した任意のクラスや、UHoudiniPublicAPIInputやUHoudiniPublicAPICurveInputObjectから派生した入力クラスで利用できます。