Blender でスカートや髪を物理で動かす方法まとめ
目次
- クロスシミュレーション
- 物理シミュレーションを使わない方法
概要
物理シムを使う方法は大きく分けて2種類ある。物理シムを直接使う方法と、物理シムの結果をボーンやメッシュにコピーして動かす方法とだ。メッシュが単純な形ならば物理シムをそのまま適用しても満足できる結果が得られることもある。しかしメッシュが複雑な形をしている場合、コリジョンがうまく機能しなかったり静止したときに元の状態に戻らなかったりする。その場合は物理シム用メッシュを作成し、その結果をボーンやメッシュにコピーする方法を使うことになる。
もちうさでBlender物理演算比較。左からソフトボディ、クロス(圧力)、クロス(内部スプリング)、リジッドボディ。
— 卵 (@hilo_taoka) September 3, 2020
それぞれ、ぷよんとしたもの、風船みたいなもの、ぬいぐるみみたいなもの、変形しないもの、という感じの用途。 pic.twitter.com/04F1qCJEzR
ソフトボディ 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 程度)を入力することもある。
Today's 3D lab livestream was super fun (and successful to boot!). Here's what me managed to do in under an hour after fiddling with the cloth dynamics in Blender.#3d #b3d #simulation #animation #dinosaur pic.twitter.com/nUqndQUd2L
— Dikko! (@dikko_art) September 7, 2020
直接クロスシミュレーションでディティールの保存
メッシュ変形や IK を使う方法ではディティールは保存されたままだ。たとえば現実ではプリーツスカートを引っ張ると折り目が展開されるが、メッシュ変形や IK ではそうはならない。
直接クロスシミュレーションする方法ではパラメータを適切に設定すればそのような動きも可能になる。重要なパラメータは Bending(曲げ)、Spring(ばね)、セルフコリジョンだ。
Spring(ばね)は布の柔らかさをきめる。Spring が小さいと体が貫通しやすい。
Bending(曲げ)はしわの保存力をきめる。大きければ大きいほど元の折り目が復元されやすい。
服が貫通する場合
服が貫通する場合は以下の項目を確認する。
1.Spring(ばね)を設定して布を柔らかくする
Damping(減衰): の Spring(ばね)を大きくすると布が柔らかくなる。
2.シミュレーション前の時点でメッシュ変形のメッシュが体を貫通している
メッシュ変形のメッシュと体とが近すぎると正しくシミュレーションできない。これはシュリンクラップを使ったときに起こりやすい。
3.メッシュ変形用メッシュがレンダリング用メッシュより小さいことを確認する
レンダリング用メッシュより大きいメッシュ変形用メッシュをつくり内側へ Solidify(厚み付け)をする場合、体を貫通しやすい。
4.メッシュ変形用メッシュの分割数が少なすぎる
メッシュ変形用メッシュの分割数が少なすぎると、ふくらみのある部分でメッシュが貫通しやすい。
5.体のコリジョンの Outer(外側)が小さい
Outer でコリジョンのサイズを変更できる。
固い布を作る
布のポリゴン数を少なめに作成し、各パラメータを最大まで上げる。再分割局面モディフィアが必要になる場合はクロスシムの下にそれを追加する。固い布を作るのには曲げ(Bending)パラメータが重要だ。しかし曲げパラメータを上げすぎると布が振動したり崩壊したりするので注意する。
固定グループに指定する頂点を二列にするのも効果がある。固定グループの頂点が一列の場合は、固定グループ周辺の回転に対する固定力が低い傾向にある。
クロスシミュレーション + メッシュ変形
クロスシミュレーション + IK
クロスシミュレーション + サーフェス変形
サーフェス変形はセットアップの手間が少ないメッシュ変形のようなものだ。メッシュ変形と違いシミュレーション用メッシュが閉じていなくてもいい。
Surface Deform Technical Documentation
使い方
クロスシミュレーション + メッシュ変形と同様にクロスシミュレーションメッシュとレンダリング用メッシュを用意する。レンダリング用メッシュにサーフェス変形をつけ、Target: にシミュレーション用メッシュを指定して Bind を押すだけだ。
サーフェス変形の制限
サーフェス変形は以下のようなメッシュをターゲット:に指定できない。
1. 重複頂点を含むメッシュ
これらの頂点は「重複頂点を削除(Remove doubles)」で削除できる。
2. 凹型(concave)ポリゴンを含むメッシュ
凹型ポリゴンとは以下のようなポリゴンのことだ。凹型ポリゴンを見つける簡単な方法はない。しかし三角化(Triangulate Face)や「メッシュ > クリーンアップ > 凹面を分割(Split Concave Faces)」で解消できる。
3. 辺に3つ以上の面が接続されているメッシュ
非多様体の選択(Select non-manifold)で多数の面で共有(Multiple Faces)にのみチェックを入れると選択できる。
4. 同一線上にある辺をもつ面を持つメッシュ
同一線上にある辺を持つ面とは以下のようなものだ。これは三角ポリゴンの辺のうちの一つを分割するとできる。これがあってもバインドはできる。しかしバインドした瞬間にメッシュがゆがむ。
これも簡単に見つける方法はない。しかし三角化(Triangulate Face)で解消できる。
クロスシムを利用したモデリング
Scarf simulation #b3d pic.twitter.com/Vu0gjFjuq0
— Kent Trammell (@khtrammell) 2018年5月5日
これはフックモディフィアを使えば実現できる。フックで釣りたい頂点をピン止め用頂点グループに含めておき、フックで釣ってからクロスシムを適用する。
ソフトボディ
ソフトボディ間のコリジョンはジッター(細かな振動)をなくすのが難しい。その場合は、オブジェクトをすべて結合して、クロスシミュレーションの pressure とセルフコリジョンを使った方が良い結果が得られることがある。
ソフトボディのパラメーターの解説
Blender SoftBody Tutorial - Introduction(英語)
ソフトボディ + IK
ソフトボディ+メッシュ変形で髪を動かす
そのほか
動画(mp4)がひどい画質なので、GIFで再投稿してみる。
— kutsukake (@kutsukakeDB07) 2019年3月10日
----
これでお尻とか太ももとか表現したい#b3d #softbody #multilayersoftbody #多層Softbody pic.twitter.com/0nOAvOd5vk
剛体
辺でコリジョンを作る(2.91)
バージョン 2.91 からは辺のコリジョンも機能するようになった。
設定方法は以下のようになる。
- レンダリングするメッシュに剛体をつけ、コリジョンのシェイプを「複合形状(Compound Parent)」にする
- 辺でコリジョンを作り、辺メッシュを子としてレンダリングするメッシュに親子付けする
- 辺メッシュに剛体をつける
リジッドボディ + ボーンで髪のアニメーション
シミュレーションしたリジッドボディの情報を位置コピーと IK とを使ってボーンにコピーする。リジッドボディコンストレイントの基本はリジッドボディコンストレイントの使い方を参照。
コリジョンの設定
コリジョンメッシュを用意する。コリジョンメッシュの間隔が詰まっているとあまり曲がらない。適宜調整する。
各コリジョンメッシュの原点を上部の中心に設定する。これはボーンの位置コピーや IK の際に必要になる。
リジッドボディの設定
これらのコリジョンメッシュにリジッドボディをつける。最初のリジッドボディを以下のように設定する。体や背景メッシュと衝突させるなら、体や背景メッシュにも同じ設定を適用する。
残りのコリジョンメッシュにリジッドボディを設定する。初期設定でOK。
リジッドボディコンストレイントの設定
コリジョンメッシュ間にエンプティを配置し、リジッドボディコンストレイントの汎用ばねを設定する。リニアを制限すると、コリジョンメッシュは回転しかしなくなる。
ボーンの設定
後はボックスの位置にボーンを配置し、位置コピーと IK を設定するだけだ。コリジョンメッシュは振動していないのに、ボーンが振動する場合はボーンの長さが足りてない。ボーンの長さを調整するかストレッチ(Stretch to)をつける。
このときボックスの X 軸とボーンの X 軸を一致させておくといい。ボーンのロールはプロパティシェルフ(N)のロールで設定できる。
設定
動作速度が遅い場合はシーンの速度を変更する。
揺れを抑える時はリジッドボディコンストレイントのばねの減衰を大きくする。
凸包の注意点
凸包はへこみを表現できない。実際に凸のような形に凸包を適用すると以下のようになる。
このような場合はコリジョンのシェイプをメッシュにするか、コリジョンメッシュを分割してへこみをなくすようにする。コリジョンのシェイプをメッシュにすると形状によっては計算に時間がかかる。
バージョン 2.91 からは辺で構成された子オブジェクトをコリジョンに指定できるようになった。これを使えばチェーンのようなオブジェクトでも剛体を使ってシミュレーションできる。
物理シミュレーションアドオン
Bonex - Bone Physics Animation Driven By Physx($9.90)
rigid bodys generator
Blenderで簡単にRigid Body(剛体)とConstraint(ジョイント)を設定できるaddon
【Rigid Bodies Generator】Blenderのアドオンで髪を揺らす方法をご紹介!
スローペアレント+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 で削除できる。
YURE Driver
揺れもののボーンにドライバーを設定するアドオン。gumroad かBlenderMarket からダウンロードできる。
Blender version of Spring Magic($0+)
3dsMax の SpringMagic のような位相アニメーションを作成するアドオン。
波モディフィアで服をなびかせる
Ossim - Simulation Baking Tool($13)
Ossim は物理シミュレーションの結果をボーンにベイクしてゲームエンジン等にエクスポートできるようにするアドオンだ。
コンストレイントを使ったときのボーンの遅れを解消する(2.79以前)
Extra Object Update と Extra Data Update にチェックを入れる。
外部リンク
Wiggle bones (a jiggle bone implementation for 2.8)
An easy ragdoll set-up in Blender #b3d pic.twitter.com/FOHq7AyG9W
— Jan van den Hemel (@JanvandenHemel) August 22, 2020
How to create chains that have rigid body dynamics in #blender #b3d pic.twitter.com/It378EhIrr
— Jan van den Hemel (@JanvandenHemel) April 24, 2021
Daily #Blender Tip: We can animate a dress on a character using both a Cloth simulation, and rigging. Both have their unique challenges. Luckily, we can use the best of both! #b3d pic.twitter.com/d1ZDjG73MM
— Jan van den Hemel - jan@socel.net (@JanvandenHemel) December 20, 2022
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)