以前教えていただいたのに、毎回忘れて調べるのでここに書く。
Orientをrotateに変換する
VOPの場合
orient(bind)を Rotate by Quaternionのquaternionに繋ぎ、qrotateのvecに何かしらのVectorデータを繋ぐ。qrotateにつなぐvectorは、上例の場合vec(0,1,0)としているが、例えば@Nにすれば結構、各ポイントでコントロール可。
Wrangleの場合
@N = qrotate(@orient, {0,1,0});
2022/02/18追記
これの活用例。サンプルファイルqrotate_sample.hiplc
Packされたオブジェクトから向きの情報を取り出す。
Packジオメトリには、PrimitiveアトリビュートにIntrinsicsという、普段表示されていないアトリビュートがあります。
このIntrinsicsアトリビュートは直接は参照できませんが、いろいろ情報が格納されています。
packedfulltransformというIntrinsicsアトリビュートには、回転とスケール情報がMatrixの形で格納されています。
このMatrixを、アレしてコレして先で紹介したRotate by Quaternionつかえば、向きを表すベクトルが生成できます。
こんな感じ。
以上!
コメント