Houdiniで鎖を作ってみた
こんにちは。
最近、Houdini Cook Bookという素晴らしいチュートリアルを見つけました。そこで早速Vol.81の鎖の回をやってみたのですが、よく分からず調べた部分も多かったので、それらをまとめておきたいと思います。
疑問点とそのまとめ
Convert SOPが何をしているのか
まず、Convert SOPはジオメトリの種類を変更する時に使用するノードです。ここでは、ポリゴンからNURBSへ変換しています。
また、その種類の一つである"NURBS"と"BEZIER"についても調べると、こちらにわかりやすい説明がありました。
一応ここにも簡単に書いておきます。
まず曲線を方程式のグラフと捉えた時の方程式の次数+1の数を「階数」と呼びます。また、そのグラフをいくつ使用するか(グラフの個数)を「セグメント」と呼びます。
ここで、"BEZIER"は階数を高くする代わりに、セグメント1つで曲線を表す手法だそうです。つまりn次式で一つの曲線を表します。
それに対し、"NURBS"はセグメントを複数使う代わりに、階数を下げる手法です。例えば2次方程式と3次方程式を組み合わせる、といった感じでしょうか。
ざっくりですが私はこのように理解しました。
さて、そこでそもそもここでNURBSに変換している理由ですが、恐らくUV展開が必要ないためだと思われます。NURBSですとUVが固定されているらしいです。
また、U Orderが何かわからなかったのですが、「U方向のカーブ/サーフェスのスプライン階数(次数+1)」だそうです(公式リファレンスより)。つまり、UVのU方向では、NURBSで"U Order"の値の階数を使用する(ここでは1次方程式=直線を使用する)と言う事でしょうか。
Carve SOPの機能
FIrst U を0にすることで、プリミティブをサーフェスに変換することができるようです。テクスチャを貼るために変換しているのだと思います(UV Textureのリファレンスにも、テクスチャをサーフェスのポイントに割り当てると書いてあったので)。
また、リファレンスの例が面白そうでした。
Texture Typeとは?
Textureをどのように投影するかを決めるパラメータです。リファレンスに説明の一覧がありました。
Textureのクラス(Attribute Class)とは?
「テクスチャをポイントや頂点に適用するかどうか」を決めるパラメータだそうです。
ポイントと頂点って違うのか?と思い調べてみたところ、こちら↓の記事がとても参考になりました。
www.kickbase.net
ポイントの方がより細かい構成要素である、ということの様です。
Measure SOPの使い方
どうやら長さが測れるらしく、今回は弧の長さを測っています。
TypeでPerimeterとすることにより、外周を計算することができます。この値をlengthという名前で次のノードに渡しています。
PolyFrame SOPとは
これは法線(Normal)や接線(Tangent)を計算しているノードです。
鎖が線に沿って繋がれて配列する仕組み
これは、最後のPoly Frame SOPが役に立っているようです。
まず、Poly Frameを抜いた状態(黄色矢印をクリックしてバイパスにした状態)で(Attribute Createから)Copy Stampに繋げてみると、鎖は繋がっていない状態になりました(Tangent Nameのチェックを外しても同じ状態になります)。
90度ずつ向きが違うのは、Copy StampとTransformの機能によって、1つ飛ばしで90度回転させてあるからです。
ではなぜPoly Frameを挟むと鎖は連結されるのでしょうか。
上で書いたように、Poly Frameは法線と接線を計算しています。今回は特に、接線を計算することで鎖の輪が線に沿って並ぶようになっていると考えられます。
作ったもの
壁紙風にしてみました。