Houdini 20.0 Unreal

Public API

Unreal向けの様々なPublic APIのリストとコマンド。

On this page

Public APIは、C++、ブループリント、Pythonで利用可能です。

Public APIは以下をサポートしています:

Houdini Public APIインスタンス

UHoudiniPublicAPIクラスには、セッションを制御したり、Houdini Asset Actorをインスタンス化するための関数が備わっています。

コマンド

機能

IsSessionValid

有効なHoudini Engineセッションが実行/接続されている場合、Trueを返します。

CreateSession

現在のセッションがない場合、新しいHoudini Engineセッションを開始します。

StopSession

現在のHoudini Engineセッションを停止します。

RestartSession

停止して、新しいHoudini Engineセッションを開始します。

InstantiateAsset

指定したワールド/レベルでHDAをインスタンス化します。インスタンス化されたアセットのラッパーを返します。HDAをインスタンス化するを参照してください。

IsAssetCookingPaused

アセットのクックが停止中の場合、Trueを返します。

PauseAssetCooking

アセットのクックを停止します(まだ停止していない場合)。

ResumeAssetCooking

アセットのクックを再開します(停止されていた場合)。

CreateEmptyInput

新しい空っぽのAPI入力オブジェクトを作成します。ユーザはこれに入力を追加して、アセットラッパーの入力として設定する必要があります。入力を参照してください。

HDAをインスタンス化する

InstantiateAsset関数は、インスタンス化されたHDAとやり取りするためのAPIラッパークラス(UHoudiniPublicAPIAssetWrapper)を返します。

Warning

Public APIは、InstantiateAssetで作成後のUHoudiniPublicAPIAssetWrapperのライフサイクルを管理しません。 UPropertyまたはブループリント変数を使用して、予期せぬラッパーのガーベジコレクションを防ぎます。

コマンド

機能

InHoudiniAsset

インスタンス化するHDA uasset

InInstantiateAt

HDAアクターをインスタンス化するトランスフォーム

InWorldContextObject

InSpawnInLevelOverrideがNullの場合、生成するワールドを識別するためのワールドコンテキストオブジェクト

InSpawnInLevelOverride

nullptrでない場合、そのレベルにAHoudiniAssetActorが生成されます。InSpawnInLevelOverrideInWorldContextObjectの両方がNullの場合、現在のエディタのコンテキストワールドの現行レベルにアクターが生成されます。

bInEnableAutoCook

Trueの場合(デフォルト)、インスタンス化後と、パラメータ、トランスフォーム、入力の変更後に、HDAが自動的にクックされます。

bInEnableAutoBake

Trueの場合、クック後にHDA出力が自動的にベイクされます。デフォルトはFalseです。

InBakeDirectoryPath

HDA出力のアトリビュートにベイクパスが設定されていなかった場合にベイク先となるディレクトリ

InBakeMethod

ベイクターゲット(アクターvsブループリントへ)

bInRemoveOutputAfterBake

Trueの場合、HDA一時出力はベイク後に削除されます。デフォルトはFalseです。

bInRecenterBakedActors

ベイクされたアクターの中心を境界ボックスの中心に変更します。デフォルトはFalseです。

bInReplacePreviousBake

Trueの場合、すべてのベイクで、以前のベイクの出力(アセットとアクター)を新しいベイクの出力に置き換えます。デフォルトはFalseです。

Public API Asset Wrapper

APIは、インスタンス化されたHDAをUHoudiniPublicAPIAssetWrapperのインスタンスにラップします。 このクラスを使用すると、パラメータや入力の設定、出力のクック、ベイク、アクセスを行なうことで、インスタンス化されたHDAを操作することができます。

既存のHDAアクターのラッパーを作成する

HDAのインスタンス化セクションでは、新しいHDAをインスタンス化し、UHoudiniPublicAPIAssetWrapperを返すInstantiateAsset関数について説明しましたが、既存のHDAアクター/コンポーネントのラッパーを作成することもできます。 UHoudiniPublicAPIAssetWrapperCreateWrapper静的関数(Editor Utility BlueprintでもCreate Wrapperとして利用可能)は、既存のHDAアクターまたはコンポーネントを引数として受け取り、指定したHDAアクター/コンポーネントをラップするUHoudiniPublicAPIAssetWrapperを作成および返します。

