EMotion FX 3.9 - Features
Realtime Motion Mirroring
Motion mirroring allows you to mirror the motion, playing the animation data of the left handed side of the character on the right handed side and the other way around. This can be very useful for certain types of games, such as sport games where the user can choose if their character is left handed or right handed. Instead of having your animators create two different motions, one for left handed and one for right handed, they can just create one instead. Also the game's runtime only needs to load one motion in memory. This reduces loading times, and only requires memory for one motion instead of two.
|
The Jiggle Controller
The jiggle controller is an easy to use controller which allows simple physics to be applied on bones. It can be used for things such as hair, pieces of cloth, tentacles, boobs, flesh, chains, ropes, a fat belly and jelly things. This controller uses its own internal physics, so no external physics system is required. All of the physics is based on movements in world space. This means that when you move the model, either manually or by animation, for example the hair of the character will automatically detect these movements and get adjusted accordingly. Simple collision detection with spheres and capsules is supported.
|
The Footplant IK Controller
The Footplant IK controller is an inverse kinematics solver which will make it easier to plant feet on uneven terrain or to prevent foot sliding.
|
Realtime Motion Retargeting
This very powerful feature can save huge amounts of artist time and runtime memory. This feature makes it possible to play the same motion on different characters. If for example you make a MMORPG games you have many types of characters. With EMotion FX do not have to create unique animations for every character. Instead, you can share the motions between pretty much all races.
Of course you can still make some unique motions to give each character or race some kind of uniqueness. But this allows you to have many different motions, which wasn't really possible without motion retargeting before.
The runtime performance impact of the retargeting inside EMotion FX is pretty much negligible. Our motion retargeting solution has been used in several successful MMORPG titles.
|
Motion Capture
With EMotion FX it is no problem at all to use motion capture data. Our exporters can export pretty much anything you can import and apply to your characters in 3D Studio Max or Maya. You won't have to worry about whether you use manually keyframed motions or if you use motion captured data.
|
Blend Masks
Also known as bone feathering, EMotion FX allows you to specify per bone weights when playing a given motion. As an example, it could be used to dynamically adjust how motions are blending based the type of weapon a character is holding.
When playing a run motion for a character holding a heavy sword, you may want the character to swing its arms less freely to make the motion more intuitive to the eye. The animator can adjust the weight values of the arm nodes in the run motion that you play on this character to get the animation result they want.

