From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.


Page status (reviewing guidelines)

Copy This page is a copy of the same page in 2.4 manual, need to be updated

Text Partially
Proposed fixes: none

クロス(Cloth)シミュレーション

Cloth example.
Cloth on carved wooden men (made by motorsep).
Cloth example.

クロス(布)シミュレーションはCGの表現の中でも難関の一つです。布は現実の世界ではありふれた素材のようで、実際はその内部や環境との間で非常に複雑な相互作用が働いているのです。何年もの開発の末にBlenderは非常に強力なクロスシミュレーターを手に入れ、衣服や旗の再現ができるようになりした。クロスはあなたのコントロールするオブジェクトや風や力場および他の空力モデルと関わって、その影響を受けます。

解説

クロスとして設定されれば、どんなメッシュでもクロスとして振舞います。Physicsサブコンテキストに三つのパネルで構成されたClothパネルがあります。クロスは開いたメッシュでも閉じたメッシュでもよく、また質量がゼロでもいいし、単位面積あたりの質量を持たせることもできます。

クロスは一般的にグリッドまたは立方体としてモデル化されますが、たとえばテディベアでもいいのです。しかしながら、閉じたメッシュであればソフトボディを使うほうがよりうまくシミュレートできます。クロスはぺらぺらした布地のシミュレーションに向いています。

オブジェクトがクロスとして設定されると、クロスモディファイアがオブジェクトのモディファイアスタックに追加されます。モディファイアは他のモディファイア、たとえばArmatureSmoothと相互作用します。この場合、メッシュの最終的な形状はモディファイアスタックにおけるモディファイアの順序に則って計算されます。たとえば、クロスを滑らかにするならその形状が計算されたあとにしなくてはいけません。

よってクロスは二つの場所で編集することになります。F7のPhysicsボタンでクロスの様々な性質を調整し、モディファイアスタックでは画面での表示や他のモディファイアとの関係を調整します。

クロスモディファイアをApplyして、クロスをそのフレームでの形状に固定することもできます。そうするとモディファイアは削除されます。たとえば、平らなクロスをテーブルにかぶせて、シミュレーションを行い、それからモディファイアをApplyします。この場合はモデリングのためにシミュレーターを使ったということになるでしょう。

シミュレーションの結果はキャッシュに保存されます。よって一度計算されたメッシュ形状のアニメーションは再計算する必要はありません。シミュレーションの設定を変えた場合は、キャッシュの消去と 再計算を自由にできます。一度目のシミュレーションは完全に自動的に行われ、ベイクや余計なステップは含まれません。

各フレームでのクロス形状の計算はバックグラウンドで自動的に行われるので、その計算中も作業を続けられます。しかしこれは非常にCPUを使う仕事で、あなたのコンピュータのパワーとシミュレーションの複雑さにかかっています。CPUのパワーがたくさんいる計算の場合は描画の遅れに気づくでしょう。

先回りしないように
クロスシミュレーションをセットアップし、しかしまだシミュレーションの終わりまで計算されていない場合、先のほうのフレームにジャンプするとクロス形状が正しく計算されないかもしれません。それ以前のフレームがまだ計算されていないからです。


作業の流れ

クロスに関する作業は以下のような手順になります。

  1. クロスの初期形状をモデリングします。
  2. PropertiesPhysicsタブで、オブジェクトをクロスとして設定します。
  3. クロスと相互作用するdeflectionオブジェクトをモデリングします。Deflectionモディファイアがモディファイアスタックの最後、つまり他のモディファイアによる変形等よりも後になるように注意してください。
  4. クロスに照明をあて、マテリアルやテクスチャの設定をします。必要ならUV展開をします。
  5. 必要ならパーティクルを追加します。たとえば布の表面から蒸気が出るような場合。
  6. シミュレーションを実行し、満足な結果になるように設定を調整します。timelineウィンドウのVCRコントローラが役に立つでしょう。
  7. 場合によっては、シミュレーションのある時点でのクロス形状を初期形状として再度シミュレーションします。
  8. フレームごとに細かな手直しをします。


クロスシミュレーションの生成

このセクションでは望みの結果になるようにどう設定すればいいかを紹介します。 まず、クロスを有効にして、再現したいクロスの種類に応じてセットアップします。プリセットから手始めとなるものを選べます。

