Rigloo

Rigloo is a component-based rigging solution for Maya

Branding

Rigloo was built with the following goals in mind:

Rigloo is component based. Rigs are constructed with common rig parts that can be customized to fit each character. This design choice was essential to support a variety of body types, as the rig makes very few assumptions on the construction of the users character. Other tools like HIK and Motionbuilders control rig make strict assumptions on character construction and would not work for the project in mind.

Rigloo is code driven. Rigs are built and attached dynamically, meaning it can fit to any skeleton shape. Additionally this was essential to allow for baking the rig to existing animation data. This means the tool can be used for motion capture cleanup or even animation created with other rigs.

Rigloo is open source under the MIT license, the latest version can be download here.

Philosophy

While there are plenty of existing solutions for simplifying rig construction, most will include restrictive assumptions about character design. Tools like Maya’s HIK require your character to be humanoid, while others will specify humanoid or quadruped. Rigloo was built as a rigging tool that simplifies the rigging process but does not sacrifice the creative freedom we have as riggers.

As a rigger, I also desired something that I would be able to use to speed up my own iteration time. Often I would like to make a quick rig prototype, but will be restricted in the features I can add in a short amount of time. Complex features such as parent space switching and squash and stretch would need to be omitted unless I spent the time to write a script devoted to them. Rigloo is built to speed up the rigging process while allowing for commonly used and complex features to be added to prototype rigs.

Rigloo is built to support experienced riggers desiring a quick prototyping tool, as well as non-riggers looking to create custom rigs.

Features

Timelapse

Fossil supports the following features:

Below is a detailed look into some of the more complex features included in this list. For a detailed description of how the to use the tool, consult the documentation.

Components

Adding Components

Rigloo is built out of components. A component is an isolated part of the rig that does not depend on any other part. This can be a simple as a single FK control or an entire IK chain. By design the components should be as general as possible, making as few assumptions about its use cases as possible.

Spine IK Example

The Spine IK Component is one of the more complex components. While not a true IK spline setup, an approach with similar functionality was used. In development, a traditional spline IK design was unable to work reliably with animation baking and dynamic attachment. As such, this approach uses blended transform values that can perfectly match a source skeleton or animation.

Leg IK Example

The Leg IK Component is one of the components with specific use cases in mind. While being a more restrictive version of the IK Component, I knew a large percentage of users would require a reverse foot roll solution, and thus this component was built to provide the option.

Space Switching

All components on a Rigloo rig have a parent space and an upright space. This value can be set to use the space of any other component on the rig or set to ‘world’ and not follow any.

Parent Switch Example

Parent Space determines where translation is inherited. This is often useful for IK controls, to attach to other parts of the body.

Upright Switch Example

Upright Space determines where rotation space is inherited. This is useful for setting controls to align to another space rather than their direct parent. For example aligning a head or arm to follow world space orientation in order to aim at a specific position.

Squash and Stretch

Squash and Stretch

Squash and stretch is very important for stylized rigs to enhance the appeal of a character, as well as on realistic rigs to prevent snapping. Its a fairly complex feature to implement manually, meaning it is often inaccessible to new riggers.

I implemented an option on all multi-control components to include a squash and stretch relationship. There is an option to toggle off both squash and stretch individually.

Additionally there are position offset on all components, allowing for position control on otherwise rotation-focused relationships.

Curve Editing

Curve Editing

With the goal in mind of maintaining the key creative decisions, I knew I needed a solution of control curves. With a tool built with the concept of supporting a large variety of character types, the user would need an option to customize their controls to support their unique use case.

By default, Rigloo uses shape presets from my Control Curve Library. Additional presets can be added through that tool. Otherwise when custom controls are enabled, Rigloo will store controls as CVs rather than as a shape preset. So any change made to the shape nodes of the controls is stored when the rig is next previewed.

Animation Baking

Animation Baking

While being necessary to support any skeleton shape, having a code driven tool also provided the opportunity to support baking to existing animation. When enabled, this feature bakes the rigloo rig to each frame of an animation before attaching the skeleton.

This feature means Rigloo can support animations not animated with Rigloo rigs, as well as providing a tool for cleaning up mocap animation.

Saving and Loading

Saving and Loading

In order to bring Rigloo rigs between scenes, it was necessary to include saving and loading of rigs. Rigs are saved as a simple .json text file. The text file is human readable and is easily edited for troubleshooting.

Interface

The Interface

Visually the tool is reminiscent of Unity’s component editor, an engine I have much experience with. I new the tool would require a dynamic user interface, as well as be polished for release. Without much time for UX iteration, and not having tackled many previous tools of this scope, the Unity-like design was chosen as an safe-bet approach.

Background

Originally built with intention to be used with the Skywind Project, the tool later evolved to be released publically. For Skywind we use retargetted animation, and in order to cleanup effectively, I required a tool that supported animation baking to non-standard skeleton.

Functionally the tool is inspired by Blizzard’s code based rigging for Overwatch, as seen in their GDC 2017 talk “The Animation Pipeline of Overwatch”. Their approach to rigging for an uncertain cast of characters proved to be an excellent source to jump off from and create a complete and open source toolset.