Houdini 20.0 Maya

パラメータ

On this page

Houdiniアセット上に露出されたアセットパラメータは、houdiniAssetノード上ではMayaノードアトリビュートとして表現されます。 それらのパラメータは、 Mayaのアトリビュートエディタ から制御することができます。 また、アセットパラメータはいつものノードアトリビュートのため、それらのアセットパラメータには組み込みのMayaツールを使用することができます。 例えば、Mayaのアニメーションカーブを使ってそのアセットパラメータを駆動させたり、MELのgetAttrsetAttrからそのアセットパラメータにアクセスすることができます。

Note

InvisibleとしてマークされたパラメータはhoudiniAssetノード上では表現されません。 そのため、そのようなパラメータはMaya内部からアクセス不可です。

Houdiniアセットは、幅広いパラメータタイプとその設定に対応しています。 しかし、これらのパラメータタイプとその設定すべてがプラグイン側で対応しているとは限りません。

Disable WhenHide Whenなどの動的オプションは対応していません。

Basic

Float、Integer、Stringタイプのパラメータが対応しています。 タプルも対応しています。 FloatタイプとIntegerタイプのパラメータでは、範囲とその範囲ロックにも対応しています。

Note

指数値を持つFloatおよびIntegerパラメータは、通常のFloatおよびIntegerパラメータとして扱われます。 そのため、そのパラメータのUIスライダは指数用ではなく線形になります。

Colorパラメータに対応しており、標準のMayaカラーウィジェットがアトリビュートエディタに表示されます。 しかし、ColorおよびAlphaパラメータにはカラーウィジェットはなく、4タプルの浮動小数点として表示されます。

Toggleパラメータが対応しています。

Stringパラメータでは、Editボタンをクリックすると個別のダイアログが表示され、そこで文字列を編集することができます。 このボタンを使用することで、複数行の文字列を入力することができます。

パラメータにsidefx::maya_component_selection_typeタグを追加すると、そこで指定されたタイプのコンポーネント選択を受け入れるようMayaに指示することができます。 対応しているタイプは、 vertex, edge, face, uv です。 この場合、 Edit ボタンは Use Selected ボタンに置き換わります。

Ramp

Float RampとColor Rampのパラメータが対応しています。

Operator Path

Op FilterAny Object または Any SOP に設定されている場合、Operator Pathパラメータがサポートされます。 これらのパラメータにはMayaジオメトリを接続することができます。 入力と同様に、接続されたMayaジオメトリはHoudini Engineを通して送られ、それをHoudini側で入力ノードとして使用することができます。 その後、入力ノードのパスがそのパラメータに設定されます。 詳細は、入力を参照してください。

Button

Buttonパラメータが対応しており、コールバックスクリプトを設定することができます。 Buttonパラメータは、整数ノードアトリビュートとして表現されます。 このアトリビュートを1に設定することで、ボタンパラメータがクリックできるようになります。 詳細は、コールバックスクリプトを参照してください。

FolderとMultiparm

Folderパラメータが対応しています。 FolderパラメータはCompound(複合)型アトリビュートとして表現され、そのFolderパラメータ内の子パラメータがそのCompound(複合)型アトリビュートの子アトリビュートとして表現されています。

アトリビュートエディタでは、Folderパラメータは折り畳み可能なフレームとして表示されます。 CollapsibleSimpleTabsのタイプのフォルダは、どれも同じように表示されます。 Radio Buttonsタイプのフォルダは対応していません。

折り畳み可能なフレームは、デフォルトでは展開されます。 このフレームはアトリビュートエディタ内で折り畳むことはできますが、その折り畳まれた状態は記憶されないため、アトリビュートエディタを更新すると、すべてのフレームが再び展開されてしまいます。

Multiparm

Multiparmタイプのフォルダが対応しています。 このフォルダはCompound(複合)型マルチパラメータアトリビュートとして表現されます。 アトリビュートエディタでは、マルチパラメータインスタンスを追加/削除することができるカスタムUIと一緒に表示されます。

別のマルチパラメータ内に入れ子化されたマルチパラメータは、現時点では対応していません。

マルチパラメータを使用するにあたり注意点が1つあります。 マルチパラメータのデフォルトのサイズが0の場合、アセットノードが最初にロードされた時、子パラメータはまだMaya側で認識されていません。 つまり、最初のマルチパラメータインスタンスが追加された時、ノードのアトリビュートが同期されるまでは、子パラメータは表示されません。 同様に、マルチパラメータのサイズがゼロに達し、ノードのアトリビュートが同期されると、マルチパラメータの子パラメータはMaya側で認識されなくなります。