設定してみるとおわかりのように、布地が重くなるほど、硬くなり、伸びにくく、空気の影響が少なくなります。

クロスパネル

Presets
いくつものクロスの例が用意されています。新しく付け加えることもできます。
Quality
1フレームごとのシミュレーションのステップです。数値を高くすると品質は上がりますが、計算が遅くなります。

素材

Mass
クロス素材の質量。
Structural
全体的な硬さ。
Bending
しわの係数。数値が高いほど大きなひだができます。

減衰

Spring
クロスの速度の減衰。高いほど滑らかで、あまり揺れなくなります。
Air
空気は通常、物が落下する速度を和らげる働きがあります。

ピン止め

Cloth in action.

クロスをピン止めするのにまず必要なのは頂点グループです。これにはいくつか方法があり、ウェイトペイントを使ってピン止めしたい部分にペイントするのもやり方の一つです(ウェイトペイントを参照)。

頂点グループを設定したら、あとは簡単です。ClothパネルのPinning of clothボタンを押し、使用する頂点グループとその点での硬さを設定します。

Stiffness
ターゲットの点での硬さ。数値はデフォルトの1のままで良いでしょう。



衝突

大抵の場合、クロスはたんに3D空間に垂れ下がっているだけではなく、環境内の他のオブジェクトと衝突します。適切なシミュレーションをするためにいくつか設定・注意しなければならないことがあります。

  1. クロスオブジェクトをCollision(衝突シミュレーション)に参加するように設定します。
  2. オプションとして(しかし推奨)、クロス自身とも衝突するように設定します。
  3. 他のオブジェクトはメッシュオブジェクトでなければいけません。
  4. 他のオブジェクトは移動したり、さらに他のオブジェクトの影響(アーマチュアやシェイプキーなど)で変形したりしてもかまいません。
  5. 他のオブジェクトはクロスをdeflect(ゆがめる)する設定をします。
  6. .blendファイルを保存してください。そうするとシミュレーションの結果も保存されます。
  7. それではシミュレーションをBakeしましょう。アニメーション範囲の各フレームでの形状が計算されます。
  8. その後、各フレームでの形状を編集できます。
  9. 環境や他のオブジェクトを再調整して、特定のフレーム以降を再シミュレーションすることもできます。


衝突の設定

Cloth Collisions panel.

今度はクロスオブジェクトを衝突シミュレーションに参加させなければいけません。右のようなCloth Collisionパネルを探してください。

Enable Collisions
この項目をLMB Template-LMB.pngクリックすると衝突が有効になります。
Quality
シミュレーションの全体的な品質。数値を高くすると計算に時間がかかりますが、物体がクロスを突き抜けてしまったりすることが少なくなります。
Distance
他のオブジェクトがこの距離よりも近づくと、クロスを押しのけます。
Repel
衝突しそうになったときの斥力。
Repel Distance
斥力が働く最大距離。最小値よりも大きくする必要があります。
Friction
摩擦効果。メッシュオブジェクトとぶつかったときの滑りにくさです。たとえば、絹は綿よりも摩擦が低いです。


クロス自身との衝突

現実の布は自分自身をすり抜けたりはしません。よって通常は自己衝突の設定が必要でしょう。

Enable Self Collisions
これをクリックすると、クロスは自分自身を突き抜けなくなります。これはシミュレーションの時間が増しますが、結果がよりリアルになります。遠くから見た旗などにはこの設定は必要ないでしょうが、人物のケープやブラウスを近くから見るときには有効にするべきでしょう。
Quality
数値を高くすると、衝突の計算がより多く繰り返され、品質が上がります。少なくともCollision Qualityと同じかそれ以上にする必要があります。
Distance
何か問題があったらMin Distanceの数値を変えてみるといいかもしれません。たいていは0.75あたりが最適ですが、動きが速い場合は1.0にしたほがいいでしょう。0.5まで下げるのは非常に危険です(すり抜けてしまうことが多々あるでしょう)が、計算のスピードアップにもなります。

サンプルファイル: Cloth selfcollisions.

共有されたレイヤー

