Table of Contents
Blender Tips の7回目です。
今回は Blender 上で重力に引かれたり物体に当たったりできるリアルな布(クロス:Cloth)を作る方法について紹介します。
布を掛けるオブジェクトの設定
まず、布に覆われる側のオブジェクトから作ってみましょう。
オブジェクトモードでショートカット[Shift + A]を使い、プリミティブ作成メニューを開いて球体(UV Sphere)を選びます。
設定は変えず、原点に配置してください。
この球体の設定を、他の物体と衝突するように変更します。
球体を選択し、画面右側のモディファイアタブ(スパナのアイコン)を開きます。そこで Add Modifier > Collision を選択して追加します。
これで Collision Modifier が球体に追加され、これから作る布と衝突できる状態になりました。Collision の設定は特に変えなくて大丈夫です。
他のオブジェクトが当たっても透ける場合、この Collision Modifier を追加し忘れているのが原因であることがありますので注意してください。
布となるオブジェクトを作る
次に、布となる平面オブジェクトを作ります。
[Shift + A]で平面(Plane)を作成し、[G > Z]でZ軸上方向に移動させて球体の上に配置されるようにします。
そのままだと布が小さいので、リスケール[S > 2]を入力してスケールを二倍にします。
以下の画像のようになればOKです。
配置し終えたら、平面を分割(Subdivide)します。
エディットモードに切り替えて、右クリック > Subdivide を選択し、画面端に現れる設定オプションから分割数(Number of Cuts)を大体50くらいにします。
当然、細かく分割すればするほど布の滑らかさは増しますが、物理演算にかかる負荷も高くなります。
ここで無理に分割数を増やしてしまうと、布を動かした際に最悪 Blender がフリーズすることになります。
後で分割数は調節できますので、ここでは適度な値にしておきます。
分割し終えたら、平面を布にするためのモディファイアを追加します。
平面を選択し、Add Modifier > Cloth を選択します。
その後、物理挙動の設定タブ(Physics Property)を開きます。
この中の Quality Steps と Collisions > Quality を 10 に上げます。さらに Collisions > Self Collisions を有効にします。これで布がそれなりに滑らかな動きをしてくれるようになります。
ちなみに、布の質感はプリセットから設定することもできます(Clothタブ右上のメニューアイコン)。
以上でひとまず布の設定ができました。
再生と微調整
オブジェクトモードにしてスペースキーを押すと、物理アニメーションが再生されます。
上記の設定が正しく行われていれば、以下のような球体に被さる布アニメーションが再生されるはずです。
しかし、見てわかるように、まだメッシュの四角が目立っており滑らかとは言えません。
これを改善にするには、まず、布を右クリックして Shade Smooth を実行します。
これでかなり滑らかに見えるようになりますが、アニメーション再生中は少し四角が見えます。
そこで、布のモディファイア Cloth の後にモディファイア Subdivision Surface を追加します。これによって元の平面の分割数を変更せずにさらなる面の分割ができます。
分割数を3あたりにするとほぼカクカクしたところは見えなくなります。
布を作る際の注意点
アニメーションの再生が遅い場合
布が滑らかになるほどPCには負荷がかかり、アニメーションがカクカクになります。
対策としては、アニメーションのキャッシュを作っておく(Bake)ことができます。
Cloth > Cache > Bake で指定したフレーム間のアニメーションのキャッシュを作ることができます。
布がおかしな動きをする場合
布の被るオブジェクトのメッシュに異常があると、布が思わぬ挙動をすることがあります。
例えば、面に面が交わったり重なっていたりと構造が複雑化しているときは、布の位置が安定せずブルブルと震えることがあります。
また、布を被るオブジェクトが小さすぎる時も布がくしゃくしゃになることがあります。
布を縫い合わせて(Sewing)服を作る際にモデルのスケールが小さいと、布がうまくモデルにフィットしないといった問題が起こることがあります。
布を被るオブジェクトのスケールをある程度大きくするなどの対策や、時にはメッシュの構造を見直す必要があるかもしれません。
以上、Blenderで滑らかな動きをする布を作るための設定と注意点でした。
布の状態(フレーム)でメッシュを固定する方法
布のシミュレーションにおける、とあるフレームの状態でメッシュを固定したい場合は、そのフレームで一時停止して布のモディファイア(Cloth)を適用(Apply)するだけです。
これで布の全頂点がシミュレーションの位置と同じ場所に固定され、エディットモードで編集などができるようになります。
参考
Cloth Physics Messed Up At Real World Scale? Help/Advice requested : blender