Dragon Rig
This is a rig that I built as a personal project/practice. I started with a prebuilt model by cvbtruong on TurboSquid. Although the model is available on TurboSquid with a rig already, I wanted to set up my own rig using the model, so I stripped away all of the rig components, made a couple of small tweaks to the bind pose, and built a new rig from scratch.
I ran into a number of very interesting challenges with this project, including exploring different methods of setting up the wing membranes, managing weights across surfaces in a thin, 2-sided mesh, and studying real anatomy to apply to a fantasy creature.
Software Used: Autodesk Maya
The wing membranes were very challenging but interesting to explore for this rig. I searched for reference of bat wings and how their membranes move mid-flight as my primary reference.
Next, I had to decide how best to make them work under the hood. I ultimately settled on using joint skinning just to keep the membranes following along with the rest of the dragon's body, and then cluster deformers to deform them as the animator moves their controllers. The reason I chose this setup was that it greatly simplified the issue of negotiating control between influences on the skinCluster and gave the animator a simple, clean control setup to work with.
Other possibilities included a more classic joint-based setup (although that would require a more complex system to follow the dragon's body in an anatomically reasonable way), wire deformers, or a series of ribbon setups.
I also ran into a few new problems while working on the legs. Digitigrade legs are interesting, even more so when you also need functional toe controllers on top of the unique leg shape. I approached the legs by essentially treating them as humanoid legs that are always standing on tiptoes, with the ball of the foot positioned similarly to where the ankle would typically be for a humanoid leg/foot setup.
The biggest unexpected challenge came when I completed the IK stretch for the legs. I discovered that although the foot/toe system and the IK leg stretch system worked as intended individually, they were not working together the way I wanted them to, as you can see in this demo:
This became an issue of determining control over the toe controller group. Either it could be controlled by the leg joints, which would fix the stretching issue, or it could be controlled by the foot roll system, which allowed the foot attributes such as rolls and wiggles to work correctly, but giving each control would break the other.
To solve this issue, I went back to the drawing board and mapped out each case that the setup needs to account for: whether stretchiness is enabled or not, and whether the controller is placed in such a way that the leg would need to stretch if it is.
By laying those scenarios out, I found that there was 1 case out of 4 that required the IK leg joint to be in control, and 3 out of 4 that required the foot roll setup to be in control. From there, it was just a matter of creating a node setup that determines which scenario is happening at any given moment and assigns the appropriate control.
The other major hurdle I encountered was managing weight painting across the 2 sides of the wing membranes. Because the mesh was 2-sided, any discrepancy in weights from one side to the next would result in clipping or other deformation errors as the wings move. At one point, I found that that exact kind of error had occurred. Solving the problem manually would have required copying and pasting weights across dozens if not hundreds of individual vertices, a time consuming and tedious process that would have to be repeated if the problem ever arose again.
Instead, I wrote a script that checked for matching vertices based on their position values and copied weights across pairs that were found to match. This not only solved the problem, but also substantially boosted the efficiency of my workflow for correcting any additional errors that I found while testing the rig.

