Introduction

What is Golaem Crowd?

Golaem Crowd is a set of two plugins for Autodesk Maya that allows creating, managing, controlling and rendering crowds of any kind of characters.
 
The two plugins are:
  • glmCrowd is the crowd simulation plugin and requires a license to run:
  • glmCrowdRender is the bridge between glmCrowd and the rendering engines in Maya. It does not require a license to launch renders on local nodes and renderfarms.
glmCrowd plugin relies on several Golaem software components:
  • Golaem Motion stands for the real time animation engine for 3D humans and quadrupeds;
  • Golaem Path contains the suitable data and tools for path finding and navigation into complex 3D environments;
  • Golaem Physics provides a bridge with the Bullet physics library as well as preconfigured ragdoll behaviors;
  • Golaem Population provides tools for entities placement and population definition;
  • Golaem Behavior allows to instantiate and manipulate a set of basic human behaviors.
All these software components are embedded in the plugin and accessible through a set of tools and Maya nodes.
 

Architecture

The Golaem Crowd plugin architecture is centered on the Maya particle system. Thus, there are four important concepts defined in the Golaem Crowd plugin:
 
Entity corresponds to a crowd 3d character. Each particle belonging to a specialized particle system corresponds to an Entity. Each Entity has an Entity Type
Entity Type defines a type of characters in the crowd (e.g. archer, swordsman…). Entities of the same type share the same behaviors.
Rendering Type defines the visual representation of a Entity Type (i.e. the geometry which will be displayed, the shader to use on those geometries). Each Entity Type has an associated Rendering Type.
Behavior defines a set of built-in behaviors. Create complex behaviors by composing multiple behaviors and operators.
Relations between particles, entities, entity types and behaviors
 

Conventions

Some generic and useful conventions used in this documentation and in Golaem Crowd interfaces:

  • distances are always given in Maya working units (e.g. foot max height…)

  • orientations are always given in degrees (e.g. particle orientation)

  • times are always given in seconds (e.g. behavior animation time…).

Sources of informations

The following lines list the different sources of information:
 
Golaem Crowd Reference Manual the present document - describes the concepts behind the plugin and list all nodes, tools and their parameters
Golaem Crowd Samples A ready-to-use character, and some sample scenes
Golaem Crowd Video Tutorials video tutorials, giving step by step instructions on how to use the main parts of the plugin
Release Notes list what's new and what's changed since the previous version
Golaem Youtube Channel gathers the videos of productions using Golaem Crowd, video tutorials and proofs of concept.

FILE FORMATS

This part gives an overview of the different file formats interacting with the plugin:
 
Golaem Skeleton Description Files (.gsk) It represents the XML skeleton hierarchy of a biped or a quadruped character from Maya. It can be generated with the Skeleton Motion Converter
Golaem Skeleton Mapping files (.gskm) It contains the correspondence between the nodes of the Maya character skeleton and the nodes of the specific representation of skeletons in Golaem Crowd. It can be generated with the Skeleton Motion Converter
Golaem Motion files (.s4d) associated with a .ctr.xml. It contains the Golaem Crowd representation of a motion clip. Only important information of postures is stored and those postures can be automatically retargeted on any morphology. Golaem Motion files can be generated with the Skeleton Motion Converter
Golaem Skeleton Shape files (.gsks) It contains the description of the rigid body shapes associated to each bone of the skeleton in order to compute physics simulation. It can be generated with the Skeleton Shape Editor
Golaem NavMesh files (.gse) It stores a simplified representation of the terrain, a roadmap and all the obstacles. It can be generated with the NavMesh Creator
Golaem Crowd Asset Management file (.cam) It defines the assets and the rendering types used to generate the final aspect of characters at render time. It can be generated thanks to the Asset Manager.
Golaem Crowd Assets Association file (.caa) It defines how the rendering types are assigned to the Golaem Crowd entities . It is generated thanks to the Simulation Tool.
Golaem Simulation Cache file (.pdb32.gz.) Disney Partio particle cache containing the result of the simulation (positions, orientations, scales & postures). It can be generated with the Simulation Tool
RenderMan Interface Bytestream (.rib) Pixar RenderMan scene description language. It can be generated with the Simulation Tool
Mental Ray Interface (.mi) NVidia Mental Ray scene description language. It can be generated with the Simulation Tool

VRScene (.vrscene)

Chaos Group VRay scene description language. It can be generated with the Simulation Tool
Arnold Scene (.ass) SolidAngle Arnold scene description language. It can be generated with the Simulation Tool
FBX (.fbx) Autodesk interchange file format. It can be generated with the Simulation Tool
Golaem Log file

glmCrowd.log

 

GLOSSARY

Golaem Motion is the animation engine embedded in Golaem Crowd. It is important to understand some of its essential concepts as it impacts the way the assets should be prepared when using Golaem Crowd.
 

Skeleton Mapping

The skeleton mapping is the action of matching the bones of a skeleton representation on another skeleton representation. Golaem Crowd offers an automatic mapping process to match the user's skeleton representation to the one used by Golaem.

 

Automatic Motion Retargeting

Motion retargeting allows creating a motion on any morphology and reusing it automatically on any other character with a different morphology. In Golaem Crowd, the retargeting is done automatically and in real time, by using the internal skeleton representation.
 

Motion Blending and Synchronization

Motion blending allows playing several motions at the same time on the same body parts of a character. The final importance of each motion in the resulting posture can be configured through a system of priorities.
 
The system of priorities can also be used to define a base motion that will be played when there is no other motion in use at a given time (e.g. a sitting motion in stadium), and a higher priority motion that will be played from time to time (e.g. a wave animation). When it is played, the higher priority motion will take the priority over the rest motion, without having to care about stopping the rest motion (see the motion behavior description).
 
Finally, when blending several motions on the feet, it can result in sliding feet. To avoid this, the animation engine checks the compatibility of each played motion. This process is called the Synchronization. If some motions are not compatible at a specified time, the motions are slightly time warped in a way or another. Thus, if the synchronization process is activated, some motions will not be able to be started at any frame. It is possible to deactivate this process (see the motion behavior description).
 
It also means the transitions between different motions don't need to be created by the animator; they will be automatically computed by the engine.
 

Motion Mixing

Motion mixing allows playing several motions at the same time on the different body parts of a character.
 
A walking motion can be mixed with an animation of waving hand to obtain an animation of someone walking and waving its hand at the same time. To define on which body parts a motion must be played, see the motion behavior description

 

Other important concepts includes:

Navigation Mesh (navMesh)

The navigation mesh (or navMesh) is an abstraction of a geometry on which characters are navigating. It is automatically computed by Golaem Crowd (see the navmesh creator) based on the scene geometry and allows entities to find their path to a target, query nearby obstacles and efficiently access to the ground they're standing on to adapt their motion.
 

Procedural Rendering

Procedural rendering is the ability for a rendering engine to call a helper program which generates geometry on-the-fly in response to specific procedural primitive requests in its scene description language (i.e. .rib for Renderman, .vrScene for VRay…). Any rendering engine worthy of the name provides this functionality: it is called DSO (in Renderman) or Geometry Shaders (in Mental Ray) but it always works the same way: inputs parameters, outputs geometry, black box inside.