NEWS

お知らせ

社内で隔週1度行っている、スタッフの仕事術共有から、若手CGデザイナーが発表した「手早くできるドレープスカートのスキニング方法」のご紹介です。使用ツールはMayaになります。

はじめに

仕事でシワの入った衣装のスキニング作業をする事がありませんか?
ケージのウェイトをそのまま転送するとガタガタになってしまったり、何も考えずにsmoothブラシで調整するとジョイントからウェイトが離れすぎてしまって困ってしまう事もあるのではないでしょうか。

そこで今回はダメージや皺のあるデザインのスカートにスキニングを行う時のちょっとしたTipsを紹介します。
ハイメッシュを直接編集するような実際のスキニング作業はほとんど行いません。途中でメッシュが途切れていたり、UVでの調整などが出来ない場合でもある程度有効な方法です。

大まかに言うと、モデルをshrinkWrapでケージに吸着させてウェイト転送行う手法です。

それでは、説明していきます。
(作業フローの紹介になるので、細かい機能の実行内容や目的の説明は省かせていただきます。)

デモ用に作成したこちらのモデルに作業を行っていきます。

画像のようなジョイントにスカートをスキニングする事を仮定します。

構成自由ですが、まとめ用のジョイント「skirt_root」から各ジョイントチェーンが下に伸びるようなものを用意しました。

作業用モデルの用意

元のモデルを複製し、スカートに関係なさそうなメッシュは消してしまいましょう。
その他に、裏地メッシュがある場合もこのタイミングで削除しておきます。

「cloth_work」と命名しておきます
日頃から命名など細かく行っておくと会社の人の目をまっすぐ見つめて生活ができます。

shrinkWrap工程

まず、各ジョイントに頂点を配置したメッシュを用意します。
「skirt_cage」と命名しておきます。

余談ですが、ジョイントの配置はこのメッシュを用意してから行うと色々楽だったりします。

この後shrinkWrapで吸着するので、「skirt_cage」の端を押し出して伸ばしてあげます。
上下端のエッジを選択状態で”shift + 右クリックのホットキー  > Extrude Edge”で押し出しを実行できます。

Offsetのパラメータで延長してあげましょう。

いよいよShrinkWrapしたいところですが、吸着前にジョイント位置に近いハイメッシュのエッジを選択してsetに記憶させておきます。これはウェイトのピークとジョイントの位置を合わせるために後々生きてきます。
「tgt_edge」と命名しておきます。

作業用のメッシュ「cloth_work」を複製して、「cloth_work_wrap」と命名します。
「cloth_work_wrap」→「skirt_cage」の順で追加選択をしたら、”ModelingメニューのDeform > ShrinkWrap“でメッシュを吸着します。

この場合はシンプルに形状を一致させたいのでshrinkWrapのオプションはclosetで実行するとやりやすいです。

実行後は”Alt + Shift + D”でヒストリを削除してあげます。shrinkWrapで作成されたヒストリ残っているとが次のSculptGeometryToolの工程がうまくいきません。吸着後はメッシュが乱れているので、SculptGeometryToolのReluxモードで伸ばしてあげます。

SculptGeometryToolは”Modelingメニューのsurface > SculptGeometryTool“から起動できます。
Reluxモードだと、大きくモデルの形状を変えずに頂点間隔を均等に近づけてくれます。

ShrinkWrapの工程は以上になります。

スキニング工程

「skirt_cage」をスカート骨にバインドします。
バインドの設定は各プロジェクトの仕様に沿ってもらって概ね差し付かえありません。
ジョイントマップ用のメッシュにウェイトを塗ります。基本各ジョイントにウェイト全振りで大丈夫です。

スキニングはこちらで終了です。

次にウェイトの転送作業に入りたいのですが、なるべくジョイントの位置とウェイトのピークの位置は近づけたいので、ウェイトの中間転送用のメッシュを用意します。

ウェイトの中間転送用メッシュの用意

言ってしまえば、shrinkWrapの工程も中間転送用のメッシュ作成が目的です。
「skirt_cage」を複製して「skirt_cage_WtTrans」と命名しておきます。

命名は基本適当ですが、『ウェイト編集用ですよ』という雰囲気は出しておきます。
「skirt_cage_WtTrans」と先ほど吸着後にスカルプトツールで編集した「cloth_work_wrap」のみ表示して、setの「tgt_edge」を表示します。

wrapとスカルプトツールの影響でジョイント位置からメッシュがズレてしまったのがわかります。
今ハイライトされているエッジに合わせて「skirt_cage_WtTrans」の頂点をスライドさせてあげます。

“W”の移動ツールで頂点編集しますが、基本的に”ctrl + shift ”のスライドモードで横方向(World軸的に言うとX-Z軸方向)のみ編集します。「skirt_cage_WtTrans」とsetの「tgt_edge」を選択して”ctrl + 1”のアイソレート表示にすると編集しやすいです。

これで中間転送用のメッシュの準備が出来ました。

ウェイトの転送作業

「skirt_cage」のウェイト情報をドラスキンツールなどで書き出しましょう。

ドラスキンツールは無償で公開されているウェイト調整ツールです。
今回モデルの頂点情報からウェイトの紐付けを行いたいので利用させていただきます。
ツールの詳細は下記リンクからご参照よろしくお願いします。

DoraSkinWeightImpExp

次に「skirt_cage_WtTrans」をバインドして「skirt_cage」のウェイトをインデックス情報でインポートします。

インポートしたら、「cloth_work_wrap」をバインドして「skirt_cage_WtTrans」のウェイトをコピーします。
こちらはMaya標準のウェイトコピーツール”Riggingメニューのskin > copy Skin Weight“で転送して差し支えないです。「skirt_cage_WtTrans」→「cloth_work_wrap」の順で追加選択して実行します。

今度はメッシュ同士の位置関係で紐付けをしたいので、

・メッシュのオプションはClosset point on Surface
・ジョイントのオプションはName

にしておきましょう。

最後に「cloth_work」をバインドしてウェイトをコピーします。
「cloth_work_wrap」のウェイト情報をドラスキンツールで書き出して、頂点情報で「cloth_work」へインポートします。

割と綺麗なスキニングが出来たのではないでしょうか。

最後の微調整

スカートの端など、少し形状が破綻している場所のみ部分的にbrSmoothWeightツールなどで整えてあげるとよりよくなります。

brSmoothWeighは無償で公開されているスキニング用のツールです。
ツールの詳細は下記リンクからご参照よろしくお願いします。

brSmoothWeights

これで「手早くできるドレープスカートのスキニング」は終わりです。