このページは編集途中です
モデルの規約によっては改造だけでなくMMDとその派生型以外のソフトウェアにモデルを持っていくこと自体を禁止しているものもあります。ご注意ください!!
mmd_toolsでBlenderへ読み込んだMMDモデルに対し、Blenderのクロスシミュレーション機能を使ってみます。
このページではハイフェンA2モデル、ニコニ立体ちゃんモデルを利用させてもらいます。
BlenderへのMMDモデルの読み込みなどは【Blender2.9】 mmd_tools 【Addon】をご覧ください。


スカートオブジェクトを選択し、モディファイアータブからサーフェス変形モディファイアーを追加します。

サーフェス変形モディファイアーのターゲット:にクロスシミュレーションを設定したオブジェクトを指定します。
オブジェクトを指定したらその下のバインドボタンをクリックします。
上手くバインドできれば下図のようになります。

逆にバインドできない場合はクロスシミュレーションを設定したオブジェクトがサーフェス変形の制限事項に引っかかっています。

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

モディファイアータブからmmd_bone_order_overrideのXアイコンをクリックしてmmd_bone_order_overrideを削除します。
これによりボーンを動かしてもスカートオブジェクトが追従しなくなりますが、クロスシミュレーションを設定した方のスカートオブジェクトがmmd_bone_order_overrideでボーンに追従して動き、それがサーフェス変形を通して(こちらの)スカートを動かすので問題ありません。


クロスシミュレーションを設定したオブジェクトにモディファイアプロパティからサブディビジョンサーフェス(細分化)モディファイアを追加します。
Clothより上にサブディビジョンサーフェス(細分化)モディファイアを移動させます。(モディファイア名の一番右の::::をドラッグして移動させる)
カトマルクラークとなっているのを隣のシンプルにし、細分化:を1にします。(細分化の値を大きくするとより滑らかになりますが計算量が増えてベイクが大変です)

シミュレーションを反映させるオブジェクトの方は、バインド済みの場合は一旦バインドを解除し、サーフェス変形の上にクロスシミュレーション用オブジェクトと同じ設定のサブディビジョンサーフェス(細分化)モディファイアを追加します。
その後、もう一度バインドします。
ボーンと関連付けてそちらを操作?
モデルの規約によっては改造だけでなくMMDとその派生型以外のソフトウェアにモデルを持っていくこと自体を禁止しているものもあります。ご注意ください!!
mmd_toolsでBlenderへ読み込んだMMDモデルに対し、Blenderのクロスシミュレーション機能を使ってみます。
このページではハイフェンA2モデル、ニコニ立体ちゃんモデルを利用させてもらいます。
BlenderへのMMDモデルの読み込みなどは【Blender2.9】 mmd_tools 【Addon】をご覧ください。
MMDではモデルに設定された剛体とJointで物理演算を行ってボーンを動かし、それによってボーンに設定されたウェイトに従って頂点が移動します。
Blender上でもリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)で似たような物理演算ができます。
Blenderへmmd_toolsで読み込んだMMDモデルの剛体/JointはBlenderのリジッドボディとリジッドボディコンストレイントへ変換され、ほぼ同じような動きをさせることができます。(物理演算エンジンのVerなどが違うため完全に同一にはならない)
MMDには無いBlenderの機能の一つとしてクロスシミュレーションがあります。
これは剛体とJointで演算して頂点(正確にはボーンとそれに乗っているウェイト頂点)を動かすのではなく、頂点と重力やコリジョンを演算して直接(剛体やボーンを介さず)頂点を動かし、布、衣服などをシミュレーションする機能です。
そのためローポリモデルでは望んだ結果にはならないかもしれません。


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

