On this page

MaxScript

Houdini Engine for 3ds Maxプラグインは、MaxScriptによる基本的なスクリプト機能に対応しています。 スクリプト機能を使用すると、HDAの作成、パラメータ値の変更、HDAのクックができます。

MaxScript関数

メソッド

成功した場合の戻り値

失敗した場合の戻り値

説明

CreateSession <>

True

False

これは、プロセス外のHARS Thrift名前付きパイプシンクライアントを起動し、そのシンクライアントを使用してセッションを作成します。

CloseSession <>

True

アクティブなセッションがある場合、そのセッションを終了します。

IsSessionActive <>

Bool(True/False)

このメソッドは、Houdini Engineセッションがアクティブの場合はTrueを返し、そうでない場合はFalseを返します。

IsHdaLoaded <HdaPath::Required>

Bool(True/False)

このメソッドはHDAがロードされているかどうかをチェックし、ロードされている場合はTrueを返し、そうでない場合はFalseを返します。HDAはファイルパスで識別されます。

LoadHda<HdaPath::Required>

True

False

これはHDAをロードします。アセットが正常にロードされたらTrueを返し、そうでない場合はFalseを返します。

CreateGeometryHda <PathToHda::required> <AssetIndex::default=0>

INode

未定義

指定したアセット(デフォルトでは0)を使用して、指定したHDAからシーン内にジオメトリオブジェクトHDAを作成します。成功すると、トップレベルのコンテナINode(ダミーオブジェクトを含む)を返します。失敗すると、未定義の値を返します。

CreateModifierHda <INode::required> <PathToHda::required> <AssetIndex::default=0>

True

False

指定したアセット(デフォルトでは0)を使用して、指定したHDAから指定したノード上にモディファイアHDAを作成します。成功すると、作成されたモディファイアを返します。失敗すると、未定義の値を返します。

CookHda <INode::required>

True

False

ジオメトリHDAをクックします。このメソッドには、ジオメトリHDAのコンテナノード(ダミーオブジェクトを含むINode)を渡す必要があります。

CookHda<INode::required> <Modifier::required>

True

False

モディファイアHDAをクックします。このメソッドには、クックするHDAを特定するために、INodeとモディファイアを渡す必要があります。

DeleteHda <INode::required>

True

ジオメトリHDAのコンテナノードが渡された場合、このメソッドはシーンから完全にHDAを削除します。HDAが見つからない場合、このメソッドはRuntimeError例外を投げます。

DeleteHda <INode::required> <Modifier::required>

True

モディファイアHDAとそれが属するノードが渡された場合、このメソッドはノードのモディファイアスタックからHDAを削除します。HDAが見つからない場合、このメソッドはRuntimeError例外を投げます。

GetGeometryHdas <>

Array <MAXNode>

シーン内のすべてのジオメトリHDAのコンテナノードのリストを返します。

GetHdaType<INode::required>

Name

ジオメトリHDAのコンテナノードが渡された場合、このメソッドはHDAタイプを返します。HDAが見つからない場合、このメソッドはRuntimeError例外を投げます。

GetHdaType<INode::required> <Modifier::required>

Name

モディファイアHDAとそれが属するノードが渡された場合、このメソッドはHDAタイプを返します。HDAが見つからない場合、このメソッドはRuntimeError例外を投げます。

GetHdaParameterValue <INode::required> <Parameter Name::required> <Index::required>

float, integer, string, MAXNode

False

このメソッドは、ジオメトリHDAからパラメータの値を取得します。インデックス引数で、取得する値のタプルインデックスを指定する必要があります。このメソッドはパラメータのタイプに応じて、float値、integer値、string値、またはMAXNode値を返します。

GetHdaParameterValue <INode::required> <Modifier::required> <Parameter Name::required> <Index::required>

float, integer, string, MAXNode

SetGeometryHdaParameter <INode::required> <ParameterName::required> <ListOfValues::required>

True

False

この関数は、ノード名とパラメータ名で指定したジオメトリHDAのパラメータを更新します。ListOfValuesで、パラメータの値を指定します。このリストで指定した値は、すべて同じタイプでなければなりません(位置パラメータに3つのfloat値など)。このメソッドは、成功するとTrueを返し、何か問題が発生して処理が失敗するとFalseを返します。

SetModifierHdaParameter <INode::required> <Modifier::required> <ParameterName::required> <ListOfValues::required>

True

False

