スキニング

※個人用備忘録&素人による記事の為、間違いがある可能性があります




■参考

https://dskjal.com/blender/weight-paint-tips.html


■モデルの準備

メッシュにミラーモディファイアは残したままでOK

 
理由:ウェイトのミラー方法が
 ・ミラーモディファイア
 ・ウェイトペイントのブラシのtool設定の
  Mirrorを事前にオンにしておく(忘れると終わり)
 ・頂点グループの反転コピー(ちょっと手間)

 の3つの為、ウェイトのミラーもミラーモディファイアが一番楽
 なので、ミラーモディファイア適用はスキニング後の方がいいのだ!

つまりUVの左右に開くのは後でやる。


■ボーン作成

ボーン配置

未執筆
AutoRigPro使ってるから、あまり作業する機会が無い


ボーンのリネーム

未執筆
AutoRigPro使ってるから、あまり作業する機会が無い


ボーンのミラー

※shift + E で左右対称にボーンを作成できるが、リネームを後でしなければならない、コンストレインはコピーできない などの理由から推奨されない。ではどうするか?

・ミラーコピーしたい骨を選択
・Armature > Names >AutoName Left/Rightでリネーム

画像1

・Armature > Symmetrize でミラーコピー

画像2


ボーン配置後

メッシュのArmatureモディファイアに赤枠にチェックが入ってないか確認
オンだとゲームエンジンと違う挙動になる可能性あり




■ウェイトペイントモード:機能説明

ワイヤーフレーム表示が見やすい


ボーンを動かせるようにする

・アーマチュア選択
・メッシュ選択
・ウェイトペイントモードに変更 ショトカ:Ctrl + tab

  ※アーマチュアを先に選択する事で、ウェイトペイントモード時に
  Ctrl+クリック でボーン選択できる


通常モード

A ウェイトペイントに入った直後はオフになっています
B ブラシで選択ボーンのウェイトを塗るモードです

ウェイトを塗る対象ボーン(頂点グループ)を選択する方法
C Ctrl+クリックでボーン選択
D 頂点グループを選択


ペイントマスク

※このモードではCtrl+クリックによるボーンの選択はできません

面単位のマスクができます
Ctrl+クリックで1つの面選択
Shift+クリックで複数選択


頂点選択

※このモードでもCtrl+クリックによるボーンの選択はできません

A 頂点選択モード、頂点ごとに調整できる
B Ctrl+クリックで頂点選択可能
C クリックで頂点選択可能
D 頂点に割当られてるボーン、ウェイト値が見れる
  Normalize、Copyボタンもある
  ×でボーン削除もできる
E Assign:下のWeight値で選択頂点に割当
  Remove:選択頂点を頂点グループから除外
  Select,Deselect:頂点グループを選択、非選択

任意の頂点を除外する方法
Bキー > Shift + 範囲選択
で除外できます


非表示

Editモード > メッシュ選択 > Hキー > ウェイトペイントモード
で面を非表示にしてウェイトペイントできる


ウェイト0を黒色にする


ウェイトの1と0の色を変える

プリファレンスを開く、ウェイトペイントの項目を開く
左右両端の色を白と黒にする(この場合左は黒、右は白)
+ボタンで真ん中に色追加、黄色にする
更に+ボタンで左中央に色追加、青にして位置を0.0001に
更に+ボタンで右中央に色追加、赤にして位置を0.9999に

画像5


ブラシの設定を確認

AB はミラーモディファイア使ってるなら使わない

A 頂点グループミラー
  B も押さないと転写されない
B ここもオン
C ウェイトの合計値を1.0に自動でしてくれる

Bは単独だとボーン1つのミラーだけになる


ウェイトをグラデーションで塗る

Alt+ドラッグでグラデーションになる


ウェイトを単一ボーン1.0に

・対象の頂点を選択する
・その頂点を全ての頂点グループから除外

・その後アサインしたいボーンの頂点グループを選択 > Assign


ウェイトのミラー



■Lazy Weight Tool

アドオンの章でも紹介しているが
ウェイトはアドオン使った方が便利
下記は解説記事



■スキニング:0から自分でウェイト

ペアレント

Ctrl + P

A 空グループ 全て自分でウェイトつける場合コレ
B 自動ウェイト こっちでやる場合次章を参考に ← オススメ

基本的に自動ウェイトで良いと思う


チェックモーションを作る

チェックモーションは作った方が良い、圧倒的に後で楽だから

各骨を腰(Root、根元)から順番に5fごとにキーを打って動かす
・回転   ←必須、XYZ軸に90度ぐらいを目安に可動範囲を動かす
・移動   ←移動するようなコントローラーなら
・スケール ←基本しなくていい


ウェイトつけ

・アーマチュア選択
・メッシュ選択
・ウェイトペイントモードに変更 ショトカ:Ctrl + tab


まず腰(Root、pelvis)を選択、全頂点を全頂点グループから除外


⑥ Assign押して、全頂点 腰に1.0つけます


①  spine01を選択
②  それより子階層のボーンの頂点を選択
③④ 既存のウェイト削除
⑤  アサイン


選択ボーンによって動く&未ウェイトの頂点を選択
0.5とか適当な数値でウェイトをつける
チェックモーション見ながら、この数値を調整してウェイトをつけていく

基本的に末端(指先、足)までこの繰り返し


■スキニング:自動ウェイト使う場合

選択ボーンから自動ウェイト

何らかの理由で一部のボーンのウェイトだけつけたい場合
選択ボーンから自動ウェイトできる