たとえば、レイヤー2と3にズボンが、レイヤー1と2に人物が存在している場合を考えてみてください。ズボンにはすでにクロスの設定がしてあります。クロスにとって人物が「見え」て要る必要があります。そうすれば、人物の足が曲がるとき、その動きはクロスを押しのけます。大事なことは、他のシミュレーションと同じく、相互作用は共有されているレイヤーのみで起こるということです。この例の場合、双方のオブジェクトはレイヤー2を共有しています。

オブジェクトのレイヤーを変えるには、3D ViewObject ModeでオブジェクトをRMB Template-RMB.pngクリックして選択します。そしてMMove Layersポップアップを表示させると、そのオブジェクトが存在しているレイヤーがわかります。オブジェクトを1つのレイヤーに移動するにはレイヤーのボタンをLMB Template-LMB.pngクリックしてください。複数のレイヤーに移動するには⇧ ShiftLMB Template-LMB.pngで選びます。あるレイヤーからオブジェクトを取り除きたい場合は、⇧ ShiftLMB Template-LMB.pngで再度クリックします。

メッシュオブジェクトの衝突

衝突に使いたいのがメッシュオブジェクトではないとき、たとえばNURBSサーフィスやテキストオブジェクトの場合、メッシュに変換する必要があります。Object Modeでオブジェクトを選択し、3D viewのヘッダからObject → Convert Object TypeAltC)を選び、ポップアップメニューからMeshを選びます。

クロスとオブジェクトの衝突

Collision settings.

クロスは他のオブジェクトによってゆがまないといけません。クロスをゆがめるには、オブジェクトをクロスと衝突させるように設定する必要があります。衝突するオブジェクト(クロスオブジェクトのほうではありません)のdeflectionを有効にしてください。

ButtonsウィンドウのObjectコンテキスト、その中のPhysicsサブコンテキストで、右図のようなCollisionパネルを見つけてください。このパネルで設定をすると、共有しているレイヤー内の他のオブジェクト(パーティクル、ソフトボディ、クロス)に対しても衝突やdeflectionが起こるということに注意してください。

注意
CollisionパネルはPhysicsサブコンテキスト内に三種類あります。一つ目はFieldsパネルのそばにあるもので、これがいまここで必要なパネルです。二つ目はSoft Bodyグループにあるタブで、これはソフトボディに関係するものです(よってクロスに関する限り見る必要はありません)。そして最後にCloth panelのそばのタブです。これは、さきほど設定に使いました。


メッシュオブジェクトのモディファイアスタック

Collision stack.

オブジェクトの形状がクロスを変形させるためには、そのフレームでのオブジェクトの「本当の」形状がわからなければシミュレーションできません。この本当の形状とは基本となる形状がシェイプキーやアーマチュアによって変形された状態のものです。したがって、Collisionモディファイアはこれらのモディファイアよりもあとに位置しなければいけません。右図は人物のメッシュオブジェクトのモディファイアです(クロスオブジェクトではありません)。

クロスのキャッシュ

キャッシュの設定は他の物理シミュレーションと同様です。詳しくはパーティクルキャッシュを見てください。

衝突をベイクする

After Baking.

シミュレーションにかかわるフレームでの他のオブジェクトの設定(アーマチュアによるメッシュの変形も含めて)が終わったら、衝突の計算を始められます。クロスを選択し、ObjectコンテキストのPhysicsサブコンテキストで、StartEndを設定してシミュレーションするフレーム範囲を決め、Bakeボタンを押してください。

ベイクしたシミュレーションを消去するまではStartEndは変えられません。シミュレーションが終わると、開放、編集、再ベイクのボタンが現れるでしょう。

ここですぐに気づくことがいくつかあるでしょう。まず、以前よりもベイクが非常に遅いということ、それからおそらく右図のように箱を突き抜けてしまう部分があるでしょう。

シミュレーションのキャッシュを編集する=

キャッシュには各フレームでのメッシュ形状が含まれています。シミュレーションをベイクしたあとBake Editingボタンを押すと、キャッシュされた形状を編集できます。編集したいフレームに移動し、⇆ TabEdit modeに移動します。そしてメッシュ編集ツールをなんでも使って頂点を動かしてください。Edit modeから出ると、アニメーションのフレームとしてそのメッシュ形状が記録されます。そのフレーム以降を再シミュレートしたい場合はRebake from next Frameを押してアニメーションを再生してください。Blenderは編集後のメッシュ形状を使って続きをシミュレートしてくれます。

