dskjal
広告
広告

Blender でスカートや髪を物理で動かす方法まとめ

カテゴリ:blender

目次

概要

物理シムを使う方法は大きく分けて2種類ある。物理シムを直接使う方法と、物理シムの結果をボーンやメッシュにコピーして動かす方法とだ。メッシュが単純な形ならば物理シムをそのまま適用しても満足できる結果が得られることもある。しかしメッシュが複雑な形をしている場合、コリジョンがうまく機能しなかったり静止したときに元の状態に戻らなかったりする。その場合は物理シム用メッシュを作成し、その結果をボーンやメッシュにコピーする方法を使うことになる。

ソフトボディの減衰設定

ソフトボディの減衰設定

ソフトボディ VS. クロスシム

詳しい説明はWhat is the technical difference between softbody and cloth simulation?を参照。

体積の保存

ソフトボディは体積を保存するがクロスシムはそうではない。多様体(一般的な閉じたメッシュ)を地面に落下させたとき、ソフトボディは元の形状を保存しようとするがクロスシムは布のように折りたたまれる。

計算負荷

ソフトボディの方が一般的に計算負荷は高い。ソフトボディは頂点間の距離が変化するが、クロスシムの頂点間の距離は固定だからだ。

柔らかい布を表現したい時はクロスシムよりソフトボディを使った方がいいかもしれない。

ボーン VS. メッシュ変形・サーフェス変形

ボーンはセットアップが面倒だ。しかし物理シムの影響を切り替えたり、物理シム後に微調整できるようなリグが組める。

メッシュ変形・サーフェス変形モディフィアはセットアップが簡単だが、調整はシミュレーション頼りになる。スカートや板ポリで作った髪のような非多様体(閉じていないメッシュ)はメッシュ変形よりもサーフェス変形を使った方が調整がしやすい。

ボーンの分割

髪の束のボーンは必ずしも分割する必要はない。頭を大きく動かさないなら、分割しない方が制御が簡単だ。

ボーンを分割しない場合の動き

ボーンを分割しない場合の動き

シミュレーションのジッター対策

このジッター対策はクロスシミュレーションとソフトボディとで使える。

アニメーションの開始を遅らせる

物理シミュレーションの初期状態が安定するまで時間がかかる。物理シミュレーションが安定してからアニメーションさせる。

ベイクする

リアルタイムの物理シミュレーションは安定しないため、必ずベイクする。

キャッシュを削除する

エディットモードに入るとキャッシュを削除できる。

メッシュを拡大する

リアルスケールでジッターがなくならない場合は、メッシュのサイズを5倍以上拡大するとうまくいくケースがある。メッシュを拡大すると動作が遅くなるので、「速度の乗数」でシミュレーション速度を早くする。

シミュレーション速度を上げると、「品質のステップ」でコリジョンの品質を上げる必要がある。頂点の質量が小さすぎると、品質のステップを上げてもジッターはなくならない。

ジッターの設定

ジッターの設定

シミュレーション開始直後にメッシュが爆発する原因はたいてい、質量が小さすぎることと減衰が大きすぎることだ。

コリジョン

コリジョンと接触している部分にジッターが発生する場合は、コリジョン(クロスシムではない)の「外側の厚さ(Thickness Outer)」を大きくする。厚すぎる場合は、メッシュを拡大してシミュレーションをベイクした後に、縮小する。

揺れをおさえる

クロスシム

減衰を強くすることで、揺れを抑える。ただしクロスシムは減衰を強くするとメッシュが爆発するので、その場合は空気の粘性を上げる。

ソフトボディ

ソフトボディも減衰を強くする。クロスシムと違い、ソフトボディは減衰を強くしてもメッシュが爆発しづらい。

コリジョン

面や辺に対してコリジョンが機能しないことがある。シミュレーション中にクロスシムのメッシュが貫通する場合は、シミュレーションのメッシュの分割数を増やす必要がある。コリジョンのついているメッシュの分割数を増やす必要はない。

小さいメッシュはコリジョンがうまく機能しないので、メッシュを拡大する必要がある。詳細はシミュレーションのジッター対策を参照。

