Skip to content

カテゴリ: MoGraphとダイナミクス

MoGraphとダイナミクス: 1.ダイナミクスとは何か

ダイナミクスを使った、MoGraphを動かすためのもう一つの方法について学んでいきます。

■講座テキスト

  1. MoGraphとダイナミクス: 1.ダイナミクスとは何か
  2. MoGraphとダイナミクス: 2.リジッドボディとソフトボディ
  3. MoGraphとダイナミクス: 3.スプラインとその他の機能
  4. MoGraphとダイナミクス: 4.ダイナミクスのアニメーション

Step 1

物理法則を使ってオブジェクトを動かす

 ダイナミクスは、簡単に言うと「オブジェクトを、物理法則に従って動かしたり変形させる(物理シミュレーション)機能」です。物理法則を使うことによって、キーを打たなくてもオブジェクトの複雑な動きや変形を表現できます。例えば、非常に多くのオブジェクトを含むシーンや、衣服のようにオブジェクトを複雑かつ自然に変形させるシーンは、もはやキーフレームアニメーションでは表現できません。しかし、ダイナミクスを使えば簡単に表現できます。

多数のオブジェクトを動かすための方法として、CINEMA 4Dには他にもパーティクルやMoGraphという機能があります。そして、パーティクルの場合は「場(モディファイア、フォース)」、MoGraphの場合は「エフェクタ」という機能を使ってオブジェクトの動きをコントロールします。

ダイナミクスはパーティクルやMoGraphとも組み合わせられるので、ある意味では「モディファイア」や「エフェクタ」の機能を拡張するものだと考えてもいいでしょう。

しかし、衣服のようなオブジェクトをリアルに変形させるには、ダイナミクスを使うしかありません。昔は、モーフやPLA、ボーンといった技術を組み合わせて表現することもありましたが、とても大変で、なかなかいい結果が得られませんでした。

 

ここで問題なのは、現在のCINEMA 4Dに搭載されているダイナミクスが一つではない、ということです。「歴史的な理由」により、いろいろな機能の中にいろいろな形のダイナミクスが入っています。そしてこれらは異なった時代に異なったプログラマーによって作られたため、インターフェイスや使い方、働き等が異なっていて、かなり混乱しています。また、CINEMA 4Dのグレードによっては使えないダイナミクスもあります。

とはいっても、この混乱はもうどうしようもない話なので、整理しながら、なるべく具体的に説明していきたいと思います。

 

Step 2

ダイナミクスの種類

 それでは、まず現在のCINEMA 4Dに入っているダイナミクスの種類について説明します。このステップは重要なのですが、いきなり読んでもわからないと思います。適当に飛ばし読みして、後で何か困った時に読み返すようにして下さい。

1. ダイナミクス

ダイナミクスは現在のCINEMA 4Dの代表的なダイナミクス機能です。ただし、「ダイナミクス」は「Studio」グレードでしか使えません。

ダイナミクスが扱えるオブジェクトは、「ポリゴン」、「スプライン」、「クローン」、「パーティクル」です。また、扱える機能は、「場」、「衝突」、「変形」、「圧力」、「体積」、「破断」です。さらに、他のオブジェクトやタグを組み合わせることにより、「オブジェクト間のリンク」、「外力」、「XPresso」なども扱えます。

 

2. MoDynamics

MoDynamicsは、Studioに入っているダイナミクスの機能限定版で、「Broadcast」グレードで使えます。

MoDynamicsが扱えるオブジェクトは、「クローン」と「パーティクル」だけです。また、「オブジェクト間のリンク」や「外力」は扱えません。「XPresso」は制限なく扱えます。

 

3. デフォーマ

実は、デフォーマの中にも「ジグル」と「衝突」というダイナミクス機能が入っています。

デフォーマが扱えるオブジェクトは、「ポリゴン」だけです。しかし、全てのグレードで簡単に使えます。ですから、ダイナミクスが必要になったらまずこの機能を試してみて下さい。

ジグルは「場」と「変形」を、衝突は「衝突」と「変形」を扱うことができます。さらに、「XPresso」も扱えます。

 

4. MoGraphエフェクタ

実は、MoGraphエフェクタの中にも「ディレイ」というダイナミクス機能が入っています。

ディレイは、「クローン」に対する「位置」、「スケール」、「角度」の簡単なダイナミクスしか計算できませんが、その分簡単に使えます。憶えておいて損はありません。

 

5. MoGraphオブジェクト

実は、MoGraphオブジェクトの中にも「MoSpline」というダイナミクス機能が入っています。

MoSplineは、「スプライン」に対する「場」の働きしか計算できませんが、その分簡単に使えます。

 

6. スプラインダイナミクスタグ

スプラインダイナミクスタグは、「ヘア」に含まれるスプライン専用のダイナミクス機能です。ただし、「ヘア」は「Studio」グレードでしか使えません。

「ダイナミクス」の機能と比較すると、計算の精度や拘束等の細かい機能に関してはこちらの方が優れています。しかし、スプライン同士の衝突を計算できないとか、閉じたスプラインを計算できないという欠点があります。したがって、スプラインに関しては、ケースバイケースで二つのダイナミクス機能を使い分けるようにして下さい。また、MoGraphとダイナミクス3で説明するような「クローンを使ってスプラインのダイナミクスを表現する方法」もあります。