ポーズモードで任意のボーンを選択


オブジェクトモードで アーマチュア > メッシュ の順で選択


①  ウェイトペイントモード
②  ウェイト範囲を限定させたいなら、頂点を選択
③④ を選択

このやり方は既存のウェイトに組み合わさる形でつけられる


空グループの場合、ボーンから自動割り当てをする
ウェイトペイントモードでウェイトつけたいボーンと頂点を選択(しなくてもいい)して下記


!!!! AutoRigProはここから ↓ 見る !!!!


※これからやる操作で自動でつけたウェイトが崩れる可能性があります
 自動ウェイトを活かしたい場合、数値を調整しながら
 チェックモーション見て確認しながら作業を進める!

※ウェイトは適当で良ければ、崩れる操作はしなくても良い


ウェイト整理

ボーン数制限

ゲームエンジンでは1頂点のウェイトに割当てられるボーン数の制限がある為、Blenderでも制限をかけます

① Weight  > ② Limt Total


・UE なら8(UEは8ボーンまで対応) ← コレでOK
Unity or キチンとウェイトつける なら4
  ※ただしAutoRigProの元のウェイトは結構崩れる
・本来全てウェイト手付けなら2が原則

F9で再表示

※ここではUEは8ボーンいけると書いてますが、それによってクッソ重くなるかどうかは分からない・・・


操作の対象(機能全般)

Weightメニューから操作したら左下に出てくるプロパティ
の対象を何にするか?という設定

① 全頂点グループ を対象
② ボーンがアサインされてる頂点グループ を対象 ←コレが無難か?
③ 選択ボーン を対象
④ 選択頂点グループ を対象


頂点のウェイトを確認する
② 
頂点を選択する
ボーン数が任意の数になっているか確認


Nomalize

ボーン数を強制的に制限した為、1.0では無くなっている
それを正規化(Normalize)します

Weight > Normalize All

※ただの Nomalize は選択頂点グループのウェイトが1.0になるだけ


プロパティを下記の通りに

F9で再表示


キリの良い数値に

①全頂点選択


プロパティを画像の設定にする

20 はウェイトが 0.05 間隔になる


小さいウェイト削除

Weight >Clean (頂点は選択しなくて良い)


左下に出てくるプロパティを下記の通りに

数値はウェイト確認しながら


ウェイト調整

・アーマチュア選択
・メッシュ選択
・ウェイトペイントモードに変更 ショトカ:Ctrl + tab

チェックモーションをコマ送りしながら、spine01からウェイトに問題ないか確認しながらウェイト修正していく。


■再・ウェイト整理

0ウェイト削除

Weight >Clean (頂点は選択しなくて良い)


左下に出てくるプロパティを下記の通りに


Normalize

再び、Nomalize
Weight > Normalize All

F9で再表示


Quantizeはしなくて良い


不要頂点グループ削除

メッシュ毎に必要ない頂点グループも含まれている為、除去する

ウェイトが全く無いボーンを削除


それでも消えないのは、確認して手動削除

画像3

終わりっ!!!
お疲れ;;


■Tips

ウェイトの反応がない

・ミラーモディファイアが適用されてない
 (最近はこのバグ無い気がする・・・)

・Auto Normalizeがオンになっていて、1.0のウェイトで骨一つしか頂点にアサインされてないとウェイトを減らす事はできない(下記のような場合)


ウェイトを転送

ローポリモデルからハイポリモデルへウェイトを転写する方法

頂点数が多い場合、ローポリにウェイトをつけてからハイポリに転写すると綺麗なウェイトになる事が多いです


全身のウェイトを転送

・このやり方は全頂点グループが上書きされます
 なので、「全身ローポリ」 or 「部分ローポリ+※他はそのまま」で作る
                 ※ハイポリの既存のウェイトを残す
・モディファイアに比べてトライ&エラーがやりやすい


ハイポリモデルを複製

位置はずらさなくて良い


ローポリにします(今回は腕だけ、全部ローポリにしてもOK)


ローポリ > アーマチュア の順で選択 、Ctrl+Pで 親子付け
ローポリにウェイトをつけます


① 転送元(ローポリ) > 転送先(ハイポリ) の順で選択
② Weight 選択
③ Transfer weights 選択

アウトライナーから複数選択するならCtrl+クリック、ShiftはNG


左下のプロパティをこの設定にします


①ハイポリ > ②アーマチュア の順で選択
③Ctrl + P > With Empty Groups


できた


部分ウェイトを転送

一部の頂点のウェイトを転送できる
手順がちょっとめんどい


ローポリつくる

位置はズラさなくて良い


ローポリにウェイトつける


ハイポリに欲しいボーンの頂点グループあるか確認
無ければ ハイポリ>アーマチュア選択
Ctrl+P > With Empty Groups


転送先(ハイポリ)ウェイトが欲しい頂点の頂点グループを作る


転送先(ハイポリ)に DataTransferモディファイア を適用


DataTransferモディファイア を アーマチュアの上 に持って行く


A 転送元(ローポリ)を指定
B さっき作った頂点グループを指定


問題なければ
・DataTransferモディファイアをApply
・ウェイト転送用の頂点グループを削除(Normalizeされるとヤバい)



■アドオン

ウェイト値をキリ良く

Paint Palettes
ブラシツールのウェイト値をキリの良い値にしてくれる
あんまり使わない


Lazy Weight Tool

別記事にて解説






この記事が気に入ったらサポートをしてみませんか?