This is an informal introduction to ACT by Dr Mark Snoswell who designed ACT and then created it with a small, but hugely talented team. Here Mark talks about why ACT was created, and how and why it works the way it does and how it integrates into 3DS Max. Mark also talks about what you can do with ACT and where ACT could go in the future.

Hi, I'm Mark Snoswell. When I get a significant new piece of software I always find it useful to know a bit about how it is designed and why it works the way it does. This often answers a lot of questions and makes it much quicker to get into the software - knowing how and why it was designed the way it is. That's what I've endeavored to do here - give you an insight into ACT, why we designed it to work the way it does, and give you a glimpse of where we might be taking ACT in the future. It's all very exciting! I have a varied background that includes quite a lot of animation and so I can talk from first hand experience. What ACT does for the quality of character animation is truly awesome. Everyone's reaction is the same when they see their characters skin sliding over muscles and bones for the first time "That's it… it's so real… this is what we have been missing!"
Enjoy - and create some truly awesome animations!

 

ACT 1.0 is a solid foundation for everything we can imagine wanting to do in the future. The vMuscle and vSkin Deformation systems have their own plugin architectures that are very well thought out. When we add flat sheet muscles in the future these will seamlessly integrate into the overall system and work just as you would expect.

There are two UV spaces for vMuscles - the first defines the tendon-muscle structure of the muscle. The second UV channel defines the parameter space of the vMuscles. In future versions we will use this a lot more to implement parametric skin deformation methods that can push, pull and do sticky skin. We will also be able to do muscle-muscle-skin interaction as a combined parametric system. We could look at generating skin automatically and doing skin selection sets automatically. We already have a powerful, real time, cross section viewer and editor for vMuscles (available as an unsupported free download from www.cgCharacter.com). The architecture of ACT is set up so that when we add things like sheet muscles they will automatically also work with the cross section viewer and vSkinDeformer systems. They will also automatically work with out special modifiers like vSmooth and vmLink.

So - while we are not sure just what features to add next we do have a long list of really amazing things we know how to do and we have made sure that the ACT platform can support all of them. The ACT platform is also about to go cross platform so that in the very near future you will be able to move your muscle and skin systems between major 3D systems and possibly even into your own games and other proprietary environments.

So - get to it and create the best character animations ever seen!… and show us what you do. You are also invited to join the ACT team on the cgCharacter forum at http://groups.yahoo.com/group/cgCharacterForum/ and give us your direct feedback. We'd love to discuss just what features you want added next.

 
   
   

Absolute Character Tools was created because I wanted to do better character animation - the best character animation ever in fact - and it didn't take me long to come to same conclusions as other leading character animators - particularly the big studios. The only way to do better character animation was to stop faking it and create real people and creatures. Creatures with a real, biomechanically correct (well at least believable) skeleton and muscles; and then to have the muscles all attached to the skeleton and moving correctly; to add fat and connective tissue; and lastly to have the skin slide over everything underneath.

In a privately funded venture we created the worlds most accurate human musculoskeletal system - now available as The Ultimate Human. But it had over 1200 components - bones, muscles, sinew etc… The sheer complexity overwhelmed 3DS Max, Maya, Softimage - anything! We were forced to create our own muscle primitives and later our own whole skin deformation system… and it had to work very, very fast - hundreds of times faster than even mesh objects.

After much tuning, re-writing and novel algorithm development the very first commercial muscle and skin system is now available - Absolute Character Tools 1.0. Direct feedback indicates that it's not just the only commercial system available but that it's probably orders of magnitude faster and feature rich than any proprietary software out there. So now the broad 3D community has access to the most unbelievably awesome software for creating the best character animations possible!
Whether you add just one muscle to an existing character or a whole set the results are instantly visible - when you see skin sliding over muscles and bones underneath you are totally blown away by the degree of realism that is added to your existing animations. Characters really come to life!

Fundamental Problems - how muscles move.
We started out thinking that there would be a lot of biomedical data on how muscles work, where they are attached, how they contract and interact with each other - we were wrong! How muscles really work and interact under realistic loads and conditions is almost a complete mystery to science. There are lots of anatomical illustrations of dead things. There are heaps of X-Rays of skeletons. There are a very few x-ray videos and other images of a very few muscles in action, under very unrealistic conditions.
There are lots of biomechanical measurements on performance. But it really is a mystery exactly how muscles are moving in action in living people and animals. It's not even clear how to correctly model a muscle - Oh, we know their general shape from dissections (most of the time) and we know their general structure - fibers running from one end to the other with varying amounts of tendon at the ends (some times).

