【Blender】人物モデルに服を着せる――衣服オブジェクトの変形とウェイト転送

工程としては、①服オブジェクトを体オブジェクトにサイズ合わせ ②服オブジェクトのリギング。

参考動画。

衣服を変形させる・服を体の形状に合わせる

体に密着系はShrinkWrapが楽。

ShrinkWrapモディファイアを利用

衣服にShrinkWrapモディファイアを当てる。
Targetに体オブジェクトを設定する。
SnapModeは衣服の形状にもよるので、一番しっくり来るものその都度探す方が良い。
OffsetでTargetからの距離を調整。

このモディファイアをかけただけだと画像のようにカクカクになってしまうので、モディファイアを適用してからShadeSmoothを実行したり、SubdivisionSurfaceモディファイアを割り当てる。

またこのモディファイアをApplyすると左右対称でなくなる可能性がある。
再び左右対称にしたい場合は、一旦applyした後、ミラーモディファイアを割り当て、メッシュの片方を削除、ミラーモディファイアのApplyで対応する。

衣服の一部だけ密着させる・部位ごとに密着度合いを変える

一部分だけ密着させたい場合は、EditModeで当該箇所を頂点グループに割り当てる。
そしてShrinkWrapモディファイアのVertexGroupに作った頂点グループを設定する。

同じ要領で、部位Aと部位Bの密着度合いに差異を出すことも可能。

EditModeでプロポーショナル編集

服オブジェクトを選択してEditModeに移動。

画面上部のプロポーショナル編集ボタンをアクティブにする。

あとはXrayで透過させて埋もれている頂点を選択し、Gキーで移動させながら修正する。

移動させ過ぎてボコボコになったと感じたら、なだらかにしたい個所の頂点を選択し、Control + Vでメニューを出して、 SmoothVertices を適用する。

ラティス機能を使った変形方法

準備

メニューのAdd – Lattice から ラティスのボックスを出し、服を覆うようなサイズに調整する。

LatticeオブジェクトのObjectDataPropertyのResolutionでラティスを細分化する。(数が多すぎると操作しづらくなるのでほどほどに)

次に服オブジェクトを選択し、Latticeモディファイアをアタッチする

そしてObjectの項目にあるスポイトで、さっき作ったLatticeオブジェクトを選択して割り当てる。

変形させる

Latticeオブジェクトを選択しEditModeに移る。ちゃんと紐づけられていれば、Latticeの頂点を動かすことで服オブジェクトの当該箇所が連動して動く。

試しに襟の部分が埋もれているので引っ張って表示させてみる。

選択してG – Y でラティスを変形させるとちゃんと服も変形してくれる。

これで変形していくが、細かくやろうとすると頂点数を増やさねばならず、しかし増やすと操作しづらいという問題がある。

この方法でやるなら大まかな形状変化くらいに留めておいた方がいい。

3Dモデルに服を着せて動かす・衣服にウェイトをのせる

体のウェイトを衣服に転送する

①体オブジェクトのリギングとスキニング・ウェイトの修正をやっておく。
衣服オブジェクトは体に合うようにサイズや形状を調整する。(あるいはポーズを変更して服の形状に合わせるでもOK)

②オブジェクトモードで 服オブジェクト – rig の順番で選択する
そしてCtrol + P で出てきたリストの中から、 WithEmptyGroupsを実行する。

体オブジェクト → 衣服オブジェクトの順これを逆にしてしまうと体のWeightが消えてしまうので注意)で選択し、WeightPaintModeに移動する。
④ツールバーのWeightsから TransferWeightsを実行する。

⑤表示されるポップアップの SourceLayerを ByNameに変更する。

⑥後はポーズモードに戻りできているか確認する。

もう一つの方法

WithemptyGroupsまでは同じなので省略。

服オブジェクトを選択し、DataTransferモディファイアを割り当てる。

Sourceの箇所にはウェイトをすでに塗っている転送元となるオブジェクトを設定する。