いくつか方法がありますがこのページではサーフェス変形モディファイアーを利用する方法を取ります。
スカートのオブジェクトを複製後編集し、それに対してクロスシミュレーションを行い、サーフェス変形で元のオブジェクト(材質)に演算結果を反映させる方法です。
Blender上でもリジッドボディ(剛体)とリジッドボディコンストレイント(Joint)で似たような物理演算ができます。
Blenderへmmd_toolsで読み込んだMMDモデルの剛体/JointはBlenderのリジッドボディとリジッドボディコンストレイントへ変換され、ほぼ同じような動きをさせることができます。(物理演算エンジンのVerなどが違うため完全に同一にはならない)
MMDには無いBlenderの機能の一つとしてクロスシミュレーションがあります。
これは剛体とJointで演算して頂点(正確にはボーンとそれに乗っているウェイト頂点)を動かすのではなく、頂点と重力やコリジョンを演算して直接(剛体やボーンを介さず)頂点を動かし、布、衣服などをシミュレーションする機能です。
そのためローポリモデルでは望んだ結果にはならないかもしれません。
- ローポリモデルにクロスシミュレーションを使った例(球体はコリジョン)

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

クロスシミュレーション機能は魅力的ですが、MMDモデルにそのまま使ってもほとんどの場合望んだ結果にはなりません。
オブジェクトを同士を結合(Ctrl+J)しても繋がっていないメッシュが重力に従って落ちるためです。
- 6フレーム目、スカート3材質が落ちてしまっている

いくつか方法がありますがこのページではサーフェス変形モディファイアーを利用する方法を取ります。
スカートのオブジェクトを複製後編集し、それに対してクロスシミュレーションを行い、サーフェス変形で元のオブジェクト(材質)に演算結果を反映させる方法です。
モデルのインポートはこちらをご覧ください。
この項目ではハイフェンA2モデルを例として使わせてもらいます。
このモデルのスカートにクロスシミュレーションを使ってみます。

モデルを読み込み、サイドバーからMMDタブ→Separate By Materialsでモデルの材質ごとにオブジェクトを分割します。
(サイドバーが表示されない場合はマウスカーソルを3Dビューに持っていって[N]キーを押すか、左上のビュー→サイドバーを選択)

このモデルはスカートの材質が3つに別れているため、スカートの材質(オブジェクト)をShiftキーを押しながら選択し、Ctrl+Jキーで結合します。

結合したオブジェクトを選択した状態でShift+Dキーを押してオブジェクトを複製します。
複製元オブジェクト名.001というオブジェクトが作成されます。
この複製したオブジェクトに対してクロスシミュレーションを行います。
この項目ではハイフェンA2モデルを例として使わせてもらいます。
このモデルのスカートにクロスシミュレーションを使ってみます。

モデルを読み込み、サイドバーからMMDタブ→Separate By Materialsでモデルの材質ごとにオブジェクトを分割します。
(サイドバーが表示されない場合はマウスカーソルを3Dビューに持っていって[N]キーを押すか、左上のビュー→サイドバーを選択)

このモデルはスカートの材質が3つに別れているため、スカートの材質(オブジェクト)をShiftキーを押しながら選択し、Ctrl+Jキーで結合します。

結合したオブジェクトを選択した状態でShift+Dキーを押してオブジェクトを複製します。
複製元オブジェクト名.001というオブジェクトが作成されます。
この複製したオブジェクトに対してクロスシミュレーションを行います。
サーフェス変形モディファイアにはいくつかの制限があり、下記のようなメッシュにはターゲットに指定できません。(バインドが成功しない)
これらを回避するためメッシュを編集します。

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

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

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

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

オブジェクトデータタブの頂点グループから、+ボタンをクリックして新規頂点グループを作成し、スカートの上の方の頂点を選択して割り当てボタンをクリックします。
この頂点グループに割り当てた頂点はクロスシミュレーションの際、移動しません。(ウェイト1の場合)
設定しないとスカート全体が重力に従って落ちてしまいます。

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

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

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

アウトライナーの一覧から、クロスシミュレーションを設定したオブジェクトを選択して目玉のアイコン(ビューポートでの表示/非表示)とカメラのアイコン(レンダーでの表示/非表示)をクリックしてOFF(ビューポート、レンダー共に表示しない)にします。
- 3つ以上の面を持つ辺
- 凹面
- 頂点が重複している
- 同一直線上のエッジを持つ面
これらを回避するためメッシュを編集します。

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

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

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

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