Faced with this almost total lack of hard scientific data we created a virtual muscle (vMuscle) primitive that had all the known properties of muscles built in and served as a solid foundation for anything we could imagine wanting to do with these vMuscles. There were two really big problems - How to make these vMuscles work very very fast and how to deform them. The speed problem was just a matter of some very good technical programming - with ACT you can interact with hundreds of vMuscles in the viewport in real time!
The deformation is a much harder problem. Knowing that we would not get it right - and that there probably wasn't any one right way to deform all muscles we chose to implement a plugin architecture for the deformation and dynamics of vMuscles. ACT 1.0 comes with 3 different muscle dynamics engines that are both fast and general purpose. Researchers and programmers can even develop their own dynamics engines to add to those that come bundled with ACT.

More Problems - how to make muscles work in Max.
It's not just enough to create a new vMuscle object, it has to integrate into professional 3D systems like Max - and that's a real problem! The reason is that all of the core 3D object classes are rigid - mesh, poly, NURBS. All current 3D base classes start off as rigid 3D objects. Muscles start off as a deformable organic shape - with fibers and cross sections. They have a default shape when you create them - but as soon as you attach then at each end they become a deformable soft object. This is something that no 3D architecture was ever designed to cope with!
The vMuscle object class that ACT implements is probably the most fundamental extension to the current limited set of base 3D objects. vMuscles are really resolution independent parametric solids. We just happen to define them with a bunch of points on the surface arranged so that we know about the fibrous structure of the muscles also. We also save parameters for things like the muscle tension and transition from tendon at the ends to muscle in the middle. We have ensured that vMuscles work like any other of the fundamental 3D object classes - you can apply almost any modifier to them and things will work as you expect… until you start to deform the vMuscles. A bend modifier for instance doesn't know what to do with an object that doesn't have a fixed shape - it works fine in the modeling phase - it just bends the newly created vMuscle. The real fun happens when the vMuscle is deformed - then there is a real problem in deciding if the bend modifier should bend the "default" creation version of the vMuscle or the deformed vMuscle. The answer is that it bends the deformed vMuscle - but this probably won't do anything like what you expect as the vMuscle deviates more and more from it's default creation shape.

The solution was that we had to create a set of special plugins to assist with hand tweaking the animation of vMuscles. You can use all the normal modifiers in the modeling phase and vMuscles will do exactly as you expect - you can even collapse the stack and you will get the resultant vMuscle object! The Max modifiers also do work with animated vMuscles - but they just don't make any sense. Although you can set up the vMuscle dynamics engines to almost always get the desired muscle motion automatically we had to make hand tweaking very efficient. This is why we have created special vmLink and vmVLink modifiers. We also created a vSmooth modifier that lets you change the resolution of a vMuscle as it goes up the stack.

Muscle Dynamics.
OK - we wanted muscles to interact with each other, the bones, gravity. We wanted them to behave correctly under tension - to be floppy when relaxed and hard as steel under tension. We also wanted to be able to model real biomechanically correct muscles - which have some truly horrible shapes - nothing like the idealized long muscle that bulges in the middle!
Apart from science not knowing how muscles really work there's two fundamental problems we faced: Computers just aren't fast enough yet to have all those muscles we want interacting with each other; and we want to work backwards - with muscles moving with bones and not muscles pulling bones around - this forces us to approximate how muscles would move based on their attachment to bones that animators move.

In ACT 1.0 we have included collision and dynamics with cylindrical bones - this is a fast, first step towards full muscle-muscle interaction. Full muscle-muscle interaction will require quite a massive programming effort to do within the current 3D systems like Max - and it can only be done in a full System that controls everything. We will get to that in a future version of ACT.
The two main vMuscle dynamics engines that come with ACT are very fast and very flexible approximations to realistic looking muscle motion. (The third engine is mainly for backwards compatibility) They give the Technical Director and animator a huge degree of flexibility in fine-tuning the automatic deformation of a vMuscle. You can control the degree of stiffness at each end of a muscle - to simulate tendon at each end. We have also integrated an analytical, real time solution for static forces - like gravity. There is also the bony collision - with cylindrical bones. The static forces - gravity and collision - have almost no impact on performance. They also work properly with the tension and fibrous structure of muscles - so you get more side-to-side motion and less end-to-end motion. The results are very realistic… and they run in real time!

Real Dynamics - muscles that flop and jiggle about.
We have also put in a "preview" dynamics system that gives very believable muscle dynamics. Muscles will jiggle much more sideways than along their length. They will also move faster and less when the muscle tension goes up. The dynamics is also extremely fast - you get realistic soft object dynamics - with gravity and collision in real time! But this is just a real time preview system - to get the awesome performance we have we had to make the dynamics work with the static forces and collision on a frame by frame basis - there is no need to pre-calculate anything! The downside is that you have to play the frames in sequence. If you want to network render (where individual frames are sent to different machines) then you will have to use the Max Point Cache modifier to "capture" the dynamics correctly.
Skin deformation - skin sliding over muscles and bones.

Speed and brand new ways of working. That's what it comes down to. We had to implement a whole skin deformation system and package it up as a single Max modifier! Like the muscle dynamics engines there is not one right way to deform the skin and lots of different ways you would like to deform skin. For this reason there are two complete categories of skin deformation engines in the vSkinDeformer modifier system - 3D and 2D deformers. Again these are plugins to the modifier so we, and others, can quickly add more. ACT 1.0 comes with 4 different 3D deformer and 2 2D deformer engines.

