CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender3.0】ソフトボディを使ってみよう!【物理演算】
はじめに
こんにちは!
今回はBlenderの物理演算機能のひとつ「ソフトボディ」の使い方について紹介したいと思います。
正直、私自身もこの記事を書くまであまりソフトボディに馴染みがありませんでしたが、実際に使ってみたりして学んだ内容をまとめていきますので、ご覧いただけると嬉しいです。
ソフトボディとは?
ソフトボディとは、Blenderの物理演算機能のひとつで、おもに「柔らかいもの」の動きや変形のシミュレーションに適しています。
こちらの記事で紹介した、硬いものの動きのシミュレーションに使う「リジッドボディ」とは対照的な機能です。
また、同じように「柔らかいもの」のシミュレーションに使う機能に「クロスシミュレーション」があります。
こちらはどちらかというと布や洋服など薄いもののシミュレーションに適しています。
Blenderの「クロスシミュレーション」について、詳しくはこちらの記事を参照ください。
それに対して、ソフトボディは柔らかくてボリュームのあるものを表現するのに適しています。
ソフトボディの使用例
ソフトボディを使うことで、さまざまな「やわらかいものの動き」を表現できます。
例えば、こちらのようにプリンがぷるぷると変形しながら動く様子を表現できます。
また、リジッドボディと同じように、落下させて弾ませることもできます。
この場合、後ほど説明しますが地面には「コリジョン」という物理演算を設定します。
さらに、ソフトボディはメッシュオブジェクトだけでなくカーブやラティスにも使用することができます。
たとえば、ラティスをソフトボディで変形させることで、こちらのように木を風になびかせることができます。
ちなみに、↑で紹介した地面で弾むボールは、「クロス」+「圧力」を使って作ることも可能です。
詳しくはこちらの記事を参照ください。
ソフトボディの使い方
ソフトボディを使うための、具体的なやり方を説明します。
ソフトボディの設定方法
オブジェクトにソフトボディを追加するには、こちらのように「物理演算プロパティ」から「ソフトボディ」を選択します。
メッシュオブジェクトにソフトボディを追加する場合、メッシュサイズはできるだけ均等が望ましいです。
たとえば、こちらのようにUV球よりもICO球の方がきれいに変形します。
Blenderの物理演算機能全般については、こちらの記事を参照ください。
ソフトボディのおもな設定項目
ソフトボディのシミュレーションを行う上で知っておきたい、主要な設定項目を紹介します。
オブジェクト
「摩擦」の数値を変えることで、こちらのようにソフトボディの「弾力」「弾みやすさ」を調節できます。
「重さ」でオブジェクトの重さを変えられます。
軽いと空気抵抗で落下がゆっくりになり、重いと自重でつぶれます。
キャッシュ
ソフトボディは、アニメーションを出力する際に「キャッシュ」の項目でベイク(シミュレーション結果をデータとして保存すること)が必要です。
ベイクせずにレンダリングすると、ソフトボディのシミュレーション結果が不安定になります。
「シミュレーション開始/終了」で、ソフトボディ演算開始/終了のフレーム数を設定できます。
「ベイク」(フォースフィールドなど他の物理演算が含まれる場合は「全物理演算をベイク」)を選択するとシミュレーションがベイクされます。
ベイクするとシミュレーション結果が固定されます。
プロパティの変更などを反映させる場合は、いちど「全ベイクを削除」でキャッシュを削除した後、再度ベイクする必要があります。
ゴール
「ゴール」にチェックを入れると、オブジェクトが元の位置・形状に戻ろうとします。
デフォルトではチェックが入っているので、落下させたい場合は「ゴール」のチェックを外します。
「設定」→「剛性」「減衰」の値を小さくすると、こちらのようにソフトボディ全体をばねのように揺らすことができます。
「強さ」の値を大きくすると、ソフトボディのシミュレーションによる変形の影響を受けにくくなります。
「強さ→デフォルト」の値を1.0にすると、ソフトボディの変形の影響がなくなります。
また、「頂点グループ」を設定することで、ソフトボディの一部を固定しそれ以外の部分を自由に変形させることができます。
具体的な方法については、あとに出てくる「ソフトボディの固定~「ゴール」を設定しよう」の項目で説明します。
辺
「辺」にチェックを入れると、オブジェクトの辺が「ばね」のように変形して元に戻ろうとします。
基本的にはデフォルト通りチェックを入れたままで使用します。
ちなみに「辺」のチェックを外すと、こちらのようにオブジェクトが元の形状を保てなくなります。
また、こちらのように「辺」のパラメータのうち、「曲げ」「引く」「押す」を調節することで弾力が上がり、形を保てるようになります。
デフォルトだと「曲げ」が0.0になっているので、まず曲げを調節し、それでもだめなら「引く」「押す」を大きくすると良いと思います。
「可塑性」の値を調節することで、こちらのようにオブジェクトに永久変形(通常の弾性変形と違って、元に戻らない)を与えることができます。
ソフトボディには他にも様々な設定項目がありますが、以上の設定を覚えておけば問題なくシミュレーションできると思います。
その他の設定については、こちらの記事が詳しいので興味がある方は参照ください。
https://horohorori.com/blender-note/physics-simulations/about-soft-body-simulation/
変形の適用
以下のように、「モディファイアープロパティ」から「適用」を選択することで、ソフトボディの変形をオブジェクトに適用することができます。
ソフトボディを使って変形させたオブジェクトを、別のblendファイル等で使い回したい場合などに使えますね。
落下・衝突のさせ方~コリジョンと組み合わせよう
先ほど書きましたが、ソフトボディを落下・衝突させる場合は、こちらのように衝突される側のオブジェクトに「コリジョン」を設定する必要があります。
「コリジョン」の設定方法・使い方についてはこちらの記事を参照ください。
ソフトボディの固定~「ゴール」を設定しよう
先ほど説明したソフトボディの設定項目のひとつ「ゴール」を使うことで、ソフトボディの一部を固定し、それ以外の部分を柔らかく変形させることができます。
先ほど示したプリンの例で説明します。
まずこちらのように底の部分の頂点を選択して「頂点グループ」(デフォルトでは「Group」という名前になっています。)を作成します。
つぎに、「ゴール」の「頂点グループ」で「Group」を選択します。
頂点グループがソフトボディの変形の影響を受けないように、「ゴール→デフォルト」の強さは1.0に設定しました。
キーフレームを打ってオブジェクトを動かすと、こちらのように「ゴール」に設定したプリンの底の部分は動かずに、本体部分が「ぷるんぷるん」と変形するようになります。
「頂点グループ」の設定方法について、詳しくはこちらを参照ください。
また、「ウエイトペイント」を使って頂点グループを設定することもできます。
詳しくはこちらの記事を参照ください。
アニメーションの作成・出力方法
ソフトボディのアニメーションを作成・出力する方法を説明します。
まず、先ほど「ソフトボディの主な設定項目」で紹介した「キャッシュ」の設定をします。
「ベイク」(フォースフィールドなど他の物理演算が含まれる場合は「全物理演算をベイク」)を選択し、アニメーションをベイクします。
動画をレンダリングする方法についても、軽く説明します。
まず、「レンダープロパティ」でレンダリングに使用するレンダラーを選択します。
「Cycles」はフォトリアルな画を出力するのに向いていますが、レンダリングに非常に時間がかかってしまうのが難点です。
「Eevee」は高速でレンダリングできますが、Cyclesほどリアルな画を出力ことはできず、うまく使うにはコツが必要です。
(Workbenchはシェーディング表示用なので、レンダリングには使用しません。
「Cycles」「Eevee」でレンダリングする際の詳細設定については、こちらの記事で紹介していますので合わせて参照ください!
つぎに、「出力プロパティ」で出力する動画の設定をします。
- フォーマット:動画の解像度・フレームレートを設定する。
- フレーム範囲:出力する開始/終了フレームと何フレーム毎に出力するかを設定する。
- 出力:ファイルのフォーマットとエンコード形式を設定する。
出力「フォーマット:FFmpeg」「エンコード形式:MPEG 4」にしておくと、mp4形式で出力されて各種メディアで再生できるのでおすすめです。
「レンダリング→動画をレンダリング」(または「Ctrl+F12」)を選択します。
すると、動画がレンダリングされ、レンダープロパティで設定したフォルダ(デフォルトでは「\C:tmp/」のフォルダ)に動画ファイルが出力されます。
Blenderでアニメーションをレンダリングする方法は、こちらの記事で紹介していますので合わせて参照ください。
複雑なモデルに適用する~メッシュ変形/ラティスモディファイアを使おう
ソフトボディは複雑なシミュレーションなので、頂点数が多いと非常に計算に時間がかかります。
また、オブジェクトのメッシュが辺でつながっていない場合、こちらのモンキーの目玉のようにバラバラになってしまいます(少しショッキングな画ですみません…)。
その場合は、以下のように単純なオブジェクトのシミュレーション結果を「メッシュ変形」や「ラティス」モディファイアで反映する方法がおすすめです。
メッシュ変形モディファイアを使う方法
まず、変形させたいオブジェクト(モンキー)をすっぽり包むようにメッシュオブジェクトを作成します。
メッシュから変形させたいオブジェクトがはみ出さないよう注意してください。
こちらのように、サブディビジョンサーフェスモディファイア(頂点数を増やしすぎないように、レベルは1か2)を使うと、メッシュが綺麗で滑らかな形状になります。
変形させたいオブジェクト(モンキー)を選択し、「メッシュ変形モディファイア」を追加します。
「バインド」を選択すると、こちらのようにメッシュオブジェクトの変形に合わせてモンキーが変形するようになります。
メッシュオブジェクトにソフトボディを追加します。
「ゴール」のチェックを外してタイムラインを再生すると、ソフトボディのシミュレーションが動きます。
シーンコレクションで「👁」「📷」のマークを解除すると、メッシュオブジェクトが非表示となりモンキーが変形する様子が見えるようになります。
「辺→曲げ」の数値などでモンキーの変形具合を調節します。
ラティスモディファイアを使う方法
まず、オブジェクトモードで「Shift+A」→「ラティス」を追加します。
変形させたいオブジェクトをすっぽりと覆うようにラティスの位置・大きさを調節します。
また、変形が滑らかに見えるように、ラティスの頂点数を増やします(U,V,W=5か6程度に設定すると良いと思います)。
変形させるオブジェクトを選択し、「モディファイアプロパティ→Lattice」を追加します。
オブジェクトにラティスを選択すると、ラティスの頂点移動に合わせてオブジェクトも追従して変形するようになります。
ラティスを使ったオブジェクトの変形について、詳しい使用方法はこちらの記事を参照ください。
ラティスにソフトボディを追加します。
シミュレーションを繰り返した結果、以下のようにパラメータを調節しました。
- オブジェクト→重さ:0kg
- 強さ→デフォルト:1.000
- 辺 引く・押す:0.999
- 曲げ:10.000
「ゴール」の頂点グループは、メッシュオブジェクトと同じように、編集モードで「オブジェクトデータプロパティ→頂点グループ」で設定できます。
フォースフィールドの「風」と「乱流」を追加してアニメーションを設定することで、こちらのようにラティスに設定したソフトボディを揺らすことができます。
フォースフィールドの追加・設定方法については、こちらの記事を参照ください。
ソフトボディのトラブル対処法
ソフトボディのシミュレーションはコツが必要です。
うまくいかない場合の対処法についてまとめてみました。
つぶれる
ソフトボディがつぶれてしまう場合は、「ソフトボディの主な設定項目」で紹介したとおり以下の設定を見直してみてください。
- 「オブジェクト→重さ」の数値を小さくする。
- 「辺」の「曲げ」「押す」「引く」の数値を大きくする。
また、オブジェクトの大きさが小さいと不安定になることがあるので、サイズを見直してみてください。
それでもダメな場合は、メッシュの形状が原因の可能性があるので、できるだけ均一なメッシュになるよう修正してみてください。
貫通する
先ほど説明したように、床などとの衝突判定には「コリジョン」を設定する必要があるので、設定されているか確認してみてください。
また、シミュレーションをベイクしないとオブジェクトがすり抜けることがあるそうなので(参考記事)、先ほど紹介したとおり「キャッシュ→ベイク(または全物理演算をベイク)」でベイクしてみてください。
物理演算が重い
ソフトボディを設定しているオブジェクトの頂点数が多いと計算が重くなります。
重すぎる場合は、先ほど紹介した「メッシュ変形モディファイア」「ラティスモディファイア」を使って変形させる方法を試してみてください。
人体モデルへの応用について
最後に、ソフトボディを人体モデルに応用する方法についてまとめます。
髪などの揺らし方
髪などを揺らす場合、基本的に頂点数が多いので、先ほど紹介した「メッシュ変形モディファイア」を使って変形させる方法がおすすめです。
具体的な方法については、本記事に加えて、以下の動画や記事などが参考になると思います。
ソフトボディで髪を揺らす方法の解説動画(英語)
ソフトボディとメッシュ変形モディファイアで揺れものを作る方法
また、こちらの記事で紹介されているように、カーブ(ソフトボディ)とボーンを関連付けることで胸などを揺らす方法もあるので、ぜひ試してみてください。
Unityなどで使える?
残念ながら、Blenderの物理演算(ソフトボディも含めて)は他のソフトにエクスポートすることはできません。
Blenderで作った人体モデルをUnityにエクスポートする際には、物理演算を再設定する必要があります。
詳しくはこちらの記事を参照ください。
まとめ
「ソフトボディ」の使い方について紹介しましたが、いかがだったでしょうか?
ソフトボディは複雑な動きをするので、最初のうちは、なかなか思うような動き・変形をしないかもしれませんが、こちらの記事を片手に、実際に使ってみて慣れていただければと思います。
最後に、今回のまとめです。
- ソフトボディとは?→Blenderの物理演算機能のひとつで、「柔らかいもの」の動きや変形のシミュレーションに適している。
- ソフトボディの使い方
- ソフトボディの設定方法:「物理演算プロパティ」から「ソフトボディ」を選択
- メッシュサイズはできるだけ均等が望ましい。
- ソフトボディのおもな設定項目
- オブジェクト:摩擦・重さ
- キャッシュ:レンダリングする前に必ずベイクすること!
- ゴール:オブジェクトを固定するのに使う。
- 辺:オブジェクトの剛性を調節する。
- モディファイアプロパティから変形を適用。
- 複雑なモデルには、メッシュ変形/ラティスモディファイアを使うのがおすすめ。
- ソフトボディのトラブル対処法
- つぶれる→重さを小さく、辺の剛性を上げる。
- 貫通する→コリジョンの設定を確認、ベイクする。
- 物理演算が重い→メッシュ変形/ラティスモディファイアを使う。
- 人体モデルへの応用
- メッシュ変形モディファイア等を使って髪を揺らす。
- Unityなどエクスポート先で物理演算を再設定する必要あり。