オブジェクトデータタブの頂点グループから、+ボタンをクリックして新規頂点グループを作成し、スカートの上の方の頂点を選択して割り当てボタンをクリックします。
この頂点グループに割り当てた頂点はクロスシミュレーションの際、移動しません。(ウェイト1の場合)
設定しないとスカート全体が重力に従って落ちてしまいます。

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

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

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

アウトライナーの一覧から、クロスシミュレーションを設定したオブジェクトを選択して目玉のアイコン(ビューポートでの表示/非表示)とカメラのアイコン(レンダーでの表示/非表示)をクリックしてOFF(ビューポート、レンダー共に表示しない)にします。


スカートオブジェクトを選択し、モディファイアータブからサーフェス変形モディファイアーを追加します。

サーフェス変形モディファイアーのターゲット:にクロスシミュレーションを設定したオブジェクトを指定します。
オブジェクトを指定したらその下のバインドボタンをクリックします。
上手くバインドできれば下図のようになります。

逆にバインドできない場合はクロスシミュレーションを設定したオブジェクトがサーフェス変形の制限事項に引っかかっています。

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

モディファイアータブからmmd_bone_order_overrideのXアイコンをクリックしてmmd_bone_order_overrideを削除します。
これによりボーンを動かしてもスカートオブジェクトが追従しなくなりますが、クロスシミュレーションを設定した方のスカートオブジェクトがmmd_bone_order_overrideでボーンに追従して動き、それがサーフェス変形を通して(こちらの)スカートを動かすので問題ありません。
クロスシミュレーションの確認の為にアニメーションを再生したため、数フレームはベイク済みかと思いますが、正しく計算するためにちゃんとベイクします。


クロスシミュレーション用オブジェクトの物理演算タブからクロスのキャッシュタブを開き、ベイクを削除をクリックして既存のベイクを削除します。
削除後にベイクボタンをクリックしてベイク後、[space]キーを押してアニメーションを再生して足にめり込んでないのを確認します。

足などにめり込んでしまっている場合、一旦ベイクを削除してから足などに設定したコリジョンのソフトボディとクロス→外側の厚さの数値を上げてみます。
逆にパンツやお尻などにコリジョンを設定してスカートが暴れる場合は、外側の厚さの値を下げたり、減衰の値を上げて見ます。


クロスシミュレーション用オブジェクトの物理演算タブからクロスのキャッシュタブを開き、ベイクを削除をクリックして既存のベイクを削除します。
削除後にベイクボタンをクリックしてベイク後、[space]キーを押してアニメーションを再生して足にめり込んでないのを確認します。

足などにめり込んでしまっている場合、一旦ベイクを削除してから足などに設定したコリジョンのソフトボディとクロス→外側の厚さの数値を上げてみます。
逆にパンツやお尻などにコリジョンを設定してスカートが暴れる場合は、外側の厚さの値を下げたり、減衰の値を上げて見ます。


クロスシミュレーションを設定したオブジェクトにモディファイアプロパティからサブディビジョンサーフェス(細分化)モディファイアを追加します。
Clothより上にサブディビジョンサーフェス(細分化)モディファイアを移動させます。(モディファイア名の一番右の::::をドラッグして移動させる)
カトマルクラークとなっているのを隣のシンプルにし、細分化:を1にします。(細分化の値を大きくするとより滑らかになりますが計算量が増えてベイクが大変です)

シミュレーションを反映させるオブジェクトの方は、バインド済みの場合は一旦バインドを解除し、サーフェス変形の上にクロスシミュレーション用オブジェクトと同じ設定のサブディビジョンサーフェス(細分化)モディファイアを追加します。
その後、もう一度バインドします。
- mmd_toolsからモーション(.vmd)を読み込んでモデルに当てる際は、モデルへモーション読み込み→MMDタブからPhysics:Build→シーンプロパティからリジッドボディワールド→キャッシュ→シミュレーション終了フレームを確認→クロスシミュレーション用オブジェクトの物理演算タブからキャッシュ→終了フレームをリジッドボディワールドのと同じにして全物理演算をベイク
- 途中で脱衣させる場合は、頂点ウェイト合成モディファイアをClothの上に追加し、キーフレームを打つ。
ボーンと関連付けてそちらを操作?
タグ
最新コメント