BLOG

RECENT ENTRY

CATEGORY

ARCHIVES

エフェクト勉強会

来週から9月に入りますが、
まだまだ暑い日が続いていますね☀
今年の暑さも長引きそうな気配を感じます…💦

さて、今回はFX Departmentで取り組んでいる勉強会についてご紹介します!
この勉強会は、個々のアーティストが過去プロジェクトで使った技術の共有
新人アーティストに向けたアドバイスHoudiniやNukeのTipsなどを
教え合うことを目的に実施しています。

最近の勉強会では、基礎的なCopy to Pontsを使って
2つの軸を元にした回転を行いました。

例えば、基本的に回転は2つの軸を定義することでもう1つの軸が決まるので、
その2軸をY軸方向に@upベクターとZ軸方向に@Nまたは@vに定義します。


————————————————————-
v@N = set(0,0,1); or v@v = set(0,1,1);
v@up = set(0,1,0);
————————————————————-
上で定義したupベクターをVEXファンクションのRotateを使って回転させてみます。


————————————————————-
matrix m=ident();
float angle=radians(@Frame);
vector axis=set(0,0,1);
rotate(m,angle,axis);
v@up *= m;
————————————————————-
まず、Matrixを定義し、角度と回転軸を指定します。その回転の情報を最初に作った
Matrixに乗算し、最終的に@upベクターに対してかけると回転させることができます。
角度は値をラジアンに変換し、1フレーム1度回転させています。

次は回転軸を変えて行ってみます。


————————————————————-
matrix m=ident();
float angle=radians(@Frame);
vector axis=sample_sphere_uniform(rand(@ptnum,ch(“seed”)));
rotate(m,angle,axis);
v@N *= m;
v@up *= m;
————————————————————-

先ほどは回転軸をz軸にしていましたが、今回は軸をランダムな値にしています。
3軸を正しく回転させるためには2軸を定義する必要があるので、
upベクターだけでなくNormalに対しても同じ回転の情報を入れます。

最後に、モデルを複数配置してそれぞれランダムな回転を加えた例も紹介します。
sphere上にモデルをコピーし、今回はこのSphereが持っているNormalを使用します。


————————————————————-
v@up=sample_sphere_shell_uniform(rand(@ptnum),1);
————————————————————-
まず、ランダムなupベクターを作成します。


————————————————————-
v@cross = cross(@up,@N);
v@up = cross(@N,@cross);
matrix m=ident();
float angle=radians(@Frame);
vector axis=normalize(@up);
rotate(m,angle,axis);
v@N *= m;
————————————————————-
モデルのY軸方向を軸にキャラを回転させたいため、
作成したupベクターとNormalのCrossをとり、さらにNormalと
再度Crossの計算をし直します。
これで、3つの軸を直交させることができ、正しい回転処理を行うことができます。

いかがでしたか?
今回の内容は一例なので、今後もエフェクトチームの勉強会の内容を
定期的にご紹介しようと思います!

それでは、次回の投稿もお楽しみに*

PAGE
TOP