元記事:Softbodies


ソフトボディ(SoftBody)



はじめに




Soft Body Movie by @ndy
Blender のそれぞれの Object で "SoftBody(軟体物理演算)"エフェクトを適用できるようになりました(現在は Mesh と Lattice のみ)。一旦適用すると、この SoftBody システムは、ゼリーや布のような柔らかい物質を支配している物理法則を元に、Vertex を動かすことができるようになります。

2.37デモファイル(4MB)に、SoftBody の二つのサンプル、softbody_basics.blend と wind_soft.blend があります。


SoftBody エフェクトをコントロールするには、主に二つの方法があります。

"Goal"
SoftBody の Goal は、選択された Vertex の組で、ピンのような役割をします。SoftBody の影響量のコントロールはこれらで行います。
Goal を完全にアクティブ(1.0)にすると、Object は通常のアニメーション付き Object(SoftBodyエフェクトなし)のように振るまいます。
Goal を0.0にした場合、Object は物理法則にのみ影響を受けます。
Goal 値を0.0から1.0の間に設定することにより、Object がアニメーションシステムから受ける影響と、SoftBody エフェクトから受ける影響をブレンドすることができます。

また、Goal はメモリとしても働き、SoftBody Object があまり大きく変形しないようにし、最終的にはSoftBody によるアニメーションがされていない形状になります。
VertexGroup の Weight システムを使用して、Goalのウェイトを Vertex ごとに設定できます。

より自然に見えるようにするには、Vartex がオリジナルの位置からどれだけ遠くに動けるかをコントロールするスプリング(Stiff)を設定するといいでしょう。



Weight Paint を使用し、SoftBody の Goalを作成




スプリング
Edge のスプリングは、Edge がオリジナルの長さをどれぐらい保つかを決めます。例えば、Cube に対角線の Edge を追加することにより、より堅牢になります。(より「ゼリー状」ではなくなります)。Edge のスプリングを使用することで、Object はそのオリジナルの形状を保ちつつ、物理によって自由に動くことが可能になります。
スプリングはまた、布のシミュレーションにも使用することができます。


現在の実装


Blender2.37の SoftBody システムは主として、アニメーションシステム(キャラクタアニメーションも含む)の拡張を目的としています。柔らかい、もしくはくねくねするスキンのようなエフェクトが非常に簡単にできるようになりました。

SoftBody エフェクトをある Object で有効にした時、常に時間の進行をシミュレートします([Alt]+[A]のようなアニメーション再生、もしくは[→]キー)。逆方向の時間、もしくは9フレームを超えた大きなステップのジャンプでは、SoftBody はオリジナルの位置に戻ります。新しい TimeLine Window の再生を使えば、SoftBody のエフェクトの調整をインタラクティブに行えます。

一旦シミュレーションに満足したなら、"Bake" でシミュレーションを静的なアニメーションシステムに焼き付けるといいでしょう。Bake した SoftBody は非常に早く再生され、シミュレーションにはもう依存しなくなります。
シミュレーションはモーションブラー(MBlur)レンダリングでは上手く働かないこと、また、ネットワークレンダリングシステムで小さなチャンクでレンダリングするためには、アニメーションのレンダリング時には SoftBody を Bake することをお勧めします。

布のシミュレーションに SoftBody を使用する場合、特に衝突判定についてはまだテスト段階です。現在の衝突判定コードは改良が必要で、後のリリースに予定されています。

また、布のシミュレーションをもっと正確にコントロールするため、後のリリースで特別な Edge オプションを追加する予定です。現在、SoftBody のすべての Edge の効果は等しくなっています。


Field と Deflector


SoftBody の Vertex は Particle として扱われるため、ForceField と Deflector のオプションも同様に適用されます。

反射(衝突)はデフォームされていない(hook、Armature、Latticeなどが適用されていない)Mesh でのみ動作することに注意して下さい。詳細はField と Deflection をご覧下さい。


SoftBody の設定





Softbody 設定パネル


全体的なオプション:


Goal オプション:


Edge オプション:


Bake の設定




Start、End
Bake(焼付け)する SoftBody シミュレーションの範囲の設定。

