てんちょーの技術日誌

自分がつまづいたこととかメモ

【UE4】MayaLT2017でphysXを使って服を揺らす

はじめに

第6回ぷちコンにあわせて頓挫中だった3Dモデルを作りました。 その話は、また別の機会にするとして今回はワンピースをApexClothで揺らしてみたいと思います。

結論から言えば、微妙です。

あまり期待しないでください。

MayaLTも初心者ですのであしからず。

やるなら一通り読んでからのほうがいい気がします。

テスト環境

  • MayaLT 2017
  • UE4.13
  • PhysX: Maya DCC plug-in for PhysX 3-3-3

Maxでも出来ると思います。(未確認

手順

ApexCloth自体は最後にある参考サイトの@com04さんのサイトを見るといいかと思います。 以降はある程度知ってるものとして色々省略します。

基本的に参考を最後につけているのでそちらの動画(英語)を見ていただければ実際済むお話ですが、

つらい目にあったよってところも織り交ぜながら書いておきます。

それと、服のマテリアルは別にしておきましょう。そのほうが多分安全。

分けてなかった時

服だけになりました。

ちなみに服には一切ボーンは入ってません。

プラグインを入れる

nvideaにログイン後、こちらのDownloadCenterからダウンロード出来ます。

手元のMayaのバージョン等に合わせてください。

Download Center | NVIDIA Developer

.msi形式なので、実行すれば導入自体は出来るかと。

そして、MayaLT上で言うとウィンドウ → 設定/プリファレンス →プラグインマネージャー からphysx.mllをロードすると

f:id:shop_0761:20160914000609p:plain

このように追加されます。

physX Clothingを作る

これを作るときにはジョイント(ボーン)が必要になるはずなので、準備しておきましょう。

対象のメッシュを選択して(今回はワンピース)、右から6つ目のスカートみたいなアイコンをクリックするか、上のメニューからphysXphysX Clothing → Create Clothingで作れます。

これを色々調整していく感じです。

ペイントする

スパナみたいなアイコンをクリックすると、このようにメニューが出ると思うのでPaintを選べば塗れます。

f:id:shop_0761:20160914001216p:plain

この時、マテリアルを設定していればこのように紫色になるかと思います。ならなかったら確認してみてください。

ちなみに僕は一旦ここでハマりました。

はい、原因不明ですが乗り切りました。

こんな感じで色々設定できます。

f:id:shop_0761:20160914002529p:plain

Attribute

4種類塗れます。

  • maxDistances これがきっとメインになる塗り
  • latchToNearest 動画だと服の裏地に塗ってました

あとのBackstop系はよくわからなかったです()

とりあえずmaxDistanceを揺らしたいところに強弱をつけて塗るみたいです。

参考までにこんな感じしたり。

f:id:shop_0761:20160914003020p:plain

裏も塗りました。

f:id:shop_0761:20160914003026p:plain

シュミレート自体は再生ボタンを押せば勝手にやってくれます。

ちなみにlatchToNearestを塗ると表と裏の生地が貫通したのでやめました。

RagDoll

服と体のコリジョンを作れます。

Bodyになるメッシュを選択後、藁人形みたいなアイコンをクリックしてCreate Kinematic RagDollで作成できます。

つよそう

f:id:shop_0761:20160914003620p:plain

でこのように選択して、不要なジョイントのところのコリジョンをRemoveできたりします。

f:id:shop_0761:20160914003821p:plain

個々のコリジョンを編集するには、上でジョイントを選択した後に下のshapeSetUpから目的のコリジョンを選択して、Selectすれば編集メニューがでます。

f:id:shop_0761:20160914003955p:plain

f:id:shop_0761:20160914004212p:plain

と普通に移動、回転、スケールができるみたいです。

なお

こんな目に遭っているので様子見ながら調整しましょう。

出力する

一通りおわった(ことにした)ので、UE4用に出力します。

Create Clothingしたメッシュを選択して出力するだけです。

ポイントは

ファイルの種類をphysXにした後、ここを確認しましょう。

f:id:shop_0761:20160914004651p:plain

特にunitを間違えるとおかしなことになります。

あとは.apxファイルが生成されるので適用するだけですね。

この辺はスクショでも貼って終了にします。

f:id:shop_0761:20160914005550p:plain

結果

はい すごい微妙に変わります。

まとめ

ここまでやってこれだけ…しかも微妙って…

なので、現状はボーンを入れて、Anim Dynamicsで揺らすか手付けアニメーションにするかが最適解かもしれません。(けど面倒なのでやりたくない

余裕があれば髪もやります。

AnimDynamics

unrealengine.hatenablog.com

参考

www.youtube.com

www.youtube.com

www.youtube.com

docs.unrealengine.com

物理-布シミュレーション - UE4 Document@com04