スプラインダイナミクスが扱える機能は、「場」、「衝突」、「変形」です。さらに、他のオブジェクトやタグを組み合わせることにより、「オブジェクト間のリンク」や「XPresso」も扱えます。

また、ヘアそのものにもダイナミクス機能が内蔵されていますが、これはヘア以外のオブジェクトを扱えないローカルな機能です。

 

7. クロスタグ

クロスタグは、「クロス」に含まれるポリゴン専用のダイナミクス機能です。ただし、クロスは「Studio」グレードでしか使えません。

「ダイナミクス」の機能と比較すると、厚みのないポリゴンで布や服を表現する場合は、クロスの方が優れています。逆に、風船のような閉じた立体を表現する場合は、ダイナミクスの方が優れています。したがって、ポリゴンに関しては、ケースバイケースで二つのダイナミクス機能を使い分けるようにして下さい。

クロスが扱える機能は、「場」、「衝突」、「変形」です。さらに、他のオブジェクトやタグを組み合わせることにより、「オブジェクト間のリンク」、「XPresso」なども扱えます。

 

8. IKタグ

「IK」タグは、キャラクタ機能の中に入っているIK専用のダイナミクス機能で、鎖のように一列にリンクされたオブジェクトにしか適用できません。ただし、全てのグレードで使えます。

IKタグが扱える機能は、「場」と「衝突」です。IKチェーンにトレーサを適用してスプライン化することも可能ですが、基本的にこの機能はIK専用と考えた方がいいでしょう。

 

9. 標準パーティクル

標準パーティクルは、CINEMA 4Dに最初に搭載されたダイナミクス機能です。そして、現在「場」と呼ばれている機能も、そもそもは標準パーティクル用に作られたもので、その後他の機能にも組み合わせられるように拡張されました。

標準パーティクルは、「パーティクル」に対する「場」の影響しか計算できません。また、「XPresso」も扱えません。しかしその分簡単で、全てのグレードで使うことができます。

 

10. ThinkingParticles

標準パーティクルと同じように、ThinkingParticlesの中にもダイナミクス機能が入っています。ただし、ThinkingParticlesは「Studio」グレードでしか使えません。

ThinkingParticlesが扱えるオブジェクトは、「ThinkingParticles」だけです。また、扱える機能は、「ThinkingParticlesの場」と「衝突」だけです。とは言ってもThinkingParticlesは非常に強力な機能なので、オブジェクトやクローンを連動させることができます。また、「パーティクル対オブジェクト」だけでなく、「パーティクル対パーティクル」の衝突も表現できます。

さらに、ThinkingParticlesはXPressoで拡張することを前提に設計されているので、プログラムを書けばいくらでも複雑な表現ができます。例えば、ThinkingParticlesをダイナミクスで動かすこともできますし、逆にダイナミクスをThinkingParticlesでコントロールすることもできます。

 

11. XPresso

XPressoもまた重要なダイナミクス機能の一つです。XPressoは、「オブジェクト」や「ポリゴン」、「スプライン」、「ThinkingParticles」を扱うことができます。また、XPressoは全てのグレードで使えます。

まず、XPressoの中には「衝突判定」や「距離」、「光線の衝突」といったダイナミクス機能の基礎となるノードが用意されているので、「重力」や「剛体の衝突」といった単純なダイナミクスは簡単に書くことができます。

次に、現実の仕事では、標準的なダイナミクスで表現できない特殊な要求が発生し、XPressoを使わざるを得ない、ということがよくあります。例えば現在のダイナミクスには「磁場」を表現する機能がありません。また、「流体(気体や液体)」を表現する機能もありません。

流体の働きを物理的に計算するのは非常に難しく、「RealFlow」のような専用のソフトウエアを使っても、目的とする絵を作れるとは限りません。そのような場合、目的に応じて単純化、特殊化した物理モデルを考え、自分でダイナミクス機能を作ることが唯一の解決方法となります。

 

 

Step 3

標準パーティクルと場

 CINEMA 4Dの標準パーティクルには、8種類の場(モディファイア)がありますが、他のダイナミクス機能に適用できるのは、次に説明する6種類だけです。「反射」と「消滅」は、標準パーティクル固有の機能なので使えません。また、場に含まれる「重力」や「減速」等の機能は、他のダイナミクス機能の側にも用意されています。しかし場は独立したオブジェクトなので、減衰や移動、回転のアニメーションを指定できるという利点があります。それでは、まずダイナミクスに慣れるために、一番簡単な場を使ってみましょう。

 

1. 引力

図621-1

引力は、本質的には重力と同じものですが、CINEMA 4Dでは便宜上中心点があり放射状に働くものを「引力」、中心点が無限遠にあり平行に働くものを「重力」と呼んでいます。これは、「点光源」と「無限遠光源」の違いと同じです。

引力の大きさは、中心点との距離の二乗に反比例します。また、マイナスの値を入力すれば斥力(反発する力)も表現できます。この点では重力よりも電気力に似ています。

 

2. 減速

図621-2