コールバックスクリプト

パラメータの変更時にHoudiniでコールバックを実行する

コールバックスクリプトはパラメータ上で設定することができます。

しかし、Mayaがアセットノードを評価するまで、コールバックスクリプトは発動されないことに注意してください。 スクリプトを介してボタンがクリックされた場合、アセットノードを強制的に評価するようにしておくと良いでしょう。 これは、dgevalを介して行なうことができます。 例えば、以下のMELコマンドを使用すると、ボタンパラメータがクリックされ、コールバックスクリプトが発動されます:

setAttr foo1.houdiniAssetParm_parm__button 1;
dgeval foo1.output;    

パラメータのコールバックが他のパラメータを変更する場合、組み込みのsidefx::maya_parm_affects_othersタグを付けることをお勧めします。 これにより、このパラメータが変更された時に各アトリビュートを同期する必要があることがMayaに通知されます。 アセット全体の同期が必要な場合は、パラメータに組み込みのsidefx::maya_parm_syncs_assetタグを付けてください。

パラメータの変更時、Mayaでコールバックを実行する

パラメータが変更されたときにMayaスクリプトをトリガーするには、そのパラメータに組み込みのsidefx::maya_parm_callback_funcタグを定義する必要があります。これにより、パラメータが変更されたときと、呼び出す必要のある関数がMayaに通知されます。MELとPython関数の両方がサポートされていますが、MELがデフォルトです。Python関数を呼び出したい場合は、パラメータに追加で組み込みのsidefx::maya_parm_callback_func_languageタグを含めて、値をpythonに設定する必要があります。

どちらの言語でも、コールバック関数は単一引数を受け取る必要があります。この引数は、コールバックのソースを保持します。例えば、Houdiniアセットfoo1parmパラメータが変更されると、sidefx::maya_parm_callback_funcによって指定されたコールバック関数に“foo1.houdiniAssetParm_parm__button”が渡されます。したがって、コールバック関数は以下のように定義する必要があります。

// MEL
global proc myCallback(string $plug)
{
    print("Caught message from " + $plug + "!\n");
}

# Python
def myCallback(plug):
    print('Caught message from ' + plug + '!')    

この場合、sidefx::maya_parm_callback_funcmyCallbackとして定義され、sidefx::maya_parm_callback_func_languagePythonまたは(オプションで)MELのいずれかとして定義されます。

アニメーションとエクスプレッション

Houdiniアセットのパラメータは、Mayaのアニメーションカーブとエクスプレッションによって制御することができます。 ほとんどの場合、アセットはアニメーションとエクスプレッションに従って正確にクックされます。 しかし、より高度な使用では、以下の理由によって結果が正しくない場合があります。

Houdini Engineは、アセットをクックするときにPushの仕組みを使用します。 アセットがクックされる前、現行時間のパラメータ値がアセットにPushされます。 言い換えると、アセットのクック時、アセットが使用できるのは現行時間のパラメータ値のみです。 実際、アセットの観点からすると、パラメータはまったくアニメーションされていません。 アセットは単にすべてのパラメータ値のスナップショットを取得してクックしただけです。 そのため、アセットが単一の時間サンプルを正確にクックするために、複数の時間サンプルからパラメータ値を必要とする場合は、現在のところHoudini Engineではアセットを適切にクックすることができません。

Houdiniエクスプレッション

文字列パラメータでは、文字列値は実際はHoudiniエクスプレッションとして評価されます。 このため、HoudiniエクスプレッションをMayaのアトリビュートエディタに直接入力することが可能です。 数値パラメータの場合、Mayaのアトリビュートエディタは数値ウィジェットを表示するため、Houdiniエクスプレッションを直接入力することはできません。 数値のHoudiniエクスプレッションが必要な場合、アセットレベルで文字列パラメータを作成して、アセット内の数値コンテキストで文字列パラメータを参照するという方法が考えられます。 これにより、エクスプレッションの結果が数値に変換されます。 ただし、文字列パラメータでは、Mayaのアトリビュートエディタは数値ウィジェットを表示しません。

Maya

はじめよう

入力および出力のジオメトリ

Houdini Engine for Mayaを使用する

リファレンス