Cell is a procedural skeleton creation system, which allows riggers and character technical directors to create one skeleton structure and use it for similar characters without doing any extra work.
I was asked by my supervisor to develop a procedural joint creation system while I was working at Rainmaker Entertainment on the show called “Escape From Planet Earth”. My supervisor wanted me to create a system like the one he saw at ILM. Since the system my supervisor described was a build-based system the skeleton structure needed to be re-built every time based on the changes done by riggers.
I decided to develop a more unique and efficient system, which would do the computation real-time while it would eliminate the re-build process in the tool I was asked to develop. However, I wasn’t given the chance by my supervisor to pursue my imagination on the development so I did proceed development with the direction given to me. I wasn’t however satisfied about it, therefore I decided to develop the tool by using my very own time at home.
I brought my laptop at work to show the result of my own C++ plug-in development to our head of technology. I offered to use my system rather than the system I was directed to develop if I kept the rights of it since it was my idea and development which I spent my own time at home. My offer was accepted and I had implemented the tool in pipeline.
The way tool worked was rather simple. The dedicated C++ MPxNode re-positions the custom joints based on the selected and recorded three components of the mesh. These three components and cross product of its vectors create a tetrahedron, which computes the relative positions of the custom joint real-time. Tool had eventually been named as rnkMarrow.
Based on the experience I had, I decided that a procedural skeleton creation system could be even more intuitive even from the first tool I have developed. In rnkMarrow, three components must be selected for system to work, rather slow process in creation portion of the tool. Orientations of the joints were also dependent on other factors like selected components, transforms, etc.
In this particular tool, no components need to be selected. The brand new MPxNode can calculate the positions and orientations of the custom joints based on tangent space while it eliminates the component selection step thanks to its intuitive computation system.
How It Works
Cell is amazing tool especially when you need to rig many similar characters. First we create “Universal Mesh” which will be the base character model. Other similar characters will be created from this mesh. Since universal mesh is used to create other character models their topologies will be about the same.
First step is creating custom joints which built-in presets can be used for. This can be done is two ways.
Select the mesh and create the joint. This step will place the joint in the center of the world. User must re-position the joint where it needs to be.
Select any type and number of components and create the joint. If any component is selected, joint will automatically be positioned based on the selection. This feature offers easier tweaking step which comes next.
In this step user tweaks the positions and orientations of the joints as required.
Next step is computing the current tangent space for the joints, this is a perfect way to have the joints perfectly positioned and oriented based on the mesh itself.
In next step we create a blend shape deformer by using the universal mesh and the mesh of the additional character which we used the universal mesh in its creation. When state of the blend shape deformer is changed the custom MPxNode re-positions and re-orients the custom joint automatically based on the changes in tangent space of the mesh.
In last step we use built-in Maya joint structure creation tool to create actual Maya joints, which will be used in rigging task.
I have developed Cell in C++ Maya API (Plug-in), Python (Scripts), PyQt (GUI) from idea to coding including pipeline implementation just like I have developed rnkMarrow.
Please do not hesitate to contact me for any reason at all.