Houdini 19.5 ネットワークとパラメータ

ランプパラメータ

ランプパラメータを使ったテクニックの説明。

On this page

ランプパラメータの使い方

HoudiniはRGBカラーランプと浮動小数点(スプライン)ランプをサポートしています。カラーランプは、長さに沿ってカラーを徐々に変化させ、浮動小数点ランプは曲線を描きながら値を変化させていきます。

  • 既存のポイントを選択するには、ランプの下にある矢印のハンドルをクリックします。

  • ランプ領域をクリックすれば、そこに新しいポイントが作成されます。

  • ポイントを選択して削除ボタンをクリックするとポイントが削除されます。

  • ポイントのハンドルを左右にドラッグすると位置を変更することができます。

  • スプラインランプ内で、丸いハンドルを上下にドラッグするとポイントの値が変わります。

  • “Hermite”ランプでは、カーブは 奇数 の制御点を通過してから、 偶数 のポイントが前のポイントの接線を制御します。

  • ランプ下の PositionValue コントロールを使えば、選択したポイントの位置や値を正確に編集することができます。

  • Interpolation ポップアップメニューで、選択したポイントと次のポイント間の値の補間方法を制御します。

  • Hideコントロールボタンをクリックすれば、スライダが非表示になり、ランプのみが表示されます。

  • カーブを滑らかにするには、制御点を均等に配置してください。

ランプパラメータの読み込み

エクスプレッション言語

エクスプレッションでランプパラメータの値を読むには、chrampchramptchrampf関数を使います。

現在の時間でのランプの値を読むには:

chramp(ramp_pathpositioncomponent_index)

ramp_pathには読みたいランプパラメータのパス、positionは読みたいランプの位置(0から1で指定)。カラーランプでは、component_indexも指定する必要があります。赤 = 0、緑 = 1、青 = 2を意味します。スプラインランプでは、3つ目の引数には0を使います。

chramptは指定した時間でのランプの値を読みます。chrampfは指定したフレームでのランプの値を読みます。

HOM

ランプパラメータの値を読むには:

  1. パラメータを意味するhou.Parmオブジェクトの参照を取得します。

  2. オブジェクトのtupleメソッドをコールして、hou.ParmTupleの値を取得します。

  3. ParmTupleオブジェクトでevalevalAsRampevalAsRampAtFrameのどれかをコールして、hou.Rampオブジェクトを取得します。

ParmオブジェクトのparmTemplateメソッドをコールして、パラメータに関するメタデータ(つまりデフォルト値)を含んだhou.RampParmTemplateオブジェクトを取得することもできます。

# ランプパラメータの参照を取得します。
# これは、他のパラメータと同様にhou.Parmオブジェクトです。

>>> r = hou.parm("/obj/my_character/gradient")
>>> r
<hou.Parm gradient in /obj/my_character>

# このパラメータの"parmタプル"を取得して、
# 現在の時間のparmタプルを評価します。
# 浮動小数点のパラメータを評価すると、浮動小数点値を返します。
# テキストボックスを評価すると、文字列を返します。
# ランプパラメータを評価すると、hou.Rampオブジェクトを返します。

>>> ramp = r.eval()
>>> ramp
<hou.Ramp is_color=True num_keys=2 ... >

# lookup()メソッドを使ってランプから値を取得することができます。
# これはランプのタイプ次第でタプルかfloatを返します。

>>> ramp.isColor()
True

>>> ramp.lookup(0.5)
(0.1、0.5、0.8)

VEX

以下のVEXシェーダのランプパラメータを参照してください。

ランプパラメータをノードに追加

カラーと浮動小数点のランプパラメータタイプは、デジタルアセット定義を編集する時、または単一ノードのパラメータインターフェースを直接編集する時に利用可能パラメータタイプリストに表示されます。

デジタルアセットの編集の方法またはノードのパラメータインターフェースの編集の方法を参照してください。

VEXシェーダのランプパラメータ

VOPネットワーク内

VOPネットワーク内のシェーダにランプパラメータを追加するには:

  1. Ramp Parameterノードを作成します。

  2. パラメータエディタで、 Ramp Type (RGB ColorランプまたはSplineランプ)を選択します。

  3. floatタイプの出力をRamp Parameterノードの入力に接続します。入力は、出力するランプの位置を制御します。

    例えば、Global Variablesノードを作成して、そのs出力をランプの入力に接続すると、Ramp Parameterノードの出力はサーフェスのS方向に沿って変化します。

  4. Ramp Parameterノードの出力を、他のノードのColorまたはVectorの入力(RGBランプ用)またはFloat入力(Splineランプ用)に接続します。

VEXコード内

ramp_rgbとramp_fltのpragmaは3つの引数をシェーダ関数に渡すUIにランプパラメータを作成します。

  • 各キー間の補間方法を意味する文字列の配列。

  • ランプ沿いの各キーの位置を意味する浮動小数点の配列。

  • 各キーの値を意味するvector(RGBランプ用)またはfloat(Splineランプ用)の配列。

VOPで生成したコードを見ると、"solvelinear"キーワードとインデックス(以下のコードでは0.5)を設定したsplineを使ってキーを線形化し、 配列と“均一化した”インデックスをspline関数に渡しています。

(あなたの独自のコードで、もし均一なキーポジションを保証しているなら、""をpragmaへのキーポジション引数として使うことができます。そして、“solvelinear”の工程を飛ばして、インデックスを外部のsplineコールへの2番目の引数として使います)

#pragma ramp_rgb ramp2 ramp2_the_basis_strings ramp2_the_key_positions ramp2_the_key_values
#pragma label ramp2 Gradient
#pragma parmtag ramp2 rampbasisdefault catmull-rom

surface
vopsurface1(string ramp2_the_basis_strings[]={"linear","linear"}; float ramp2_the_key_positions[]={0,1}; vector ramp2_the_key_values[]={{ 0, 0, 0 },{ 1, 1, 1 }})
{
    vector      ramp21;

    // rampparm1で生成されたコード
    ramp21 = spline(ramp2_the_basis_strings, spline("solvelinear", 0.5, ramp2_the_key_positions), ramp2_the_key_values);
...

ネットワークとパラメータ

ネットワーク

パラメータの編集

次のステップ

エクスプレッション

導師レベル

リファレンス