元記事:
blender.org - Skinning
スキニング
Bone ヒートウェイティング
Bone でデフォームを行う VertexGroup のウェイトを作成する新しい方式が追加されました。従来の Envelope を元にする方式の次にあります(後述)。
ほとんどの場合、この Bone Heat 方式の方がいい結果を得られます。Bone の影響範囲の設定も必要ありません。
これは Mesh から Armature の Parent 時、オプションから
"Create From Bone Heat" を選択すると使用できます。
また、Parent 実行もしくは Armature モディファイアを追加した後でも、Weight Paint や PoseMode で
[W]キーメニューから
"Apply Bone Heat to Vertex Groups" を選択することで使用することもできます。
自動的に生成したウェイトによるキャラクタの変形(モデルは Peach チーム)
使用上の注意[wiki]-生成されるウェイトは、Mesh に対する Bone の位置を慎重に合わせることで調整できます。例えば、Bone を曲がる側の関節部の Vertex の場所に置くのは避けた方がいいでしょう。
-大抵の場合、この方法による結果は Envelope の物に比べ優れていますが、Bone が大きく回転した時にジョイントで「縮小する」といった、Armature デフォームで使用される、スキニングの線形ブレンドによる問題が依然残っています。
-Edge の長さが0のような異常な形状の Face のある Mesh では、すべての Bone の解法を見つけるのに失敗することがあります。[/wiki]
実装下記の論文の4章を元に実装されました。
Rigging and Animation of 3D Characters Ilya Baran and Jovan Popovic, SIGGRAPH 2007.
Armature への改良版 CrazySpace の適用
改良版の
CrazySpace 補正が、Vertex Group を使用し、スタック内の一番上にある Armature モディファイアに使用されるようになりました。これは特定のケースのようですが、一般的な状況でもあります。
この補正は VertexGroup がシンプルな場合に正確になり、B-Bone を使用している場合は局所的に正確になります。Envelope はまだ近似的な補正にとどまっています。
クォータニオンによるデフォームの補間
回転をクォータニオンで補間する新しいオプションが追加されました。
これは大きく回転した時の縮みなどの、スキニングの線形ブレンドによる異常を減らすものです。ただし、若干遅くなります。Armature パネルの "Quaternion" オプションで、Armature と Armature モディファイアのどちらからでも使用できます。
この実装は、下記論文と掲載されているコードを元にしています。
Skinning with Dual Quaternions Ladislav Kavan, Steven Collins, Jiri Zara, Carol O'Sullivan. Symposium on Interactive 3D Graphics and Games, 2007.
通常のデフォームによる異常な縮小(左)と、クォータニオンデフォーム補間により異常がない状態(右)
元記事:
blender.org - Skinning