シュリンクラップを使ったコリジョンの解決

Blender 2.80 で貫通部分にのみシュリンクラップを適用するオプションが追加された。モードをプロジェクト・Outside surface にすると使える。

シュリンクラップの新モード

シュリンクラップの新モード

クロスシミュレーション

クロスシミュレーションの使い方

[Blender 2.8] 布の表現 [クロスシミュレーション]

クロス・シミュレーション

Blender Tutorial - Cloth Simulation | Advance Simulation | Blender 2.9

この動画ではクロスシミュレーションの実践的なワークフローが紹介されている。例えばアーマチュアモディフィアやサーフェス変形モディフィアで服を変形してからクロスシムを実行する方法、重ね着をクロスシムで対処する方法、下に身体がない服のメッシュにクロスシムでしわを作る方法など。

直接クロスシミュレーション

クロスシムの質量は各頂点の質量であることに注意する。衣服の質量を頂点数で割った値を入力してもうまくいくとは限らない。柔らかい布を表現したい場合は、頂点の質量に非常に小さな値(0.01 程度)を入力することもある。

スカートにクロス・シミュレーション〈その1〉

直接クロスシミュレーションでディティールの保存

メッシュ変形や IK を使う方法ではディティールは保存されたままだ。たとえば現実ではプリーツスカートを引っ張ると折り目が展開されるが、メッシュ変形や IK ではそうはならない。

直接クロスシミュレーションする方法ではパラメータを適切に設定すればそのような動きも可能になる。重要なパラメータは Bending(曲げ)、Spring(ばね)、セルフコリジョンだ。

Spring(ばね)は布の柔らかさをきめる。Spring が小さいと体が貫通しやすい。

Bending(曲げ)はしわの保存力をきめる。大きければ大きいほど元の折り目が復元されやすい。

Bending 0.5 (デフォルト)

Bending 0.5 (デフォルト)

Bending 1000

Bending 1000

.blend ファイルダウンロード

服が貫通する場合

服が貫通する場合は以下の項目を確認する。

1.Spring(ばね)を設定して布を柔らかくする

Damping(減衰): の Spring(ばね)を大きくすると布が柔らかくなる。

Spring の設定

Spring の設定

動作デモ

動作デモ

2.シミュレーション前の時点でメッシュ変形のメッシュが体を貫通している

メッシュ変形のメッシュと体とが近すぎると正しくシミュレーションできない。これはシュリンクラップを使ったときに起こりやすい。

3.メッシュ変形用メッシュがレンダリング用メッシュより小さいことを確認する

レンダリング用メッシュより大きいメッシュ変形用メッシュをつくり内側へ Solidify(厚み付け)をする場合、体を貫通しやすい。

メッシュ変形用メッシュの配置

メッシュ変形用メッシュの配置

4.メッシュ変形用メッシュの分割数が少なすぎる

メッシュ変形用メッシュの分割数が少なすぎると、ふくらみのある部分でメッシュが貫通しやすい。

5.体のコリジョンの Outer(外側)が小さい

Outer でコリジョンのサイズを変更できる。

体のコリジョンサイズの設定

体のコリジョンサイズの設定

.blend ファイルダウンロード

固い布を作る

布のポリゴン数を少なめに作成し、各パラメータを最大まで上げる。再分割局面モディフィアが必要になる場合はクロスシムの下にそれを追加する。固い布を作るのには曲げ(Bending)パラメータが重要だ。しかし曲げパラメータを上げすぎると布が振動したり崩壊したりするので注意する。

固い布の設定例

固い布の設定例

固定グループに指定する頂点を二列にするのも効果がある。固定グループの頂点が一列の場合は、固定グループ周辺の回転に対する固定力が低い傾向にある。

上二列を固定する

上二列を固定する

クロスシミュレーション + メッシュ変形

スカートにクロス・シミュレーション〈その2〉

クロスシミュレーション + IK

スカートにクロス・シミュレーション〈その3〉

このボーンのセットアップを自動化するスクリプト

クロスシミュレーション + サーフェス変形