または、CreateEmptyWrapper関数を使用して、HDAアクター/コンポーネントを最初はラップしないUHoudiniPublicAPIAssetWrapperを作成することも可能です。 その後、UHoudiniPublicAPIAssetWrapperWrapHoudiniAssetObject関数を使用して、既存のHDAアクター/コンポーネントをラッパーでラップできます。

Warning

Public APIは、CreateEmptyWrapperまたはCreateWrapperで作成後のUHoudiniPublicAPIAssetWrapperのライフサイクルを管理しません。 UPropertyまたはブループリント変数を使用して、予期せぬラッパーのガーベジコレクションを防ぎます。

デリゲート

多くの場合、プラグインはHoudini Engineと非同期でやり取りします。 つまり、操作が完了した後にコールバックを受け取るには、デリゲートをバインドする必要があります。

例えば、パラメータを変更したい場合、ノードをクックしてから、出力を取得します。 プロセスが完了した後でコールバックを受け取るには、適切なデリゲートをバインドする必要があります。

コマンド

機能

OnPostInstantiationDelegate

HDAがインスタンス化される前にブロードキャストします。HDAのデフォルトパラメータを使用して、設定することができます。

OnPostInstantiationDelegate

アセットが正常にインスタンス化された後にブロードキャストします。最初のクック前に入力を設定/構成することをお勧めします。

OnPostCookDelegate

クックが完了した後にブロードキャストします。まだ作成または更新されていないオブジェクト/アセットを出力します。

OnPreProcessStateExitedDelegate

前処理の段階の最後(クック後)にブロードキャストします。まだ作成または更新されていないオブジェクト/アセットを出力します。

OnPostProcessingDelegate

Unrealで出力処理後にブロードキャストします。まだ作成または更新されていないオブジェクト/アセットを出力します。

OnPostBakeDelegate

アセットをベイクした後にブロードキャストします(コンテンツブラウザにベイクされた個々の出力にはコールされません)。

OnPostPDGTOPNetworkCookDelegate

TOPネットワークのクックが完了した後にブロードキャストします。ワークアイテムの結果は必ずしもロードする必要はありません。

OnPostPDGBakeDelegate

PDG出力をベイクした後にブロードキャストします(コンテンツブラウザにベイクされた個々の出力にはコールされません)。

OnProxyMeshesRefinedDelegate

このラップされたアセットのすべてのプロキシメッシュを微調整した後にブロードキャストします。

Note

ブループリントでは、Public APIはEditor Utility Graphでのみ利用可能です。 デリゲートにバインドされたブループリントのイベントや関数では、 Call In Editor を有効にする必要があります。 そうしないと、デリゲートのブロードキャスト時、イベント/関数が実行されません。

パラメータ

以下の関数を使用して、名前付きパラメータタプルのパラメータ値を設定および取得することができます。 パラメータタプル名は必須の引数で、タプルのパラメータのインデックスは任意です(デフォルトは0)。

コマンド

機能

SetFloatParameterValue

floatパラメータ値を設定します。

GetFloatParameterValue

floatパラメータ値を取得します。

SetColorParameterValue

floatパラメータ値を設定します。

GetColorParameterValue

floatパラメータ値を取得します。

SetIntParameterValue

integerパラメータ値を設定します。

GetIntParameterValue

integerパラメータ値を取得します。

SetBoolParameterValue

ブーリアン/トグルパラメータ値を設定します。

GetBoolParameterValue

ブーリアン/トグルパラメータ値を取得します。

SetStringParameterValue

文字列パラメータ値を設定します。

GetStringParameterValue

文字列パラメータ値を取得します。

SetAssetRefParameterValue

UObjectからアセットリファレンスとして文字列パラメータ値を設定します。

GetAssetRefParameterValue

文字列パラメータによって参照されたUObjectインスタンスを取得します。

TriggerButtonParameter

ボタンパラメータのコールバックスクリプトを実行します。

GetParameterTuples

すべてのパラメータタプルの値を構造体の配列として取得します。

SetParameterTuples

指定した構造体の配列にパラメータタプルの値を設定します。

以下の関数によって、ランプパラメータの取り扱いを簡素化することができます:

コマンド

機能

SetRampParameterNumPoints

ランプパラメータのポイントの数を設定します。

GetRampParameterNumPoints

ランプパラメータのポイントの数を取得します。

SetFloatRampParameterPointValue

インデックスで浮動小数点ランプのポイントの位置、値、補間を設定します。

