Rigging chains with arrays of matrices

I really like to be able to rig chains with abstract matrices, meaning without having to use scene items as deformers.
I was looking into this because of my transition to Houdini. While I had a hard time with visualizing arrays and detail attributes, and having to always loop over arrays for simple operations, I was able to come up with with a setup that produces the movement in the .gif below. No item bones or deformers used.

Quick demo of how it can be used for arbitrary chains.

Basic explanation of how to go from a local matrix to solving it’s world pose like it’s part of a chain, and the other way around as well.

This allows me to have a sequence of independent solvers for a single chain.

IK. Variable FK. Curve Deform. Bend. Sine Wave, etc.

Houdini examples, using a curve as template.

Sequence of operations being done to the sampled matrices on the curve.

Marrying the curve deformer with this matrix unrolling can result in this.

After all the edits, with the chain pose solved, I just need to transform each point by the chain N-links rest pose and deform pose, with an influence value per matrix (envelope weights, usually based on distance to the rest pose). The sum of all N-matrices influences equals to 1 (normalized weights). All those weighted deformations are then summed.

PerPoint: Sum((PointPosition[vector] * (N-Rest⁻¹[matrix4] * N-Pose[matrix4])) * N-Influence[float]) Where N is a link of the chain.

Leave a Reply