モデルの規約によっては改造だけでなくMMDとその派生型以外のソフトウェアにモデルを持っていくこと自体を禁止しているものもあります。ご注意ください!!
mmd_toolsで読み込んだMMDモデルにBlenderのクロスシミュレーション機能を使ってみます。
下記動画の左側モデルがmmd_toolsで読み込んで物理演算を有効化しただけの状態、右側のモデルがBlenderのクロスシミュ(細分化1使用)をスカートに使用した状態
モデル:ハイフェンA2(HAT10服2.pmx)
モーション:女の子がクルクル回るモーション(vmd) bowlroll
ちなみに、クロスシミュレーションほど高品質ではありませんが、スカートなどのボーンにBlenderの揺れものAddonを使って揺らすこともできます。
詳しくは【MMD×Blender】Blenderの揺れものAddonなどを使ってMMDモデルの胸を揺らす / ”Wiggle 2”アドオンで衣服や髪を揺らすをご覧ください。


まずはアクセサリを修正します。
[TAB]キーを押して編集モードへ入り、アクセサリを[L]キーで選択します。
[P]キーを押して選択から選択したアクセサリを分離させます。

分離させたアクセサリにクロスが適用されたままなので物理演算プロパティから解除します。


アクセサリ→衣服の順番に[Shift]キーを押しながら複数選択し、[TAB]キーを押して編集モードへ入ります。

衣服側の頂点を3つ選択し、[Ctrl]+[P]キーを押して頂点ペアレントを作成します。
選択した3つの頂点で作られた三角形にアクセサリが追従するようになります。

アクセサリに設定されているアーマチュアモディファイア(mmd_bone_order_override)を削除または、無効化します。
有効状態だとモーションを読み込ませてた際に動きが変になります。
これらを残りのアクセサリに対してもそれぞれ行います。

MMDタブ→シーン設定→リジットボディ物理演算:→ワールドを更新をクリックします。

MMDモデルのエンプティ(足元にある十字のオブジェクト)を選択し、サイドバーのMMDタブ→モデル設定→組み立て:から、すべてをクリックします。

MMDモデルのエンプティを選択した状態でサイドバーのMMDタブ→シーン設定→モーション:→インポートから.vmdファイルを読み込みます。
※エンプティではなく、アーマチュア(ボーン)を選択してモーションを読み込むとボーンアニメーションだけ、オブジェクト(材質)を選択してモーションを読み込むとシェイプキー(モーフ)アニメーションだけが読み込まれてしまいます。
※モーションインポート時のオプションで、余白を5から30程度にしないとクロスシミュを含む物理が破綻する事があります。
※Blenderへの.vmdファイルのインポート方法の詳細やオプションについては【Blender 3.0】mmd_tools【UuuNyaa版】/ モーション(ポーズ)のインポートをご覧ください。

クロスシミュを設定したオブジェクトの物理演算プロパティからクロス→キャッシュ→シミュレーション開始と終了の範囲を、MMDタブ→シーン設定→リジットボディ物理演算:→開始、終了と同じ範囲に設定します。

サイドバーのMMDタブ→シーン設定からベイクします。
ベイク後、[Space]キーを押してアニメーションを再生してみて足にめり込んでないのかを確認します。
足などにめり込んでしまっている場合、クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイクを削除からクロスシミュのベイクをいったん削除します。
足などに設定したコリジョンの外側の厚さの数値を上げるか、
クロスシミュレーションを設定したオブジェクトのクロスからコリジョン→オブジェクトのコリジョン→距離の値を上げてみます。
コリジョンなどを調整したら、クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイクから再度ベイクします。

上記のクロスシミュ設定でできたのが、下記の動画です。
@モーション:女の子がクルクル回るモーション(vmd) bowlroll
さらに滑らかにするには細分化モディファイアを使う必要があります。詳しくはこちらをご覧ください。

このモデルではスカートが複数の材質に分かれているため、それらを[Shift]キーを押しながら複数選択して[Ctrl]+[J]キーで結合します。
※選択しづらい場合は3Dビューで[Z]キーからワイヤーフレーム表示にしたり、右上のアウトライナーから[Ctrl]キーを押して複数選択しましょう。

結合したスカートオブジェクトを[Shift]+[D]キーを押して複製し、[F2]キーから名前をわかりやすい物に変更します。
ここでは複製したスカートオブジェクトをClothとしました。
この複製したClothオブジェクトに対してクロスシミュレーションを行います。
サーフェス変形モディファイアにはいくつかの制限があり、下記のようなメッシュにはターゲットに指定できません。(バインドが成功しない)
これらを回避するためメッシュを編集します。
編集し易いように3Dビュー上で[Z]キーからワイヤーフレーム表示にしてます。

クロスシミュを設定するオブジェクト(このページの例ではCloth)を選択して[TAB]キーを押して編集モードへ入り、[A]キーですべての頂点を選択し、[M]キーを押して距離でを選択して重複頂点の削除とメッシュの結合を行います。
(モデルの衣装の構造によっては、編集モードで辺→辺ループのブリッジや、ブーリアンモディファイアーを使用してメッシュを結合しないと駄目かもしれません)

[X]キーを押して面だけを選択して面だけを削除します。

もう一度[A]キーを押してすべての頂点を選択して3Dビュー左上のメッシュからクリーンアップ→穴をフィルをクリックして穴を埋めます。

[Ctrl]+[T]キーを押して面を三角化します。
これで今回のケースではバインドできる状態になりましたが、衣装のメッシュ構造によってはクリーンアップから凹面を分割などが必要かもしれません。