減速は、他のダイナミクス機能の中で「ダンピング」と呼ばれている機能と同じ働きをします。つまり、パーティクルの速度に応じた抵抗力を発生させ、抵抗力と外力(重力等)が釣り合うと、パーティクルの速度は一定になります。

 

3. 重力

図621-3

重力は、中心点が無限遠にある引力なので、ワールド全体に(強さ、方向とも)同じ力が作用します。重力は、重力オブジェクトの「-Y軸」方向に働きます。

 

4. 回転

図621-4

回転は、パーティクルにZ軸周りの速度を追加します。したがって、軸の中心に近いパーティクル程速く回転することになります。

 

5. タービュランス

図621-5

タービュランスは、ノイズ関数を使ってパーティクルにランダムな速度を追加します。ノイズ関数のスケールや周波数を変更することで、いろいろな動きを指定できます。

 

6. 風

図621-6

風は、本質的に重力とは異なる力ですが、CINEMA 4Dの場合は重力と全く同じ働きになります。つまり、風を適用したパーティクルの速度は、風速に関係なく無制限に大きくなります。風速を制限したい場合は、減速を追加して下さい。

また、風は内部にタービュランス機能を含んでいます。

次の章ヘ

MoGraphとダイナミクス: 2.リジッドボディとソフトボディ

リジットボディとソフトボディダイナミクスについて学びます。

前の章 次の章

Step 1

リジッドボディ(剛体)の衝突

 「リジッドボディ」というのは、ダイナミクスの専門用語で「変形しないオブジェクト」を意味します。日本語では「剛体」と呼びます。一般的なリジッドボディは体積を持っていますが、CINEMA 4Dのダイナミクスでは「平面」や「ヌル」オブジェクト等の体積を持っていないオブジェクトでもリジッドボディの計算に含めることができます。ただし、「圧力」や「衝突」等いくつかの機能は使えなくなります。

リジッドボディの衝突は比較的簡単に扱えますが、引っかかりやすい点について説明しておきます。

1. 衝突判定 -> タグの継承

この値はデフォルトで「なし」になっていて、子オブジェクトは衝突しません。この値を「子にも適用」にすると、子オブジェクトが独立して衝突するようになります。また、この値を「階層全体を衝突判定」にすると、階層全体が塊として衝突するようになります。

図622-1

 

2. 衝突判定 -> 個別エレメント

このパラメータは「タグの継承」と似ていますが、クローナーやパーティクルのようにオブジェクトを複製する働きを持ったオブジェクトに対して、ダイナミクスを適用する場合に使います。この値はデフォルトで「オフ」になっていて、この場合クローン全体が塊として衝突します。この値を「全て」にすると、各クローンが独立して衝突するようになります。

図622-2

 

3. 衝突判定 -> 形状

この値はデフォルトで「自動」になっていて、オブジェクトを包む大きさの何種類かのプリミティブオブジェクトが衝突判定の計算に代用されるようになっています。これは、計算速度を速くするためで、ポリゴン1枚1枚の細かな形状は無視されます。また穴も無視されるので、トーラスなどではおかしな結果になります。このような場合は「可動メッシュ」に切り替えてください。

ただし、ポリゴン数が多いと非常に重くなります。このような場合は、簡略化したダミーオブジェクトを作成し、この値を「別オブジェクト」に切り替え、そのオブジェクトを代用して下さい。

図622-3

 

 

Step 2

クローンの衝突

 ダイナミクスは、MoGraphオブジェクトが生成するクローンに対しても働きます。つまり、ダイナミクスを適用したオブジェクトを複製すると、全てのクローンに対してダイナミクスが働くようになります。この働きは、「パーティクル」や「ThinkingParticles」、「配列」、「インスタンス」等多くの機能に共通しますが、ここでは、最も強力な機能であるMoGraphに関してだけ説明します。MoGraphオブジェクトに「ダイナミクスボディ」タグを適用する方法は二つあります。

1. 複製されるオブジェクトに適用する

この場合、オブジェクトごとに物性を変えることができます。また、「コネクタ」や「モーター」は必然的にオブジェクトごとに指定することになります。ただし、オブジェクト数が多い場合は設定が面倒になります。

2. MoGraphオブジェクトに適用する

この場合、全てのクローンに対して同じ物性が適用されますが、設定は簡単です。ただし、ダイナミクスボディタグの「衝突判定 -> 個別エレメント」を、忘れずに「全て」に変更しておいて下さい。そうしないと、クローン全体が一個の塊として計算されてしまいます。

図622-4

 

クローンに対してダイナミクスを適用すると、ダイナミクスの働きが支配的になり、イフェクタによる「位置」と「角度」の働きは消えてしまいます。ただし、イフェクタのそれ以外の機能(スケールやカラー等)は正常に働きます。また、次のような場合は、イフェクタによる位置と角度の情報がダイナミクスに影響を与えます。

1. ダイナミクスが働く前にイフェクタによって与えられた位置(角度)や速度(角速度)の値は、ダイナミクスの「初期位置」、「初期速度」として使われます(MoGraphとダイナミクス4のステップ2「初速」を参照)。

