| MAYA:MAYA Cloth 基礎編 1 | |||||||||||||||||||
| O2 で MAYA 1.5とMAYA Cloth を使えるようになったので、MAYA Clothのシュミレーターを研究してみることにしました。Softimage 編でClothシュミレーター研究は終了ということでしたが、私、著者の興味でMAYA Clothについてもおなじみの形でやってみます。 | |||||||||||||||||||
MAYA Clothについて MAYA ClothはほかのClothシュミレーターにはない衣服を製作するための機能が兼ね備えられている。特に目をみはる部分は2Dで服のパターンを製作し、縫合することによって服を製作することができること。これはまさにパタンメーカーが実際の服を2Dのパターンから起こしているように製作ができる。縫合に関してはかなりレベルの高い自動修正システムが兼ね備えられており、縫い目を設定した部分は完全に隙間を補正する。従来だと縫いあわせや服の穴を製作するのに時間がかかっていたが、これを利用すれば簡単に短時間で服のシミュレートが可能になりそうだ。 MAYAClothはポリゴンからClothを製作するが、構造上はClothReyeのジオメトリに近いが、服のパターンに関してはNURBSからでも、ポリゴンからでも製作が可能。パラメーターもほかと引けを取らず充実しており、設定の保存呼び出しも可能になっている。こくにこの設定の呼び出しに関しては初期段階からいくつかライブラリとして存在しており、デニム、シルク、コットンなどの設定を簡単迅速に呼び出せる。 | |||||||||||||||||||
さっそくMAYA:Clothシミュレーション! 今回簡単な説明になりそうですが、従来どうりのボール状のオブジェクトに布がかかるというシミュレートを作ってみます。 まずはBallとなるオブジェクトの用意をします。Create−>NURBS−>Sphereでボールを作ります。 今回はテキスチャーもフル表示でいくので、ShadeはShade表示で、Hardware Textureもオンにします。もちろん、このボールオブジェクトはSmooth表示にしました。 次にこのボール・オブジェクトにCollision(衝突物)を適用させます。 ボールが選択された状態でCloth−>Create Collision Object を選択、Collisionを適用します。 布となるオブジェクトを製作します。まずはGerment(衣服)となるパターンのラインを引きます。 正方形のプレートを布オブジェクトとするので、Create −>NURBS−>Square でラインを製作します。 次にそのラインがすべて選択されている状態で、Cloth−>Create Germentを選択します。 そうするとライン間にGerment(衣服)が製作されます。 Germent製作に利用したラインはもう必要ないので、OutlinerでHide、かくしてください。 ここで各々のオブジェクトにマテリアル、テキスチャーを適用します。そうするとなかなかシミュレート結果がわかりやすくなるかもしれません。 私は青と白のマーブル系のボールオブジェクトに白黒のチェック柄布を作りました。余談ですがMAYAのマテリアル選びはとっても面白くて好きです。上下にスクリーンをわけて、上にPersp、下にMultilisterとおいて、マテリアルとテキスチャー、オブジェクトをドラック・ドロップしていく感じはとても面白いです。 | |||||||||||||||||||
まあ、そんなわけで左図のようになりました。ここからはいろいろな布の設定を行っていきます。 まずはGarmentとなっているPanelを選択し、ChannelのcpStitcherを選択します。そうすると、Base Resolutionという欄が開き、数値を入れることによって、Garmentのポリゴン数を増やします。これにより、数値が大きいほどより細かな布の動きを再現できるというわけですが、当然計算速度は落ちます。200MHz程度のO2であれば200〜300程度が最適だと効きますが、1000程度でも何とかなります。但し、かなりおっかなびっくりですが。 私はとりあえず、300を入れました。 次にこのGarmentにClothPropertyを適用します。これを行わないとたとえ、衣服となるGarmentを製作してもClothシミュレートはできません。 Cloth−>Property−>Create Propertyを選択します。 製作後、このClothPropertyのAttributeを開きます。とりあえず、従来どうりのClothパラメータがありますが、ここではそれをとくにいじらず、ライブラリを開いてみましょう。ライブラリはAttributeの最後のほうにあります。 Loadを押すと、Silk、Cotton、Denmなどの名前が並んでいるのが分かりますか、私はSilkの設定を選択しました。 選択後、パラメーターはSilkの設定を適用します。 それではPreviewボタンをおして、Clothシミュレート計算してみます。下の図はその31フレームの計算結果です。
| |||||||||||||||||||
あれあれあれ、シルクのはずなのにすごく固い感じの生地になってしまいました。この場合はいろいろ原因が考えられるのですが、たとえば、Base Resolutionが低すぎたとか、CollisionとなるオブジェクトのCollision設定が高かったとか、セグメントが少なすぎたのでとか。パラメーター自身はあまりいじっても変わりがないというケースが多いですがそこは自分なりの方法を見つけるほかないですね。 とりあえず左の図がレンダリング結果です。 まだ、あまり布とはいえませんが、基礎設定はこのようになります。 Cloth用のシェイダーがMAYAにはあるのでそれと平行して利用するといいかも知れませんね。とりあえずは下にパラメーターの説明を付け加えておきます。 | |||||||||||||||||||
UV SendResistance> 布の曲り具合を設定します。数値が多きほど生地がごわつきます。 UV Bend Rate > 布の曲り具合の変化率を設定します。たとえばばねの反発率と同じで曲がるにつれ曲がりにくくします。 UV Stretch Resistance > 布の伸縮と設定します。設定が低いと延びやすく、高いと延びにくくなります。 Shear Resistance > ポリゴンの維持能力を設定します。数値が高いほど、形状を維持しようとします。 UV Scale >MAYAのシュミレーションと現実社会のスケーリングをします。実際にはSolver Scaleと同じ役割を果たすよですが、この場合、UV方向別に違った設定ができます。Slover Scaleに関しては後で記述します。 Density > 質量を設定します。数値が大きいほど重い布になります。 Thickness > 布が衝突する場合の距離設定をします。 Thickness Force >衝突距離の維持設定をします。 Cloth Friction > 布の摩擦を設定します。数値が大きいほど摩擦も大きくなります。 Cloth Damping > 布の動きを設定します。数値が小さいほど不安定な動きをします。 Air Damping > 空気の抵抗力によって布の動きを安定させます。 Static Friction >摩擦による布とオブジェクトの吸着力を設定します。大きいほど吸着します。 Dynamic Friction >動いている布とオブジェクトとの間の摩擦を設定します。 | |||||||||||||||||||
パラメータの詳細はこんなところです。さて、前のシュミレーションでは何が問題だったのか、それは Slover Scale です。これはMAYAと実際とのスケール設定を行うもので、たとえば、Slover Scaleを 1にした場合、MAYA で1cmのものは現実で1cmして扱われます。しかし、数値を1より上げると、たとえば、10と入れるとMAYAでは10cmのものを表現していたとしても、それは実際100cmのものとして扱われます。 MAYA Clothでは、このパラメータをあげることにより、布がより垂れ込むようになり、下げることによって高い動きになります。 上のレンダーリング結果では このSlover Scaleが1になっていたため、いくらほかのパラメーターをいじっても結果が変わりませんでした。より自然なシルクの動きを再現するため、このSlover Scaleに10という数値を入れます。ちなみに初期設定では1なので注意が必要です。 下の図が数値変更後のレンダリング結果ですがどうですか?前よりはましではありませんか? | |||||||||||||||||||
MAYAはパラメーターや設定事項が詳細な部分、細かい見落としで結果がだいぶ違うといった場合が多いようです。 いままで、Clothシュミレーターの研究してきましたが、本当にこれで終了ですが、MAYA:Clothと MAX の Clothreyeに関してはちょくちょく載せるつもりなので機会があったらのぞいてみてください。 次のMAYA はできれば MAYA:Furをやりたいですが、とりあえずはシェーダーやモデリングを研究してみたいと思います。 | |||||||||||||||||||