GetFloatRampParameterPointValue

インデックスで浮動小数点ランプのポイントの位置、値、補間を取得します。

SetFloatRampParameterPoints

配列から浮動小数点ランプパラメータのすべてのポイントを設定します。

GetFloatRampParameterPoints

浮動小数点ランプパラメータのすべてのポイントを配列として取得します。

SetColorRampParameterPointValue

インデックスでカラーランプのポイントの位置、値、補間を設定します。

GetColorRampParameterPointValue

インデックスでカラーランプのポイントの位置、値、補間を取得します。

SetColorRampParameterPoints

配列からカラーランプパラメータのすべてのポイントを設定します。

GetColorRampParameterPoints

カラーランプパラメータのすべてのポイントを配列として取得します。

入力

APIラッパークラスでは入力のタイプがサポートされています。

ラップされ、インスタンス化されたHDAに入力を設定するには、適切な入力クラスをインスタンス化してから、入力オブジェクトを設定し、設定を行なう必要があります。 UHoudiniPublicAPIAssetWrapper::CreateEmptyInput()関数を使用することで、入力をインスタンス化することができます。 この関数は、入力のクラスを唯一の引数として受け取ります。

コマンド

機能

UHoudiniPublicAPIInput

入力の基本クラス。新しい入力タイプのサブクラスを作成するときのみ使用します。

UHoudiniPublicAPIGeoInput

ジオメトリ入力

UHoudiniPublicAPICurveInput

カーブ入力

UHoudiniPublicAPIAssetInput

アセット入力(入力として別のインスタンス化されたアセットを使用)

UHoudiniPublicAPIWorldInput

ワールド入力(入力としてワールドからアクターを使用)

UHoudiniPublicAPILandscapeInput

入力としてのランドスケープ

GetInputAtIndex()

ラップされたアセットの既存のノード入力を取得します。

GetInputParameter()

ラップされたアセットの既存のパラメータベースの入力を取得します。

SetInputAtIndex()

ノード入力を設定します。

SetInputParameter()

パラメータベースの入力を設定します。

Note

GetInputAtIndex()およびGetInputParameter()関数は、ラップされたアセットの入力設定のコピーを返します。プロパティまたは入力オブジェクトを変更しても、ラップされたアセットの入力は自動的に更新されません。変更を適用するには、SetInputAtIndex()またはSetInputParameter()を使用して、入力を再度設定する必要があります。

カーブ入力

カーブ入力には、ポイントからカーブを構築する追加のヘルパークラスのUHoudiniPublicAPICurveInputObjectがあります。 オブジェクトには、カーブポイントを設定または追加する関数があり、各ポイントはFTransformで表現されます。

コマンド

機能

SetCurvePoints

カーブポイントをFTransformの指定した配列に設定します。

AppendCurvePoint

ポイントをFTransformとしてカーブに追加します。

ClearCurvePoints

カーブからすべてのポイントを削除します。

GetCurvePoints

カーブのポイントをFTransformの配列として取得します。

UHoudiniPublicAPICurveInputObjectと以下の関数を使用することで、NURBSカーブ、Bezierカーブ、開いたカーブ、閉じたカーブなどのカーブプロパティを設定することもできます:

コマンド

機能

IsClosed

カーブが閉じている場合、Trueを返します。

SetClosed

閉じたカーブとして設定します。

IsReversed

カーブが逆になっている場合、Trueを返します。

SetReversed

逆のカーブとして設定します。

GetCurveType

enum(ポリゴン、NURBS、Bezier、ポイント)として、カーブタイプを取得します: EHoudiniPublicAPICurveType

SetCurveType

EHoudiniPublicAPICurveType enumを使用してカーブタイプを設定します。

GetCurveMethod

enum(CV、ブレークポイント、フリーハンド)としてカーブメソッドを取得します: EHoudiniPublicAPICurveMethod

SetCurveMethod

enum EHoudiniPublicAPICurveMethodを使用してカーブメソッドを設定します。

出力

UHoudiniPublicAPIAssetWrapperクラスには、クック後にHDAの出力にアクセスする関数が備わっています:

コマンド

機能

GetNumOutputs

HDAの出力の数を返します。

GetOutputTypeAt

指定した出力インデックスの出力のタイプ(EHoudiniOutputType: メッシュ、インスタンサー、ランドスケープ、カーブ、スケルタル)を返します。