|
|
Motion Events
Motion events can be used to trigger specific events at given keyframes as they are defined by the artist or programmer. Artists can mark specific frames where events should happen. Each event can have an event type and parameter string. Event presets can be made so that artists can quickly choose from a list of events that are supported by your game. Events can also have a duration, so that you don't need to manually create a start and stop event for a given events that have to be active only during a specific time range.
This very powerful concept allows for some very creative things, from playing footstep sounds at given frames to spawning particle systems to applying physical forces to characters or executing full game scripts. It is up to you how you use it.
All motion event setup happens already inside Max or Maya and events can be previewed using our tools very easily.
|
| | Motion event test, showing single frame events and events that are active for a given amount of time. |
|
|
Motion Mixing
This artist feature saves a lot of time, and allows you to mix multiple motions together. A simple example would be that you create two different animations: a walk cycle and a look around cycle. EMotion FX can mix these together to cause the character to look around while walking.
Another example would be a character that is walking around, looking around, blinking his eyes, and raising his arm while speaking dialog. Each of these movements is a separate animation yet they are seamlessly blended together into one. With EMotion FX, once you create the walk, the look around and the raise arm motions, you can mix them together in any combination you want. This can be an incredible time saving feature.
|
|
Lookat Controller
EMotion FX ships with an advanced lookat controller. This can be used to make characters look at given points or objects. Constraints are used to limit the rotations, for example to prevent the neck from rotating into an unnatural orientation. Other animation systems might simply use euler angles to limit the rotations, but this can result in problem situations with 3 DOF constraints.
Spherical ellipsoids are used to define rotational limits, which gives much nicer and natural results than for example using standard euler angle clamping. The controller also allows you to setup the responsiveness to changes of the lookat goal. Eyes move very quickly, so they will have a higher value for this property than the head itself. The lookat controller can be applied on the body as well, allowing not just the eyes and head to be modified, but for example the upper body as well.
|
| | The lookat controller in action. Looking at a specified moving target point and the camera. |
|
|
Motion blend modes and other playback properties
EMotion FX ships with two motion blend modes: overwrite and additive. The overwrite mode will cause motions to be replaced, so body part motions are overwritten (with smooth blending), while the additive mode will add the motion relatively to the existing playing motions. This can be useful when for example you want the character to walk, while aiming and leaning to the left, while his gun is being fired which causes a recoil effect. In this case the recoil effect can be an additive motion.
Next to adjusting the blend mode you can adjust properties such as the playback speed, current offset in the animation, if you want to play forward or backwards, the weight of the motion, if you want to freeze the motion in its last frame, the number of loops, the maximum playback time in seconds and many other useful things that make your life easier.
|
Motion Based Actor Repositioning
With this feature you do not have to slide your character anymore while it is moving. Most animation systems force you manually move your in-game character while playing for example a walk motion. If you move/slide the character at the incorrect speed, you will see sliding feet, because the character will move faster than the animator created it. With motion based actor repositioning the character will move always at the right speed, since the motion will drive the character's position, rotation and scale. Motion blending and mixing is fully taken into account, so your character will move at the right speed during transitions or non-linear motions as well.
|
|
Motion Priorities
If you are switching between different motion states when using layered blending, it is possible that your first motion would get overwritten by the new motion.
Let's imagine you are playing a waving with arm motion on top of a walk motion using the motion mixing feature. Now without priorities, if you would start playing a run motion, this would overwrite both the walk and wave with arm motion.
It could be that this is what you wanted, but what if you would want to keep playing the wave motion and let the run motion only overwrite/replace the walk motion? This is exactly what motion priorities are for. The desired result can be achieved by giving the wave with arm motion a higher priority than both walk and run, and giving the walk and run motion the same priority value.
| | Motion priorities. Changing a base motion while the mixing motion keeps playing on top. |
|
|
Inverse Kinematics
Grabbing objects, aiming guns and adjusting legs and feet are just a few examples of the use of Inverse Kinematics. EMotion FX ships with a series of Inverse Kinematic solvers. Not every Inverse Kinematics solver is the same, which is why we offer multiple solvers, each having their strong points in different situations and each having different performances. We offer solvers that work on two bones aswell as solvers that work on any number of bones.
|
Controllers
EMotion FX still allows you to individually control each node inside an actor. You can create controllers to control the objects. An example of a controller would be a 'look-at' controller, which you might apply to the head of a character. Another example could be a complete Inverse Kinematics controller. EMotion FX ships with a couple of useful controllers already built in.
|
Physics Support
EMotion FX includes NVIDIA PhysX Ragdoll support out of the box.
Our 3dsMax and Maya plugins can automatically generate all the physics collision meshes. The character will automatically be decomposed and special fitting algorithms are used to determine the best way to approximate the current character mesh using simiplified collision primitives. The supported physics primitives are: box, sphere, capsule and convex hull. A set of rules can pre defined on an artist friendly way, to for example force the head to a sphere if desired.
This means that ragdolls can be created pretty much instantly, with any additional artist work. The physics setup can either be exported automatically to either NVIDIA XML or Collada formats. This can then be used in combination with our PhysX integration again. It is also possible to use other tools to setup physics, since the EMotion FX PhysX support can directly read in Collada and NVIDIA PhysX XML files that have been created by other tools.
Physics can directly be previewed in our tools, so artists can play around with the ragdolls to see if the current setup behaves nicely.
|
| | | A basic ragdoll example, taking into account motion momentum. This uses our NVIDIA PhysX integration. |
|
|
Regular Attachments
EMotion FX fully supports attachment points. These are invisible points onto which you can attach objects. You might put an attachment point on a gun holster, and link this point to the hips. The attach point will automatically move and rotate with the rest of the body as it animates. You can request the transformation of the attach point at any time, so that you can apply this transformation to the gun object. This will result in the gun being attached to the holster. Other examples might be armor, badges, hats, glasses etc. It is possible to attach animated characters to each other as well, e.g. a knight on his horse.
|
| | | Regular attachments demonstrated. Note the pose of the hand, closing to grab the weapon, when it is being attached. |
|
|
Deformable Attachments
This features allows you to create different body parts or clothing items that can be easily switched between on the fly. This is great for character customization.
Our Max and Maya integration allows artists to easily create a set of such deformable attachments with a very minimal amount of work. They can for example create all possible clothing items in one Max or Maya file and export them all in one go.
Adding and removing of such attachments can happen very quickly which allows you to change outfits or apply small customizations on the fly at runtime, without any performance impact.
|
Facial Animation
The EMotion FX facial animation system is technique independent. Currently implemented techniques are bone based and progressive morph based facial animations, where multiple morph targets can influence the same part on the face.
Similar techniques are used in Maya's Blendshape and the 3D Studio Max's Morpher modifier. Each morph target can be dynamically modified during run-time as well, to create dynamic or procedural facial animation. All motion features apply to facial animations as well, which means they get stored only once in memory and can be blend and mixed together and controlled individually.
Our exporters support exporting of animation data from Maya BlendShape and Max's Morpher Modifier. This allows your artists to animate in the environment they like most.
The automatic lipsync generation support can automatically animate specified morph targets that represents the phonemes as detected by our lipsync system. You can combine different facial motions using our motion mixing system. Our facial motions are actor independent, which means they can be played on top of any character. This means that you could play the same facial animation from a human on for example a frog, assuming the frog has similar morph targets.
|
| | Mixing morph motions together. Each motion controls a specific part of the face. |
| |
|
Lipsync Technology
Hidden Markov Models are used to detect the phonemes and their intensities and works with any spoken language. Lipsync can automatically be generated from wave files and it is possible to setup 13 different visimes, which result in very accurate results. The system also allows a lower number of visimes when desired. Editing of the lipsync results can also be performed afterwards. While we provide automatic lipsync generation you can also perform the lipsync process by hand if you choose to. Forget about having to license external lipsync software, because EMotion FX has it all.
Our lipsync system is actor independent, which means that you can play the same lipsync motion on any actor. Realtime retargeting of the lipsync is being done. Automatic phoneme simplification is being applied automatically when specific characters have a simpler lipsync setup.
In the movie next to this text you see on the left a character using mesh based morph targets, while the one on the right uses bones in the face to animate the mouth. The same lipsync motion is applied to both actors.
|
| | The same lipsync motion applied to two totally dfiferent characters. One uses mesh morph targets while the other uses bone transformation based morph targets. |
|
|
Character Instancing
It is likely that you would want to render the same character multiple times, or at least load it once and create many instances of it.
EMotion FX allows you to create instances of any character efficiently. The memory usage per instance is very low since all memory intensive data can be shared between the character instances. Each character can still be animated and controlled individually and use a different level of detail settings.
Thanks to the powerful LOD system of EMotion FX you can render huge crowds of characters very efficiently.
|
Motion LOD
In order to save precious processing power EMotion FX features a very powerful level of detail (LOD) system. Motion LOD is a part of this system. This feature simplifies the motions you are playing on a character using visual error metrics. This LOD can be fully automated. All you do is specify the maximum allowed visual error. EMotion FX will simplify the playback of motions on the fly and make smooth transitions so that you see no visual popping. Artists can finetune and tweak the automatic LOD system on a per character basis in case they want to. However this is hardly ever needed.
On top of the automatic LOD artists can create custom motion LOD levels where they force specific parts of the skeleton to not animate. This can be used in combination with automatic motion LOD as well.
In practice this feature gives about 15% to 25% speedup in full character update when playing a single motion, without seeing any visual difference really. If you apply multiple motions to a character the savings will be even more, as our Motion LOD works on a per motion level.
In the movies we show here you can see us experiment with the motion LOD. What is shown is untweaked automatic LOD. You should also imagine that the character would actually be smaller on screen when the motion LOD becomes more active. So you would not really see the differences in that case. But this movie is to show you what it does.
The number of saved value (click the fullscreen button to watch at higher resolution) represents the actual number and percentage of animation samples being saved.
|
Skeletal LOD
One of the coolest LOD features of EMotion FX is its skeletal LOD system. In combination with our other LOD features, this feature allows you to have huge crowds of characters that are extremely detailed.
If a character is shown close to the viewer it can be very detailed, but once it moves away from the camera at a given moment you don't really see the individual fingers of a character anymore. Our motion LOD system will already stop animating the fingers automatically, but you would still have a lot of overhead costs from the finger nodes. They still have to be transformed. Also nodes that add small detailed meshes to the character would still exist in the skeleton and waste processor power.
The skeletal LOD system of EMotion FX solves this. It allows artists to create a set of skeletal LOD levels. Each LOD level can remove nodes from the skeleton. To EMotion FX it will be like they do not exist anymore, which means they also do not take any processing power.
This feature, when only removing finger bones in the distance, gives in practice speedups of about 70% to 110%, depending on the number of finger bones and overal complexity of the character of course. Also if you can remove more bones or nodes the speedups will be greater. It just shows that this feature can really boost performance when dealing with large numbers of characters.
|
|
Geometry LOD
The EMotion FX Geometry LOD support allows your artists to specify different meshes for different geometry LOD levels. It is also possible to automatically generate LOD levels using our progressive mesh based geometry simplification support. Both manual LOD and automatic LOD can be combined as well. This makes it possible to specify for example the first two LOD levels manually, while automatically generating the other LOD levels.
Next to simplifying the mesh topology we also allow you to simplify the skinning information at lower LOD levels. This means that a mesh at the highest LOD could use for example 4 skinning influences per vertex, while lower LOD levels would only use one to increase performance.
The automatic LOD system automatically retargets the morph targets to the newly created lower detail mesh.
|
Material LOD
EMotion FX's material LOD system basically allows you to specify different materials in different geometry LOD levels. This can be used to for example remove normal maps or specular maps at lower details.
|
|
Hit Detection
When a player shoots with his (or her) gun at a character you will want to check if the bullet fired by this gun hits the character or not, and if it hits it you will want to get details on the impact position.
EMotion FX allows you to perform accurate collision detection when you use software deformations. You can retrieve which node is being hit, what the intersection position is, what the normal and texture coordinate is, which triangle it hits and even the barycentric coordinates on the triangle, which you can use to interpolate custom vertex attributes.
When you using vertex shaders, the deformed mesh information unfortunately isn't available. In order to still allow collision detection when using vertex shaders, EMotion FX allows your artists to specify collision objects. These collision objects can be simple rigid or skinned objects on which the collision detection will be performed.
If you use character studio, you could for example use the biped nodes as collision meshes. When the character is being shot, you could retrieve the biped which is hit and take action based on that. In this way it is easy to create a realistic hit detection system. EMotion FX also provides you with several bounding volumes for a character, which you can use for visibility or collision checks as well.
|
Keyframing Templates
You can use the EMotion FX keyframing templates to keyframe virtually anything. Should you want to keyframe the field of view of your camera, you could use the EMotion FX keyframing templates to create the key track, then add the keyframes at given times, and let EMotion FX figure out what value at any given time your field of view should be. You can also setup playback modes, speeds, directions, interpolation modes and more!
| | Using the keyframing templates to create an animated camera path using smooth curves. |
|
|
Mesh Deformers
The mesh deformer system is a very powerful system when you decide to use software deformations. Users of 3D Studio Max can compare this system with a real-time version of the mesh deformer stack. An example deformer is the soft-skin deformer. You could let the resulting mesh (after it has been passed through the deformer) be processed by a twist or bend deformer. As you can imagine you can create fancy effects with this. You can see this as an equivalent to a vertex shader.
|
|
GPU Skinning Support
EMotion FX can provide you with the vertex buffer information structured on a way you can pass it readily to your favorite graphics API, such as Direct3D or OpenGL, so that the mesh deformations are performed on the GPU instead of on the CPU.
When hardware skinning is used, no mesh deformations will be performed on the CPU, unless specified. Example shaders and code are provided as part of the SDK. We supply example rendering code using vertex shader assembly in DirectX 8, HLSL in DirectX 9, HLSL for the XBox 360 and Cg for our Playstation 3 rendering examples.
EMotion FX can automatically break up meshes when the maximum number of required shader constants would be exceeded. You can specify the maximum allowed number of bones to be used per shader and EMotion FX handles the rest.
|
CPU based mesh deformation support
In case you do not want or are not able to use the GPU to perform skinning deformations we provide a fast software fallback. Whether or not CPU based deformations should be used can be controlled on a per mesh / per LOD level basis. Our CPU skinning is also a much faster alternative than skinning using vertex shaders in software mode.
|
Bounding Volumes
EMotion FX's bounding volume system allows you to setup from what to generate the bounds, at what update interval, and some more settings. Bounding volumes can be calculated from the actual mesh, the collision meshes, the nodes/bones, or the node oriented bounding boxes.
Artists can also tag specific nodes to be excluded from the bounding volume calculations. The update frequency allows you to update bounds at a lower rate than the framerate, which can save some performance.
The node based oriented boxes are calculated offline and try to find the best fit to the mesh, based on skinning info and mesh geometry data.
|
| | Showcasing different types of bounding volumes that EMotion FX can calculate for you. |
|
|
Open File Format
EMotion FX exports in a chunk based file format. This allows you to attach extra chunks to the file. Unknown chunks are simply not processed, so existing projects will still be able can still read the files that include additional chunks. You can register your own chunk processors so you can easily write additional chunks to the files, which will automatically be processed by your custom code extensions to the file format. The file format also offers full backward compatibility, so if a chunk changes, you can still read the old chunk versions.
|
Character setup utility
The character setup utility is a plugin for 3D Studio Max and Maya that provides artists to already setup most EMotion FX specific properties for their characters. The things they can setup include geometry, skeletal and motion LOD, bounding volume settings, physics collision meshes and properties, motion events, motion retargeting and repositioning settings and a lot more.
All data will be stored within the 3D Studio Max and Maya scene files. So when you have set the information once you never have to touch it again. Also this prevents you from having to deal with multiple files for a single character, which could be very anoying. Still you can transfer settings from one character to the other easily.
When the programmers load in this character, everything has been setup correctly already and your character is ready to be used in-game, without the programmers having to setup all of those things by themselves.
|
Powerful Exporters
EMotion FX ships with 3D Studio Max and Maya plugins. Our Max and Maya integration contains plugins for:
- Exporting
- Batch exporting
- Previewing
- Character setup (for defining LODs, lipsync, attachments, node groups, motion events etc.)
Our exporters have been used for many years and have been tested by hundreds of artists and have successfully exported thousands and thousands of models. This makes our plugins very reliable and robust.
For 3D Studio Max we added special support for exporting data from the Mesh Morpher modifier, as well as the animation data of the morph targets weights. Our plugins can also export the DirectX material properties (the shader parameters and their values). Next to that we support both the Skin and Character Studio Physique modifiers for skinning.
For Maya we support the BlendShape system, also including its animation data. Next to that we support the DirectX Maya material plugin, which allows you to export shader parameters and their values, just like the 3D Studio Max DirectX material.