2. ダイナミクスボディタグの「フォース -> 位置追従、角度追従」の値を大きくすると、イフェクタの働きが「一種の外力」としてダイナミクスの計算に含まれるようになります(MoGraphとダイナミクス 4のステップ3「キーフレームアニメーションとダイナミクスを合成する」を参照)。

また、キーフレームアニメーションによる位置や角度の働きもイフェクタと同様に扱われます。

 

 

Step 3

クローン全体をリジッドボディとみなす

 ステップ2では、個々のクローンを独立して計算する場合について説明しました。これに対して、ダイナミクスボディタグの「衝突判定 -> 個別エレメント」を、「オフ」のままにしておくと、クローン全体が「一個の塊」として計算されます。こうすると、クローン一個一個はダイナミクスの計算から「解放」されることになり、その結果エフェクタの働きが戻ってきます。そして、エフェクタの働きによってクローンの塊が「変形」すると、それはダイナミクスの計算に影響を与えます。

図622-5

 

同様に、通常のオブジェクトの場合でも、その形状をデフォーマやPLAで「変形」させると、それはダイナミクスの計算に影響を与えます。

図622-6

 

つまり、CINEMA 4Dのダイナミクスにおける「リジッドボディ」というのは、私たちの日常生活における「剛体」とは少し異なっていて、柔らかく変形することもできるのです。ただし、その変形はエフェクタやデフォーマによってもたらされる変形であり、ダイナミクスの「ソフトボディ」機能による変形ではありません。その結果ダイナミクスは「騙されて」、柔らかく変形するオブジェクトをリジッドボディのまま扱うことになるのです。

このような使い方は非常に重要です。なぜなら、デフォーマやエフェクタはソフトボディより遥かに軽く、簡単に扱えるからです。つまり、柔らかく変形するオブジェクトをダイナミクスで扱いたい場合、いきなりソフトボディを適用するのは得策ではありません。可能な限りデフォーマやエフェクタを使うように工夫してみて下さい。

 

 

Step 4

リジッドボディの拘束

 リジッドボディの動きを完全に止めたい場合は、ダイナミクスボディタグの「ダイナミクス -> ダイナミクス」をオフにします。また、リジッドボディの位置や角度の値の一部を拘束、制限したい場合は、「コネクタ」オブジェクトを使って他のダイナミクスオブジェクトにリンクします。ただし、この機能はStudioグレードでしか使えません。これらの機能の詳細については、MoGraphとダイナミクス4を参照して下さい。

 

 

Step 5

ソフトボディ(弾性体)

 「ソフトボディ」というのは、ダイナミクスの専門用語で「変形するオブジェクト」を意味します。日本語では「弾性体」と呼びます。ソフトボディは、ポリゴンやスプラインを構成するポイントの間に「小さなバネ」を張り巡らし、ポイント間の距離や角度を変えることで表現します。したがって、ポイント数が多くなると、非常に重くなります。ソフトボディを使う時には、ポリゴン数を必要最小限にするよう気をつけて下さい。またソフトボディは、「多数のリジッドボディを小さなバネでリンクしたもの」と解釈することもできます。したがって、衝突や他のオブジェクトへのリンク等リジッドボディができることは全てできます。

 

ソフトボディを構成する小さなバネには3種類あります。これは、ヘアやクロス、他のソフトのダイナミクス機能にも共通する重要な原理です。よく理解して下さい。

1. 構造(引っぱり)

構造は、ポイント間に張られたバネで、二点間の距離を維持する働きをします。

一般的に、オブジェクトの固さに一番影響するパラメータで、例えば、「鎖」は構造が「100%」、折れにくさが「0%」のソフトボディです。

図622-7

 

2. シアー(歪み)

シアーは、四角ポリゴンの対角に張られたバネで、長方形が歪んで平行四辺形になるのを防ぐ働きをします。

したがって、スプラインで作ったソフトボディやヘアにはこのバネがありません。一般的に、四角ポリゴンの部分が詰まっているオブジェクト(例えば「紙」)はシアーの値が大きく、抜けているオブジェクト(例えば「網」)はシアーの値が小さくなります。

図622-8

 

3. 折れにくさ(曲げ)

折れにくさは、ポイントに置かれた回転バネで、そのポイントから伸びるエッジやスプラインの角度を維持する働きをします。

一般的に、厚みのあるオブジェクト程折れにくさの値が大きくなります。また、「鎖」のように関節を持ち、自由に曲げられるようになっているオブジェクトはこの値が「0%」になります。

図622-9

 

 

Step 6

クローン全体をソフトボディとみなす

 ダイナミクスは、クローンをソフトボディにできます。これはMoGraphだけの機能で、他のパーティクル等が複製するオブジェクトは、リジッドボディーにはできますが、ソフトボディーにはできません。

図622-10

ステップ9で説明するように、クローンのソフトボディは非常に重要な機能ですが、根本的な問題がいくつかあります。

1. クローンの間に隙間ができる。

クローンのソフトボディにおいて、クローンの衝突は正しく計算されます。しかし、クローンの間には何も存在しないので、他のオブジェクトがそこをすり抜けてしまいます。

2. クローンの回転を制御できない。

クローンのソフトボディにおいて、クローンは「ポイント上に置かれたオブジェクト」として計算されます。そして、ポイントには角度の情報がありません。したがって、例えばクローンの変形に合わせてクローンの向きを変える、といった簡単なことができません。

 

