This wing rig supports both flying and acting with a minimal set of controls for faster animation. It uses a skinned proxy plane to generate a lattice that drives clean feather card deformation, plus a joint and skin layer for finger feathers with automatic spread and secondary feather controls. Corrective blendshapes reduce lattice stretching and improve feather spacing, and a fly mode switch enables dynamic spring chains on the wing for smooth motion.
A flexible wing rig for flying as well as acting. Controllers kept to a minimum to speed up animation. Separate finger feather setup. Minimum deformation for the feather cards which will drive the groom in Houdini.
โ
โ
โ
We build the rig on top of a simplified plane, which is skinned to the arm-, wing-and finger joints. This plane and itโs skinning allows us to generate a lattice on top to which we copy said skin weight. Te lattice method gives us clean deformation of the feathers without them clipping. It also handles the arm deformation. ย We create a duplicate of the original mesh, the lattice mesh.
.png)
โ
Next, the fingers are skinned to the main finger joints, as the finger meshes are connected to the same feather mesh, we make a duplicate โskin meshโ from the lattice mesh. We use NGSkinTools2 to quickly assign base weights per joint and do a manual pass afterwards.
We then create a blendshape to the original (output) mesh. We have two targets coming together on the output blendshape at this point. A lattice target and a skin target. Which we separate by excluding one them in the weight paint and inverting that map onto the second. Something that is easy to do with the SHAPES plugin. This prevents all double transforms.
.png)
โ
Now in order for the fingers to be able to spread with the wrist wing controller, a controller that drives the feathers via the lattice, we can add a curve, extracted from the edge of the plane. We can attach one locater per finger to this curve. It is skinned the same way as the lattice. The finger chains are aimconstrained to the locators, resulting in the fingers being able to spread between the spread controller and the wing wrist controller. The skinning for this is also done on the simple plane and copied to the curve.
.png)
โ
To prevent the lattice from stretching the feather cards too much, we compensate the movements with an array of corrective blendshapes. We can create these shapes by making an automated rig setup script that separates the feathers, skins them to a joint placed at the base, merges the skinned meshes and transfers the original vertex order to the newly created mesh. From this setup we can create a series of shapes for a few saved poses in animation library. The process is sped up a lot by using the SHAPES plugin here to create automatic deltas. It is easy to quickly edit blendshapes and connect to the right drivers. We use a combination of the vector weight drivers, driven keys and some combo shapes to get the right results.
.png)
We can create a 4th mesh with FK chains to enable dynamics with the spring node on the fingers. This gives us an alternative to have smooth automatic bending fingers when the birds need to fly. The FK chains have a lot of joints for smooth bending and one controller driving 3 joints for faster animation. This is also blendshaped to the output mesh. Via a switch, we can enable/disable the finger targets we choose: acting or flying.
โ
Something that the lattice can cause when moving it in combination with skinning and blendshapes is ugly deformations which are quite unpredictable. A solution for this is moving the lattice base together with the shoulder of the wing. Since this will cause the mesh to stay in place now, we can constrain it to move with the shoulder again. Now we have full range movement of the shoulder and lattice deformation on the feathers without unpredictable deformations.
โ