クオタニオン回転(初心者向け)
すこしは技術的な話を。
HoudiniのSOPで回転をするには、一般的にはtransformノードを使います。
では、wrangle内のVEXの計算結果に基づいて回転をするにはどうすればよいか、という問題です。
transformノードのパラメータフィールドから、wrangleの計算結果が格納されているアトリビュートを参照する、という方法も、ないわけではありません。
ただ、transformノードには、@P以外のvector3型のアトリビュートの値も回転してしまう、という困った問題があります。これは、たとえば、カラー値をvector3型のアトリビュートに格納しておいたものをtransformノードで回転すると、カラー値まで回転してしまって、予期しない色になってしまう、というようなことです。
なので、wrangle内のVEXで回転する、ということにアドバンテージがあります。
さて、高校大学の数学で落ちこぼれた僕が思いつく方法は、sinとcosを使ったオイラー角による線形代数的な回転です。中学校で習いました。
x = x * cosθ + y * sinθ
y = -x * sinθ + y * cosθ
次には、matrix3で回転する方法があります。これは、オイラー角からVEXの関数でmatrix3を作って、@Pに乗じる方法です。計算式は超簡単です。
@P *= m
そして、もうひとつ、クオタニオン回転を使う方法です。
これは、特定のベクトルを、軸となるベクトルを中心にして回転する、というような処理をしてくれます。
オイラー角s と軸a(単位ベクトル)から、クオタニオンqを計算し、ベクトルvを回転します。
q = quaternion( s , a )
v = qrotate( q , v )
僕は、今はほとんど、クオタニオン回転を使います。3DCGの制作現場においては、軸回転はよく親和する、というのが理由です。きわめて現場的な理由です。
この記事が気に入ったらサポートをしてみませんか?