クローンのソフトボディを使う場合は、このような問題があることをよく理解しておいて下さい。

 

 

Step 7

ポイント選択範囲を使ってソフトボディの一部を拘束する

 リジッドボディは変形しません。したがって、「一部を拘束する」という考え方は無意味です。なぜなら、一部を拘束するのも全体を拘束するのも同じことだからです。それに対して、ソフトボディは変形します。したがって、一部を拘束してもその他の部分は動く(変形する)ことができます。これがソフトボディの特質であり、「一部を拘束する」ということが、ソフトボディを扱う上で非常に重要になります。ところが、CINEMA 4Dのダイナミクスにはソフトボディの一部を簡単かつきれいに拘束する方法がありません。非常に困ったことなのですが、以下にソフトボディの一部を拘束する四つの方法と、その利点欠点について説明します。ケースバイケースで適切な方法を選択して下さい。

1. ポイント選択範囲を使うと、簡単にポリゴンやスプラインで作ったソフトボディの一部を拘束できます。ただし、この機能は非選択ポイントを「ワールド」に拘束するので、その部分を動かせなくなってしまいます。例えば、この機能を使って自動車の荷台に網を張ると、自動車を動かした時にその網は自動車に付いてきません。

非常におかしな仕様で、ほとんどの場合この機能は使えないと考えた方がいいでしょう。ちなみに、「ヘアー」で同じことをすると、ワールドではなくオブジェクトに拘束されます。

図622-11

 

2. ソフトボディをオブジェクトに拘束したい場合、一番簡単なのは「コネクタ」を使ってソフトボディを別のオブジェクトにリンクする方法です。この場合もポイント選択範囲を使いますが、ダイナミクスボディタグではなく、コネクタに適用します。

ただし、コネクタは拘束した点をきれいに固定できず、かなり「ぶよぶよ」します。これが問題にならない場合は、コネクタを使うといいでしょう。

図622-12

コネクタについては、MoGraphとダイナミクス4のステップ4「ダイナミクスが適用されたオブジェクトをリンクする」も参照してください。

 

 

Step 8

XPressoを使ってソフトボディの一部を拘束する

3. XPressoを使うと、ソフトボディの一部をきれいにオブジェクトに拘束できます。ただしこのXPressoを作るにはダイナミクスの内部構造を熟知している必要があり、マニュアルを読んでもわかりません。実際私も独力でこのXPressoを作ることはできませんでした。考え方としては、XPressoを使って親オブジェクトの「速度」の情報、及び各ポイントの「絶対位置」の情報を、ダイナミクスを適用した子オブジェクトに伝える、ということになります。この「速度情報を伝える」という部分が難しかったのですが、結果的にXPressoの構成はそんなに難しくないので、何も考えずにこのXPressoをそのままコピーして使って下さい。

図622-13

 

Step 9

MoGraph選択範囲を使ってソフトボディの一部を拘束する

4. MoGraph選択範囲を使うと、クローンで作ったソフトボディの一部を簡単かつきれいにオブジェクトに拘束できます。

図622-14

この方法の問題点は、当然のことながら「外観がクローンである」ことです。したがって、外観をポリゴンにしたい場合は、XPressoを使ってクローンの変形情報をポリゴンに伝える必要があります。とは言っても、このXPressoは、単にクローンの位置情報をポイントに伝えるだけなので簡単です。もしうまく動作しない場合は、ダイナミクスのデータを初期化してみて下さい。

図622-15

また、線状のクローンからスプラインを作りたい場合は、トレーサを使います。この方法については、MoGraphとダイナミクス3のステップ1「スプラインのソフトボディ」を参照してください。

 

クローンをソフトボディ化するという考え方は、一見すると「使い道のない裏技」のように感じられるかもしれません。しかし、私は「CINEMA 4Dでは、クローンのソフトボディが一番使える」と考えています。

理由は簡単で、クローンのソフトボディには初めから「リジッドボディ」が含まれているからです。クローンのソフトボディにおいて、クローンの位置関係は変形しますが、クローンそのものは変形しないリジッドボディです。したがって、次のようなオブジェクトを簡単に作ることができます。

図622-16

もし、同じオブジェクトをポリゴンのソフトボディで作ろうとすると、大量のコネクタやXPressoを使ってリジッドボディをリンクしなければなりません。そして、それは非常に面倒で、おそらくまともに動かないでしょう。

ここで、クローンの脚が折れないように「角度を固定」という機能を使いました。ステップ6で説明したように、クローンの角度をコントロールするのは難しく、標準ではこれがほぼ唯一の機能です。

また、ダイナミクスに難しい計算をやらせると、オブジェクトが簡単に「発振」し、ひどくなると「発散、破綻」します。このような場合は、まずプロジェクト設定を開き、「ダイナミクス -> 詳細 -> フレーム当たりのステップ数」の値を大きくしてみて下さい。

 

クローンのソフトボディでは「破断」も扱えます。これは「クローンが連続していない」という弱点を逆手に取った機能で、ポリゴンやスプラインで作ったソフトボディではできません。

図622-17