VertexDataにチェックを入れ、VertexGroupsを選択。Mappingの箇所はNearestFaceInterpolaration(最接近面の補完)に設定する。

PoseModeで動かしてみる。動けばオッケーだが、画像のようにぐちゃっとなることがある。
これはDataTransferモディファイアをApplyすることで解消するはず。

Bodyのポーズと服の形状が異なる場合(一方がAposeで他方がTpose)

Bodyのポーズと服の形状が異なる場合(Poseを変更して服の側に合わせる)

服の形状とBodyオブジェクトのポーズが異なっている場合、変形作業が大変になってしまう。そういう場合ポーズを服に合わせて変更することで適合作業が楽になることがある。

今回は服の袖が下がり過ぎているのでポーズを服に合わせてから服を変形させていく。

Bodyの複製

Bodyオブジェクトをコピーしておき、コピーした方をアクティブに、コピー元の方は非表示にしておく。

リグを選択してPoseModeに移動し、服に合うようようにポーズを変えていく(腕が袖の位置にくるように)。

モディファイアの複製

オブジェクトモードに戻り、Bodyオブジェクトのモディファイア設定に移動する。

アーマチュアモディファイア(画像の場合はrig)をDuplicateで複製する。

二つ並んだ感じになる。複製したArmatureをApplyする(シェイプキーがある場合はApplyできないのでシェイプキーを削除する)。

メイン画面の方では2重にアーマチュアがかかった状態なので、表示が少しおかしくなっている。(腕がより内側に移動している)

RestPoseの設定

そしたら再度リグを選択してPoseModeに移動する。

Aキーでリグを全選択し(当該リグだけでもOK)、上部ツールバーの Pose – Apply – ApplyPoseAsRestPoseを実行する。

これで表示がうまくいったらOK。

服の変形

あとは服を変形しBodyに合うようにしていく。ここでは割愛。

ウェイトの転送

服オブジェクトにDataTransferモディファイアを設定。

SourceにBodyオブジェクト、VertexDataにチェックを入れ、VertexGroupsを選択。MappingはNearestFaceInterpolarationを設定し、GenerateDataLayersを実行する。
それらがすんだらDataTransferモディファイア自体もApply。

それから 服オブジェクト – rig の順番で選択する
そしてCtrol + P で出てきたリストの中から、 WithEmptyGroupsを実行する

後はポーズモードで動かしてみて動けばOK。

RestPoseを元に戻す

元に戻す必要がないならこの項目はスルーでいい。がRestPoseを編集前のポーズに戻したい場合は、上記の作業の逆を実行していく。

まずリグを選択してPoseに移動する。

元のポーズがどんなポーズだったかは、一番初めに非表示にしていたBodyオブジェクトを表示させることで確認できる(ただし連動して動くのであくまでだいたいの位置。精度を出す必要がある場合は初めのポーズを変更させるときどれだけ動かしたかメモっておこう)。

だいたいこんな感じ。

オブジェクトモードで服オブジェクトを選択し、アーマチュアを複製、複製したアーマチュアをApplyする

サイドポーズモードに移り、リグを全選択して Pose – Apply – ApplyPoseAsRestPoseを実行する。

最後にBodyオブジェクトを切り替えるなり、コピーしたやつを削除するなりする。

表示が元のポーズになっていればOK。

服を変形させる方法2ーーリグを使用する

少しずつ調整すればいいが、リグを使ってやる場合。

まずポーズの違いは無視して、キャラと服に親子関係、ウェイトペイント・スキニングを済ませておく。
下の画像のようなずれた感じになる。ポーズを動かせば動くが袖の部分がずれている。

この状況でポーズモードに移動し、腕のポーズを変更して、服がTposeになるような位置を探す。

ObjectModeに戻り、服 – RIG の順番に選択、右クリックで Parent – ClearAndKeepTransformationを実行する。
そうすると服の形状はこのポーズのまま、リグとの親子関係かクリアされる。

