Last Updated: 04.22.2019



Until we get embeded video sorted. Please use this link:

mrsAnimate is the new animation ui for use with MRS rigged assets.

What can I do with it?

  • Contextually work with parts of a rig
  • Mirror
  • Tween
  • Space switch
  • Change settings


  1. UI
    • Top cgm menu - CGM> MRS > mrsAnimate
  2. Python
import cgm


  • Proxy Rig - Rig without a final mesh for fast prototype work

  • Puppet - Our name for the root node that is has the wiring to the rest of the components nodes and features of a character or asset.

  • Module/Part - The module unit of a puppet. Be it a hand, arm, leg or whatever

  • ControlTypes

    • Main - Main controls of a module
    • Sub - Sub controls of a module. May be hidden
    • Direct - Per joint controls. May be hidden.
  • Space Pivots(Pivots) - This is our solution for having easily constrainable spaces that change scene by scene. They are a space option for space switching.


To start MRS is the only really new section.


Some tabs just mirror sections other places.


Context is the ability to modify what part or parts of the rig you are working with in the ui. There are two types of context currently.

  1. Selection
  2. Time


  • ctrl - We only care about the current controls selected.
  • part - Dealing with the module of the current control. For example if you have a wrist selected, you'd be in that arm's context.
  • puppet - The entire character of whatever controls you have selected
  • scene - All mrs assets in scene
  • options
    • [] core - NEW | this tells the systems to use the core control lists in context. This can speed up some functions when you don't need all the tertiary controls included.
    • [] children - Also include any children of the base context
    • [] siblings - Include any siblings of of the base context. A sibling of a finger for example would be the other fingers
    • [] mirror - Include mirror modules,controls in the context as well


Time context was added in Feburary 2019 and is still in testing. There are a couple of things to think about regarding this. Time context means that with our selection context in mind, do whatever action over time based on that selected context.

Time context functions affect most calls:

  • Space switching
  • IK/FK switching
  • Mirroring


  • each - Act on each time contextual part based on it's own keys
  • combined - Combine the keys in context
  • Q - Report on context in the script editor


  • <- - Previous | All before
  • |< - Last | Last key
  • ^ - Current | Current frame
  • |--| - Bookend | Last and Next. Includes current if there is a key there.
  • >| - Next | Next key
  • -> - Forward | All ahead
  • [] - Slider | All on the slider
  • sel - Selected | Work off selected timeline




Remember, all the buttons take into account your context. Not only the controls you have selected.

  • << - Go to the previous key in context
  • key - Key at current frame in context
  • bKey - Breakdown key ....
  • >> - Go to the next key in context
  • delete - Delete current key
  • Push - Push current values to the time context


Select by control type.

  • fk - FK controls in context
  • ik - IK ...
  • ikEnd - IK ends...
  • seg - segment handles ...
  • direct - direct controls ...
  • all - all of them ...


Reset controls in context.

  • fk - FK controls in context
  • ik - IK ...
  • ikEnd - IK ends...
  • seg - segment handles ...
  • direct - direct controls ...
  • all - all of them ...


  • Reset - Resets controls in in context. Zero is on the right. WARNING - this is slow.
  • Tween - Typical tweening between poses
  • Drag - Using Morgan Loomis' great ml_breakdownDragger in context
  • [ .00 ] - Set the amount for the next row
  • << - Push towards the previous key in context by the amount in the row above
  • avg - .5 contextual average in context
  • >> - Push towards the next key...



Using Morgan Loomis' _ ml_hold in context - Morgan's docs


  • push - Push the first control's contextual side to the other
  • pull - Pull the first control's opposite side to itself
  • flip - Flip the pose contextually
  • symLeft - Make symetrical to the left side regardless of selection
  • symRight - Make symetrical to the right side regardless of selection
  • select - Select contextual mirror
  • animFlip - Overrides time context and pushes all in context to r9Anim.MirrorHierarchy.mirrorData


  • FKsnap - Snap to fk mode for all modules in context
  • FKOn - Turn on fk mode for all modules in context
  • IKsnap - Snap to ik mode for all modules in context
  • IKforce - Snap to ik mode then force handles to snap as well to make sure they match. Experimental
  • IKOn - Turn on ik mode for all modules in context



Only the head module currently supports this kind of aim setup

  • on - Turn on aim mode for all modules in context
  • off - Turn off aim mode...
  • toFK - Snap to fk from aim setup...
  • toIK - Snap to ik from aim setup...
  • Snap - Snap to to aim mode



Module settings

  • visSub - Hide/show sub controls in context
  • visDirect - Hide/show direct controls in context
  • visRoot - Hide/show root controls in context

Puppet settings

  • skeleton - hide/lock/on joints for all puppets in context
  • geo - hide/lock/on geo for all puppets in context
  • proxy - hide/lock/on proxy geo for all puppets in context


We try to keep this updated with big feature adds to see how it's changed over time.



  • core | new context | Added new option for more speed increases. Uses a truncated list of controls in context- roots, fk/ik, segments and ignores space pivots and other extra controls
  • animFlip | added direct push to red9's anim flip
  • Context rewrite | Took a few days and completely rewrote how context and tim context work to get more speed in the system. This entails a new shared global mrs anim cache so that where possible data is called and buffered rather than reaquired every button press.
  • Push | Added value push function


  • Time Context | first implementation