また、ソフトボディーの性質は「頂点ウエイト」タグを使って自由にコントロールできます。クローンは頂点ウエイトを持てませんが、「オブジェクト」モードでクローンを作成した場合は、参照するポリゴンの頂点ウエイトをそのまま利用できます。

次の章ヘ

 

MoGraphとダイナミクス: 3.スプラインとその他の機能

リジットボディとソフトボディダイナミクスについて学びます。

前の章 次の章

Step 1

スプラインのソフトボディ

 スプラインのソフトボディを作るのは非常に面倒です。しかし、CINEMA 4Dにおいてスプラインは非常に重要なオブジェクトなので、この問題を避けて通るわけにはいきません。まずスプラインのダイナミクスが難しい理由を考え、一つ一つ対策していきます。1. スプラインには体積がないので、衝突を計算するのが難しい。原理的な問題です。ダイナミクスは、「スプライン対スプライン」や「スプライン対ポリゴン」の衝突を計算できますが、スプラインは必ず「ソフトボディ」に変換しておく必要があります。リジッドボディのスプラインは衝突しません。また、リジッドボディのポリゴンはうまく計算できず、スプラインが突き抜けてしまいます。この場合は、スプラインの「分割数」、ダイナミクスボディタグの「衝突判定 -> サイズの増分」、プロジェクト設定の「ダイナミクス -> 詳細 -> フレーム当たりのステップ数」の値を調整して対処します。

図623-1

またクローンをスプライン化する場合、クローンには体積があるので問題なく衝突を計算できますが、小さいオブジェクトだとクローンの間をすり抜けてしまうという問題が発生します。

 

2. スプラインの分割数を自由に設定できない

これも原理的な問題です。通常スプラインの分割数は、「見た目のスムーズさ」を調整するために使われる簡単なパラメータです。ところがダイナミクスは、この値によって分割されたスプラインの変形を計算するため、この値の大小が非常に重要になります。具体的には、見た目にスムーズになるようスプラインを細かく分割すると、計算が非常に重くなり、しかも破綻します。

この問題を解決するには、ダイナミクスの計算には粗いスプラインを使い、その形状を「トレーサ」で複製し、オブジェクトの表示には細かく分割したトレーサを使う、という面倒な作業を追加する必要があります。しかも、トレーサを使うと必ず1フレームの遅延が発生します。

図623-2

また、クローンのソフトボディをスプライン化する場合もトレーサを使う必要があります。

 

3. スプラインに他のオブジェクトをリンクするのが難しい

スプラインは、現実世界の「ヒモ」に相当するので、どうしても「何かをつなぐ」ケースが多くなります。ダイナミクスにおいて、オブジェクトをリンクするために用意されているオブジェクトは「コネクタ」ですが、計算が粗く本当に簡単なケースしか扱えません。

図623-3

図623-3を見ると、このような簡単なケースでさえ「handle」オブジェクトを強く動かした時にコネクタがずれて、破綻していることがわかります。

 

ところがクローンのソフトボディを使うと、より複雑なケースでも簡単かつ正確に表現できます。

図623-4

 

というわけで、スプラインのソフトボディに関しては、簡単なケースには「スプラインのソフトボディ」を使い、複雑なケースでは「クローンのソフトボディ」を使うことを私はお勧めします。

クローンのソフトボディを使う方法は、一見複雑で面倒に感じるかもしれませんが、スプラインのソフトボディを使ったとしても結局トレーサで複製する必要があります。また、「接続部分」には何らかのオブジェクトを置いて体裁を整える必要があります。であれば、最初からリジッドボディで接続部分が完成しているクローンのソフトボディを使う方が結果的には単純で扱いやすいと思います。

そして、もしどうしてもソフトボディをうまくリンクできない場合は、早めに掲示板等に質問して下さい。ソフトボディを扱うのはそのぐらい難しいのです。

 

 

Step 2

ソフトボディを膨らませる

 ソフトボディには、「圧力」というパラメータがあります。圧力を使うと、オブジェクトを風船のように膨らませることができます。この機能は、オブジェクトの中に封入されている「気体」を表現するためにあります。一般的に気体の体積は、圧力が変化すると自由に変ります。なお、この機能は「閉じた立体」にしか使えません。図623-5

 

Step 3

ソフトボディの体積を一定に保つ

 ソフトボディには、「体積を保持」というパラメータがあります。体積を保持を使うと、オブジェクトの体積を一定に保つことができます。この機能は、オブジェクトの中に封入されている「液体」を表現するためにあります。一般的に液体の体積は、圧力が変化しても変りません。なお、この機能は「閉じた立体」にしか使えません。図623-6

 

Step 4

ジグルを使って簡単にソフトボディを表現する

 「ジグル」は、ソフトボディ的な変形機能を持ったデフォーマです。衝突や正確なダイナミクス計算はできませんが、その分動作が軽く、簡単に使えます。また、「場」を使って動かすこともできます。例えば、キャラクターアニメーションに使う小物オブジェクトに柔らかさを与えたい場合には、ソフトボディよりもジグルを使った方がいいでしょう。

図623-7

ただし、ジグルはスプラインを扱えません。

 

 

Step 5