オブジェクトデータプロパティの頂点グループから、+ボタンをクリックして新規頂点グループを作成し、スカートの上の方の頂点を選択してウェイト1で割り当てボタンをクリックします。
この頂点グループに割り当てた頂点はウェイト1の場合、クロスシミュされず、頂点はアーマチュアに追従します。
設定しないとスカート全体が重力に従って落ちてしまいます。

[TAB]キーを押してオブジェクトモードへ戻り、物理演算プロパティからクロスを選択します。

クロスを下へスクロールして、シェイプから固定グループに先程作成した頂点グループを指定します。

[Space]キーを押して再生するとスカートがクロスシミュレーションされます。
[ESC]キーを押すか、もう一度[Space]キーを押して停止し、[Shift]+[←]で1フレーム目まで戻ります。
足にめり込んでしまってますが後で足にコリジョンを設定するので今はこのままでいいです。


画面右上のアウトライナーからFilter.をクリックしてカメラのアイコン(レンダーで無効)をクリックします。
アウトライナーの一覧にカメラのアイコン(レンダーで無効)が追加されるのでクロスシミュレーションを設定した材質を選択し、目玉のアイコン(ビューポートで隠す)とカメラのアイコン(レンダーで無効)をクリックしてビューポート、レンダー共に表示されないようにします。

スカートオブジェクトを選択し、モディファイアープロパティからmmd_bone_order_override(アーマチュアモディファイア)のカメラのアイコン(レンダー)とモニターのアイコン(リアルタイム)アイコンをクリックしてoffにします。

モディファイアーを追加からサーフェス変形モディファイア追加します。


サーフェス変形モディファイアのターゲット:にクロスシミュレーションを設定したオブジェクト(今回の例ではclothオブジェクト)を指定します。
オブジェクトを指定したらその下のバインドボタンをクリックします。
上手くバインドできれば右の画像のようになります。
逆にバインドできない場合はクロスシミュレーションを設定したオブジェクトがサーフェス変形の制限事項に引っかかっています。

[Space]キーを押して再生してみます。スカートがクロスシミュレーションされるはずです。
[ESC]キーを押すか、もう一度[Space]キーを押して停止し、[Shift]+[←]で1フレーム目まで戻ります。

このページで例として使わせてもらったハイフェンA2(HAT10服2.pmx)モデルのスカートにクロスシミュを設定してモデルの足などにコリジョンを設定した場合、クロスシミュの固定グループに指定した頂点グループを頂点ウェイト合成モディファイアでウェイト0にしても足などのコリジョンにスカートが引っかかって上手く脱衣させれません。
このため、コリジョンの影響を受けない頂点グループを新たに作成&クロスシミュに設定して、この頂点グループを頂点ウェイト合成モディファイアを使って脱衣させるフレームで有効状態にします。

Clothオブジェクトのオブジェクトデータプロパティから新規に頂点グループを作成し、[TAB]キーを押して編集モードからコリジョンの影響を受けない頂点を選択、割り当てます。
※コリジョンの影響を受けない頂点グループはウェイトの有無のみ考慮されるので、ウェイトペイントモードでグラデーション状に塗っても意味がありません。
(クロスシミュの固定グループのようにウェイト1ならクロスシミュされず、0.5ならアーマチュアとクロスシミュの半々...というわけではない)

物理演算プロパティのクロスからコリジョン→オブジェクトのコリジョン→頂点グループに先程作成したコリジョンの影響を受けない頂点グループを指定します。

モディファイアプロパティから頂点ウェイト合成モディファイアを新しく追加し、Clothの上に移動させ、頂点グループ Aに作成したコリジョンの影響を受けない頂点グループを指定します。
頂点セットの頂点グループ AかつBとなっている所を頂点グループ AまたはBに変更します。

脱衣させたいフレームの一つ前のフレームまで移動し、頂点セットの頂点グループ AまたはBの右隣の・をクリックするか、右クリックメニューからキーフレームを挿入でキーフレームを打ちます。
(例えば50フレームから脱衣させたいなら、49フレーム目で頂点グループ AまたはBの状態でキーを打つ)

脱衣させたいフレームまで移動し、頂点セットの頂点グループ AまたはBを頂点グループ AかつBにしてキーを打ちます。
mmd_toolsで読み込んだMMDモデルにBlenderのクロスシミュレーション機能を使ってみます。
下記動画の左側モデルがmmd_toolsで読み込んで物理演算を有効化しただけの状態、右側のモデルがBlenderのクロスシミュ(細分化1使用)をスカートに使用した状態
動画ファイルへのリンク |
モーション:女の子がクルクル回るモーション(vmd) bowlroll
ちなみに、クロスシミュレーションほど高品質ではありませんが、スカートなどのボーンにBlenderの揺れものAddonを使って揺らすこともできます。
詳しくは【MMD×Blender】Blenderの揺れものAddonなどを使ってMMDモデルの胸を揺らす / ”Wiggle 2”アドオンで衣服や髪を揺らすをご覧ください。
MMDではモデルに設定された剛体とJointで物理演算を行ってボーンを動かし、それによってボーンに設定されたウェイトに従って頂点が移動します。
Blender上でもリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)で似たような物理演算ができます。
Blenderへmmd_toolsで読み込んだMMDモデルも剛体/JointはBlenderのリジッドボディとリジッドボディコンストレイントへ変換されます。(物理演算エンジンが違うため演算結果は完全に同一にはなりません)
MMDには無いBlenderの機能の一つとしてクロスシミュレーションがあります。
これは剛体とJointで演算して頂点(正確にはボーンとそれに乗っているウェイト頂点)を動かすのではなく、メッシュの頂点や面と重力やコリジョンを演算して直接(剛体やボーンを介さず)頂点を動かし、布、衣服などをシミュレーションする機能です。
このため、ローポリモデルでは望んだ結果にはならないかもしれません。


