今回はパーティクルを用いた爆発エフェクトをつくります.先に断っておくと,今回紹介する方法以外に様々な手法がとれますので,あくまでパーティクルコントロールの一例として捉えていだけると幸いです.
作成するエフェクトはこちらです.
使用するバージョン
なお,つくって覚えるシリーズはCinema 4Dを初めて間もない方を対象に構成されています.そのため,記事内容は極力細かい操作まで記載しているため,やや冗長な表現が続くことをご容赦ください.一連の流れは動画の方が分かりやすいかと思いますが,テキストとしても利用できるようにブログ記事にもまとめてあります.
動画版チュートリアル
プロジェクト設定を編集する
最初にプロジェクトのアニメーションで使用する時間を設定します.プロジェクト設定(Ctrl+D)を開き,「プロジェクト」タブの
「時間最大」…「180F」
に変更します.「プロジェクトスケール」は「1 cm:センチメートル」になっていることを確認します.
地面を作成する
立方体アイコンを長押しして,「平面」オブジェクトを作成します.平面オブジェクトを選択し,属性マネージャの「オブジェクト」タブを開き,
「幅」…「5000㎝」
「高さ」…「5000㎝」
に変更します.
「基本」タブを開き,
「表示カラー」…「自動」
に変更して,「カラー」を暗めの色に設定してきます.次の工程でパーティクルの視認性をあげるためです.自動モードではマテリアルが適用されている場合はマテリアルカラーが表示されるようになります.
作成した平面を選択し,「オブジェクトマネージャ」の「タグ」メニューから「シミュレーション」→「衝突」タグを適用します.これは後にパーティクルやパイロの衝突用として作用します.衝突タグには反発や摩擦のパラメータがありますが,今回はデフォルトのままで進めることにします.
基本エミッターを作成する
ここからパーティクルを作成していきます.デフォルトレイアウトではメインメニューの「シミュレート」に格納されていますが,パーティクル用オブジェクト群のアイコンは用意されていないため,パーティクル用のレイアウトを用意しておくと作業がしやすくなります.
パーティクル用レイアウトの作り方動画はこちら
シーンに「基本エミッター」を追加します.基本エミッターを追加するとパーティクルグループも一緒に作成されます.エミッターはパーティクルを放射するためのオブジェクトで,パーティクルの初期パラメータを提供することができます.放射されたパーティクルはパーティクルグループに属することになります.
今回の作例では基本エミッターを一つ使用して,放射されたパーティクルを複数のパーティクルグループに渡ってコントロールしていくことにします.アニメーションを再生(F8)アイコンをクリックしてパーティクルが放射されていることを確認します.
これからエミッターの位置とパーティクルのプロパティを変更します.エミッターを選択し,「座標」タブを開き
「P.Y」…「500㎝」
「P.Z」…「-500㎝」
「R.P」…「-60°」
とします.
「放射」タブを開き
「スケール.X」…「100㎝」
「スケール.Y」…「100㎝」
「放射モード」…「ショット」
「カウント」…「1」
にします.
「プロパティ」タブを開き
「速さ」…「1000㎝」
にします.
これでパーティクルは1ショットだけ放射されるようになります.パーティクルが見にくい場合は,「パーティクルグループ」オブジェクトを選択し「描画」タブを開き「スケール」を大きくすることもできます.このスケールはあくまでエディタ上で描画するスケールのことで,実際のパーティクルのスケールではありません.パーティクル自体のスケールは「半径を描画」を「オン」にすることで確認できます.
パーティクルグループの名前を「パーティクル Source」に変更しておきます.これから複数のパーティクルグループを作成していくため,それぞれのグループの役割に応じて分かりやすい名前をつけてくようにするといいでしょう.
重力を追加する
シーンに「重力」を追加し,オブジェクトマネージャ上でパーティクルグループより上にくるように位置を調整します.パーティクルグループの外にあるモディファイヤはすべてのパーティクルグループに効果がかかることになります.
衝突を追加する
衝突モディファイヤを追加し,パーティクルグループの子オブジェクトにします.衝突モディファイヤは衝突タグを持つオブジェクトがある場合にそれが衝突対象になります.今回は平面が該当します.
アニメーションを再生させるとパーティクルが平面に衝突してバウンドしていきます.今回は爆発エフェクトにするため,平面に衝突した時点で動きを変更したいと思います.そこで,「衝突」を選択し「衝突」タブを開き「グループを作成」をクリックして別のパーティクルグループを作成します.作成されたパーティクルグループが「ターゲットグループ」にセットされます.これは,衝突したパーティクルが作成したグループへ変化することを意味します.
オブジェクトマネージャで新しく作成されたパーティクルグループの階層を整理します.名前を「パーティクルグループ Main Explosion」とします.
Main Explosionグループの設定
エディタ上での見た目を区別するために,カラーを変更します.「描画」タブを開き
「スケール」…「5」
「オーバーライドモード(表示)」…「固定」
「オーバーライドカラー(表示)」…「任意のカラー」
放射されたパーティクルが衝突後,「Main Explosion」グループへ変化したことが分かります.
Main Explosion:衝突モディファイヤを作成する
Main Explosionグループに変化したパーティクルに,その後再び衝突させるために新たに衝突モディファイヤを作成します.この衝突モディファイヤはターゲットグループを設定せず,同じグループにとどまるようにしておきます.
Main Explosion:数式モディファイヤで衝突後の速度をゼロにする
今回のケースでは衝突後にその場でとどまるようにしたいので,衝突後に速度をゼロにします.「数式」モディファイヤを作成し,衝突の上に配置します.数式の「オブジェクト」タブを開き
「操作」…「適用」
「プロパティ出力」…「速度」
「プロパティチャンネル」…「XYZ」
にします.
値はすべて「0」とします.Main Explosionに変化したパーティクルは速度を0にして停止します.名前を「数式 Speed」として役割を明確にしておきます.
Main Explosion:数式モディファイヤで衝突してからの寿命を再定義する
さらに数式モディファイヤを作成します.こちらは
「操作」…「適用」
「値」…「90F」
「プロパティ出力」…「寿命」
とします.Main Explosionに選した瞬間にパーティクルの寿命を90Fで再定義しています.名前を「数式 Life」とします.
Main Explosion:データマップモディファイヤで寿命と連動する
半径を再定義する次に「データマップ」モディファイヤを作成し,「数式 Life」の下に配置します.モディファイヤは上から順に処理されていくため,寿命を定義したのちにデータマップを実行するためです.データマップの「データマップ」タブを開き
「プロパティ」…「時間変化パーセンテージ」
「下限入力」…「0%」
「上限」…「100%」
「プロパティ出力」…「半径」
「下限出力」…「0㎝」
「上限出力」…「100㎝」
とします.時間パーセンテージで下限から上限が0%~100%の場合,寿命の90Fの間で半径を0㎝~100㎝の間で変化させることができます.さらに「スプライン」のポイント位置と接線の角度を調整して変化のタイミングを調整します.次の画像のようにした場合,衝突した瞬間は半径が0㎝ですが,すぐに100㎝まで大きくなり,その後ゆるやかに0㎝まで小さくなることを意味します.
パーティクル半径を確認したい場合は,パーティクルグループの「描画」タブにある
「半径を描画」…「オン」
にします.名前を「データマップ Radius」としておきます.
これで衝突後に速度0,寿命90フレームの間で半径が変化するパーティクルグループとなります.
増殖を利用して飛び散る破砕用のパーティクルグループを作成する
シーンに「増殖」エミッターを追加し,Main Explosionグループの一番上の子にします.増殖エミッターはパーティクルからパーティクルを放射するもので,ここではMain Explosionのパーティクルからさらに小さな破片用パーティクルを放射するために使用します.名前を「増殖 to Debris A」とし,同時に作成されたパーティクルグループの名前も「パーティクルグループ Debris A」とします.増殖エミッターを選択し,「再生」タブを開き
「カウント」…「50」
「スキャッター」…「パーティクル毎」
「カウントのばらつき」…「25」
とします.「スキャッター」が「パーティクル毎」になっていれば,元のMain Explosionから50個のパーティクルが放射されます.「モード」が「1回」なので1回放射して終了となります.「元をキル」は「オフ」のままにしておきます.
さらに「プロパティ」タブを開き
「寿命」…「60F」
「ばらつき」…「20F」
「速さの継承」…「100%」
「方向の継承」…「70%」
とします.増殖から放射したパーティクルの寿命,速さ,方向を定義します.速さと方向は元のパーティクルから継承することができます.今回は速さは100%継承しますが,方向は70%だけ継承させることで元のパーティクルの衝突角度から広がるようにしています.
衝突モディファイヤを作成し,「パーティクルグループ Debris A」の子にします.衝突の設定はデフォルトのままにしておきます.これで増殖から放射されたパーティクルも平面に衝突してバウンドしてきます.
二つ目の破砕パーティクルグループを作成する
同じ手順をでさらに別のデブリ用パーティクルを作っていきます.「増殖」を作成し「パーティクルグループ Main Explosion」の子にします.名前を「増殖 to Debris B」,パーティクルグループの名前を「パーティクルグループ Debris B」とします.
「増殖 to Debris B」を選択し,「再生」タブを開き
「カウント」…「40」
「スキャッター」…「パーティクル毎」
「カウントのばらつき」…「20」
とします.
さらに「プロパティ」タブを開き
「寿命」…「100F」
「ばらつき」…「30F」
「速さ」…「1500cm」
「速さのばらつき」…「500㎝」
「方向」…「軸」
「軸」…「+Y」
「拡散」…「90°」
「速さの継承」…「50%」
「方向の継承」…「20%」
とします.パーティクルは速い速度で+Y方向に跳ね返りますが,「拡散」,「速さの継承」,「方向の継承」を使ってややばらつき感を出しつつ放射されるようになります.
次に「データマップ」と「衝突」モディファイヤを追加し,「パーティクルグループ Debris B」の子にします.データマップは名前を「データマップ Radius」とします.
「データマップ Radius」の「データマップ」タブを開き
「プロパティ」…「時間変化パーセンテージ」
「下限入力」…「0%」
「上限」…「100%」
「プロパティ出力」…「半径」
「下限出力」…「0cm」
「上限出力」…「1cm」
「スプライン」カーブを調整
して次のようにします.これでDebris Bパーティクルの半径を寿命に従って少しずつ小さくしていきます.
衝突モディファイヤの「衝突」タブを開き
「反発」…「30%」
「動摩擦」…「100%」
とします.
これでアニメーションを再生させると次のようになります.パーティクルグループの描画を変更してそれぞれのパーティクルを判別しやすいようにしておくと良いでしょう.
ショックウェーブ用のパーティクルグループを作成する
次は地面に沿って移動するショックウェーブ用のパーティクルです.同じ要領で「増殖」を追加し「Main Explosion」グループの子にします.名前を「増殖 to Shockwave」とし,パーティクルグループの名前を「パーティクルグループ Shockwave」とします.
「増殖 Shockwave」を選択し,「再生」タブを開き
「カウント」…「200」
「スキャッター」…「パーティクル毎」
「カウントのばらつき」…「20」
とします.
「プロパティ」タブを開き「寿命」の
「期待値」…「120F」
「ばらつき」…「30F」
とします.
Shockwave用モディファイヤの作成
「衝突」モディファイヤを追加して「パーティクルグループ Shockwave」の子にします.衝突の設定はデフォルトです.
「表面引力」モディファイヤを追加し,「パーティクルグループ Shockwave」の子にします.
「衝突」の下に配置してください.衝突の後に処理する必要があります.
「表面引力」タブを開き
「フォロー強度」…「1500%」
にします.表面引力を使用した場合,地面が波打っているような場合でも形状に沿ってパーティクルを移動させることができます.
次にパーティクルの速度と半径を定義するために「データマップ」を二つ,「数式」モディファイヤを一つ作成し,それぞれの名前を「データマップ Speed」,「データマップ Radius」,「数式 Speed Y」とし,「パーティクルグループ Shockwave」の子にします.
「データマップ Speed」を選択し,「データマップ」タブを開き
「プロパティ」…「時間変化パーセンテージ」
「下限入力」…「0%」
「上限」…「50%」
「プロパティ出力」…「速度」
「下限出力」…「0cm」
「上限出力」…「1500㎝」
「スプライン」のカーブを次のように変更
します.これで寿命の半分までの間に速度が2000㎝から0cmに変化していきます.スプラインカーブの右側のポイントを左に移動させれば停止するまでの間隔が早くなります.これでショックウェーブの初期速度と停止までのコントロールができました.
「データマップ Radius」の「データマップ」タブを開き
「プロパティ」…「時間変化パーセンテージ」
「下限入力」…「0%」
「上限」…「100%」
「プロパティ出力」…「半径」
「下限出力」…「0cm」
「上限出力」…「1cm」
「スプライン」カーブを次のように変更
します.これで寿命の最後まで半径が小さくなるパーティクルとなります.
「数式 Speed Y」はパーティクルがY方向に移動しないように念のため設定しておきます.
アニメーションを再生すると次のようになります.パーティクルグループの描画カラー,スケールを調整して見やすいようにしています.
工程が長いため,後半は次の記事へ続きます.
次はパーティクルからパイロを発生させて爆発エフェクトをつくっていきます.