衝突を使って簡単に変形を表現する

 「衝突」は、ソフトボディ的な変形機能を持ったデフォーマです。正確なダイナミクス計算はできませんが、その分動作が軽く、簡単に使えます。例えば、「何かを包むオブジェクト」を作りたい場合に、「衝突」は最適です。まず、内部のオブジェクトと包むオブジェクトの位置関係を、「衝突対象 -> 解析」で指定します。また、内部のオブジェクトと包むオブジェクトの間に「隙間」を空けたい場合は、「詳細 -> サイズ」の値を大きくして下さい。図623-8

 

また、衝突の「形状を復元」の値を0にすると、変形を固定できます。専門用語では「塑性変形」と言うのですが、この機能を使うと「何かが通った跡」を表現できます。この機能は、ダイナミクスのソフトボディにはありません。

図623-9

次の章ヘ

MoGraphとダイナミクス: 4.ダイナミクスのアニメーション

ダイナミクスのアニメーションについて学びます。

前の章

Step 1

ダイナミクスの効果を切る

 まず始めに、アニメーションの途中でダイナミクスの効果を入れたり切ったりする方法を二つ説明します。ダイナミクスの効果を切る一番の理由は、「切らない限りオブジェクトを動かせない」からです。言い換えると、ダイナミクスの効果が続いている限り、オブジェクトをマウスでつかむことはできず、またキーフレームやエフェクタによって位置や角度の値を操作することもできません。

 

1. 「ダイナミクス -> 有効にする」

「有効にする」のチェックを外すと、全てのダイナミクス計算が停止します。

図624-1

したがって、ダイナミクスの働きによって移動、回転していたオブジェクトは、「有効にする」のチェックを外すと、即座に初期位置に戻って静止します。ダイナミクスの計算が完全に停止しているので、他のオブジェクトと衝突することもありません。また、コネクタや場、モーターなどの機能も全て無効になります。

「MoGraph選択範囲」を使うと、一部のクローンだけを有効にしたり、無効にしたりできます。

 

2. 「ダイナミクス -> ダイナミクス」

「ダイナミクス」を「オフ」にすると、ダイナミクスによる移動と回転の効果が停止します。しかし、他のオブジェクトと衝突し、コネクタやモーターなどの機能も全て有効です。つまり、ただ「動かない」だけであって、ダイナミクスのその他の機能は正常に働いているわけです。この機能は、「障害物」を作る時よく使います。

図624-2

次に、アニメーションの途中でダイナミクスをオフにすると、それまでダイナミクスの働きによって移動、回転していたオブジェクトは、ゆっくりと初期位置に戻って静止します。ゆっくり戻せるのはダイナミクスが働いているからです。この時、初期位置に戻るまでの時間を「ダイナミクス -> トランジッションの間隔」で指定できます。また、戻る時に、衝突を考慮するかどうかを「ダイナミクスの切り替え」で指定できます。

次に、「コネクタ」を使ってダイナミクスをオフにしたオブジェクトをダイナミクスがオンのオブジェクトにリンクすると、間接的ではありますが、ダイナミクスがオンのオブジェクトをマウスやキーフレームで操作できるようになります。これは非常に重要な機能です。

また、「MoGraph選択範囲」を使うと、一部のクローンだけをオンにしたり、オフにしたりできます。

 

このような理由から、普通はダイナミクスのオンオフでダイナミクスの効果をコントロールすべきだと言えます。しかし、このパラメータはオフにしても内部で計算が継続しているため、処理が重くなります。また、計算が継続していることが目に見えないため、思わぬトラブルの原因となるかもしれません。

したがって、複雑なシーンにおいて「このフレームではダイナミクスを全く使わない」とはっきりわかっている場合は、そこで無効にしておくといいでしょう。

また、シーンに非常に多くのクローンがあり、その一部にしかダイナミクスを適用しない、とはっきりわかっている場合は、「MoGraph選択範囲」を使って関係ないクローンのダイナミクスを無効にしておくといいでしょう。

 

 

Step 2

初速

 ダイナミクスの計算では、「初速」を与えることができます。初速とは、ダイナミクスの計算が始まった時にあるオブジェクトが持っている速度のことで、「移動」と「回転」のそれぞれに初速があります。初速の与え方はいろいろありますが、ここでは代表的な三つの方法について説明します。

 

1. 「ダイナミクス -> カスタム初期速度」で直接初速を与える

「カスタム初期速度」をチェックすると、「初期線形速度(初期速度)」と「初期回転速度(初期角速度)」の二つのパラメータが表示されます。ここで、初速を直接ベクトル形式で指定できます。

図624-3

 

2. キーフレームアニメーションから初速を引き継ぐ

キーフレームによって動いているオブジェクトに対して、あるフレームで「ダイナミクス」を「オン」にすると、それ以降はダイナミクスの計算が支配的になり、キーフレームの働きが無視されるようになります。

ただし、ダイナミクスがオンになった時にオブジェクトが持っていた「速度」は、初速としてダイナミクスに引き継がれます。

図624-4

 

3. エフェクタから初速を引き継ぐ

エフェクタによって動いているクローンに対して、あるフレームで「ダイナミクス」を「オン」にすると、それ以降はダイナミクスの計算が支配的になり、エフェクタの働きが無視されるようになります。