サーフェス変形はセットアップの手間が少ないメッシュ変形のようなものだ。メッシュ変形と違いシミュレーション用メッシュが閉じていなくてもいい。

Surface Deform Modifier

Surface Deform Technical Documentation

使い方

クロスシミュレーション + メッシュ変形と同様にクロスシミュレーションメッシュとレンダリング用メッシュを用意する。レンダリング用メッシュにサーフェス変形をつけ、Target: にシミュレーション用メッシュを指定して Bind を押すだけだ。

サーフェス変形の設定

サーフェス変形の設定

サーフェス変形の制限

サーフェス変形は以下のようなメッシュをターゲット:に指定できない。

1. 重複頂点を含むメッシュ

これらの頂点は「重複頂点を削除(Remove doubles)」で削除できる。

2. 凹型(concave)ポリゴンを含むメッシュ

凹型ポリゴンとは以下のようなポリゴンのことだ。凹型ポリゴンを見つける簡単な方法はない。しかし三角化(Triangulate Face)や「メッシュ > クリーンアップ > 凹面を分割(Split Concave Faces)」で解消できる。

凹型ポリゴン

凹型ポリゴン

3. 辺に3つ以上の面が接続されているメッシュ
3つ以上の面が接続されている辺の例

3つ以上の面が接続されている辺の例

非多様体の選択(Select non-manifold)で多数の面で共有(Multiple Faces)にのみチェックを入れると選択できる。

多数の面で共有

多数の面で共有

4. 同一線上にある辺をもつ面を持つメッシュ

同一線上にある辺を持つ面とは以下のようなものだ。これは三角ポリゴンの辺のうちの一つを分割するとできる。これがあってもバインドはできる。しかしバインドした瞬間にメッシュがゆがむ。

これも簡単に見つける方法はない。しかし三角化(Triangulate Face)で解消できる。

同一線上にある辺

同一線上にある辺

クロスシムを利用したモデリング

これはフックモディフィアを使えば実現できる。フックで釣りたい頂点をピン止め用頂点グループに含めておき、フックで釣ってからクロスシムを適用する。

モディフィアの適用順

モディフィアの適用順

ソフトボディ

ソフトボディ間のコリジョンはジッター(細かな振動)をなくすのが難しい。その場合は、オブジェクトをすべて結合して、クロスシミュレーションの pressure とセルフコリジョンを使った方が良い結果が得られることがある

ソフトボディのパラメーターの解説

Blender SoftBody Tutorial - Introduction(英語)

ソフトボディ + IK

耳をソフトボディで揺らしてみた

ソフトボディ+メッシュ変形で髪を動かす

そのほか

剛体

辺でコリジョンを作る(2.91)

バージョン 2.91 からは辺のコリジョンも機能するようになった。

設定方法は以下のようになる。

  1. レンダリングするメッシュに剛体をつけ、コリジョンのシェイプを「複合形状(Compound Parent)」にする
  2. 辺でコリジョンを作り、辺メッシュを子としてレンダリングするメッシュに親子付けする
  3. 辺メッシュに剛体をつける

リジッドボディ + ボーンで髪のアニメーション

シミュレーションしたリジッドボディの情報を位置コピーと IK とを使ってボーンにコピーする。リジッドボディコンストレイントの基本はリジッドボディコンストレイントの使い方を参照。

コリジョンの設定

コリジョンメッシュを用意する。コリジョンメッシュの間隔が詰まっているとあまり曲がらない。適宜調整する。

コリジョンのセットアップ

コリジョンのセットアップ

各コリジョンメッシュの原点を上部の中心に設定する。これはボーンの位置コピーや IK の際に必要になる。

原点の設定

原点の設定

リジッドボディの設定

これらのコリジョンメッシュにリジッドボディをつける。最初のリジッドボディを以下のように設定する。体や背景メッシュと衝突させるなら、体や背景メッシュにも同じ設定を適用する。

体のコリジョンの設定

体のコリジョンの設定

残りのコリジョンメッシュにリジッドボディを設定する。初期設定でOK。

リジッドボディコンストレイントの設定