クロスシミュレーション機能は便利ですが、MMDモデルにそのまま使ってもほとんどの場合、望んだ結果にはなりません。
Blender上でメッシュオブジェクトを同士を結合(Ctrl+J)しても頂点の繋がっていないメッシュが重力に従って落ちるなどするためです。
※モデルのメッシュ構造によります。

いくつか方法がありますが、このページではクロスシミュを適用したい衣装に直接クロスシミュを設定する方法と、サーフェス変形モディファイアーを利用して間接的にクロスシミュする方法を解説します。
そのほか、mmd_uuunyaa_toolsAddonを使ってMMDモデルに対してクロスシミュを設定する事もできます。
※詳しくは【Blender3.3】mmd_uuunyaa_tools【Addon】/ クロスシミュレーションをご覧ください。
Blender上でもリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)で似たような物理演算ができます。
Blenderへmmd_toolsで読み込んだMMDモデルも剛体/JointはBlenderのリジッドボディとリジッドボディコンストレイントへ変換されます。(物理演算エンジンが違うため演算結果は完全に同一にはなりません)
MMDには無いBlenderの機能の一つとしてクロスシミュレーションがあります。
これは剛体とJointで演算して頂点(正確にはボーンとそれに乗っているウェイト頂点)を動かすのではなく、メッシュの頂点や面と重力やコリジョンを演算して直接(剛体やボーンを介さず)頂点を動かし、布、衣服などをシミュレーションする機能です。
このため、ローポリモデルでは望んだ結果にはならないかもしれません。
- 板ローポリモデルにクロスシミュレーションを使った例(板ポリがクロスシミュ対象、球体はコリジョン)

- 細分化モディファイアーを使ってハイポリ化した板ポリにクロスシミュレーションを使った例

クロスシミュレーション機能は便利ですが、MMDモデルにそのまま使ってもほとんどの場合、望んだ結果にはなりません。
Blender上でメッシュオブジェクトを同士を結合(Ctrl+J)しても頂点の繋がっていないメッシュが重力に従って落ちるなどするためです。
※モデルのメッシュ構造によります。
- 6フレーム目、ハイフェンA2(HAT10服2.pmx)モデルのスカート3材質が落ちてしまっている

いくつか方法がありますが、このページではクロスシミュを適用したい衣装に直接クロスシミュを設定する方法と、サーフェス変形モディファイアーを利用して間接的にクロスシミュする方法を解説します。
そのほか、mmd_uuunyaa_toolsAddonを使ってMMDモデルに対してクロスシミュを設定する事もできます。
※詳しくは【Blender3.3】mmd_uuunyaa_tools【Addon】/ クロスシミュレーションをご覧ください。
モデルのインポート方法や、オプションは【Blender 3.0】mmd_tools【UuuNyaa版】のインポートをご覧ください。
この項目ではハイフェンA2(HAT10服2.pmx)モデルを使わせてもらい、解説します。
このモデルのスカートにクロスシミュレーションを使うものと仮定して解説します。

まずは今回クロスシミュを設定するスカート関連のリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)を削除します。
サイドバーのMMDタブからモデル設定→可視性:のメッシュとアーマチュアのチェックを外してリジッドボディとジョイントにチェックを入れます。
(サイドバーが表示されない場合は3Dビュー上で[N]キーを押すと表示されます)

削除対象のスカートのリジッドボディを選択して[F2]キーを押してリジッドボディの名前を確認します。
このモデルでは”03J_左_skt_27_BODY”などとなっていることがわかります。



3Dビュー上部の選択からパターン選択を選び、パターン:に*skt*と入力してスカートに関連するリジッドボディなどを選択状態にします。
[X]キーを押して削除します。
※殆どのモデルの場合は*スカート*などで関連するリジッドボディなどを選択できると思います。

このモデルではスカート関連のJoint名が”07L_J.JOINT_25214_25220”など、パターン選択で選択しづらい名前なので手動で削除します。
サイドバーのMMDタブからモデル設定→可視性:のリジッドボディのチェックを外してリジッドボディを非表示にします。
テンキーの[3]→[5]を押して横視点の平行投影に切り替え、[C]キーからサークル選択でスカート関連Jointを選択し、[X]キーから削除します。

サイドバーのMMDタブからモデル設定→可視性:のメッシュにチェックを入れてメッシュオブジェクトを表示状態にしてモデル設定→メッシュ:のマテリアルで分解をクリックしてメッシュオブジェクトをマテリアル(MMDで言う所の材質)単位で分割します。
この項目ではハイフェンA2(HAT10服2.pmx)モデルを使わせてもらい、解説します。
このモデルのスカートにクロスシミュレーションを使うものと仮定して解説します。

まずは今回クロスシミュを設定するスカート関連のリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)を削除します。
サイドバーのMMDタブからモデル設定→可視性:のメッシュとアーマチュアのチェックを外してリジッドボディとジョイントにチェックを入れます。
(サイドバーが表示されない場合は3Dビュー上で[N]キーを押すと表示されます)

削除対象のスカートのリジッドボディを選択して[F2]キーを押してリジッドボディの名前を確認します。
このモデルでは”03J_左_skt_27_BODY”などとなっていることがわかります。



