Blenderで作ったモデルをマーベラスデザイナーでシミュレーションする

Blenderで作ったモデルをマーベラスデザイナーでシミュレーションする 3DCG
Blenderで作ったモデルをマーベラスデザイナーでシミュレーションする

マーベラスデザイナー(Marvelous Designer)は衣服などの作成において強力なツールですが、一般的なポリゴンモデリングツールではないため、やや特殊なワークフローになります。

慣れればいろいろなものを作成することは可能ですが、作りにくい物もあるのも確かです。ただ、クロスシミュレーションが秀逸なので、それだけでもなんとか使いたい…という方も多いと思います。

そのためBlenderで作ったものをマーベラスデザイナーに持ち込み、シミュレーションをしたうえでBlenderに持ちかえり、形状転送をするという工程を説明したいと思います。

マーベラスデザイナーとBlenderの連携方法

Blenderでモデリング

まずは、Blenderでモデリングを行います。

ここでは、シワなどの形状は考慮せず、構造や形状をモデリングしましょう。例はプリーツスカートです。着せたいモデルが決まっているなら、そのモデルのサイズに合わせてつくりましょう。

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

モデリングができたら、UV展開をします。ここで展開したUVアイランドの位置、形状が後々、形状転送をする際に重要になります。

UV展開後のローポリ

基本的には、衣服の場合、縫製位置をUVシームに見立てて展開することで、マーベラスデザイナーで作成したようなUVの状態になると思います。

ただ、もちろんさまざまな衣服があり、また後の工程のためにも、必ずしも縫製位置にシームを入れられない場合もあると思います。

例でもベイクのことを考慮して、プリーツ単位でUVアイランドになるようにシームを付けて展開をしています。

テクスチャリングなどとの兼ね合いもありますし、ベイクのやり易さにも関わるので、このあたりは多少各自での試行錯誤が必要な部分です。

UV展開をした後は、パッキングをします。

特に左右対称にしたり、ローカル軸にUVアイランドの方向を合わせるなどは必要ありませんが、そのまま本番用データとして使うことになるなら、ここでしっかりとパッキング、UVレイアウトを詰めておくとよいと思います。

OBJでエクスポート(マーベラスデザイナーにむけて)

OBJでのエクスポートが必要です。FBXなどではそもそも衣装としての読み込みオプションがありません。

OBJでの読み込みが前提になるので、アニメーションなどを持ち込んでシミュレーションをするというのはおそらく難しいのではと思います。基本的には静止メッシュを読み込んでシミュレーションをするという形になります。

エクスポートするときに、メッシュ解像度を上げておく必要があります。マーベラスデザイナー上でも解像度を変更できますが、どのように三角メッシュになるか予想できません。(UVを2Dパターンにトレースが有効でない場合マーベラスデザイナー上で粒子間隔を変更しても解像度はかわりませんでした)

通常は、サブディビジョンサーフェースモディファイアを付与して適用することで、メッシュ解像度を簡単に増やすことができます。この例では、分割を3にしています。元のメッシュが△1920で、分割後が△122880です。

メッシュを分割して解像度を上げた状態

安全のため、Blender側でシミュレーションに必要だろうと思われる解像度にしておくとよいと思います。

ちなみにBlender上で四角ポリゴンでもマーベラスデザイナー上ではその四角ポリゴンがすべて三角ポリゴンになります。

BlenderでのOBJのエクスポートの設定は、以下のようにすると良いと思います。選択物のみにすると、選択したものだけのエクスポートになるので便利です。

BlenderからのOBJエクスポート設定

マーベラスデザイナーにインポート

マーベラスデザイナーにBlenderからエクスポートしたOBJをインポートします。

インポート時の設定は以下のようにすると良いと思います。

インポート設定

Blenderはデフォルトで単位がm(メートル)になっています。マーベラスデザイナーはmm(ミリ)です。そのため、どちらかで単位を合わせる必要があります。

楽なのはインポート時に単位をmにする方法だと思います。これでBlenderからエクスポートしたものがマーベラスデザイナー上でも正しいサイズでインポートされるはずです。

シミュレーションするには、アバターが無いと難しいので、衣装を着せたいモデルをアバターとして読み込むのが良いと思います。

マーベラスデザイナーにて、シミュレーションを行います。衣装として読み込み、UVの2Dパターントレースしてない場合は、2Dプレビューにパターンは表示されません。

また、2Dパターンでの製作時に使えるまたは設定できる項目の多くが設定ができない、もしくは制限される状態になっています。ただ、レイヤーや伸縮率は設定できるので、重なりや伸び縮みはある程度、考慮できると思います。

UVの2Dパターントレースについて

OBJインポートのダイアログでは「UVの2Dパターントレース」というオプションがあります。これにチェックを入れると、UVアイランドの形状がそのままマーベラスデザイナー上での2Dパターンに変換され、マーベラスデザイナー上での編集が可能になります。

ただし、この変換を行い、編集をするとUV位置が変わってしまい、あわせてUVアイランドの形状もやや変化するため、UVを使った形状転送には使いにくくなってしまいます。

シミュレーション結果をローポリ側に形状転送する用途では、基本的に2Dパターンには変換せず、UVを同一位置、同一形状のままにする必要があります。

ただ、2Dパターンに変換しない場合、メッシュは一塊として扱わなければならず、たとえば一部分だけ硬くするといったマーベラスデザイナー上での素材設定は行えません。

ですので、素材感がかなり違い、シミュレーションの結果を変えたい場合、同一メッシュで持ち込むと切り分けが難しくなると思います。