そしたら服のModifierPropertiesを開き、ArmatureModifierをApplyする。
服のデフォルトの形状が変わる。

さらにEditModeで服の形状を修正する。

あとはもう一度リグと服とを親子関係、ウェイトの設定を行っていく。

これで服とポーズがズレなく連動するようになる

Tips集

密着した衣服で突き抜けが発生してしまう・衣服の貫通対策

アニメーションでキャラを動かすと貫通が発生することはよくある。
元のメッシュそのものを変形させるのではなく、モディファイアなどを使って一時的に変形させるほうがいいと思う(モディファイアをオフにすれば元のメッシュはそのままなので)

Latticeを使う

変形させたい箇所に Add – Lattice を配置する。
LactticeのPropertiesからResolutionの値を増やす。

Latticeはこんな感じの格子状になる

変形させたいオブジェクトにLatticeModifierを追加する
そしてさっき作ったLatticeをObjectの箇所に割り当てる

あとはLatticeを選択してEditModeに入り、Latticeを変形していく。

この方法は他より若干面倒くさいが細やかに変形できるのでおすすめ。

Solidifyモディファイア

SolidifyModifierを使って衣服に厚みを出し、貫通させないという方法がある。

MaskModifierを使う

マスクモディファイアで突き抜けが発生してしまう体オブジェクトの箇所を非表示にしておくことで対処する方法。

消したい箇所をある頂点グループに割り当て、その頂点グループをマスクモディファイアにセットすることで体のメッシュの一部分を非表示にすることが可能。

ShrinkWrapモディファイアを使う

衣服の変形の箇所で使ったが、リギング後にも貫通対策で使うことができる。
特に大きな動きをつける場合楽な方法だが、複雑な形状のものにShrinkWrapをするとぐちゃっとなることがある

Aposeで脇の下がぐちゃっとなる

NearestFaceInterpolarationはおそらく一番近い面からウェイトを転写するため、こういう脇の下のような位置は、Aposeの場合ぐちゃっとなりがち。
画像であれば服の袖は腕のウェイト、服の胴の部分は胴体のウェイトを転送したい。がじっさいこのまま転送すると、おそらく互い違いになる箇所が出てぐちゃぐちゃになる。

転送実行後にウェイトを塗り直すのは結構面倒くさい。

これへの対処法としては、ウェイト転送をする前にメッシュを調整するのが一番だろう。

具体的には袖が胴体に近づきすぎないようにするとか、胴体部分ので腕に近い部分を平らにしておくなどしておいた方がいい。

場合によっては袖部分を切り分けて、胴体から離すという手もある。(転送後にウェイトを修正してメッシュをくっ付けるなりする)

衣服リグを別個に作る /

すでにキャラのアクションを作っており、今からリグを改変したりはしたくないということがある。
また別々にすることでスカートだけ別のキャラで使い回すということができるという利点もある。

作業手順は、スカートの場合、スカートにリグを作る – キャラの 腰ボーンの子要素にする。

コメント

  1. Aleksandar より:

    Greetings

    – I recently had the pleasure of reviewing your website and identified exciting opportunities to enhance its performance.
    As a specialist in website visibility and customer engagement, I’m thrilled to collaborate with you on this journey.

    * What i offer:
    1. In-Depth Website Analysis: Gain valuable insights to boost your site’s performance and success.
    2. Effective Visibility Strategies: Increase visitor traffic and elevate your online presence for greater reach.
    3. Expert Guidance for Online Success: Utilize my skills to maximize your website’s potential and achieve tangible results.

    * Special Invitation:
    – I’m delighted to offer you my first service for FREE. Small, strategic changes can lead to significant improvements, and I’m here to guide you through this process.

    * Next Steps:
    – Let’s team up to tailor solutions that fit your unique needs. Contact me on WhatsApp or Viber at
    +381604141669 for more details and to schedule your complimentary service.

    * Remember, even the smallest tweaks can make a big difference. Let’s work together to unlock your website’s true potential!

    Warm regards
    Aleksandar

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