この関数は、ノード名、モディファイア名、パラメータ名で指定したモディファイアHDAのパラメータを更新します。ListOfValuesで、パラメータの値を指定します。このリストで指定した値は、すべて同じタイプでなければなりません(回転パラメータに3つのfloat値など)。このメソッドは、成功するとTrueを返し、何か問題が発生して処理が失敗するとFalseを返します。

BakeHda <INode::required>

INode

未定義

このメソッドはジオメトリHDAをベイクします。このメソッドには、ジオメトリHDAのコンテナノード(ダミーオブジェクトを含むINode)を渡す必要があります。成功すると、ベイクされたジオメトリのコンテナノード(ダミーオブジェクトを含むノード)を返します。失敗すると、未定義の値を返します。

CopyModifierHda <SourceINode::required> <SourceModifier::required> <DestinationINode::required>

モディファイア

未定義

モディファイアHDAとそのすべてのパラメータ値を別のノードにコピーします。成功すると、作成されたモディファイアを返します。失敗すると、未定義の値を返します。

CloneObjectHda <INode::required>

INode

未定義

指定したオブジェクトHDAおよびそのすべてのパラメータ値のクローンを作成します。この関数に渡されるINodeは、子ノードではなく、オブジェクトHDAのトップレベルのノードでなければなりません。成功すると、クローンを作成されたオブジェクトHDAのトップレベルのコンテナINode(ダミーオブジェクトを含む)を返します。失敗すると、未定義の値を返します。

GetListOfGeometryHdaParameters <INode::required>

Array <Name>

未定義

これは、ジオメトリHDAのすべのパラメータ名のリストを返します。この関数には、HDAのトップレベルのコンテナノード(ダミーオブジェクトを含むINode)を渡す必要があります。成功すると、HDAのパラメータ名の配列を返します。失敗すると、未定義の値を返します。

GetListOfModifierHdaParameters <INode::required> <Modifier::required>

Array <Name>

未定義

これは、モディファイアHDAのすべのパラメータ名のリストを返します。この関数には、HDAを識別するためのINodeとモディファイアを渡す必要があります。成功すると、HDAのパラメータ名の配列を返します。失敗すると、未定義の値を返します。

SetGeometryHdaInput <INode::required> <Integer::required> <INode/undefined::required>

True

False

このメソッドでは、ジオメトリHDAにサブネットワーク入力を設定できます。1つ目の引数には、ジオメトリHDAのコンテナノード(ダミーオブジェクトを含むINode)を指定します。2つ目の引数には、サブネットワークのインデックス(0ベース)を指定します。3つ目の引数には、入力として使用するジオメトリのINodeを指定します。INodeではなく未定の値が渡された場合、このメソッドは入力を削除します。

SetModifierHdaInput <INode::required> <Modifier::required> <Integer::required> <INode/undefined::required>

True

False

このメソッドでは、モディファイアHDAにサブネットワーク入力を設定できます。1つ目の引数には、モディファイアのINodeを指定し、2つ目の引数にはモディファイアそのものを指定します。3つ目の引数には、サブネットワークのインデックス(0ベース)を指定します。4つ目の引数には、入力として使用するジオメトリのINodeを指定します。INodeではなく未定の値が渡された場合、このメソッドは入力を削除します。

SetGeometryHdaOpParmInput <INode::required> <String::required> <INode/undefined::required>

True

False

このメソッドでは、ジオメトリHDAにオペレータパスパラメータ入力を設定できます。1つ目の引数には、ジオメトリHDAのコンテナノード(ダミーオブジェクトを含むINode)を指定します。2つ目の引数には、オペレータパスパラメータの名前を指定します。3つ目の引数には、入力として使用するジオメトリのINodeを指定します。INodeではなく未定の値が渡された場合、このメソッドは入力を削除します。

SetModifierHdaOpParmInput <INode::required> <Modifier::required> <String::required> <INode/undefined::required>

True

False

このメソッドでは、モディファイアHDAにオペレータパスパラメータ入力を設定できます。1つ目の引数には、モディファイアのINodeを指定し、2つ目の引数にはモディファイアそのものを指定します。3つ目の引数には、オペレータパスパラメータの名前を指定します。4つ目の引数には、入力として使用するジオメトリのINodeを指定します。INodeではなく未定の値が渡された場合、このメソッドは入力を削除します。

SetGeometryHdaAutoRecookingEnabled <INode::required> <boolean::required>

True

False

ジオメトリHDAの自動再クックが有効がどうかを設定します。自動再クックが有効な場合、パラメータ値が変更されるたびにノードが自動的にクックします。