これの有効な解決策はいまのところ、オブジェクトを分けてマーベラスデザイナーに持ち込むことですが、その場合、メッシュのつながりは保てないので、メッシュが連続していて、かつ異なる素材が使われている衣服などの場合は、注意が必要です。

2Dパターンに変換することで、Blenderで作ったものをMD上で詰めることも可能なので、それについては別記事で紹介出来たらと思います。

マーベラスデザイナーからエクスポート(Blenderにむけて)

マーベラスデザイナーでシミュレーションをした後は、Blenderにシミュレーション結果を戻すために、エクスポートします。

単純にBlenderにインポートするためのエクスポートなので形状とUVが出力できる形式であれば、OBJでもFBXでも問題ありません。

ここではFBXでのエクスポートをしています。エクスポート設定は以下のようにすると良いと思います。(Seletct Avatarsにチェックがあるとアバターごと出力されるので注意です)

エクスポート設定

マーベラスデザイナーの仕様なのか、テクスチャを出力しないとUVマップが出力されないようなので、使いませんが統合UV座標にチェックをいれて、適当にディスプレイスメントマップのみ有効にしてテクスチャを出力しています。

Blenderにインポート

Blenderで作ったモデルがあるシーンにマーベラスデザイナーからエクスポートしたものをインポートします。

この時注意してほしいのが、トランスフォームの適用を必ず行う必要がある点です。

トランスフォームの適用が重要

他ツールからエクスポートしたデータは、Blenderで開くためにさまざまなトランスフォームが掛かっている可能性があります。そのためトランスフォームの適用をしないで作業をすると、おそらく形状転送などが正しく行われません。

変な模様が付く場合

マーベラスデザイナーからエクスポートしたモデルを読み込むと、こういった感じで変な模様がついている場合があります。これはカスタムノーマルが付与されているためです。

変な模様?

マーベラスデザイナーは最初に読み込まれた時のノーマルを保存しているようです。そしてエクスポートする際に、カスタムノーマルとしてその時のノーマルを一緒にエクスポートするようです。

多くの場合は必要ないと思いますので、属性リストで該当のかカスタムノーマルを探して削除すると、この模様を消すことができます。

属性のカスタムノーマル

形状転送

形状転送にはMesh Data Transferを使うことをお勧めします。UVを使った形状転送が容易です。

Mesh Data TransferはGumroad等で入手できます。エクステンションには対応してないようです。無料で使用することができます。

Mesh Data Transfer for Blender
****IMPORTANT****Version 1.4.4Is a legacy version. It will not work with the latest version of Blender.The latest suppor...

ローポリは、モデリング時で△2000程度だったのですが、解像度がすこし足りないので、サブディビジョンサーフェスモディファイアで分割1で適用して、△8000程度にしています。

もし、UVアイランドの形状や位置を変えなければ、手動でメッシュを分割して解像度調整をしても問題ありません。

ただし、UVアイランド外にあらたな頂点が生まれるような(つまりUV展開されてない頂点)編集をすると、形状転送が破綻します。

モデリング時点で検討すべきことですが、形状転送前にもう一度解像度に関して考えると良いと思います。

Mesh Data Transferでの形状転送

Mesh Data TransferのメニューはNペインのメッシュプロパティにあります。

ローポリ側のメニューにて、形状転送なのでシェイプを選び、ソースに形状転送元(ハイポリ)を指定すると、ActiveUVが選択できるようになります。これでUV経由で形状転送が行われます。

UVアイランド形状がローポリ、ハイポリで完全に一致しているので転送破綻は基本的に起きないはずです。

メッシュデータを転送をクリックするとハイポリ側の形状がローポリ側に転送されます。

Mesh Data Transferの設定

もちろんローポリ側は、ハイポリより解像度が低いので、シワの形状が詳細には転送できません。

ハイポリと形状転送後のローポリ

しかし、形状転送をすることで、シワとしての形状で、ハイポリ、ローポリの頂点位置が合うようになるので、ベイク時にずれが発生する可能性がかなり軽減できます。

結果的にAOやNormalが奇麗にベイクできるようになります。

ベイクのためのエクスポート

形状転送が終わったら、ベイクのためにハイポリ、ローポリともにエクスポートします。この時の形式はテクスチャリングツールに対応している形式であれば問題ありません。

ベイクのためのエクスポートは、かならず、Blenderからエクスポートしてください。

シミュレーション形状のハイポリは、マーベラスデザイナーからエクスポートしたものがそのまま使えるのですが、トランスフォームの適用を行っていないため、ローポリとサイズが異なり、ベイクが正しく行えない可能性があります。

前述しましたが、ハイポリ、ローポリともにトランスフォームの適用をした上ででエクスポートしてください。

あとは、SubstancePainterなどにインポートしてベイクを行います。

以下はSubstancePainterでのベイク結果です。プリーツなどではハイポリとローポリの位置がずれやすく、ベイクもずれることが多いですが、しっかりベイクができていることがわかります。

Normalの状態
AOの状態
ベイクマップすべての状態

まとめ

このように、Blenderで作ったものをマーベラスデザイナーのハイクオリティなクロスシミュレーションを適用することができます。

マーベラスデザイナーでなかなかうまく衣装が作れない場合は、Blenderでモデリングしてもちこむと効率的に制作が進むかもしれません。

ただ、もちろんマーベラスデザイナーで制作したほうが効率的な物、もしくはやりやすい物、クオリティを上げやすい物もあるのも確かです。

モデリング、UV展開、テクスチャリングなどの兼ね合いから、どういうワークフローで制作すれば効率的でクオリティが高くなるのかは、日々研究が必要ですね。

コメント

タイトルとURLをコピーしました