Rig Research
I had some familiarity with humanoid character rigs, and I was only just recently introduced to quadruped rigging. It was a lot more complicated than I thought! Specifically, I watched Delano Anthias's tutorial on Pluralsight. There are some things I hadn't accounted for:
- Scapulae are very important features in a quadruped rig. Imagine a tiger slowly walking towards you and how its scapula bones shift about. This is a bit of a unique scenario that needs accounting for. It was handle with a specialized scapula bone controlled by IK in a way.
- Quadruped legs are rigged different from human legs, since many quadrupeds walk on their toes. This introduces an extra joint that IK solvers don't play well with. But this is a problem for another time!
The control surfaces for the rig:
The internal skeleton:
The rig also has bendy joint chains, but that feature will have to wait. But it's worth noting how the spine consists of 2 straight chains in order to make rigging easier. As a result, the harmonic skeleton generator might not be as useful as I thought due to ease of use for the animator. I will also need to check out the wing rigging course on Pluralsight!
Maya Plugins
I started on an elementary UI for testing! First realization is that there's a difference between plugins and scripts. Scripts are inherently faster to develop, but they lack the low-level power that plugins have. In order to determine which would be necessary, we must first look at the requirements of the skeletonization algorithms.
Revisiting the Skeleton Generators
As determined earlier, we will be using a more generalized skeleton generator than the harmonic skeleton generator by [Aujay et al 2007]. One of the best methods seems to be the simultaneous shape decomposition and skeletonization by [Lien, Keyser, and Amato 2006]. It makes intuitive sense in its approach through shape decomposition, is fairly automatic, and can be tuned by a user. It might even open opportunities for manual adjustment of the decomposition. Such a feature might require a plugin to facilitate the adjustment process.
The shape composition relies on Approximate Convex Decomposition as described by [Lien and Amato 2007]. It essentially works by generating a convex hull (a nontrivial task) and scoring each vertex's concavity by its distance from the convex hull. Therefore, vertex access is required. It might be possible to achieve this through scripting, but the Maya API includes a very useful Polygon API for more direct access. There are also other procedures requiring access to connected edges also accounted for by the Polygon API.
Conclusion
Maya Plugins are clearly the best option. The question is whether to use C++ or Python. On one hand, I know C++ well, but Python is theoretically faster to develop in. Given that I have no idea what Python is capable of, I'll have to go with C++ unfortunately. I imagine that debugging and modifying data types will be a pain, but that's the price...
Next Steps
First step is to create a Maya plugin to get a sense of how the API works. Next, I'm still unfamiliar with all of the math involved in this one paper, so I'll need to read through it a few more times.
Quick URLs
New References
- Lien, J., Amato, N.: Approximate Convex Decomposition of Polyhedra. In ACM Symposium on Solid and Physical Modeling (2007), pp. 121-131.