皆さまはじめまして。
リーク・アンド・リバー社 COYOTE 3DCG STUDIO テクニカルチーム所属、古谷です。
いきなりですが、まずは事例をご覧ください。
よくある事例
「よーし、2本の骨にウェイトをつけたからあとはSmoothして完成だ!」
~Smoothごしごし…~
「あれ?なんかシルエットが偏っている…」
「…」
「(関係のない骨にウェイトを)持って行かれた………!!」
皆さまはこの様な経験があるのではないでしょうか?
私はいまだたまにやってしまいます。
環境
Autodesk Maya2025.3
※別のバージョンでも基本的に同じ操作が可能です。
なぜこうなってしまうのか?
転写元と転写先以外のインフルエンスのロックをすればこのような事は起きませんが、そもそもなぜウェイトは飛んでしまうのでしょうか。
実はBind Skin時のオプションボックスに理由が隠れています。
①:Normalize Weights
ご存知ウェイトの正規化の方法についての項目です。
(ウェイトの正規化についてはある程度知識がある前提で進めさせていただきます。こちらについては、詳しく解説されているサイト様が居ますので割愛させていただきます。)
②:Weight Distribution
こちらが今回のミソです。端的に言えばNormalize Weightsでウェイトが正規化された際のウェイトの飛び先の指定です。
こちらの設定についてのお話を今回させて頂ければと思います。
つまり、Weight Distributionの設定によってウェイトの飛び方をコントロールできるようになります。
Weight Distributionの設定
詳しくは公式ドキュメントを見て頂ければと思いますが、設定項目は”Distance“(規定値)と”Neighbors“の二種類があります。
それぞれ、
・Distance:近場にある骨にウェイトを飛ばす
・Neighbors:メッシュのウェイトを参照してそのウェイトのついている骨に飛ばす
といった違いがあります。
また、これらの設定は…
Attribute EditorでskinClusterを開くことでいつでも変更ができます。
つまり、先ほどの事例もAttribute Editorにて”Distance“から”Neighbors“に切り替えて、再度Smoothをかけると…
この様に、関係のない骨にウェイトが飛ぶことなく綺麗なシルエットにすることができました!
使い分け
「それじゃあDistanceなんて使う意味1ミリもないだろ!!」
いえ、
Distanceを有効に活用することであえて近場の骨にウェイトを飛ばすことが可能だったり…
飛ばせるウェイトを持った骨が存在していないとNeighborsはロックの外れた骨それぞれに均等にウェイトを飛ばしてしまったり…
それぞれの設定に一長一短があります!
まとめ
今回はWeight Distributionについて説明させていただきました。
当たり前ですがインフルエンスにロックをかけた作業が一番確実な作業というのは念頭に置いていただいて…
適宜Weight Distributionを切り替え、ウェイトを意図的に飛ばすことでスキン作業を効率化させましょう!