Nonlinear Solutions For Skinning Limitations?

I’ve found that while the wire deformer is not a good alternative to skin clusters, the non-linear effects it offers are useful for permanently correcting linear blend skinning issues such as the “candy-wrapper” effect. I like this approach over dual-quaternions because dual-quaternions are sill limited to the joint’s matrix which doesn’t store angles past -180 <–> 180, whereas a wire deformer’s twist attribute just stores whatever angle the animator sets it to.

To find the right twist angle from the three interchangeable euler angles of the rotation attribute, I just made a node which has an attribute for specifying which axis points in the direction of the bone, and based off of the row vectors of the rotation matrix, returns the angle of the axis closest to that said axis. Basically it returns the sum of all three angles multiplied individually by the dot product of the input axis and the row-vector of the rotation matrix corresponding to that rotation.

I also used a script to transfer an individual joints weights to another deformer, so that the wire defomer only influences the points influenced by the parent joint of the twisting joint. That way when I blend between the skinned shape and the twisting shape, it interpolates seamlessly with no over-deformations.

For the bend or “swing” rotations, I just applied another wire deformer using a curve that was aligned to the axis the joint is rotating around, and manually set the wire’s scale attribute after rotating the joint. I’m sure there is a way to correlate the rotation factor to the value of the scale, but I haven’t figured it out yet. Perhaps a simple SDK would suffice for that.

The images compare my tests to basic linear blend skinning. The images on top are with my addition wire adjustment, and on the bottom is just the basic skinning algorithm. Is this a viable solution that can be used in animation production (preferably film)?



Without understanding the intricacies of your solution, I’d say probably. : ) One of the luxuries that pre-rendered media (e.g., film) affords the content creator is an abundance of time to compute each frame. For real-time applications like game, you have to be a great deal more frugal regarding such solutions since you have to be able to render whatever image you’d like to display at n frames per second. That’s not to say that rendering efficiency isn’t important in film (render time isn’t free after all). All of that said, you might also want to look into blending traditional skinning w/ dual quaternion skinning. I gather that this combination of approaches can sometimes produce a result that is superior to either of the aforementioned solutions in isolation.