今日も、Houdiniじゃ!
今回は「VOPを用いたポイントの回転方法」を思いつく限り列挙したいと思います。
たかが回転!されど回転!
ここでは、例として下のようなジオメトリをAttribute VOP(SOP)で回転させてみました。
サンプルファイル参照→Rotate_VOP_sample
使用したのはAttribute VOP(SOP)、Houdiniのバージョンは14です。
Attribute VOPはH13以前はVOP SOPと呼ばれていたノードです。
tabメニューから作成する場合は、point vop。
その1:Rotateノードによる回転
「rotate(VOP)」はangle(角度)とaxis(軸)を入力すると、その回転に相当するMaxtirxを出力してくれます。
Positionデータに得られたMatrixを乗算するれば回転結果が得られます。
回転の中心(pivot)を考慮に入れる場合、一度PositionデータからPoivotの位置を引き、ニュートラルな状態にしてから回転し、再度pivotの位置情報を足すことで、Pivot中心の回転が可能。
利点は、任意の軸に対しての回転ができること。
その2:クォータニオンを使った回転
その1と構造は似てます。
違いはその1では、”Rotate(VOP)”だった部分が、”quaternion(VOP)”になっている点です。
“quaternion(VOP)”は軸と回転角を入力すると、その回転に相当するクォータニオンを出力してくれます。
出力されるものに違いはありますが、”Rotate(VOP)”と似てますね。
クォータニオンを反映するには一度Matrixに変換する必要があるので「quatenion to Matrix3」というノードで変換をしています。
クォータニオンについては、私の理解度が足りてないので十分な説明できません。
その3 :Transform Matrix(VOP)による回転
Transform Matrix(VOP)はいつもの感覚で移動回転スケールができます。
シンプル。
その4:aline(VOP)を使う
aline VOPノードを使うと、2つのベクトル間の角度orそれぞれに垂直なベクトルを得られます。
ここではベクトル間の角度を利用します。
(余談ですが、それぞれに垂直なベクトルが欲しいときは外積を使うことがおおいです)
角度はマトリクスとして出力されるので、その1同様、Positionデータに乗算してあげればOK。
以上、VOPでのポイントの回転方法いろいろでした。
間違い等ありましたらご指摘を!
「他にこんな方法もあるよ」って場合は教えてくださいm(_ _)m
サンプルファイルはこちら→Rotate_VOP_sample
コメント