SetModifierHdaAutoRecookingEnabled <INode::required> <Modifier::required> <boolean::required>

True

False

モディファイアHDAの自動再クックが有効がどうかを設定します。自動再クックが有効な場合、パラメータ値が変更されるたびにノードが自動的にクックします。

SetHdaSelectionLocked <boolean::required>

True

Trueが渡され、HDAが選択されている場合、パラメータユーザインターフェースを現在のHDA選択にロックします。Falseが渡された場合、パラメータユーザインターフェースの選択をロック解除します。

GetHoudiniEngineOption <String::required: Option Name>

String, Boolean, Integer

False

Houdini Engineオプションの値を取得します。渡される名前は、ここにリストされた設定のいずれかでなければなりません。このメソッドは、オプションのタイプに応じてstring値、boolean値、またはinteger値を返します。

SetHoudiniEngineOption <String::required: Option Name> <*::required: Option Value>

True

このメソッドは、Houdini Engineオプションを設定します。渡される名前は、ここにリストされた設定のいずれかでなければなりません。2つ目の引数には、オプションのタイプに合わせてstring値、boolean値、またはinteger値を指定します。

GetHoudiniVersion <>

Array <String>

Houdiniバージョン(メジャー、マイナー、ビルド番号)を含む配列を返します。

サンプル

floatパラメータおよびfloatベクトルパラメータを設定する

LoadHda "C:/Assets/sample.hda"
myHda = CreateGeometryHda "C:/Assets/sample.hda"
SetGeometryHdaParameter myHda "singlefloat" 5.5
SetGeometryHdaParameter myHda "floatvec" 2.2 3.3 4.4

integerパラメータおよびintegerベクトルパラメータを設定する

LoadHda "C:/Assets/sample.hda"
myHda = CreateGeometryHda "C:/Assets/sample.hda"
SetGeometryHdaParameter myHda "singleinteger" 2
SetGeometryHdaParameter myHda "integervec" 3 4 5

stringパラメータを設定する

LoadHda "C:/Assets/sample.hda"
myHda = CreateGeometryHda "C:/Assets/sample.hda"
SetGeometryHdaParameter myHda "singlestring" "Hello, world!"

モディファイアおよびジオメトリHDAを作成し、integerパラメータを設定して、HDAをクックする

CreateModifierHda $Teapot001 "C:/Program Files/Autodesk/3ds Max 2018/Plugins/MountainModifierHDA.hda" 0
SetModifierHdaParameter $Teapot001 $Teapot001.MountainModifier "height" 5

CreateGeometryHda "C:/Program Files/Autodesk/3ds Max 2018/Plugins/SideFX_spaceship.otl" 0
SetGeometryHdaParameter $spaceship1 "smoothness" 1

CookHda $Teapot001 $Teapot001.MountainModifier
CookHda $spaceship1

セッションを作成し、ジオメトリHDAを作成して、HDAをベイクする

CreateSession()
LoadHda "C:/Assets/spaceship.hda"
geoHda = CreateGeometryHda "C:/Assets/spaceship.hda"
BakeHda geoHda

HDAの入力を設定する

mountainHda = CreateGeometryHda "C:/Assets/mountain.hda"
SetGeometryHdaInput mountainHda 0 $Teapot001  

オペレータパスパラメータを設定する

booleanHda = CreateModifierHda $Sphere001 "C:/Assets/boolean.hda"
SetModifierHdaOpParmInput $Sphere001 booleanHda "objpath1" $Box001  

マルチパラメータの長さを設定し、インスタンスパラメータ値を設定する

myHda = CreateGeometryHda "C:/Assets/multiparm_test.hda"
SetGeometryHdaParameter myHda "integer_list" 3
SetGeometryHdaParameter myHda "my_int_parm_1" 1
SetGeometryHdaParameter myHda "my_int_parm_2" 2
SetGeometryHdaParameter myHda "my_int_parm_3" 3    

Python

MaxScriptはPythonスクリプトから実行できるため、プラグインのMaxScript APIもPython経由で使用することができます。PythonスクリプトからMaxScript関数を実行する方法の例を以下に示します。

import MaxPlus
MaxPlus.Core.EvalMAXScript("CreateGeometryHda #'C:/Program Files/Autodesk/3ds Max 2018/Plugins/SideFX_spaceship.otl' 0")

Houdini Engine for 3ds Max

はじめよう

Houdini Engineを使用する

リファレンス