3Dビュー上部の選択からパターン選択を選び、パターン:に*skt*と入力してスカートに関連するリジッドボディなどを選択状態にします。
[X]キーを押して削除します。
※殆どのモデルの場合は*スカート*などで関連するリジッドボディなどを選択できると思います。

このモデルではスカート関連のJoint名が”07L_J.JOINT_25214_25220”など、パターン選択で選択しづらい名前なので手動で削除します。
サイドバーのMMDタブからモデル設定→可視性:のリジッドボディのチェックを外してリジッドボディを非表示にします。
テンキーの[3]→[5]を押して横視点の平行投影に切り替え、[C]キーからサークル選択でスカート関連Jointを選択し、[X]キーから削除します。

サイドバーのMMDタブからモデル設定→可視性:のメッシュにチェックを入れてメッシュオブジェクトを表示状態にしてモデル設定→メッシュ:のマテリアルで分解をクリックしてメッシュオブジェクトをマテリアル(MMDで言う所の材質)単位で分割します。
スカートなど、クロスシミュを適用したいオブジェクトに対して直接クロスシミュを設定します。
比較的簡単ですが、モデルのメッシュ構造によってはうまくいかない時もあります。その場合はサーフェス変形モディファイアを利用して間接的にクロスシミュする方法を使いましょう。
この項目では原神公式モデルのバーバラを使わせてもらいます。
MMDモデルにBlenderのクロスシミュを使ってみる前にクロスシミュ対象の物理削除を行ったものとして進めます。


操作し易いようにワイヤーフレーム表示に切り替えます。
3Dビュー上で[Z]キーを押してワイヤーフレームを選択してワイヤーフレーム表示に切り替えます。
衣服を選択して[TAB]キーを押して編集モードへ入ります。

まずは[A]キーで頂点を全選択して[M]キーから距離でを選択し、重複頂点を削除します。


次にクロスシミュの固定用頂点グループを作成、指定します。
オブジェクトデータプロパティの頂点グループからら、[+]ボタンをクリックして新規頂点グループ(Group)を作成し、[Alt]+[A]キーで全選択状態を解除してからスカートの上の方の頂点を選択してウェイト1で割り当てボタンをクリックします。
この頂点グループに割り当てた頂点はウェイト1の場合、クロスシミュされず、頂点はアーマチュアに追従します。
設定しないとスカート全体が重力に従って落ちてしまいます。


物理演算プロパティからクロスをクリックしてクロスシミュを追加します。
クロス→シェイプ項目を開いて、固定グループに先程作成した頂点グループ、Groupを指定します。

見やすいように[Z]キーからマテリアルビューにして[Space]キーを押して再生してみます。([ESC]キーで再生停止)
青い衣装やアクセサリが落下してしまっているので、これを修正します。
比較的簡単ですが、モデルのメッシュ構造によってはうまくいかない時もあります。その場合はサーフェス変形モディファイアを利用して間接的にクロスシミュする方法を使いましょう。
この項目では原神公式モデルのバーバラを使わせてもらいます。
MMDモデルにBlenderのクロスシミュを使ってみる前にクロスシミュ対象の物理削除を行ったものとして進めます。


操作し易いようにワイヤーフレーム表示に切り替えます。
3Dビュー上で[Z]キーを押してワイヤーフレームを選択してワイヤーフレーム表示に切り替えます。
衣服を選択して[TAB]キーを押して編集モードへ入ります。

まずは[A]キーで頂点を全選択して[M]キーから距離でを選択し、重複頂点を削除します。


次にクロスシミュの固定用頂点グループを作成、指定します。
オブジェクトデータプロパティの頂点グループからら、[+]ボタンをクリックして新規頂点グループ(Group)を作成し、[Alt]+[A]キーで全選択状態を解除してからスカートの上の方の頂点を選択してウェイト1で割り当てボタンをクリックします。
この頂点グループに割り当てた頂点はウェイト1の場合、クロスシミュされず、頂点はアーマチュアに追従します。
設定しないとスカート全体が重力に従って落ちてしまいます。


物理演算プロパティからクロスをクリックしてクロスシミュを追加します。
クロス→シェイプ項目を開いて、固定グループに先程作成した頂点グループ、Groupを指定します。

見やすいように[Z]キーからマテリアルビューにして[Space]キーを押して再生してみます。([ESC]キーで再生停止)
青い衣装やアクセサリが落下してしまっているので、これを修正します。


まずはアクセサリを修正します。
[TAB]キーを押して編集モードへ入り、アクセサリを[L]キーで選択します。
[P]キーを押して選択から選択したアクセサリを分離させます。

分離させたアクセサリにクロスが適用されたままなので物理演算プロパティから解除します。


アクセサリ→衣服の順番に[Shift]キーを押しながら複数選択し、[TAB]キーを押して編集モードへ入ります。

衣服側の頂点を3つ選択し、[Ctrl]+[P]キーを押して頂点ペアレントを作成します。
選択した3つの頂点で作られた三角形にアクセサリが追従するようになります。

アクセサリに設定されているアーマチュアモディファイア(mmd_bone_order_override)を削除または、無効化します。
有効状態だとモーションを読み込ませてた際に動きが変になります。
これらを残りのアクセサリに対してもそれぞれ行います。

MMDタブ→シーン設定→リジットボディ物理演算:→ワールドを更新をクリックします。

MMDモデルのエンプティ(足元にある十字のオブジェクト)を選択し、サイドバーのMMDタブ→モデル設定→組み立て:から、すべてをクリックします。

