広告
広告

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

カテゴリ:blender

目次

概要

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

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

クロスシミュレーション

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

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

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

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

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

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

服が貫通する場合

固い布を作る

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

ソフトボディ

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

ソフトボディ + IK

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

剛体

剛体 + ボーンで髪のアニメーション

物理シミュレーションを使わない方法

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

JiggleArmature add-on

Spring Bone

VicTools Spring Bone

波モディフィアを使って服をなびかせる

Ossim - Simulation Baking Tool($13)

外部リンク

概要

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

Blender 2.8

Blender 2.8 ではクロスシムのアルゴリズムが変更された。新アルゴリズムはマルチスレッドで動作し、セルフコリジョンの精度が向上している。

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

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

体積の保存

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

計算負荷

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

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

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

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

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

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

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

extra update
Extra Update

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

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

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

クロスシミュレーション

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

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

クロス・シミュレーションのパラメーターの解説(英語)

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

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

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

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

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

setting

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

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

low benging
Bending 0.5 (デフォルト)
high bending
Bending 1000

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

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

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

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

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

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

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

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

Surface Deform Modifier

Surface Deform Technical Documentation

使い方

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

surface deform
サーフェス変形の設定

サーフェス変形の制限

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

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

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

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

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

concave polygon
凹型ポリゴン
3. 辺に3つ以上の面が接続されているメッシュ
y polygon
3つ以上の面が接続されている辺の例

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

multiple faces
多数の面で共有
4. 同一線上にある辺をもつ面を持つメッシュ

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

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

collinear edge
同一線上にある辺

服が貫通する場合

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

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

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

damping
Spring の設定
penetrate
動作デモ

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

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

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

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

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

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

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

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

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

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

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

固い布を作る

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

hard cloth setting
固い布の設定例

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

two line pin
上二列を固定する

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

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

hook
モディフィアの適用順

ソフトボディ

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

Blender SoftBody Tutorial - Introduction(英語)

ソフトボディ + IK

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

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

そのほか

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

シミュレーションしたリジッドボディの情報を位置コピーと IK とを使ってボーンにコピーする。

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

リジッドボディコンストレイントの使い方

コリジョンの設定

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

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

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

set origin
原点の設定

リジッドボディの設定

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

body setting
体のコリジョンの設定

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

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

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

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

ボーンの設定

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

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

set axis
座標軸の設定
roll
ロールの設定
constraint
コンストレイントの設定

設定

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

speed
速度の変更

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

damping
減衰の設定

凸包の注意点

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

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

このような場合はコリジョンメッシュを分割してへこみをなくすようにする。

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

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

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

BlenderのBone+Empty+Slow Parentで弾んだり柔らかい動き

ver.2.78 使いやすくなったBボーンで遊んでみよう!

Bボーンとスローペアレントで簡易自動揺れモノ

アーマチュアにキーを打ったりアーマチュアを直接動かすのは推奨された方法ではない(アーマチュアを使うならボーンにキーを打つべき)ので、ボーンを動かすことでスローペアレントを機能させる方法を紹介する。

手順

まずルートとなるボーンの位置に Empty を配置し Child of でその情報をコピーする。

set child
情報コピー用 Empty の配置

スローペアレントを有効にした追従先の Empty をボーンの情報をコピーした Empty の子にする。

set slow parent
スローペアレントの設定

あとはボーンに IK をつけるだけだ。

demo
動作デモ

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

JiggleArmature add-on

cheece/JiggleArmature(GitHub)からダウンロードできる。コリジョンをサポートしていないのがこのアドオンの欠点だ。

Spring Bone

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

VicTools Spring Bone

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

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

bake
Spring のベイク

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

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

demo
動作デモ

Ossim - Simulation Baking Tool($13)

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

Making a poseable character with cloth simulated clothing


関連記事

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

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

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

Blender 記事の目次


広告
広告