We needed to make the vSkin deformation system very powerful and flexible - there is also a lot of user interaction and user interface with this system. The first thing to note is that it's not just muscles that we have deforming the skin - it's bones, fat and connective tissue - vMuscles are great for creating all of these. For instance when we animate the face we mainly create bones from vMuscles for the skin to slide over. We made sure that deforming skin to slide over muscles is very fast and works very well - this is aided because be know so much about vMuscle structure - vMuscles are really parametric solids that are resolution independent.
Because the skin deformation system is so broad we added deformation engines for spheres and general meshes also. Spheres, especially squashed spheres, are very useful and fast to use as bony knobs and other skin deformation objects. We also added the ability to offset the skin from the deforming objects so you can simulate skin thickness and underlying layers of fat - and everything is animatable.

2D skin deformation - skin sliding and stretching.

When we started doing realistic character animations with muscles and bones sliding under the skin easily we discovered that the next problem we wanted to address was just how the skin stretched around joints. We wanted a way of accurately, and manually, controlling the exact degree of skin stretch and slide - without affecting the beautiful deformation we had over muscles and bones. So we invented a way of moving the vertices of the skin within the 2D surface of the skin itself - as long as you have a fairly smooth and decent UV mapping for any area of skin then the 2D deformation engines will let you set up automatic (or manual) skin stretching and motion. There is also a 2D relax that smoothes out uneven edge stretching by sliding vertices within the skin surface!
This ability to move and slide the deformed skin is also great for doing animations of skin twitching and pulling - like you see in a horses rear when it twitches.

A whole Skin Deformation pipeline.
The vSkin Deformer modifier is a complete deformation system pipeline. The deforming objects and 2D deformations are applied in strict order. You can also choose exactly which part of the skin any deformation stage applies to - this is required for some deformation stages like the 2D methods and will also generally speed everything up. You can also specify offsets for all the 3D stages.
With all of these options and the prospect of having 10's to hundreds of deformers for a complex character skin we had to come up with a completely new user interface. In the vSkinDeformer interface you can group deformation nodes together, they are color-coded, you can turn them off and on and move them around. There are tree, spread sheet and property views all combined into one efficient interface - that is totally different from anything else you will have seen in Max or Windows!
Designed to integrate into current workflow.

Being animators ourselves we were acutely aware that ACT had to fit into the current way character animation worked. It had to be available as an option to enhance current character animations - with the flexibility to add just a little or a lot of additional realism easily… Without significantly altering the way you work at present. This is one of the main reasons that the vSkinDeformer does not include a full transform blending system to replace current skinning systems. You keep using whatever skinning system you like and add ACT's vSkinDeformer on top of that - adding the subtly of muscle and bones moving under the skin to your existing animation methods.

As you use ACT more and more you will want to modify the precise way you do character skinning - Character skinning can become much easier and faster as you rely on ACT to both correct and add more realism to your character's skin motion. But you don't have to change anything you are doing - you can even set up your production pipeline so that ACT features are turned off for previews and early work and are switched on as you require.
There are some technical and performance advantages to be gained if we rolled a full skinning system into the vSkinDeformer - but current systems work quite well for what they are intended to do and our interface would become much more complicated if we rolled everything into one. We will look at doing this in a future version - perhaps reading in Skin or Bones-Pro files as an interim step - so you would just use them to set up your base skinning and then import that into ACT's vSkinDeformer system for better performance and improved overall quality.

Some really strange uses for ACT.
We have had some great fun with the new vMuscles and vSkinDeformation systems - We routinely use vMuscles to model bones for characters. But there are some truly amazing things you can do that are very hard with any other software - Like making rubber hoses for engines, or robots or whatever. These are almost trivial to create and animate with vMuscles - you can easily have them vibrating with the built in dynamics! Doing dents and other surface type deformation special effects is also very easy with ACT. We also routinely use vMuscles for modeling all sorts of things now - creating the torso, face, arms and legs of characters for instance. Not only are the vMuscles sub-object modeling tools very powerful but you also get excellent mapping and resolution independence. We then convert to editable poly, mesh or NURBS (vMuscles can be converted to NURBS surfaces because they are parametric - like NURBS surfaces) and join the bits together.

Mark Snoswell. Jan 2002.
The ACT Development Team:
Gonzalo Rueda The most awesome Max programmer ever.
Jeff Lim The fastest programmer creating the fastest code ever.
Tim Jones Character animator extraordinaire.
Helen Snoswell. MaxScript programmer, web, accounts, wife and mum.
Mark Snoswell. Designer and programmer - yes he does some "real" work too.

 

Copyright © 2003 | cgCharacter - All rights reserved
No part of this website may be reproduced unless for personal use without prior written permission from cgCharacter