ただし、ダイナミクスがオンになった時にクローンが持っていた「速度」は、初速としてダイナミクスに引き継がれます。

図624-5

 

 

Step 3

キーフレームアニメーションとダイナミクスを合成する

 私はステップ2において、「ダイナミクスをオンにすると、キーフレーム等の働きは無視されるようになる」と書きましたが、「フォース -> 位置追従、角度追従」の値を大きくすると、キーフレームやエフェクタの働きがダイナミクスの計算に影響を与えるようになります。

この場合、キーフレームやエフェクタの働きは「一種の外力」として働きます。例えば、キーフレームによって指定された位置と、ダイナミクスによって指定された位置との間にズレがある場合、そこに「仮想的なスプリング」が追加され、そのスプリングの強度を「追従」の値で調整するわけです。

デフォルトでは、「追従」の値が「0」になっているので、このスプリングの働きは全く見えません。

図624-6

 

この機能を使うと、キーフレームアニメーションとダイナミクスアニメーションの中間的な動きを表現できます。またこの機能を使えば、エフェクタやXPresso等が生成した動きをダイナミクスに影響させることができます。

 

 

Step 4

ダイナミクスが適用されたオブジェクトをリンクする

 ダイナミクスの「コネクタ」オブジェクトを使うと、ダイナミクスが適用された2個のオブジェクトをリンクできます。コネクタでリンクできるのは、主としてリジッドボディです。ソフトボディは一応リンクできますが、リンクした部分がかなり「ぶよぶよ」するので、使い方に注意する必要があります。

コネクタの第一の目的は、「自動車の車体と車輪のように、リンクされたオブジェクトを表現する」ことですが、もう一つ「キーフレームやエフェクタ、XPresso等でコントロールされたオブジェクトの動きを、ダイナミクスでコントロールされたオブジェクトに伝える」という重要な働きがあります。この場合、キーフレーム等でコントロールするオブジェクトの「ダイナミクス」は必ず「オフ」にしておいて下さい。

次に、コネクタはMoGraphオブジェクトを使って複製できます。つまり、コネクタを適用したオブジェクトを複製すると、全てのクローンに対してコネクタが働くようになります。

コネクタはいろいろな方法(タイプ)でオブジェクトをリンクできますが、ここでは、よく使う三つの方法について説明します。

1. ヒンジ

「ヒンジ」は、「回転軸」です。この場合、自由な回転軸は一つだけです。回転角度を制限することもできます。

図624-7

 

2. ボールとソケット

「ボールとソケット」は、「ボールジョイント」です。自由な回転軸は三つです。

制限付きのボールジョイントを使いたい場合は、「ラグドール」を選択して下さい。また、自由な回転軸を二つに制限したい場合は、「カルダン」を選択して下さい。

図624-8

3. 固定

「固定」は、その名の通り二つのオブジェクトを固定します。自由な軸はありません。複数の部品で構成されたオブジェクトをダイナミクスで計算する場合、普通は親オブジェクトにダイナミクスボディタグを付け、「衝突判定 -> タグの継承」で「衝突判定形状を合成」機能を使って子オブジェクトを認識させます。

しかし、この方法では、全ての部品に同じ「物性」が適用されます。もし、一部の部品の物性を変えたり、リジッドボディとソフトボディを組み合わせたい場合は、XPressoを使うか、コネクタでリンクするしかありません。

図624-9

 

 

Step 5

リンクしたオブジェクトにスプリングを仕込む

 ダイナミクスの「スプリング」オブジェクトを使うと、「コネクタ」でリンクしたオブジェクトの間にスプリングを追加できます。

スプリングのタイプには、「リニア」と「回転」の2種類があります。ただし、スプリングにはコネクタの機能はないので、「リニア」の場合は「スライダー」コネクタ、「回転」の場合は「ヒンジ」コネクタでリンクしておく必要があります。

図624-10

また、スプリングはMoGraphオブジェクトを使って複製できます。つまり、スプリングを適用したオブジェクトを複製すると、全てのクローンに対してスプリングが働くようになります。

 

 

Step 6

リンクしたオブジェクトにモーターを仕込む

 ダイナミクスの「モーター」オブジェクトを使うと、「コネクタ」でリンクしたオブジェクトの間にモーターを追加できます。

モーターのタイプには、「リニア」と「回転」の2種類があります。ただし、モーターにはコネクタの機能はないので、「リニア」の場合は「スライダー」コネクタ、「回転」の場合は「ヒンジ」コネクタでリンクしておく必要があります。

さらにモーターには、「スピードを調節」と「フォースを適用」の二つのモードがあります。両方ともまず「フォース」または「トルク」で指定された力を加えてオブジェクトを動かします。

次に、「スピードを調節」モードの場合は、スピードが「リニアターゲットスピード」または「回転ターゲットスピード」に達っすると、それ以上スピードが上がらないようになります。「フォースを適用」モードの場合は、際限なくスピードが大きくなります。

図624-11

また、モーターはMoGraphオブジェクトを使って複製できます。つまり、モーターを適用したオブジェクトを複製すると、全てのクローンに対してモーターが働くようになります。