Bone Heat Weighting

===================

This is a new automatic vertex weighting method, next to the existing
envelope based method. The details are here:

http://www.blender.org/development/current-projects/changes-since-244/skinning/

This is based on section 4 of the paper:

"Automatic Rigging and Animation of 3D Characters"
Ilya Baran and Jovan Popovic, SIGGRAPH 2007

Implementation Notes:

- Generic code for making mesh laplacian matrices has been added, which
  is only used by bone heat weighting at the moment.
- Bone to vertex visibility checking is done with the raytracing code.
- Fixed an issue in the subsurf limit calculation function, where the
  position of vertices on boundary edges was wrong. It is still not the
  correct position, but at least it's in the neighbourhood now.
This commit is contained in:
2007-07-28 14:04:02 +00:00
parent e765fbf126
commit 373f91c8b1
10 changed files with 1244 additions and 247 deletions

View File

@@ -2263,12 +2263,12 @@ void special_editmenu(void)
}
else if(G.f & G_WEIGHTPAINT) {
Object *par= modifiers_isDeformedByArmature(ob);
if(par && (par->flag & OB_POSEMODE)) {
nr= pupmenu("Specials%t|Apply Bone Envelopes to VertexGroups %x1");
if(nr==1) {
pose_adds_vgroups(ob);
BIF_undo_push("Apply Bone Envelopes to VertexGroups");
}
nr= pupmenu("Specials%t|Apply Bone Envelopes to Vertex Groups %x1|Apply Bone Heat Weights to Vertex Groups %x2");
if(nr==1 || nr==2)
pose_adds_vgroups(ob, (nr == 2));
}
}
else {