ソフトボディ
ソフトボディで風になびく旗を作成
ゼリー状の柔らかく弾力のある物体やなびく旗などを表現する際に使用する機能「ソフトボディ」。以前からとても気になっていたソフトボディ機能、敷居が高そうで敬遠しておりましたが、今回思い切って挑戦してみたいと思います。
まずは、旗となる板状のMeshオブジェクトを用意します。ソフトボディ機能の効果を活かすには極力ポリゴンが細かい方が良いとのことなので、画像のように[Subdivide]にて細分化を行います。さらに今回は、仕上がりがよりきれいに見えるように[Subsurf(サブディビジョン・サーフェイス)]のLevels 2を適用しました。
今回は風を吹かせて旗をなびかせるため、とりあえず始めに旗となる板状のMeshオブジェクトに対して、風の影響力を設定します。
[Edit Mode]に変更し全ての頂点を選択します。その状態で「Bottons Window」内のコンテキスト[Editing]を選択し、「Link and Materials」タブ内の[New]をクリック。名前の「Group」を任意の名前に変更します。(今回は「Flag」で・・・)「Weight」を[0.000]に変更し[Assign]をクリックし確定します。これにより全ての頂点が風の影響を受けるようになりました。
上記設定のままだと旗が風で飛ばされてしまうので、固定する箇所を設定します。いわゆる「ピン止め」です。画像の通り上部左右の頂点を選択し、先程設定した「Weight」を[1.000]に戻し同じく[Assign]をクリックし確定します。これにより設定した箇所は風の影響を受けなくなります。
いよいよソフトボディの設定です。[Object Mode]に変更し板状Meshオブジェクトを選択した状態で、「Bottons Window」内のコンテキスト[Object]、サブコンテキスト[Physics buttons]を選択し、「Soft Body」タブ内の[Soft Body]をクリック。まず[Grav(重力)]を0.980に設定します。0.980とは地球の重力値(だそうです)。次に[Use Goal]にて先程設定した「Flag」の頂点ウエイトを反映させます。最後に旗の伸び縮みの設定を行います。初期設定のままだと旗が風によって不自然に伸びたり縮んだりしてしまうので、 [Rull]と[Rush]の値を1(0.999)に変更し伸び縮みしないようにします。
〈追記〉July 9, 2010
地球の重力値ですが、他の文献では9.8と表記されておりBlenderの初期設定もGrav : 9.8であることから考えてもこちらの数値が濃厚だと思われます。
ソフトボディの設定が完了したので、最後に風を発生させるフィールドの作成を行います。「Header」から(または「3D View」上にマウスカーソルを移動し[Space]キーを押す)[Add] > [Empty]を選択します。「Bottons Window」内のコンテキスト[Object]、サブコンテキスト[Physics buttons]をクリックし、「Fields」タブ内の[Field Type]から「Wind」を選択。[Strenght(風の強さ)]を1.000に設定します。後はフィールドを旗の手前の適当な場所へ移動し、Z軸の矢印が旗の方に向くように回転します。
これにて準備完了です。では[Alt]+[A]キーでアニメーションを再生してみます。無事旗が風になびきました。それにしてもこんな事までもがオープンソースのフリーウェアで出来てしまうなんて、改めて「Blender」の素晴らしさを実感してしまいます。
因みにアニメーションを停止させるには[ESC]キーです。