Tips

modoのパーティクル速度を使用して回転する方法

パーティクルの速度に応じて回転する方法について書いてみます。パーティクルオペレータの使い方の応用的な内容で、「速度」に応じて回転する風車のような表現ができるようになります。

Vortex Force を使用した単純な構成の画像です。移動速度に応じて回転数が上がります。
スケマティックはこんな感じ。

パーティクルオペレーターに「速度」と「回転」を追加します。「速度」を「回転」にリンクしたいところですが、「速度」と「回転」はチャンネルタイプが異なるので、Matrix From Euler を使用して「速度」をマトリクスチャンネルにしてから「回転」にリンクします。「速度」そのままだと回転の値が小さいので乗算ノードで30倍にします。

 

Wind ForceにLinear Falloffを設定して回転を制御してみた。

速度をそのまま回転に使用しているので、フォールオフの影響範囲に入った円柱の角度がジャンプしてしまいました。こういう使い方の場合は他の特性と組み合わせた方がいいかもしれません。

Wind Forceでは「強さ」を 1 、「速度」を 20 にしてパーティクルが移動しないように設定しています。Linear Falloffの影響範囲にあるぉパーティクルに速度が追加されることで回転させています。

サーフェースエミッターは1フレームで欲しいだけのパーティクルを発生できないので「放射レート」にキーを設定して、必要なパーティクル数になったら「放射レート」を0にしています。また「初期速度」「速度の広がり」を0にしてパーティクルが移動しないように設定しています。

 

矢印をパーティクルの進行方向を向け、速度に応じてスピンするような回転を設定してみた。

進行方向に回転する処理は、パーティクルオペレータの「前の位置」「位置」を Matrix Construct ノードを使用してベクトルチャンネルを位置のマトリクスに変換します。次ぎに Matrix Construct の出力を Direction Constraint の「起点」と「終点」にリンクします。これで「回転出力」を「回転」にリンクすればパーティクルの進行方向に合わせて Replicator が回転するのですが、今回は「速度」を回転に加えたいので、Direction Constraint の「回転出力」をMatrix To Euler の「ワールド回転」にリンクします。

パーティクルオペレータの「速度」を乗算ノードで適当に50倍にして、 Matrix To Euler の値と加算した値を Matrix From Euler でマトリクスに変換。Matrix From Euler の「ワールド回転」をパーティクルオペレータの「回転」にリンクすれば完成です。今回はZ軸方向に回転したかったので速度Zしか使用していませんが、XYZの3軸で好きに回転できると思います。

 

紙吹雪や花びらを回転する場合でも速度を使用すると移動量に合わせた回転になるので、「寿命」を使って回転するより少しリアルな感じが出せるようになる気がします。

コメントを残す

*