MMDモデルのエンプティを選択した状態でサイドバーのMMDタブ→シーン設定→モーション:→インポートから.vmdファイルを読み込みます。
※エンプティではなく、アーマチュア(ボーン)を選択してモーションを読み込むとボーンアニメーションだけ、オブジェクト(材質)を選択してモーションを読み込むとシェイプキー(モーフ)アニメーションだけが読み込まれてしまいます。
※モーションインポート時のオプションで、余白を5から30程度にしないとクロスシミュを含む物理が破綻する事があります。
※Blenderへの.vmdファイルのインポート方法の詳細やオプションについては【Blender 3.0】mmd_tools【UuuNyaa版】/ モーション(ポーズ)のインポートをご覧ください。

クロスシミュを設定したオブジェクトの物理演算プロパティからクロス→キャッシュ→シミュレーション開始と終了の範囲を、MMDタブ→シーン設定→リジットボディ物理演算:→開始、終了と同じ範囲に設定します。

サイドバーのMMDタブ→シーン設定からベイクします。
ベイク後、[Space]キーを押してアニメーションを再生してみて足にめり込んでないのかを確認します。
足などにめり込んでしまっている場合、クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイクを削除からクロスシミュのベイクをいったん削除します。
足などに設定したコリジョンの外側の厚さの数値を上げるか、
クロスシミュレーションを設定したオブジェクトのクロスからコリジョン→オブジェクトのコリジョン→距離の値を上げてみます。
コリジョンなどを調整したら、クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイクから再度ベイクします。

上記のクロスシミュ設定でできたのが、下記の動画です。
完成例 | デフォの衣装物理 |
動画ファイルへのリンク | 動画ファイルへのリンク |
さらに滑らかにするには細分化モディファイアを使う必要があります。詳しくはこちらをご覧ください。
この項目ではハイフェンA2(HAT10服2.pmx)モデルを使わせてもらいます。
このモデルのスカートに対してサーフェス変形を使って間接的にクロスシミュを行います。
モデルのメッシュ構造によってはこちらの方法が良い場合もあると思いますが、ちょっと面倒です。
このモデルのスカートに対してサーフェス変形を使って間接的にクロスシミュを行います。
モデルのメッシュ構造によってはこちらの方法が良い場合もあると思いますが、ちょっと面倒です。

このモデルではスカートが複数の材質に分かれているため、それらを[Shift]キーを押しながら複数選択して[Ctrl]+[J]キーで結合します。
※選択しづらい場合は3Dビューで[Z]キーからワイヤーフレーム表示にしたり、右上のアウトライナーから[Ctrl]キーを押して複数選択しましょう。

結合したスカートオブジェクトを[Shift]+[D]キーを押して複製し、[F2]キーから名前をわかりやすい物に変更します。
ここでは複製したスカートオブジェクトをClothとしました。
この複製したClothオブジェクトに対してクロスシミュレーションを行います。
サーフェス変形モディファイアにはいくつかの制限があり、下記のようなメッシュにはターゲットに指定できません。(バインドが成功しない)
- 3つ以上の面を持つ辺
- 凹面
- 頂点が重複している
- 同一直線上のエッジを持つ面
これらを回避するためメッシュを編集します。
編集し易いように3Dビュー上で[Z]キーからワイヤーフレーム表示にしてます。

クロスシミュを設定するオブジェクト(このページの例ではCloth)を選択して[TAB]キーを押して編集モードへ入り、[A]キーですべての頂点を選択し、[M]キーを押して距離でを選択して重複頂点の削除とメッシュの結合を行います。
(モデルの衣装の構造によっては、編集モードで辺→辺ループのブリッジや、ブーリアンモディファイアーを使用してメッシュを結合しないと駄目かもしれません)

[X]キーを押して面だけを選択して面だけを削除します。

もう一度[A]キーを押してすべての頂点を選択して3Dビュー左上のメッシュからクリーンアップ→穴をフィルをクリックして穴を埋めます。

[Ctrl]+[T]キーを押して面を三角化します。
これで今回のケースではバインドできる状態になりましたが、衣装のメッシュ構造によってはクリーンアップから凹面を分割などが必要かもしれません。

オブジェクトデータプロパティの頂点グループから、+ボタンをクリックして新規頂点グループを作成し、スカートの上の方の頂点を選択してウェイト1で割り当てボタンをクリックします。
この頂点グループに割り当てた頂点はウェイト1の場合、クロスシミュされず、頂点はアーマチュアに追従します。
設定しないとスカート全体が重力に従って落ちてしまいます。

[TAB]キーを押してオブジェクトモードへ戻り、物理演算プロパティからクロスを選択します。

クロスを下へスクロールして、シェイプから固定グループに先程作成した頂点グループを指定します。

[Space]キーを押して再生するとスカートがクロスシミュレーションされます。
[ESC]キーを押すか、もう一度[Space]キーを押して停止し、[Shift]+[←]で1フレーム目まで戻ります。
足にめり込んでしまってますが後で足にコリジョンを設定するので今はこのままでいいです。


画面右上のアウトライナーからFilter.をクリックしてカメラのアイコン(レンダーで無効)をクリックします。
アウトライナーの一覧にカメラのアイコン(レンダーで無効)が追加されるのでクロスシミュレーションを設定した材質を選択し、目玉のアイコン(ビューポートで隠す)とカメラのアイコン(レンダーで無効)をクリックしてビューポート、レンダー共に表示されないようにします。

スカートオブジェクトを選択し、モディファイアープロパティからmmd_bone_order_override(アーマチュアモディファイア)のカメラのアイコン(レンダー)とモニターのアイコン(リアルタイム)アイコンをクリックしてoffにします。

モディファイアーを追加からサーフェス変形モディファイア追加します。


