« C4D 車輪が巻き上げる砂をイメージしたTPエミッタを作ってみた… | トップページ | 最近、movファイルを開くと、QTPlayerが… »

C4D グラインダと金属棒とパーティクル…本当は、TPパーティクルをカメラ方向に常に向かせるテスト

前回の記事との、ただの回転つながりで…
真面目に火花を飛ばしたわけでもなく…
ただの興味本位で… 息抜きに…
要するに、いつも通り手抜きで…

Grinder_01
こんな具合のアニメーション。

もちろん、本物の火花が星型をしているわけがないのだけど…
今回は、この星型がカメラを動かしても常にカメラに正対(カメラ方向に向かせる)テスト…

以前の記事で…

「C4D ThinkingParticlesで1枚ポリゴンの木を地面に配置する…」
http://villager-and-c4d.cocolog-nifty.com/blog/2009/11/c4d-thinkingp-1.html

このときは、パーティクルからカメラへのベクトルを取得し、このベクトルからマトリクスを生成したんだっけ…?

C4D ThinkingParticlesには、任意の方向にパーティクルを簡単に向かせる「PAlignment」ノードがあります。
今回は、これを使います。

シーンの構成は…

Grinder_02

まずは、ヌルオブジェクト「グラインダー」に取り付けたグラインダーの回転です。
回転軸は、Zにしました。

Grinder_03

赤い枠内が、0フレームで角度Bを初期化します。
0フレーム以外は角度Bに回転角度が加算され続けます。
ラジアンで-1なので、1フレームあたりの回転角度は約-57.3°です。

TPエミッタ部分のヌルオブジェクト「XPresso」に取り付けた1つ目のXPressoタグです。

Grinder_04

金属棒「円柱」とグラインダー「チューブ」の衝突判定を受けて「PMatterWaves」ノードが作動します。
パーティクルの速度は、本来は、回転体の接線(回転方向側)になりますが、計算を省いて、金属棒の向きに放出しました。
円柱は、Z軸方向に伸びています。
金属棒の当てる角度に注意が必要です。

「衝突判定」ノードでは、選択範囲タグが設定されています。
今回は金属棒側の選択範囲からパーティクルを放出させました。

Grinder_05

Grinder_06

パーティクルの形状は、星型をZ軸向きに作りました。
ヌルオブジェクト「XPresso」に取り付けられた、もう一つのXPressoタグは…

Grinder_07

パーティクルに「PGravity」ノードで重力を掛けています。
「PAlignment」ノードでパーティクルをカメラ方向に向かせています。

Grinder_12

ソースは「Z軸」
タイプは「ユーザの位置」で軸にカメラの絶対位置を入力しました。

Grinder_08

Grinder_09_2

Grinder_10

Grinder_11

パーティクルの星は、常にカメラの方に向いています。

このアニメーションは、金属棒が始めは接触していませんが、接触すると金属棒が振動し先端部が発光しパーティクルを放出します。
途中で金属棒が離れると、パーティクルの放出が止まり、先端部分の発光が消えていきます。
再度接触し、またパーティクルが放出され先端部が発光します。

では、衝突判定を受けて金属棒の振動と発光です。

Grinder_17

振動は、金属棒に「振動」タグが取り付けられています。
衝突判定の結果を「使用する」に入力しました。

発光の処理は、以前に取り上げた、マテリアルの切り替えではなく、発光チャンネルのシェーダの混合強度を操作します。

Grinder_13

マテリアルの切り替えだと、カットチェンジになってしまうので今回は使いません。
衝突すると、この値を徐々に上げて行き、離れると徐々に下げて行きます。

Grinder_14

強度の範囲は0.0~1.0でクリップします。

Grinder_15

0フレームで初期化します。

Grinder_16

初期化の値は、衝突判定のブール値を実数として0.0または1.0で入力しました。
任意の値を与えず、こうする事でアニメーションが衝突から始まっていても、非衝突から始まっていても初期値を変更する事無くレンダリングができます。

パーティクルにブラーを掛けたら「PAliginment」ノードの意味がなくなりました…

「grinder.ZIP」

|

« C4D 車輪が巻き上げる砂をイメージしたTPエミッタを作ってみた… | トップページ | 最近、movファイルを開くと、QTPlayerが… »