Implicit Skinning, Part 2
In this post, we'll be going over ""Robust Iso-Surface Tracking for Interactive Character Skinning"" from Vaillant et al. We're following up on their previous work.
So why the follow-up? Well, implicit skinning had some problems. The original method relies on the mesh's skin weights. Because the first step is to skin the mesh normally with traditional methods (LBS/DQS), it can suffer under large joint angles. If a joint bends so drastically that a major self-intersection occurs, the resulting implicit surface operators will fail to produce a quality surface. If self-intersecting vertices cross the scalar field's medial axis, they'll project onto the wrong side of the mesh (remember, it's an iso-surface...). Excessive stretches from the skinning method will not be corrected. Skinned triangles that end up close to parallel with the local gradient of the scalar field may get inverted. Finally, contact surfaces are detected as gradient discontinuities. Failure to explicitly model them as iso-surfaces in the field results in unstable projections. These can be avoided by limiting the character's motion, but that's no fun! See below for a comparison between methods:
To fix these issues, they:
- Rework their composition operators to truly model and identify contact surfaces rather than trust the vertices to behave appropriately.
- Revise the skinning solution to not depend on the traditional (they call it geometric) skinning solution of LBS or DQS.
- Rework the tangential relaxation step to use as-rigid-as-possible (ARAP) transformations, which involves solving a sparse linear system for each vertex(!)
- Resort to using the previous animation frame's data as input, which presumably helps keep the number of computations low during the energy minimization/optimization steps.
Unfortunately, the authors don't have the source code available for this development of implicit skinning. The papers makes a claim about no longer requiring skinning weights, but I wouldn't say that's completely true. While they no longer perform geometric skinning as an initial state before vertex projection / tangential relaxation, they still depend on skinning weights to 1) partition the mesh, and 2) compute weighted average rotation matrices for each vertex in the right-hand side vector for the ARAP sparse linear system.