GetOutputIdentifiersAt

指定した出力インデックスのFHoudiniPublicAPIOutputObjectIdentifierの配列を埋めます。これらは、指定したインデックスの出力の個々のオブジェクトを識別します。例えば、レンダリングされた静的メッシュとその干渉メッシュです。

GetOutputObjectAt

FHoudiniPublicAPIOutputObjectIdentifierで識別された、指定された出力インデックスの出力オブジェクトを返します。例えば、UStaticMeshです。

GetOutputComponentAt

FHoudiniPublicAPIOutputObjectIdentifierで識別された、指定された出力インデックスの出力コンポーネントを返します。例えば、UStaticMeshComponentです。

HasAnyCurrentProxyOutput

現行のプロキシメッシュを含む出力がある場合、Trueを返します。

HasAnyCurrentProxyOutputAt

出力が指定されたインデックスの場合、Trueを返します。

IsOutputCurrentProxyAt

指定されたインデックスと識別子の出力が現行プロキシの場合、Trueを返します。

出力をベイクする

UHoudiniPublicAPIAssetWrapperクラスも、出力のベイクをサポートしています。

ベイクする方法は3通りあります:

  1. 自動ベイクを有効にします。これは、クック後に出力を自動的にベイクし、インスタンス化されたHDAに設定されているベイク設定を使用します。

  2. HDAのすべての出力を手動でベイクします。

  3. 出力インデックスおよび識別子によって識別された特定の出力オブジェクトのみベイクします。

コマンド

機能

SetAutoBakeEnabled

正常なクック後の自動ベイクを有効/無効にします。

IsAutoBakeEnabled

自動ベイクが有効な場合、Trueを返します。

自動クックは、クック後に出力を自動的にベイクし、インスタンス化されたHDAに設定されているベイク設定を使用します。

これらの設定は、以下を使用して照会または設定することができます。

コマンド

機能

SetBakeMethod

ベイクメソッド(アクター、ブループリント、フォリッジいずれかにベイク)を設定します。

GetBakeMethod

ベイクメソッドを取得します。

SetRemoveOutputAfterBake

ベイク後、ワールドからの一時HDA出力の自動削除を有効/無効にします。

GetRemoveOutputAfterBake

ベイク後に一時HDA出力がワールドから削除される場合、Trueを返します。

SetRecenterBakedActors

ベイクされた出力アクターの中心を境界ボックスの中心へと変更することを有効/無効にします。

GetRecenterBakedActors

中心の変更が有効な場合、Trueを返します。

SetReplacePreviousBake

ベイク置換モードを有効/無効にします。有効な場合、以前のベイクのアセットとアクターが置き換えられます(名前が一致する場合)。

GetReplacePreviousBake

置換モードが有効な場合、Trueを返します。

HDAのすべての出力を手動でベイクします:

コマンド

機能

BakeAllOutputs

ラッパーを使って構成した設定で、すべての出力をベイクします。

BakeAllOutputsWithSettings

すべての出力をベイクしますが、ベイク設定が関数に渡され、ラッパーで構成された設定を上書きします。

出力インデックスおよび識別子によって識別された、特定の出力オブジェクトのみベイクします。

コマンド

機能

BakeOutputObjectAt

出力インデックスおよび識別子によって指定された出力オブジェクトをベイクします。

ブループリント非同期プロセッサ

HDAのインスタンス化およびクックは、プラグイン内で非同期に実行されます。 デリゲートは、HDAプロセスが特定のフェーズに入ったり、クックが完了するタイミングを通知するのに役立ちます。 これは、APIを使用してスクリプトやツールを記述しながら、手動でデリゲートのバインドやバインド解除を行なう必要があることを意味します。 ブループリントではこれを簡素化するために、APIにはBlueprint Async Actionノード(UHoudiniPublicAPIProcessHDANodeまたはProcessHDA)も含まれています。

ProcessHDAノードには、UHoudiniPublicAPI::InstantiateAsset()関数のすべてのオプションと、以下のような役立つ機能があります:

  • FNameからFHoudiniParameterTupleへのマップを受け取って、デリゲートに手動でバインドすることなくパラメータを設定できます。

  • int32からUHoudiniPublicAPIInputへのマップを受け取って、デリゲートに手動でバインドすることなくインデックスベースのノード入力を設定できます。

  • FNameからUHoudiniPublicAPIInputへのマップを受け取って、デリゲートに手動でバインドすることなくパラメータベースの入力を設定できます。

  • OnPreInstantiateDelegateOnPostInstantiateDelegateOnPostProcessDelegateといった様々なデリゲートにバインドされた出力ピン付きのレイテントノードを使用すると、カスタムロジックを簡単にこれらのイベントにバインドできます。

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()