|
|
Scripting Support For Exporters
Our exporter plugins can be executed from inside the Maya MEL and MaxScript scripting languages. This can be used to link EMotion FX with your existing batch exporter pipeline or toolset if you wish. Exporting parameters are completely configurable from inside the script as well.
It is also possible to execute pre-export and post-export scripts during export. This is very useful when you wish to for example post-process the exported data automatically when your character gets exported.
|
Exporting other things than characters
You are not restricted to only deformable (soft-skinned) characters. In fact many game companies use our exporters to export any type of geometry from 3D Studio Max or Maya into their games. This ranges from buildings to cars to full game levels.
Next to geometry we export transformation data for all objects in the scene. So you can easily use our exporters to for example create animated camera paths, or to animate your lights or particle system positions inside Max or Maya.
|
Custom Vertex Attributes
With EMotion FX it is possible to store an unlimited amount of per vertex custom attributes. These attributes can be anything, from physical properties to colors to temperatures to spherical harmonics coefficients.
EMotion FX allows two different types of vertex attributes: shared and non-shared. Shared vertex attributes can be shared between vertices and non-shared vertex attributes can be unique for every vertex.
|
Custom Node Attributes
It is also possible to store custom per-node attributes. Examples of these attributes could be physical properties, such as the weight or elasticity of an object.
|
Node Groups
Sometimes it is useful to group specific nodes, and to apply specific operations on nodes that only are part of this group. Artists can predefine groups of nodes inside Max or Maya.
At runtime programmers can for example disable all nodes inside a group. Disabled nodes do not use any processing power inside EMotion FX. If for example you have a set of cameras and lights for your character, which you only use during specific cutscenes, you can simply place those cameras and lights in a group and enable them only once the cutscene gets activated. This way you do not waste performance on nodes that you don't actually always use, while it prevents you from having to deal with multiple art files to achieve the same results.
|
Materials
EMotion FX contains a modular material system. We currently implemented two types of materials: standard materials and shader based materials.
The standard materials contain the regular information like ambient, diffuse and specular colors and specular information. They also contain a set of material layers, which describe a given texture used for a given purpose (such as a bump or specular map).
The shader based material contains a filename of a shader and a set of shader parameters and values that artists have setup. This can be used when you want to use DirectX FX materials. For example if you have a color parameter defined inside your FX file, the artists can setup the value for this color. This information is saved inside the EMotion FX files as well.
Of course you don't need to use our material system. You can simply use the material names to link it to your own type of material. We also do not store any textures or anything. Just color values and file names. How you use and convert this data is up to you, as this is very engine specific.