Interval
Bake 間隔のフレーム数の設定(Bake 結果の「解像度」)。中間の位置はこのステップをキーフレームとして使用し、Bスプラインで補間されます。

Bake
Bake 処理の開始。複雑さにもよりますが、すこし時間がかかります。[Esc]で Bake を止めることができます。一度 Bake すると、このボタンは "Free Bake(Bake の解放)" ボタンに変わります。SoftBody の設定を変えたい時は、Bake された結果を解放しなければなりません。


SoftBody の学習


以下にスタートガイドと、Blender の SoftBody を学び、実践できる、いくつかのビデオチュートリアルへのリンクがあります。

チュートリアルへのリンク
Elysiun.comで、Tuxbot氏が素晴らしい SoftBody ビデオチュートリアルをいくつか作成・告知されています。これらはblendertutorials.orgで公開されています。

スタートガイド
このセクションは主な二つの種類の SoftBody、「ゼリー」オブジェクトと、布オブジェクトの作成をカバーするものです。これらは深い部分に触れるチュートリアルではなく、むしろ Blender の SoftBody システムを身近な物にするサンプルです。


「ゼリー」SoftBody

このサンプルは比較的シンプルで、Goal の設定と VertexGroups の作成について悩む必要はありません。

このサンプルで必要なのは、一枚の Plane と、一つの IcoSphere(Subdivision:2)だけです。Plane の大きさは IcoSphere より少し大きくして下さい。IcoSphere の位置(Object の中心位置)は、 Plane の4グリッドユニット上にして下さい。

EditButtons([F9])の Smooth ボタンと SubSurf ボタンをONにし、IcoSphere をなめらかにします。SubSurf のレベルを2にすると、よりなめらかになります。

そして EditMode を出て、ObjectButtons([F7])に行きましょう。SoftBody パネルをクリックし、"Enable Soft Body" をクリックします。ゼリーのようなエフェクトには、少しの設定だけでOKです。まず最初に、"Use Goal" ボタンをOFFにします。どの Vertex にも重み付けの必要がないためです。

次に "Grav" を9.8ぐらいまで増やします(これは現実の重力のシミュレートです)。

そして、"E Stiff" を0.9ぐらいまでに増やします。"E Stiff" より高く、もしくは低くすると、硬い、もしくは柔らかい材質のゼリーになります(一番高いレベルにすると、この IcoSphere は剛体に近くなります)。

最後に、IcoSphere を Plane 上でバウンドするようにする必要があります。Plane を選択し、Particle Interaction パネル(タブ)をクリックし、"Deflection" をONにします。デフォルトの設定のままで大丈夫です。

では[Alt]+[A]を押し、ゼリーがバウンドするのをみましょう!


布の SoftBody

このサンプルは前回に比べ少し複雑になりますが、さほど多いわけではありません。
Plane を作成し、少し大きくします。Subdivide([W]キーメニュー)を二回行います。EditButtons([F9])にし、SubSurf をONにします(レベルは2がベストです)。そして"Set Smooth" を押します。

「ピン」を布の隅の一つに追加します。SoftBodyのエフェクトが判るようにするためです。新しい VertexGroup を作成し、"Weight" を0にします。すべての Vertex を選択し、"Assign" を押します。

次に、布の隅の Vertex を一つ選択し、"Weight" を1.0にします。そしてもう一度 "Assign" を押します。これは SoftBody シミュレーションが進行中、その Vertex をその位置に固定します。

EditMode を出、ObjectButtons([F7]) の SoftBody パネルに移動します。再び "Enable Soft Body" をクリックします。"Grav" を9.8に増やし、今回は、"Use Goal" ボタンはONのままにしておきます。"Use Goal" の隣になる小さいメニューボタンをクリックし、先ほどの VertexGroup の名前を選択し、Goal に使用します(このケースでは、選択できるのは Group だけです)。

では、[Alt]+[A]を押してみましょう。布が重力に反応するのがわかります。材質の柔らかさを変えるには、"E Stiff"ボタンを調整します ― 小さい値で布はほぼ無限に伸び、大きい値でほとんど伸びなくなります。

コーディング:Jens Ole Wundsi氏、統合:Ton Roosendaal氏
リリースログとチュートリアル:Jason Saunders氏