サーフェス変形モディファイアのターゲット:にクロスシミュレーションを設定したオブジェクト(今回の例ではclothオブジェクト)を指定します。
オブジェクトを指定したらその下のバインドボタンをクリックします。
上手くバインドできれば右の画像のようになります。
逆にバインドできない場合はクロスシミュレーションを設定したオブジェクトがサーフェス変形の制限事項に引っかかっています。

[Space]キーを押して再生してみます。スカートがクロスシミュレーションされるはずです。
[ESC]キーを押すか、もう一度[Space]キーを押して停止し、[Shift]+[←]で1フレーム目まで戻ります。
.VMDモーションをBlenderへインポートしてクロスシミュレーションのベイクを行います。
このページでは女の子がクルクル回るモーション(vmd) bowlrollを使わせてもらいます。

MMDモデルのエンプティ(足元にある十字のオブジェクト)を選択し、サイドバーのMMDタブ→モデル設定→組み立て:から、SDEF、モーフ、プロパティをクリックします。
※このハイフェンA2(HAT10服2.pmx)モデルの場合、すべてや、ボーン、物理演算はまだ押さないでください。

MMDモデルのエンプティを選択した状態でサイドバーのMMDタブ→シーン設定→モーション:→インポートから.vmdファイルを読み込みます。
※Blenderへの.vmdファイルのインポート方法の詳細やオプションについては【Blender 3.0】mmd_tools【UuuNyaa版】/ モーション(ポーズ)のインポートをご覧ください。

MMDタブ→シーン設定→リジットボディ物理演算:→ワールドを更新をクリックします。

サイドバーのMMDタブ→モデル設定→組み立て:から物理演算をクリックしてMMDモデルの物理演算をビルドします。

クロスシミュを設定したオブジェクトの物理演算プロパティからクロス→キャッシュ→シミュレーション開始と終了の範囲を、MMDタブ→シーン設定→リジットボディ物理演算:→開始、終了と同じ範囲に設定します。

サイドバーのMMDタブ→シーン設定からベイクします。
ベイク後、[Space]キーを押してアニメーションを再生してみて足にめり込んでないのかを確認します。

足などにめり込んでしまっている場合、クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイクを削除からクロスシミュのベイクをいったん削除します。


足などに設定したコリジョンの外側の厚さの数値を上げるか、
クロスシミュレーションするオブジェクトのクロスからコリジョン→オブジェクトのコリジョン→距離の値を上げてみます。

コリジョンなどを調整したら、再度ベイクします。
クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイク
このページでは女の子がクルクル回るモーション(vmd) bowlrollを使わせてもらいます。

MMDモデルのエンプティ(足元にある十字のオブジェクト)を選択し、サイドバーのMMDタブ→モデル設定→組み立て:から、SDEF、モーフ、プロパティをクリックします。
※このハイフェンA2(HAT10服2.pmx)モデルの場合、すべてや、ボーン、物理演算はまだ押さないでください。

MMDモデルのエンプティを選択した状態でサイドバーのMMDタブ→シーン設定→モーション:→インポートから.vmdファイルを読み込みます。
※Blenderへの.vmdファイルのインポート方法の詳細やオプションについては【Blender 3.0】mmd_tools【UuuNyaa版】/ モーション(ポーズ)のインポートをご覧ください。

MMDタブ→シーン設定→リジットボディ物理演算:→ワールドを更新をクリックします。

サイドバーのMMDタブ→モデル設定→組み立て:から物理演算をクリックしてMMDモデルの物理演算をビルドします。

クロスシミュを設定したオブジェクトの物理演算プロパティからクロス→キャッシュ→シミュレーション開始と終了の範囲を、MMDタブ→シーン設定→リジットボディ物理演算:→開始、終了と同じ範囲に設定します。

サイドバーのMMDタブ→シーン設定からベイクします。
ベイク後、[Space]キーを押してアニメーションを再生してみて足にめり込んでないのかを確認します。

足などにめり込んでしまっている場合、クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイクを削除からクロスシミュのベイクをいったん削除します。


足などに設定したコリジョンの外側の厚さの数値を上げるか、
クロスシミュレーションするオブジェクトのクロスからコリジョン→オブジェクトのコリジョン→距離の値を上げてみます。

コリジョンなどを調整したら、再度ベイクします。
クロスシミュを設定したオブジェクトの物理演算プロパティ→クロス→キャッシュ→ベイク
アニメーションの途中で脱衣させる場合は、モディファイアプロパティから頂点ウェイト合成モディファイアをClothの上に追加し、クロスシミュの固定グループに指定した頂点グループのウェイトを頂点ウェイト合成モディファイアで操作し、キーフレームを打ちます。
(アニメーションの途中でクロスシミュの固定グループに指定した頂点グループのウェイトを0にして脱衣させる)

クロスシミュを設定したオブジェクトのモディファイアプロパティから頂点ウェイト合成モディファイアを追加します。

頂点ウェイト合成モディファイアをClothの上に移動させます。(モディファイアの右上を掴んで移動させます)

頂点ウェイト合成モディファイアの頂点グループ Aにクロスシミュの固定グループに指定した頂点グループを設定します。

頂点セットの頂点グループ AかつBとなっている所を頂点グループ AまたはBに変更します。

影響を開き、全体的な影響力を0にします。
あとは脱衣させたいフレームの一つ前のフレームまで移動し、全体的な影響力を0でキーフレームを打ち、脱衣させたいフレームで全体的な影響力を1にしてキーフレームを打ちます。
(例えば50フレームから脱衣させたいなら、49フレーム目で全体的な影響力を0でキーフレームを打って50フレーム以降で1になるようにキーフレームを打つ)
(アニメーションの途中でクロスシミュの固定グループに指定した頂点グループのウェイトを0にして脱衣させる)