PDG/TOPネットワーク

Public APIは、HDAに1つまたは複数のTOPネットワークが含まれている場合、PDG Asset Linkとのやり取りをサポートします。

PDG関連のイベントには2つのデリゲートがあります:

コマンド

機能

GetOnPostPDGTOPNetworkCookDelegate()

HDAのTOPネットワークをクックした後にブロードキャストします。ワークアイテムの結果はまだロードする必要はありません。

GetOnPostPDGBakeDelegate()

PDG出力をベイクした後にブロードキャストします。

以下の関数は、PDG Asset Linkとやり取りするためのUHoudiniPublicAPIAssetWrapperで利用可能です:

コマンド

機能

HasPDGAssetLink()

ラップされたアセットが有効で、PDG Asset Linkがある場合、Trueを返します。

GetPDGTOPNetworkPaths()

HDAのすべてのTOPネットワークのパス(インスタンス化されたアセットを基準にした相対パス)を取得します。

GetPDGTOPNodePaths()

ネットワークのすべてのTOPノードのパス(指定されたTOPネットワークを基準にした相対パス)を取得します。

PDGDirtyAllNetworks()

このアセットのすべてのTOPネットワークをDirty化(変更あり)します。

PDGDirtyNetwork()

指定したTOPネットワークをDirty化(変更あり)します。

PDGDirtyNode()

指定したTOPノードをDirty化(変更あり)します。

PDGCookOutputsForNetwork()

指定したTOPネットワークのすべての出力をクックします。

PDGCookNode()

指定したTOPノードをクックします。

PDGBakeAllOutputs()

アセットの設定を使用して、インスタンス化したアセットのPDGコンテキストのすべての出力をベイクします。

PDGBakeAllOutputsWithSettings()

指定した設定を使用して、インスタンス化したアセットのPDGコンテキストのすべての出力をベイクします。

SetPDGAutoBakeEnabled()

PDGワークアイテムを正常にロードした後、それらを自動的にベイクするかどうかを設定します。

IsPDGAutoBakeEnabled()

PDG自動ベイクが有効な場合、Trueを返します。

SetPDGBakeMethod()

PDGベイクに使用するベイクメソッド(アクター、ブループリント、フォリッジへのいずれか)を設定します。

GetPDGBakeMethod()

PDGベイクに使用するように現在設定されているベイクメソッド(アクター、ブループリント、フォリッジへのいずれか)を取得します。

SetPDGBakeSelection()

PDG向けにベイクする出力を設定します。例えば、すべて、選択したネットワーク、選択したノードなどです。

GetPDGBakeSelection()

PDG向けにベイクする出力を取得します。例えば、すべて、選択したネットワーク、選択したノードなどです。

SetPDGRecenterBakedActors()

PDG Asset LinkでのPDGベイクの後、ベイクされたアクターの中心を境界ボックスの中心に変更するかどうかを決定します。

GetPDGRecenterBakedActors()

PDG Asset LinkでのPDGベイクの後、ベイクされたアクターの中心を境界ボックスの中心に変更する場合、Trueを返します。

SetPDGBakingReplacementMode()

PDGベイクに使用する置換モードを設定します(以前のベイク出力を置き換えるvs出力名をインクリメント)

GetPDGBakingReplacementMode()

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++サンプルには以下のようなものがあります:

コマンド

機能

CurveInputExample.hCurveInputExample.cpp

APIを使用してHDAをインスタンス化する ACurveInputExample

利用可能なブループリントのサンプルには以下のようなものがあります:

コマンド

機能

EUA_CurveInputExample

APIを使用してHDAをインスタンス化するのブループリントサンプル

EUW_APIExample

インスタンス化とHDAおよび設定パラメータの様々なオプションを含む、サンプルのEditor Utility Widget

利用可能なPythonサンプルには以下のようなものがあります:

コマンド

機能

asset_input_example.py

アセット入力を使用したサンプルスクリプト

bake_all_outputs_example.py

クック後にHDAのすべての出力をベイクするサンプルスクリプト

