CINEMA 4Dパーティクルをデフォーマで変形させる方法

CINEMA 4Dでパーティクルの動きをコントールするのは結構難しいもの。標準パーティクルであれば重力や風のモディファイアを使うことしかできない。ThinkingParticlesであれば条件付けによりコントロールできるが、感覚的にパーティクルの流れを曲げるといったことはできない。今回は、MoGraphの機能を使ってパーティクルの動きを感覚的に変形させる方法を紹介する。



デフォーマで変形

一番に思いつくのは、パーティクルで発射したモデルをそのままデフォーマで変形させる方法だろう。パーティクルとエミッターで飛ばされたオブジェクトごとグループ化して、全体をデフォーマで変形する方法だ。しかし、これはやってみるとわかるが、オブジェクト自体も変形してしまうという問題がある。下図は円錐をパーティクルで飛ばしたもので、右はデフォーマで変形前、左は変形後。見ての通り円錐まで変形している。変形をこれでは用途が限られてしまう。

かといって、エミッタオブジェクトにデフォーマを適用してもポイントを持っていないエミッタは直接変形することはできない。

deform particles

 

これを解消するには、MoGraphのマトリクスオブジェクトを使う。マトリクスオブジェクトは、クローナーオブジェクトと似ているがオブジェクトをクローンを作成せずに、座標情報だけをクローンとして作成する。そのため、デフォーマで変形が可能になるの。

まずは、マトリクスオブジェクトを作成して、モードをオブジェクトにする。そして、オブジェクト欄に変形させたいエミッタを割り当てる。こうすることで、エミッタで放射したパーティクルの座標をマトリクスにストアできる。この時エミッタの子オブジェクトにオブジェクトは割り当てない。

スクリーンショット 2013-04-13 18.06.52

次に、マトリクスオブジェクトに変形させたいデフォーマを割り当てる。ここでは屈曲デフォーマを適用して、実際に変形させる。

スクリーンショット 2013-04-13 18.10.39

そうすると、元のパーティクルの動きは変形しないが、パーティクルの動きをくろーんさせたマトリクスのグレーの立方体はデフォーマの影響を受けるようになる。

スクリーンショット 2013-04-13 18.13.14

 

次にパーティクルへのオブジェクトの割り当てだ。マトリクスオブジェクトはクローナーオブジェクトではないので、他のオブジェクトをマトリクスオブジェクトの子にしてもオブジェクトは複製されない。そこで、クローナーオブジェクトを新たに作成してモードをオブジェクトにし、オブジェクトに先ほどのマトリクスオブジェクトを割り当てる。そして、クローナーの子にオブジェクト(ここでは円錐)を割り当てるとパーティクルとして放射されるようになる。

スクリーンショット 2013-04-13 18.56.09 スクリーンショット 2013-04-13 18.56.21

 

このように、パーティクルの動きはデフォーマで変形しても、オブジェクトの形状は変形しない。デフォーマは複数適用することもできるし、カメラデフォーマやFFDも使えるので、パーティクルをかなり自由にコントロールできる。

この方法でパーティクルをコントロールした場合、そのままではPyroClusterでのレンダリングはできない。この場合は、クローナーではなく別のマトリクスオブジェクトを作成して、モードは〈オブジェクト〉、生成はThinkingParticlesにしてTP Groupにパーティクルグループを割り当てる。そして、パーティクルジオメトリを作成して、先ほど割り当てたパーティクルグループをこちらにも割り当てれば、再度普通のパーティクルになるので、PyroClusterマテリアルをパーティクルジオメトリに割り当てるとレンダリングできるようになる。

 

レンダリングサンプル