株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • ≪セットアップ室≫nClothを使ったクロスシミュレーションセットアップ(初心者向け)

≪セットアップ室≫nClothを使ったクロスシミュレーションセットアップ(初心者向け)

2015/2/5

Tag: ,

はーい、こんにちは。
部長に騙されてDF TALKを書くハメになりました。セットアップ室の櫻井です。

今回はnClothを使った簡単なクロスシミュレーションセットアップの紹介を淡々とさせて頂きます。(チーム内のやり方とは、省いていたり少し違ったりしています)

DFでは殆どのプロジェクトでクロス(ヘアー)シミュレーションします。
それをセットアップチームがセットアップし、チーム内でシミュレーション作業をします。

今回使う画像のmayaのバージョンは2015です。日本語になっていますが、社内では英語です。

ではまず、スキニングが完了したモデルを用意します。(間に合わせのモデルですみませんっ)

とりあえず名前がないとやり辛いので、ベースモデルと言うことで服をcoat_base、体をbody_baseと仮で命名しておきます。

coat_baseを二つ複製し、ひとつをシミュレーション用のメッシュ(以下coat_simobj)。もうひとつをそのまま最終確認用にします(以下HIcoat_simobj)。
シミュレーションするメッシュは、求めているクオリティの具合を見て削減しましょう。ハイレゾのままだと重すぎる場合があるからです。やる気がなくなります。
削減の仕方としては、リトポしたり、装飾品(ポケット等)をバッサリ無くしたりします。
厚みのあるメッシュを1枚にしたい場合は、衝突する面に合わせます。
例えるなら、服の袖に厚みがあった場合、内側に合わせます。外側に合わせてしまうと、内側は衝突するメッシュが無いので体にめり込んでしまいます。

出来上がったシミュレーション用のオブジェクトを1つ複製しcoat_simobj_baseと仮で命名しておきます。(後で記述するペイントマップで使います)
coat_simobjを選択した状態でnDynamicsのnMesh→nClothの作成(Create nCloth)をクリック。

nCloth オブジェクトに変換され、nucleus1とnCloth1が出来ます。
これでシミュレーションができる状態になります。

しかし、そのままでは衝突するものが無いので、coat_simobjは永遠と落下していってしまいます。
そうならないように、nClothオブジェクトと衝突させるオブジェクトを作ります。
これをコリジョン(衝突)オブジェクトといいます。そのままですね。

body_baseを複製して、必要の無いメッシュを削減します。(シミュレーションするメッシュが衝突しない所等)

画像のは雑ですが、コリジョンオブジェクトはクロスのシルエットにもろに影響するので、適当に作ると痛い目に遭います。
シミュレーションをした際のシルエットを意識しながら作りましょう。
シミュレーションオブジェクトと始めから干渉していたりすると、そこからめり込んだり破綻するのである程度余裕を持たせましょう。

作ったコリジョン用のメッシュを選択した状態でnDynamicsのnMesh→パッシブコライダの作成(Create Passive Collider)をクリック

コリジョンオブジェクトに変換され、nRigid1が出来ます。
変換されたオブジェクトには、元のbody_baseと同じ動きになるようにしてあげます。(同じスキニングやwrap等)

一旦再生をして見ましょう。

はだけてしまいました。
首元から肩、胸周りをマップを使って大きく動かないように制御してみましょう。

前に作ったcoat_simobj_baseをcoat_baseとwrapして、同じ動きをするようにします。
sim_obj_baseとnclothノードを選択し、キーボードの↓を押します。
ハイパーグラフを起動し、sim_obj_baseShapeのworldMeshからnClothShapeのinputMeshへ接続します。

アトリビュートエディターのダイナミックプロパティから、入力メッシュ引き付け(input Mesh Attract)を1にします。

ダイナミックプロパティマップの中の入力メッシュ引き付けマップタイプを頂点単位(Per-vertex)にします。

coat_simobjを右クリック→ペイント(Paint)→nCloth 頂点マップ(nCloth Vertex Maps)→入力引き付け(Input Attract)をクリック

ペイントツールが起動しますので、あまり揺れて欲しくない部分を塗ります。

はだけなくなりました。

マント等のシンプルな形状のものには、マップタイプをテクスチャにし、ランプマップを使うと楽に制御できたりします。

次に、キャラクターが動いたときに破綻しないかアニメーションさせてみます。
脇の部分がコリジョンに挟まれ破綻してしまいました。(不思議な破綻の仕方だなぁ・・・)

nucleusのアトリビュートのサブステップ(subSteps)を上げたり、コリジョンの精度を上げたり、厚みを下げたりしてみましょう。
Autodeskのmayaのチュートリアルを参考に出来ます。(というかここ見れば大体出来るんじゃ・・・)Lesson 3: 高解像度メッシュをラップしてアニメーション時にズボンをシミュレートする

精度を上げてもダメなら、デフォーマーやターゲットでコリジョンオブジェクトに隙間を作りましょう。

(極端な例ですが)
今回はスカルプトデフォーマー(Sculpt Deformer)を使用しています。Animationのデフォーマーの作成(Create Defoemers)→スカルプトデフォーマー(Sculpt Deformer)で作ります。
脇の下以外は変形させたくないので、スカルプトデフォーマーを選択した状態でデフォーマの編集(Edit Deformers) →メンバーシップの編集ツール(Edit Membership Tool)を起動し、脇以外を選択から外します。

破綻はなくなりました。

HIcoat_simobjとwrapして、実際にレンダリングするモデルでめり込みや破綻、肩や肘のシルエットが著しく変わっていないか確認します。

以上、簡単なクロスシミュレーションセットアップでした。

※免責事項※
本記事内で公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。
これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。

DFセットアップ室では、リギングアーティストを大募集中です。
一緒に魅力的な作品を作っていきましょう!
詳しくは、下記の募集要項をご覧ください。

https://www.dfx.co.jp/careers/designer/rigging-artist.html

***

他の方でCG以外の話を書いていたので私もすこし。

まぁ何かといいますと、最近ミニ四駆にどっぷりはまっています。
ノー残業デーの時にはたまに一人で新橋へ寄って走らせています。(↓新橋にあるコース)

なんでもまたブームが来ているようで、私が参加した公式大会では3000名以上もエントリーがあったようです。
興味のある方はこの波に乗りましょう。

↓ちなみに私のミニ四駆です。サスペンションが付いてます。

改造の話とか書きたかったんですが、やっぱりそこは自重します・・・。

ではさようなら。

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*