Creating your own anim proxy for rigs
Kiel Figgins - 3dFiggins.com
Animators want rigs to be as close to real time playback as possible, sometimes, the nature of the character makes this very challenging from the rigging side.
If you're working with a rig that's slower than you'd like, you can create your own animation proxy rig to remove certain calculations that should be able to speed up
your playback speed and your overall workflow. This comes at a cost of less fidelity of the character or presentation, but the method shown below is meant to combine
with file referencing (in Maya) so that you can swap back to the full res rig when it's time to present or export for a game engine.
Now the follow may seem like a long process for a seemingly small gain, but spending 20 mins at the start of a project can save hours over the length for animation
and playblasting, and may make the process of animating just a little less painful.
With that in mind, lets get started!
Overview
Rig available at 3dFiggins.com/Store
Mad Graham model by Nikita Zavalishin
Testing the rig to see how much a proxy will speed up playback
Open the rig file (animRig_MadGraham.ma)
Display > Heads Up Display > [x] Frame Rate
Select the CTRL_MadGraham_World control at his feet
Middle mouse click and drag the character back and forth and see what the fps is down in corner (mine's 11.3 fps)
Select all the meshes and delete them
Select the CTRL_MadGraham_World control at his feet
Middle mouse click and drag the character back and forth and see what the fps is down in corner (mine's 32 fps)
Creating the proxy file
Open the rig file (animRig_MadGraham.ma)
Select the CTRL_MadGraham_World control at his feet
Set the Joint Vis channel to 1
In your Viewport > Show > [x] Joints
In your Viewport > Shading > [x] XRay Joints
To adjust the size of the joints, Display > Animation > Joint Size
Img 0 - Joint Vis in the viewport
Select the meshes of the rig and put them on a display layer set to transparent
Create a simple proxy for the left and center, dont worry about naming or doing the right side, the tool will mirror and name the proxy
Create a low res poly object (cube/sphere/cylindar)
Position/rotate/scale the object, then push and pull the verts around to loosely match the shape
Img 1 & 2 - Shaping the proxies
Tips
using reflection and soft selection can help speed up reshaping your proxies
Img 3 & 4 - Shaping tools
I like to duplicate the face of the character for camera framing/close ups/eyeline
You can proxy the eyes as well for eyeline
If the chunkiness of the proxies is distracting, spheres (or smoothed cubes) at joints can ease this
You can hook up accessories or just focus on the primary body
Once the center, left side and props have proxy meshes, you can use the following tool to mirror and connect them. Again, you can test to see which connection method is faster or more fitting for your project, either creating parent constraints or parenting the meshes directly to the joints.
Since my rigs work better with the constraint method, we'll do that, but the option for parenting is in the UI of the tool
Img 5 - Left and Centerline proxies created
Download the kfProxyMeshes.mel tool here (Right Click > Save As). This is a small tool to help speed up the process of attaching the meshes to the rig
Run kfProxyMeshes.mel in your Maya scene
Windows > General Editors > Script Editor
Script Editor > File > Source Script > locate the kfProxyMeshes.mel file
In a MEL tab, run the following command:
kfProxyMeshes();
A small UI should open:
Img 7 - kfProxyMeshes.mel UI
Select the proxy mesh, then a rig joint on the left side
Tip: Turning off the viewport manipulator can make selecting joints easier
Click 'Connect Mesh (Mirror)'
Img 8 - Connecting the mesh to the rig
A new group in the Outliner is created, Proxy_Attach_Meshes, and another group created and constrained inside it with a duplicate of the meshes
Repeat these steps for the left side
For the center line or meshes you don't want to mirror, you'd do the same steps, but click 'Connect Mesh (Center)'
Img 9 - All Meshes connected
Now that you've hooked up the proxy meshes, you can see the results using the fps HUD by shaking the world control.
On the world control, set the jointVis channel back to 0 to speed this up further
With the above proxies connected, I get an improved FPS of 21, still not the full 24, but a nice step up from 11 that the rig started with!
You can also have various types of proxies depending on how you plan to use it. If its more of a crowd scene it could be a few cubes, or
if you're doing previz, maybe you also proxy the jaw and eyes so you can rough in the face work for a close up camera.
To Connect the proxy meshes to the rig for scaling, select the world control, CTRL_MadGraham_World, then select the Proxy_Attach_Meshes group and create a scaleConstraint
Lastly, to help with playback/RAM issues, you can delete the texture files from inside the rig, so that it's not loaded:
Windows > Render Editors > HyperShade > Textures Tab
Select all the textures and delete them
Img 10 - Deleting texture files
When you're satisfied with the results, save the scene file, animRig_MadGraham_Proxy.ma
Using the Proxy Rig in your animation workflow
1. Reference in the character rig, animRig_MadGraham
File > Create Reference > Option Box
Reference Options > Edit > Reset Settings
Reference Options > Namespace Options > (X) Use selected namepsace as parent and add namespace string: char
Click Reference and locate the character rig file
Img 11 - Reference Settings
2. Swap the rig for the proxy rig, animRig_MadGraham_Proxy
File > Reference Editor
Reference Editor > Select the charRN from the list > Right click > Reference > Replace Reference
Select animRig_MadGraham_Proxy from the file list
Click Reference
3. Animate as desired, when you're ready to present or export for a game engine, repeat the steps above to swap back to the proper rig
As another option, that works well if you're dealing with more of a single skinned character, you can check out mGear_AnimProxyFromSkin.py, or this extracted workflow:
https://www.reddit.com/r/Maya/comments/eh3hzj/is_there_an_easy_way_to_make_a_proxy_rig/
Other Opinions, Further References, Typos, and Grammar Issues please contact KielFiggins22@gmail.com