クロスシミュを設定したオブジェクトのモディファイアプロパティから頂点ウェイト合成モディファイアを追加します。

頂点ウェイト合成モディファイアをClothの上に移動させます。(モディファイアの右上を掴んで移動させます)

頂点ウェイト合成モディファイアの頂点グループ Aにクロスシミュの固定グループに指定した頂点グループを設定します。

頂点セットの頂点グループ AかつBとなっている所を頂点グループ AまたはBに変更します。

影響を開き、全体的な影響力を0にします。
あとは脱衣させたいフレームの一つ前のフレームまで移動し、全体的な影響力を0でキーフレームを打ち、脱衣させたいフレームで全体的な影響力を1にしてキーフレームを打ちます。
(例えば50フレームから脱衣させたいなら、49フレーム目で全体的な影響力を0でキーフレームを打って50フレーム以降で1になるようにキーフレームを打つ)

このページで例として使わせてもらったハイフェンA2(HAT10服2.pmx)モデルのスカートにクロスシミュを設定してモデルの足などにコリジョンを設定した場合、クロスシミュの固定グループに指定した頂点グループを頂点ウェイト合成モディファイアでウェイト0にしても足などのコリジョンにスカートが引っかかって上手く脱衣させれません。
このため、コリジョンの影響を受けない頂点グループを新たに作成&クロスシミュに設定して、この頂点グループを頂点ウェイト合成モディファイアを使って脱衣させるフレームで有効状態にします。

Clothオブジェクトのオブジェクトデータプロパティから新規に頂点グループを作成し、[TAB]キーを押して編集モードからコリジョンの影響を受けない頂点を選択、割り当てます。
※コリジョンの影響を受けない頂点グループはウェイトの有無のみ考慮されるので、ウェイトペイントモードでグラデーション状に塗っても意味がありません。
(クロスシミュの固定グループのようにウェイト1ならクロスシミュされず、0.5ならアーマチュアとクロスシミュの半々...というわけではない)

物理演算プロパティのクロスからコリジョン→オブジェクトのコリジョン→頂点グループに先程作成したコリジョンの影響を受けない頂点グループを指定します。

モディファイアプロパティから頂点ウェイト合成モディファイアを新しく追加し、Clothの上に移動させ、頂点グループ Aに作成したコリジョンの影響を受けない頂点グループを指定します。
頂点セットの頂点グループ AかつBとなっている所を頂点グループ AまたはBに変更します。

脱衣させたいフレームの一つ前のフレームまで移動し、頂点セットの頂点グループ AまたはBの右隣の・をクリックするか、右クリックメニューからキーフレームを挿入でキーフレームを打ちます。
(例えば50フレームから脱衣させたいなら、49フレーム目で頂点グループ AまたはBの状態でキーを打つ)

脱衣させたいフレームまで移動し、頂点セットの頂点グループ AまたはBを頂点グループ AかつBにしてキーを打ちます。
完成例 |
動画ファイルへのリンク |
スカートを掴むような動作をさせたい場合は、フックモディファイアと頂点ウェイト合成モディファイアを使います。
例として次のようなモーションを用意しました。
適当ポーズ詰300種くらい/立ちポーズ(右手腰).vmd@あさぬを改変したモーションです。
このモーションの左手の動きに合わせてクロスシミュを設定したスカートを掴んで持ち上げてみます。

クロスシミュを設定したオブジェクト(このページの例ではcloth)にフックモディファイアの影響を受ける頂点グループを作成します。
オブジェクトデータプロパティから新規に頂点グループを作成し、名前をHookなど、わかりやすい物にします。


Hook頂点グループを選択した状態で[Ctrl]+[TAB]キーからウェイトペイントモードへ入ります。
掴みたい付近の頂点にウェイトを塗ります。
塗り終えたら[Ctrl]+[TAB]キーからオブジェクトモードへ戻ります。


[Shift]+[A]キーからエンプティ→十字を選び、十字のエンプティを追加します。
テンキーの[5]から平行投影へ切り替え、テンキーの[1](真正面)や[3](横視点)などに切り替えながら[G]キーでエンプティをスカートのウェイトを塗った付近に移動させます。

エンプティのオブジェクトコンストレイントプロパティからチャイルドを追加し、ターゲットにモデルのアーマチュアを、ボーンに左手首のボーンを指定します。
エンプティの位置がおかしくなったら逆補正を設定または、逆補正を解除をクリックしてみてください。

モディファイアプロパティからフックモディファイアと頂点ウェイト合成モディファイアを追加し、Clothの上に上記画像のように並べ替えます。
フックモディファイアのオブジェクトにエンプティを、頂点グループにHookを指定します。
頂点ウェイト合成モディファイアの頂点グループ Aにクロスシミュの固定グループに指定した頂点グループを、頂点グループ BにHookを指定します。
頂点セットを全てに、ミックスモードを置き換えに変更します。
あとはクロスシミュをベイクします。
※ベイクし直さないと正常に動かない時がありました。

今回の例では最初から掴んでいますが、モーションの途中から掴みたい場合は頂点ウェイト合成モディファイアの影響から全体的な影響力を0にして掴むフレームで1になるようにキーフレームを打てばモーションの任意のフレームで掴めます。
例として次のようなモーションを用意しました。
適当ポーズ詰300種くらい/立ちポーズ(右手腰).vmd@あさぬを改変したモーションです。
動画ファイルへのリンク |

