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.

柔体(Soft Body)シミュレーション

Image 1a: A softbody cloth uncovering a text. AnimationBlend file

柔体(Soft Body)は、柔らかい、または変形する物体のシミュレーションです。Blenderにおいて、このシステムは布でできた物および閉じたメッシュに適しています。ぺらぺらした布切れに対しては、別のエンジンを使った専用のクロスシミュレーションがより適しています。

シミュレーションはオブジェクトの頂点や制御点に対して力を作用させることで行われます。重力や力場といった外部の力、および頂点同士をつなぎとめようとする内部の力です。このようにして、何かで満たされた物体が力に反応した場合にとる形状をリアルに再現できるのです。

柔体は他のオブジェクトと衝突させることができます(Collision)。自分自身と衝突することもできます(Self Collision)。

柔体シミュレーションの結果は静的なオブジェクトに変換できます。また、シミュレーションの結果を編集(bake edit)することもできます。たとえば途中のあたりの結果を編集して、そこからまたシミュレーションをすることもできます。

典型的な使い方

Image 1b: A wind cone. The cone is a Soft Body, as the suspension. AnimationBlend file

柔体は以下のようなものに適しています。

  • 伸び縮みする物体。衝突をする場合もしない場合も。
  • 力に反応する旗や布切れ。
  • ある種のモデリング作業。たとえばクッションやテーブルクロスを作るとき。
  • Blenderには衣服をシミュレートするのに適した別のシステム(クロスを参照)がありますが、幅の広い袖などの特定の部分には柔体を使うこともできます。
  • 髪(衝突を最小限にすれば)。
  • 揺れるロープ、鎖などのアニメーション。

以下のビデオを見れば使い道のアイデアがもっとわくかもしれません: [1], [2]

柔体の作成

柔体シミュレーションは頂点または制御点をもつすべての種類のオブジェクトで行えます。

  • メッシュ
  • カーブ
  • サーフィス
  • ラティス

オブジェクトを柔体としてシミュレーションを起動するには:

  • PropertiesウィンドウのPhysicsタブ(一番右の、ボールが弾んでいるアイコン)に移動します。
  • Soft Bodyのボタンを押します。

するとたくさんの設定項目が現れます。 すべての項目のリファレンスはここを参照

  • シミュレーションはAltAで始められます。
  • Spaceでポーズ、AltAで再開。
  • Escで中止します。


シミュレーション品質

Soft Body Solverパネルでシミュレーションの正確さを設定できます。

Min Step
各フレームに対するシミュレーションの最小ステップ数。動きの速い衝突オブジェクトが柔体をすり抜けてしまうようなときは数値を大きくしてください。
Max Step
各フレームに対するシミュレーションの最大ステップ数。通常、シミュレーションのステップ数は(Error Limitlに基づいて)動的に変わりますが、この値を変えたほうがいい場合もあるでしょう。
Auto-Step
ステップサイズを自動的に変えます。
Error Limit
シミュレーションの全体的な品質。デフォルトは0.1です。これは衝突の作用をどのくらい正確にチェックするかという最も重要な項目です。まずは平均的な辺の長さの半分の値にしてください。そして目に見える不都合、乱れ、大げさすぎる反応などが発生した場合は、値を下げます。Error Limitが同じなら、シミュレーションはどんなときでも大体同じくらいの「ひどさ」で行われます。値を下げると、より最適なステップサイズになります。
Fuzzy
シミュレーションの計算が速くなりますが、正確さは下がります。
Choke
旦衝突オブジェクトのメッシュ内に進入した頂点や辺を落ち着かせます(出て行く速度を下げます)。


Diagnostics

Print Performance to Console
シミュレーションの動作をコンソールに出力します。
Estimate Matrix
行列を推定してCOM、ROT、SCALEに分離します。



キャッシュとベイク

柔体や他の物理シミュレーションは統一的なキャッシュおよびベイクのシステムを持っています。詳しくはパーティクルキャッシュeng)を参照してください。

