ゴマちゃんフロンティア

アザラシが大好きなエンジニアの開発日記です

【Blender】Blender2.8でウェイト転送を行う方法

time 2020/07/09

つい最近、久々にBlenderの「ウェイト転送」を使う機会が出ました。
が、Blenderが2.8になってから一度も使っていなかったので、やり方を調べながらやってみたお話です。

今回は例として、このウサギのキャラに服を着せてウェイト転送を行ってみます。

私のUnity1週間ゲームジャムの作品によく出るウサギです。木箱をハンマーでぶっ壊したり、爆弾で杉林を吹き飛ばしたりと定評があります。

服のモデルの用意

当然ながら服を用意します。ささっとシンプルな服を作ってみました。

服に頂点グループを設定

Shiftを押しながら「服のオブジェクト→Armature」の順に選択し、Ctrl+Pのメニューから「With Empty Groups」を選択。

これで「頂点グループが設定されたけど、ウェイトは設定されていない」状態になります。

ウェイト転送

いくつかやり方があるのでお好みでどうぞ。
特にこだわりがなければWeightPaintモードから設定するほうが楽…かも。

WeightPaintモードから行う場合

まずオブジェクトモードで「キャラクター本体→服」の順で複数選択します。
その状態でWeightPaintモードに切り替え、Weightsメニューの「Transfer Weights」を選択。

表示されたウィンドウの「Source Layers Selection」を「By Name」に切り替えます。

この切り替えは何の意味があるの?

デフォルトでは「Active Layer」になっていますが、これだと転送元オブジェクトの頂点グループで選択されているboneにしか適用されないようです。

この場合は「body」のboneに対してのみ適用されます。

「By Name」の場合は頂点グループの名前が同じboneに適用されるので、同一のArmatureから設定していればまとめて設定できます。

「By Name」に切り替えた時点で服にウェイトが反映されるので、動作を確認してみましょう。

もし気になる部分があればウェイトを手動で調整します。

DataTransferモディファイアを使う場合

服のオブジェクトを選択し、プロパティウィンドウのモディファイアタブから「Data Transfer」モディファイアを追加します。
そして下の画像の赤枠の部分のように設定します。「Source Object」は転送元の本体を指定してください。

設定したら青枠の「Generate Data Layers」をクリック。
服のオブジェクトを選択してWeightPaintモードに入り、ウェイトを確認します。

ウェイトは付いているのにbone動かしても服が動かないよー!

モディファイアを設定したままboneでの動きを確認する場合、Armatureモディファイアより上にDataTransferモディファイアを設定する必要があります。
DataTransferは一番下に追加されていると思うので、モディファイアの上三角ボタンを押して順番を上にもっていきます。
また私の場合、DataTransferモディファイアを適用せずに動かしても上手く動きませんでした。(適用後は問題なし)

ということで、ウェイトに問題がなければさっさとDataTransferモディファイアを適用してしまうのがおすすめ。

適用後にboneを適当に動かして確認しましょう。
モディファイアを適用していればウェイトの調整もできます。気になる部分を手動で直したら完了です。

down

コメントする