クロスシミュを設定したオブジェクト(このページの例ではcloth)にフックモディファイアの影響を受ける頂点グループを作成します。
オブジェクトデータプロパティから新規に頂点グループを作成し、名前をHookなど、わかりやすい物にします。


Hook頂点グループを選択した状態で[Ctrl]+[TAB]キーからウェイトペイントモードへ入ります。
掴みたい付近の頂点にウェイトを塗ります。
塗り終えたら[Ctrl]+[TAB]キーからオブジェクトモードへ戻ります。


[Shift]+[A]キーからエンプティ→十字を選び、十字のエンプティを追加します。
テンキーの[5]から平行投影へ切り替え、テンキーの[1](真正面)や[3](横視点)などに切り替えながら[G]キーでエンプティをスカートのウェイトを塗った付近に移動させます。

エンプティのオブジェクトコンストレイントプロパティからチャイルドを追加し、ターゲットにモデルのアーマチュアを、ボーンに左手首のボーンを指定します。
エンプティの位置がおかしくなったら逆補正を設定または、逆補正を解除をクリックしてみてください。

モディファイアプロパティからフックモディファイアと頂点ウェイト合成モディファイアを追加し、Clothの上に上記画像のように並べ替えます。
フックモディファイアのオブジェクトにエンプティを、頂点グループにHookを指定します。
頂点ウェイト合成モディファイアの頂点グループ Aにクロスシミュの固定グループに指定した頂点グループを、頂点グループ BにHookを指定します。
頂点セットを全てに、ミックスモードを置き換えに変更します。
あとはクロスシミュをベイクします。
※ベイクし直さないと正常に動かない時がありました。
完成例 |
動画ファイルへのリンク |

今回の例では最初から掴んでいますが、モーションの途中から掴みたい場合は頂点ウェイト合成モディファイアの影響から全体的な影響力を0にして掴むフレームで1になるようにキーフレームを打てばモーションの任意のフレームで掴めます。
この項目ではRGBA式こだまちゃんを使わせてもらいます。
こだまちゃんの下の水着を脱衣させてみます。


ワイヤーフレーム表示にして、編集モードから[P]キーの選択で水着の上下を下だけに分離します。
[M]キーから距離で重複頂点を削除します。

水着の紐を解けさせる箇所の頂点を選択し、[V]キーを押して辺を分離させます。
あくまで分離させるだけで、分離させた頂点を移動はしません。

下の水着全部をウェイト1で塗った頂点グループを作成します。
アニメーション途中で脱衣させる場合を参考に頂点ウェイト合成モディファイアを影響0でキーフレームを打ち、脱衣させるフレームで影響を1にします。
あとは水着にクロスシミュを設定し、固定グループに先程の頂点グループを指定すればOKです。
こだまちゃんの下の水着を脱衣させてみます。


ワイヤーフレーム表示にして、編集モードから[P]キーの選択で水着の上下を下だけに分離します。
[M]キーから距離で重複頂点を削除します。

水着の紐を解けさせる箇所の頂点を選択し、[V]キーを押して辺を分離させます。
あくまで分離させるだけで、分離させた頂点を移動はしません。

下の水着全部をウェイト1で塗った頂点グループを作成します。
アニメーション途中で脱衣させる場合を参考に頂点ウェイト合成モディファイアを影響0でキーフレームを打ち、脱衣させるフレームで影響を1にします。
あとは水着にクロスシミュを設定し、固定グループに先程の頂点グループを指定すればOKです。
mmd_uuunyaa_tools Addonを使うことで簡単にクロスシミュをセットアップできます。
※mmd_uuunyaa_tools Addonでクロスシミュを行う場合はモデルのリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)は削除してはいけません。(Addonの方で自動的にしてくれる)
詳しくは【Blender3.3】mmd_uuunyaa_tools【Addon】/ クロスシミュレーションをご覧ください。
※mmd_uuunyaa_tools Addonでクロスシミュを行う場合はモデルのリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)は削除してはいけません。(Addonの方で自動的にしてくれる)
詳しくは【Blender3.3】mmd_uuunyaa_tools【Addon】/ クロスシミュレーションをご覧ください。
これはBlenderのクロスシミュレーションと関係ありませんが、Blenderのエフェクト、クイック爆発で服を吹き飛ばす事ができます。
モデルにクロスシミュの設定やモーションの読み込み、ベイク等を済ませたものとして進めます。

服を吹き飛ばし始めるフレームまで移動し、吹き飛ばしたい(クロスシミュを設定していない方の)服のオブジェクトを選択して3Dビュー上部のオブジェクトからクイックエフェクト→クイック爆発を選択します。

モディファイアプロパティに追加された爆発モディファイアの辺をカットのチェックを外します。

パーティクルプロパティから、物理演算→衝突→接触時に消滅にチェックを入れます。
モデルにクロスシミュの設定やモーションの読み込み、ベイク等を済ませたものとして進めます。

服を吹き飛ばし始めるフレームまで移動し、吹き飛ばしたい(クロスシミュを設定していない方の)服のオブジェクトを選択して3Dビュー上部のオブジェクトからクイックエフェクト→クイック爆発を選択します。

モディファイアプロパティに追加された爆発モディファイアの辺をカットのチェックを外します。

パーティクルプロパティから、物理演算→衝突→接触時に消滅にチェックを入れます。
完成例 |
動画ファイルへのリンク |
[Blender 2.8] 布の表現 [クロスシミュレーション]/ ほろほろりドットコム上記のサイトが非常に詳しいです。ご覧下さい。
タグ
最新コメント