izhoudiniTweetこの記事ではHScriptエクスプレッションを利用する上で、利用頻度の高いであろう、基本的な関数について簡単な紹介を行います。数字に対して操作をするような関数です。小数点の処理や、距離を求めるような関数があります。ceil(number)入力した小数値numberを小数点以下繰り上げした整数値を返します。ceil(1.5)floor(number)入力した小数値numberを小数点以下切り捨てした整数値を返します。floor(1.5)round(number)入力した小数値numberを一番近い整数に丸め込みます。感覚としてはほぼ、四捨五入に近い挙動となります。詳細は後程、別記事にて記載予定です。round(1.3)frac(number)入力した小数値の小数部を返します。max_val)入力したnumberの数値がmin_valより小さい場合min_valを、max_valより大きい場合max_valを返します。new_max_val)old_min_valからold_max_valの範囲を、new_min_valからnew_max_valに拡張します。その際に入力した数値numberの値を相対的に変化させた結果を返します。numberの値の取りうる範囲が事前にわかっているときに利用できます。numberの値がoldの範囲を超える際はclamp()関数と同様に、min/maxの値として処理されます。z)入力したベクトルの大きさを返します。z2)入力したポイント2点の座標間の距離を返します。return_type)指定したノードsurface_node1のプリミティブprim_num1と、surface_node2のプリミティブprim_num2との距離を返します。return_typeの数値によって挙動が下記のように変わります。prim1の最小距離でのポイントのUパラメトリック値を返します。prim1の最小距離でのポイントのVパラメトリック値を返します。prim2の最小距離でのポイントのUパラメトリック値を返します。prim2の最小距離でのポイントのVパラメトリック値を返します。この関数はポリゴン、カーブ、NURBS/Bezierサーフェスでのみ動作します。他のタイプのプリミティブに使用した場合は常に0が返されます。return_type)座標(x,y,z)と指定したノードsurface_nodeのプリミティブprim_numとの距離を返します。prim_numが-1の場合は、surface_node内の一番近いプリミティブとの距離を返します。return_typeの数値によって挙動が下記のように変わります。最小距離でのポイントのUパラメトリック値を返します。最小距離でのポイントのVパラメトリック値を返します。最小距離のプリミティブ番号を返します。しく数値を作り出したり、別の個所から数値をコピーする際などに利用する関数です。ch(path)入力したパスのパラメータの数値を返します。Referenceを使うと自動的にこの関数がパラメータ項目に記述されます。ch(“rady”)chs(path)入力したパスのパラメータの文字列を返します。Referenceを使うと自動的にこの関数がパラメータ項目に記述されます。上記のch()と同じように利用できます。数値の場合はch()、文字列の場合はchs()を使います。ファイルパスなどのコピーの使われます。Shift+@)で囲う必要があります。frame)特定のフレームの入力したパスのパラメータの値を返します。frameの数値に$F-3などを入力することによって数フレーム前の値の参照などが可能です。default)stamp_op_pathノードに入力したスタンプ変数val_nameの値を返します。SOPノードのスタンプ機能を使う際に必須の関数となります。0)※スタンプ変数val値が存在する時はvalの値が、そうでない場合は最後の引数default(この場合は0)が返されます。atof(string)入力した文字列stringを数値に変換して返します。type)入力したsurface_nodeのバウンディングボックス情報を返します。typeにどの情報を返すかを指定します。type)入力したsurface_nodeの重心の座標を返します。この場合の重心とは、surface_nodeバウンディングボックスの中心の座標となります。typeにはx,y,z度の座標を取得するかを設定します。D_X)rand(seed)入力した数値seedに基づいて0から1の間のランダムな値(乱数)を作成し、返します。※seedの値は整数以外の値が推奨されます。max)入力した数値numberがminからmaxの間の場合はclamp()関数と同様の挙動になります。ない場合はminからmaxの変化を繰り返すようになります。numberに$Fを入力することで、ノコギリ状の波形を作成することが可能です。wrap($F,5,10)アトリビュート関連アトリビュートをパラメータ上で利用するのに利用される関数です。index)入力したノード名node_nameのindex番目の入力となるノードのフルパスの文字列を返します。indexは0番からで、一番左側の入力が0番になります。opinputpath(“/obj/geo1/merge1”,0)因みに、opinputpath(“.”,0)と入力することで、自身の0番目の入力ノードのフルパスを取得できます。アトリビュートを返します。point_numberでポイント番号を指定し、attribute_nameでアトリビュート名を指定します。indexの項目はvectorなどのようにアトリビュートが複数のコンポーネントを持つ場合、そのコンポーネントの番号を指定できます。Houdiniではアトリビュートは自身のノードのものは参照できません。よってsurface_nodeに直接”.”を指定するとエラーが出力されます。直前のアトリビュートの値を利用する際は、opinputpath(“.”,0)を利用すると便利です。文字列リストのアトリビュートを読み込む際は、pointsmap()関数を利用します。index)入力したノード名surface_nodeのPrimitiveアトリビュートを返します。prim_numberでポイント番号を指定し、attribute_nameでアトリビュート名を指定します。indexの項目はアトリビュートがvectorなどの複数のコンポーネントを持つ場合、そのコンポーネントの番号を指定できます。Houdiniではアトリビュートは自身のノードのものは参照できません。よってsurface_nodeに直接”.”を指定するとエラーが出力されます。直前のアトリビュートの値を利用する際は、opinputpath(“.”,0)を利用すると便利です。文字列リストのアトリビュートを読み込む際は、primsmap()関数を利用します。使われる演算に関係する関数です。三角関数については、別途記載しております。abs(number)入力した数値numberの絶対値を返します。abs(-10)sqrt(number)入力した数値numberの平方根を返します。exponent)入力した数値baseのexponent乗の値を返します。3)log(number)入力した数値numberの値を基に、自然対数を返します。因みに、Houdiniではネイピア数はグローバル変数$Eで定義されています。log(2.718281828)log10(number)入力した数値numberの値を基に、常用対数を返します。/論理演算/条件演算などの演算を利用した関数です。num2)入力した数値num1とnum2の小さい方の数値を返します。num2)入力した数値num1とnum2の大きい方の数値を返します。false_val)入力したexpressionの結果が正しければtrue_valを、正しくなければfalse_valを返します。円運動や単振動などを作成する際によく利用されます。単位は度[°]になります。三角関数の使用例につきましては、こちらのページもご参照下さい。sin(degrees)入力した数値degreesの値を基にsinの値を返します。sin(30)cos(degrees)入力した数値degreesの値を基にcosの値を返します。cos(60)tan(degrees)入力した数値degreesの値を基にtanの値を返します。tan(45)asin(number)入力した数値degreesの値を基にarcsinの値を返します。asin(0.5)acos(number)入力した数値degreesの値を基にarccosの値を返します。acos(1/2)atan(number)入力した数値degreesの値を基にarctanの値を返します。x)入力した数値y及びxの値を基にarctanの値を返します。yにY座標、xにX座標を入れることでxに指定した軸を基準にした座標の角度を取得できます。Inc.の商標または登録商標です。他のすべてのブランド名、製品名、および商標はそれぞれの所有者に帰属します。当サイトは株式会社インディゾーンが運営しています。