« クロスシミュレータ1 | Main | ソフトボディ4 ~蝋燭の炎~ »

April 30, 2011

クロスシミュレータ2 ~ピンニングを使ってみる~

クロスシミュレータのピンニング機能を使ってみました。

ピンニングでもそれだけではめり込み回避はなかなか難しく、結局めり込みやすい体のメッシュの服に隠れる部分の胸、脇を内側にへこませ、ピンニングのウエイト調整で服のメッシュで体形を維持してごまかしました。

また、前回の実験で体に設定したSoftBody等を整理、体(含Armature)と服も分割(Subsurf)をかける前に衝突判定するようにしてClothのBakeをできるだけ速くするように修正。
レンダリング時にSubsurfをかけています。
それにより服の皺などが大雑把になり、質感もかわって見える感じです。
劇的に計算が速くなるわけではありませんが、布を厚くしたり、質感をやや固めにしたい時にこちらのほうが手っ取り早い場合もあるし、試行錯誤にも少しでも速いほうが良いですね。

Woman1_lite_w3

↓上記のBlender2.49b用ファイル。

jump01_Hair_cloth04D5A.zip for Blender 2.49b


ちなみに↓は体と服に、先にSubserfをかけてからBakeしたもの。
Bakeにかなり時間がかかるようになりますが、皺の出方が柔らかく、細かくなっています。

Woman1_w3

■ピンニングを利用してClothシミュレータを使用する手順メモ

1.準備として、リグ設定済みの体のメッシュをデフレクタとしてコリジョン設定をしておく。
 (オブジェクトモードで体メッシュ選択)→Object(F7)→Physics Buttons→CollisionタブのCollisionをON

2.服のメッシュに体と同じリグを仕込む。
 (オブジェクトモードで服メッシュ選択)→体と同じArmatureをモディファイアに追加。

3.Armatureを選択してPoseモードに入り、Aを押して全てのボーンを選択。

4.Shiftキーを押しながら服メッシュオブジェクトを追加選択し、ウェイトペイントモードに入る。

5.Wキーを押してApply Bone Heat Weights to Vertex Groupsを選択。
  自動でボーンごとのウェイトが服オブジェクトに割り当てられる。
  (個別にボーンを右クリックすると確認することができる)

6.Tabを押してエディットモードに入り、Vertex GroupsのNewボタンでピンニング用のバーテックスグループを適当な名前で作成。(今回はdress)

7.AでVertexを全選択し、ボタンエリアのWeight値を0にしてAssignし、3D画面上でピンニングのウエイトをペイント。(下図)
  ウェイト0(青)でClothの影響を完全に受け、ウエイト1(赤)では全く影響を受けなくなる(ピン留めされる)。
  (ウェイトペイントモードで別なVertex Groupが表示されている場合はEditingパネル(F8)→ボタンエリア左のVertex Groupsからピンニングバーテックスグループをいつでも選べる)

8.服オブジェクトが選択されている状態でObjectパネル(F7)→Physics ButtonでClothタブのClothをON。
  服の素材の適当なプリセットを選んでおく(今回はCotton)
  下のPinning of Clothをオンにし、6で作ったピンニングバーテックスグループ(今回はdress)をリストから選択。
  めり込み防止等でQualityの値が重要なので、上げておいたほうが良い(今回は17)

9.Cloth CollisionタブのEnable collisionボタンをON。
  めり込み防止は主にCollision Qualityで設定。(今回は4)
  (上げすぎるとBakeに時間がかかる)
   ※なお、髪等が服にかかる場合はさらに左のCollosionタブでCollisionをオンにしておく。

10.Bakeなり、Alt+Aなりでキャッシュを作って動かしてみる。
 


↓今回の服オブジェクトのウェイトペイント
Screen
 

■Clothタブパラメータの意味
Cloth

・ClothボタンでClothシミュレートのオンオフ。
・Clothボタン横のボタンをオフにすると、一時的にClothシミュレーションを切ることができる(レンダリング、3D画面)
・Preset(右上):素材のプリセットパラメータを選ぶことができる(Silk、Cotton等)
  Silk: 絹。多くのしわを表現するため、何度かサブディバイドしておくと良い。
  Cotton: 綿
  Rubber: ゴム
  Denim: デニム。Rubber と Denim はあまり分割しないで、ローポリ気味の方が良い。
  Leather: 皮革。
・StructStiff: 構造的な Stiffness(剛性)。斜め剛性も含む。
         低い値でクロスは伸縮するゴムのようになる。
・BendStiff: 曲げの固さ。どれぐらいクロスにしわができるかを表現。
       高い値で大きくはなるが、必ずしもしわが増えるとは限らない。
・Spring Damp: 移動が減衰する量を指定。いらない振動を防ぐことができ、アニメーションがスムーズになる。
・Air Damp: どれだけ空気の粘性が高いか、どれだけ粘性により移動が止まるか。
       実際には、高い Air Damp 値で、クロスの移動が遅くなる。
・Quality: 大きくすると、クロスが安定(高い Bend Stiff 値でも振動が少ない)し、更に衝突判定が改善される。
・Mass: 大きくすると、より重いクロスになり、通常の布のように端がもう少し重くなる。
・Gravity: クロスに与えたい X、Y、Z方向の重力を指定。
・Pinning of cloth: 指定した VertexGroup に属する Vertex を固定。
・Pin Stiff: 元の位置とのスプリングの固さ。小さいとゆるくなる。

※以上はBlender.jp - リリースノート-Blender2.46 クロスシミュレーションより要約。


■Cloth collisions タブパラメータの意味
Cloth_collision

・Enable Collisions: 衝突判定が有効になる。
・Min Distance: 衝突判定が動作する厚み。
          クロスと衝突する Mesh 間の最低距離を保持。
          衝突時に貫通してしまう場合は、単純にこれを増やしてみる。
          (最初の Cloth パネル内の Quality も増やしてみること)
・Collision Quality: 判定を繰り返す回数。
            多いと精度が高まるが遅くなる。
・Friction: Friction(摩擦)で、クロスが衝突したオブジェクト上をどれだけ滑るかを設定。
・Enable Selfcollisions: 自分自身との衝突(セルフコリジョン)判定を有効にする。
・Min Distance: セルフコリジョン判定が動作する厚み。
          クロス内の他の部分との最低距離を保持するのに役立つ。
・Selfcoll Quality: この値は、セルフコリジョンの多数の層の処理に役立つ。
           Collision Quality は少なくとも Selfcoll Quality と同じ大きさにしないと動作しない。

※以上はBlender.jp - リリースノート-Blender2.46 クロスシミュレーションより要約。


|

« クロスシミュレータ1 | Main | ソフトボディ4 ~蝋燭の炎~ »

Comments

Post a comment



(Not displayed with comment.)




« クロスシミュレータ1 | Main | ソフトボディ4 ~蝋燭の炎~ »