|
|
EMotion Studio
Artists will use this application to test and inspect their exported models and motions. They can play around with motions, attachments, level of detail, physics, morph targets, lipsync and much more.
Programmers can also use it to quickly look up things like names of specific nodes in the skeleton, or transformation or hierarchy information.
EMotion Studio features modern, customizable interfaces, is fully scriptable and controllable with commands, has a powerful layout system, supports multi-monitor setups and is extensible through plugins.
|
Multithreading Support
EMotion FX has been designed to take full advantage of multithreading at very low memory footprint. The multithreading support is completely transparent to the user. The multithread scheduling is modular, which allows you to plug in your own threading support quite easily if for some reason you like to use your own threading routines.
We also provide a single processor scheduler which is optimized for single threaded applications. In this scheduler there is no multithread management overhead.
|
Compiler and Platform Support
We currently officially support the following compilers and platforms:
- Microsoft Visual Studio 2005 for PC (32- and 64-bit) development.
- Microsoft Visual Studio 2008 for PC (32- and 64-bit) development.
- Microsoft Visual Studio 2010 for PC (32- and 64-bit) development.
- Microsoft Visual Studio 2008 for XBox 360 development.
- ProDG VSI using GCC, for Playstation 3 development.
- Metrowerks Codewarrior for Nintendo Wii development.
- XCode for Mac (32- and 64-bit) development.
- XCode for iPhone development.
It has been successfully compiled and being used on Linux as well (using GCC).
Mystic Game Development is registered and official tools and middleware partner of Sony, Nintendo and Microsoft.
|
EMotion FX running on Mac OS and the iPhone
|
Simple to use API and toolset
The design philosophy behind EMotion FX was to deliver a powerful and complex system while simultaneously keeping the user level API as simple as possible. Our goal is to deliver an API that is very easy and comfortable to work with, while solving complex problems for you, so that your life becomes easier.
We try to name everything very consistently so that you can already guess the name of certain methods, without looking them up or using Intellisense. Our source code is extremely well documented and readability of the source code is very important to us.
We're also against over-designing things, so we try to keep things as simple as possible. Our goal is to make you feel very happy while working with EMotion FX, whether you are a programmer or artist.
|
Additional Functionality
In addition to the EMotion FX API you will also get all the classes and templates, such as: vectors, matrices, bounding volumes, quaternions, frustums, random number generation, random sequences, arrays, linked lists, singletons, smartpointers, file systems, networking, multithreading and much more.
If you plan to write your own engine, those classes and templates would be a great start as they work great on all our supported platforms without any required changes. All of the above are fully documented down to function parameter level and heavily tested for years.
Full source code of the EMotion FX API is available to you as well.
|