bake_output_object_example.py

クック後に、指定した出力オブジェクトをコンテンツブラウザにベイクするサンプルスクリプト

curve_input_example.py

入力カーブを使用したAPIを使用してHDAをインスタンス化するによく似たサンプル

eua_curve_input_example.py

APIを使用してHDAをインスタンス化するのサンプルPythonスクリプト

geo_input_example.py

ジオメトリ入力を使用したサンプルスクリプト

instances_example.py

パラメータを設定し、インスタンス付きのHDAを出力としてクックします。

landscape_input_example.py

ランドスケープ入力を使用します。

outputs_example.py

HDAをクックした後、出力を反復します。

pdg_example.py

PDG出力をクックおよびベイクします。

process_hda_example.py

ProcessHDAクラスを使用して、デリゲート処理を簡素化します。

ramp_parameter_example.py

APIでヘルパー関数を使用して、ランプパラメータポイントを設定します。

start_session_example.py

Houdini Engineセッションを開始する簡単なサンプル

world_input_example.py

ワールド入力を使用します。

エラーメッセージ

Public APIでよくあるエラーは、関数が成功か失敗かを示すブーリアンを返すことです。 エラーが発生した場合は、GetLastErrorMessage()関数を使用すると直近のエラーメッセージを取得することができます。

これは、UHoudiniPublicAPIUHoudiniPublicAPIAssetWrapperなどのUHoudiniPublicAPIObjectBaseから派生した任意のクラスや、UHoudiniPublicAPIInputUHoudiniPublicAPICurveInputObjectから派生した入力クラスで利用できます。

Unreal

はじめよう

基本

Houdini Engineを使用する

リファレンス

Houdini Engine for Unreal Engineは、HoudiniのテクノロジーをUnrealに統合できるプラグインです。 Session SyncとNode Syncは、Houdiniのライブセッションと相互作用するためのHoudini Engineプラグインの2つの機能です。

このプラグインを使用すると、Houdiniの強力かつ柔軟なプロシージャルワークフローを、Houdiniデジタルアセットを通してUnreal Engineで実現できます。 アーティストはエディタ内でアセットパラメータをインタラクティブに調整して、Unrealアセットを入力として使用することができます。 その後、Houdiniのプロシージャルエンジンがアセットを“クック”し、その結果をエディタで使用できるようになります。ベイクする必要はありません。

一般情報:

互換性:

現在のところ、プラグインにはUE5.3、5.2、5.1、5.0、UE4.27、UE4.26向けにビルドされたバイナリがあり、Houdiniの最新のプロダクションビルドにリンクされています。

プラグインのソースコードは、UE5.3、5.2、5.1、5.0、UE4.27、UE4.26のこのリポジトリで利用可能です。

Note

UE5.1およびUE5.0は、同じソースファイル/ブランチを使用し、5.0ソースは5.1でも使用できるようになっています。

サポートおよびバグのレポート:

便利なリンク:

SessionSync

Houdini Engine SessionSync機能を使用すると、GUIを使ってHoudini内で実行されているHoudini Engineのセッションに接続することができます。 通常のHoudini Engineワークフローのすべての機能と、Session Sync固有の追加機能をサポートしています。

Houdini Engineは非UIバージョンのHoudiniを使用しますが、Session SyncではHoudiniのユーザインターフェースを通してHoudiniセッションを確認したり、操作することができます。 また、UnrealやHoudiniで加えた変更は同期されるため、どちらのプログラムでも変更を加えても、同じ結果が得られます。

NodeSync

NodeSyncは、UnrealとHoudini Session Sync間のアセット共有を可能にする、Houdini Engine for Unrealプラグインの機能です。スケルタルメッシュとスタティックメッシュで機能します。

専用のHDAを使用することなく、Unrealにデータを送信したり、Unrealからデータを受信することができます。アクターに加えて、スタティックメッシュやスケルタルメッシュでも機能します。

Houdini Niagara

Houdini-Niagaraプラグインを使用すると、HoudiniNiagara Data Interfaceを使用して、HoudiniとUnrealのNiagaraシステム間でポイントクラウドデータを交換することができます。 Houdiniのアトリビュートデータを、HoudiniPointCacheアセットとしてエクスポートできます。 これらをUnrealにインポートし、Niagaraシステムとエミッターを使用して、複雑なエフェクトやパーティクルシステムを作成できます。