#この記事は?
Houdiniユーザーにとってあまりにも当たり前すぎて、Tipsにもなっていないような内容を自分用備忘録として記事にしました。
#1.rampパラメータを作成
##1-1.wrangleノードに作成する
float chramp(string channel, float ramppos)
float chramp(string channel, float ramppos, float time)
vector chramp(string channel, float ramppos)
vector chramp(string channel, float ramppos, float time)
Houdiniでのrampは返す値の型が「float」「color」の2種類あります。
wrangle上ではfloatの場合もvectorの場合も同じなので、ただコードを書いて表示させただけではすべてfloatのrampになってしまうため、別途Edit Parameter Interfaceウィンドウにて、Ramp TypeをColorに設定してやる必要があります。
(VEX上で指定できる方法あれば情報が欲しいです。プラグマ?)
string channelのところで指定した名前は、そのままパラメータのnameに使用され、
nameの頭文字が小文字であったら大文字に変更されたものがパラメータのLabelに使用されます。
float position=fit(@P.y,0,`ch("../line1/dist")`,0,1);
float move=chramp("move",position);
float multiply=chf("multiply");
@P.x=@P.x+move*multiply;
##2-2.①解説
float position=fit(@P.y,0,`ch("../line1/dist")`,0,1);
ここで各ポイントが、rampでいう0~1のどこに当たるかというのを設定しています。
「高さ0をrampの0、高さ最大をrampの1とした時の、@P.yの位置」を決めています。
高さの最大はlineノードで指定したLengthのパラメータをそのまま持ってきています。
float move=chramp("move",position);
上記で設定した範囲をrampに設定します。
これは「"move"という名前のrampパラメータで、rangeの値を決める」という意味です。
@P.x=@P.x+move*multiply;
@P.xに、rampパラメータで取得した値を加算し、各ポイントを移動させました。
rampが吐き出す値は0~1であるため、そのままだと移動による変化が見えないため、任意の数値(multiply)を乗算して移動量を調節できるようにしています。
float position =fit(@ptnum,0,@numpt,0,1);
float tube_scale=chramp("ramp",position);
@pscale=tube_scale;
vector max_pos=getbbox_max(1);
vector min_pos=getbbox_min(1);
float position=fit(@P.z,min_pos.x,max_pos.x,0,1);
float scale=chramp("scale",position)+0.5;
f@prim_scale=scale;
float position=fit(@prim_scale,0.5,1.5,0,1);
vector color=chramp("prim_color",position);
@Cd=color;