コリジョンメッシュ間にエンプティを配置し、リジッドボディコンストレイントの汎用ばねを設定する。リニアを制限すると、コリジョンメッシュは回転しかしなくなる。

リジッドボディコンストレイントの設定

リジッドボディコンストレイントの設定

ボーンの設定

後はボックスの位置にボーンを配置し、位置コピーと IK を設定するだけだ。コリジョンメッシュは振動していないのに、ボーンが振動する場合はボーンの長さが足りてない。ボーンの長さを調整するかストレッチ(Stretch to)をつける。

このときボックスの X 軸とボーンの X 軸を一致させておくといい。ボーンのロールはプロパティシェルフ(N)のロールで設定できる。

座標軸の設定

座標軸の設定

ロールの設定

ロールの設定

コンストレイントの設定

コンストレイントの設定

設定

動作速度が遅い場合はシーンの速度を変更する。

速度の変更

速度の変更


揺れを抑える時はリジッドボディコンストレイントのばねの減衰を大きくする。

減衰の設定

減衰の設定

凸包の注意点

凸包はへこみを表現できない。実際に凸のような形に凸包を適用すると以下のようになる。

凸包はへこみを表現できない

凸包はへこみを表現できない

このような場合はコリジョンのシェイプをメッシュにするか、コリジョンメッシュを分割してへこみをなくすようにする。コリジョンのシェイプをメッシュにすると形状によっては計算に時間がかかる。

バージョン 2.91 からは辺で構成された子オブジェクトをコリジョンに指定できるようになった。これを使えばチェーンのようなオブジェクトでも剛体を使ってシミュレーションできる。

.blend ファイルダウンロード(2.80)

アドオン

ボーンにリジッドボディを設定するアドオン

Bonedynamics Pro($15~$50)

GenRigidBodies

rigid bodys generator

Blenderで簡単にRigid Body(剛体)とConstraint(ジョイント)を設定できるaddon

【Rigid Bodies Generator】Blenderのアドオンで髪を揺らす方法をご紹介!

スローペアレント+Bボーン

スローペアレントとBボーンで揺れものをつくる

JiggleArmature add-on

cheece/JiggleArmature(GitHub)からダウンロードできる。

Spring Bone

タイムラインを動かさなくてもボーンをばねのように動かせるアドオン。

RigFlex

ソフトボディでボーンを動かすアドオン。

VicTools Spring Bone

VicTools Spring Bone は以下の動画の概要欄からダウンロードできる。

キーを打ったボーンを用意して、ツールシェルフの Spring Bone Tool > Bake Spring Bone を押すと結果をベイクできる。VicTools が作成したキーは Clear All Bones Key で削除できる。

Spring のベイク

Spring のベイク

YURE Driver

揺れもののボーンにドライバーを設定するアドオン。gumroadBlenderMarket からダウンロードできる。

Blender version of Spring Magic($0+)

3dsMax の SpringMagic のような位相アニメーションを作成するアドオン。

波モディフィアで服をなびかせる

波(Wave)モディフィアで服をなびかせるリグ

動作デモ

動作デモ

Ossim - Simulation Baking Tool($13)

Ossim は物理シミュレーションの結果をボーンにベイクしてゲームエンジン等にエクスポートできるようにするアドオンだ。

コンストレイントを使ったときのボーンの遅れを解消する(2.79以前)

Extra Object Update と Extra Data Update にチェックを入れる。

Extra Update

Extra Update

Wiggle bones (a jiggle bone implementation for 2.8)





Making a poseable character with cloth simulated clothing


肩のねじれを防ぐ Quaternion を求める[Blender 3DCG]

Easy Bone/Armature physics (jiggle, wiggle, delay effect) Ragdoll.

揺れものの動き

CGアニメーター向け すぐに使えるメモ33(レイヤードアプローチで揺れものを作る)

AnimationAidが教える「しっぽと振り子のアニメーションのつくり方」(¥4,100)

関連記事

動的に皺を作れる tension map の使い方

プリーツスカートのモデリング

ソフトボディを使って胸を揺らす

Blender 記事の目次


広告
広告

カテゴリ