メッシュを編集して、オブジェクトが突き抜けてしまった部分などを手直ししましょう。

メッシュの頂点を追加、消去、押し出し、取り外し、などすると、1フレーム目から現在のフレームまでメッシュが置き換えられます。よって、Edit modeから出るときにはキャッシュの保護を解除して消去してください。そうすればちゃんとつながりのあるシミュレーションになります。

トラブルシューティング

衝突検出に関して問題にぶつかったときは、修正する方法は二つあります。

  • 手っ取り早いのはCloth CollisionパネルのMin Distanceを大きくすることです。これが一番手軽に「つきぬけ」を修正できます。しかしながら、正確さは低下するので見た目はあまりよくないでしょう。このやり方をすると、クロスは空気の上にふんわりと乗っているような感じになります。
  • もう一つの方法はQualityClothパネルにあります)を上げることです。そうするとより細かいステップでシミュレーションが行われ、すばやい動きの衝突も高い精度で再現できるようになります。また、Collision Qualityを上げることもできます。衝突の計算を反復する回数が上がります。
  • これらの方法で解決できないときは、キャッシュまたはベイクされた結果をEdit modeで編集できます。
  • クロスがオブジェクトに切り裂かれてしまうという場合は、ClothパネルのStructStiffを非常に高く、1000くらいにしてみてください。
Subsurfモディファイア
ベイクやキャッシュは異なるsubsurfレベルに応じてそれぞれ行われるので、3D Viewとレンダリング時のsubsurfレベルは同じにしておいてください。


クロスシミュレーションをするには、もちろん布が必要です。よってデフォルトの立方体を消去して平面を追加してください。私はY軸に沿って拡大してみましたが、そうしなくてもかまいません。きれいにぺらぺらふにゃふにゃとさせるにはメッシュを何度か再分割する必要があります。私は8回再分割しました。⇆ Tabを押してEdit modeに入り、W → Subdivide multiで8に設定してみましょう。

では、このオブジェクトをクロスにするために、Objectコンテキスト(F7) → Physicsサブコンテキストに移動しましょう。スクロールしてClothパネルを見つけ、Clothボタンを押してください。するといろいろな設定値が現れるでしょう。しかし今回はこれらのほとんどは扱いません。

これでクロスをアニメーションさせる準備はおしまいです。しかし、AltAを押してみても、あなたのかわいい布切れはまったくおもしろくない感じに落下するだけでしょう。これをなんとかするのが次の2つのセクションで説明するピン止めと衝突です。

成形のためにシミュレーションを使う

どのフレームでも、ClothモディファイアをApplyしてそのときのメッシュを固定化することができます。そして再度クロスを有効にし、最初と最後のフレームを設定してシミュレーションすることもできます。

旗を例にしてみましょう。単純なグリッドをポールにピン止めして、50フレームほどシミュレーションしてみると、旗は自然なポジションに落ち着いて止まります。その状態でクロスモディファイアをApplyします。そしてシーンの中ではためかせたくなったら再度クロスを有効にして、旗がカメラに写っている時間をシミュレーションのフレーム範囲に設定すればいいのです。

クロスを滑らかにする

さて、前のセクションから続けて読まれているなら、あなたのクロスは少しカクカクしているかもしれません。それを滑らかにするには、Editingコンテキスト({Shortcut|f9}})のModifiersパネルで、SmoothSubsurfモディファイアを使ってください。そして、同じコンテキストでLinks and Materialsを見つけ(頂点グループのために使ったのと同じパネルです)、Set Smoothを押してください。

それではAltAを押してみてください。すばらしい結果になるはずです。

アーマチュアとクロス

アーマチュアやよって変形されるクロス、および他のオブジェクトとの衝突のサンプルファイル:Regression blend file

クロスをソフトボディとして使う

Using cloth for softbodies.

クロスはソフトボディを再現することにも使えます。これが主な目的ではないのは確かですが、ちゃんと働きます。この例では標準のRubberプリセットを使っています。設定は変えず、AltAを押しただけです。

写真の例のサンプルファイル: Using Cloth for softbodies

クロスと風

Flag with wind applied.

風と衝突のシミュレーションのサンプルファイル: Cloth flag with wind and selfcollisions.