アニメーションをプレビューすると、シミュレーションの結果は自動的にディスクにキャッシュされ、次にアニメーションするときは保存したデータを読み取ってすばやく動作します。シミュレーションをベイク(Bake)した場合はそのキャッシュは保護され、再計算が必要になるような変更を加える際はたずねられます。

Blender3D FreeTip.gif
開始時間と終了時間に注意
シミュレーションはBakeパネルのStartEndで指定したフレームの範囲だけで行われます。ベイク以外のときもです! よってデフォルトの250フレームよりも長くシミュレーションしたい場合はEndの値を変える必要があります。


  • キャッシュ:
    • アニメーションが始まると、それぞれの物理シミュレーションシステムが、その開始時間から終了時間までのフレームをディスクに書き込みます。これらのファイルは.blendファイルと同じ場所に“blendcache”の接頭語をつけて保存されます。
    • 変更が加えられた場合キャッシュは消去されますが、すべての変更の際ではありません。よって手動で開放しなければならない場合もあります。たとえば、力場の設定を変えたときなどです。再度キャッシュする際には、シミュレーションの開始時間よりも前の(または同じ)フレームからアニメーションさせなければならないことに注意してください。
    • ディスクに対する書き込み権限がないときはキャッシュはされません。
    • キャッシュの開放は各シミュレーションシステムごとのパネルから行えます。またCtrlBで、選択したすべてのオブジェクトのキャッシュを消去できます。
    • .blendファイルの名前がとても長くて、かつオペレーティングシステムでファイル名の長さに制限がある場合、問題が発生する可能性があります。
  • ベイク:
    • ベイクすると、シミュレーションの結果はプロテクトされ、変更はできなくなります。
    • CtrlBで、選択したすべてのオブジェクトのベイク結果を消去できます。また現在のオブジェクトの柔体シミュレーションについてはFree Bakeで開放できます。
    • メッシュ形状を変更してもシミュレーションの再計算はされません。

レンダーファームでレンダリングするときは、すべての物理シミュレーションをベイクして、blendcacheファイルをすべてレンダーファームに送るのが良いでしょう。

リアルタイムなインタラクション

柔体シミュレーションの作業をするときには、Timelineウィンドウが便利だと気づくでしょう。目的のフレームに簡単に移動でき、つねにそのときのフレームのシミュレーションが表示されます。TimelineウィンドウのPlaybackメニューからContinue Physicsのオプションを選択すると、シミュレーション中にオブジェクトにかかわることができます。たとえばオブジェクトを動かして衝突させたり、柔体を揺らしたりできます。とても楽しいですよ!

Blender3D FreeTip.gif
Continue PhysicsAltAでアニメーションしているときは働きません。
この機能はTimelineウィンドウでPlayボタンを押したときだけ使えます。


シミュレーションの途中のフレームで柔体オブジェクトを選択し、EditingコンテキストでモディファイアをApplyすると、そのときのオブジェクトの形状が定着します。

ヒント

  • 柔体シミュレーションはオブジェクトの頂点が均等に分布していると特に上手く働きます。また衝突を高品質でシミュレートするには十分な数の頂点が必要です。オブジェクトのある部分に頂点を追加すると、その部分の変形のしかたが変わります(硬くなります)。Image 1bのアニメーションを参照。
  • 衝突の計算は長い時間がかかることがあります。見えない部分は計算しないようにしましょう。
  • 衝突の計算を速くするためにしばしば便利なのは、単純で透明で比較的大きな補助オブジェクトを作って、実際にはそれに衝突させることです(Image 1aの例を参照)。
  • 柔体を使うのは、その必要があるときだけにしましょう。ぴったりした布で表面を覆った物体を単独でアニメーションさせる場合などは意味がありません。柔体の髪に自己衝突を適用することはできますが、これはややこしいことになるでしょう。それについては後の柔体-衝突eng)で扱います。
  • オブジェクトそのものではなく、それに付加したLatticeCurve Guideを柔体にすることも試してみましょう。計算が物凄く速くなるかもしれません。


リンク