2015年7月2日木曜日

Houdini Tips : Wrangle 等幅拡張

Houdini Wrangle ケイ拡張.md—/Users/kawabata_imac/Dropbox/Blog/Houdini

ども、大腸がん検診にひっかかって、
尻を掘られたTERAです。

まあ、尻を掘られただけで、
特に問題はなかったのですが、健康大事w

というわけで、
Houdiniネタです。

3D系のツールは何でも
ノードになって来た今日この頃、
便利とは思うのですが、
コードの方が便利なことが多々あります。

というわけで、Houdiniでは、
wrangleノードというのが用意されてます。

なんというか、vop sopが
書いてくれるコードを自分で書けみたいな。

実行速度も、かなり早いようです。

で、調べてみたのですが、
新たな VEX Expressionを覚えないとダメっぽい

チュートリアルを確認すると
c/c++やRenderman Shading Language
と似てるっては書いてありますね。

これは、メンドクサイと思っていたのですが、
どうやらこれ、VertexShaderとほぼ、同じ考え。
入って来たポイント事の処理なようです

Attributeもがんがん加えられるので楽チンチンです
というわけで、平面を太らせる ノードを作ってみました

Point Wrangle

vector vec,vecY = set(0,1,0),v1,v2;

i@fID = (@ptnum - 1) % @Npt;
i@bID = (@ptnum + 1) % @Npt;
v1 = normalize(point(@OpInput1,"P",i@fID) - @P);
v2 = normalize(point(@OpInput1,"P",i@bID) - @P); 

vec = v1 + v2;

if(length(vec) <= 0.001)
{
    vec = cross(v1,vecY);
    @N = vec;
}
else
{
    if(dot(cross(v1,v2),vecY) > 0)
        vec *= -1;

    v1 = normalize(cross(v1,vecY));
    normalize(vec);
    @N = vec / abs(dot(v1,vec)); 
}

@P += @N * ch("width");

Parameter

Point Wrangle ノードに "width" の
floatパラメータを追加してます

思った事

  • 条件がめんどくさかったので
    (@ptnum - 1) % @Npt
    を使ったけど下策だとおもわれ

  • 直線に並んだ時の処理が無かったため、
    慌てて付け加え

  • 頂点IDに依存してるので、あまり使い勝手は良くないですが、
    まあ、手始めの第一歩ということで。

近況

VR勉強会に行って来た オキュ欲しい :p

0 件のコメント:

コメントを投稿