[ MUSCLES 4.1 ]

This screenshot is from my own WIP rig i'm still working on ( just another boring stylised superhero character ). To be honest, the main rigging and skinning still lies ahead.
If you think the rig is too clean, check [ HERE ] to see that the world is not that perfect.
This screenshot is from rig used in commercial project. At present i have no permission to show the character's geometry.
[ TOP ]


The application of muscular systems for the aims of CGI was ( and still is ) a priority mostly of the big film studios working on huge projects. But times are changing and the number of CGI artists and developers that are looking for new ways of building them ( musclular systems ) is increasing. It's a complex task as a whole and there hasn't been found yet a good decission for mass use that would be giving good results.

My opinion is that computer graphic and animation do not need muscular systems which give exact physical models of real muscles behaviour for they themselves are a visual illusion ( computer graphic and animation ).

I see the appropriate decission for mass use to have several basic qualities:
- first and most important - muscles have to preserve the body bulk when folding, unfolding and twisting limbs and torso. This is mostly important for shoulders/armpits and pelvis/thighs.
- reliability - to firmly "hold" the binded geometry;
- relatively simple realisation and easy at work - to use if possible the available instruments for muscle creating;
- flexible structure permitting easy coping with arising problems and quick adapting to different body shapes ( biped, quadruped, invertebrates, etc. );
- automated process of creating and editing that enables building in of muscular systems in numerous virtual characters during a relatively short period of time.

[ TOP ]


1. root - in fact this is a NURBS curve, it's CVs translation is controlled by the cross-sections translation, i. e. with the help of cross-sections, root is deformed. Because of that it's not a good idea to rebuild root or new CVs to be added to it - these acts will destruct muscle's structure.
2. cross-sections - these are NURBS curves, which manage root and envelope's deformation. Their shape can be changed with the help of their CVs. New CVs can be added or they ( cross-sections ) can be rebuild if necessary, which allows the creation of precise muscles.
3. envlope - could be polygonal or NURBS surface. To maintain envelope's dependancy on cross-sections, its construction history shouldn't be erased. This part of muscle structure is used as smooth skin influence, geometry based sculpt deformer, wrap deformer and any other deformer type. Also collision object for dynamic skin.
4. distance controller - it is used for calculating roots/cross-sections deformations, depending on its length ( of the distance controller ).
5. distence controller's locators - control the distance controller's length.
6. length controller - it is used for calculating cross-sections deformations, depending on the root's length.

Each root and cross-section has a group of extra attributes, which control specific muscular characteristics. The table below contains a brief description of each one of them.
Bulge ( X Y Z ) -  Determines size (velocity) of change of root/cross-sections scale.
Base Scale ( X Y Z ) -  Controls basic scale of root/cross-sections.
Min Scale ( X Y Z ) -  Minumum scale that can be reached by root/cross-sections.
Max Scale ( X Y Z ) -  Maximum scale that can be reached by root/cross-sections.
Base Distance ( X Y Z ) -  Distance between distance controller's locators at which root/cross-sections take their basic scale.
Min Distance ( X Y Z ) -  Minimum distance between distance controller's locators that influences root/cross-sections scale. It means that, if the distance between these locators becomes smaller than the value of Min Distance, then root/cross-sections do not change their scale any more.
Max Distance ( X Y Z ) -  Maximum distance between distance controller's locators that influences root/cross-sections scale. It means that, if the distance between these locators becomes bigger than the value of Max Distance, then root/cross-sections do not change their scale.
Distance Multiplier ( X Y Z ) -  Determines how strong will be the influence of distance between distance controller's locators on the root/cross-sections scale.
Base Length ( X Y Z ) -  Determines the length at which root, cross-sections take their basic scale.
Min Length ( X Y Z ) -  Minimum length of root that influences the cross-sections scale. It means that, if length of root becomes smaller than the value of Min Length, then cross-sections do not change their scale any more.
Max Length ( X Y Z ) -  Maximum length of root that influences the cross-sections scale. It means that, if the length of root becomes bigger than the value of Max Length, then cross-sections do not change their scale any more.
Distance Length ( X Y Z ) -  Determines how strong will be the influence of root length on the cross-sections scale.
Length Offset -  Facilitates positioning and animation of the length controller's handler.
If Bulge > 0 and Base Scale > 0, the muscle behaves like a real one. For example, when folding the hand, biceps widens.
If Bulge < 0 and Base Scale < 0, then behaviour of muscle is opposite to that of a real one. For example when folding the hand, biceps contracts.
[ TOP ]


This muscular system offers three basic ways of using it and dynamic skin and/or dynamic muscles could be added.



This is the basic working method when building even working muscular system with high quality.
The idea here is to use muscles as geometry based smooth skin influences. This enables the bind geometry to "act" firmly and to be controlled precisely by them. In other words, how mutch skin surface will be attached to every particular muscle and how strong will be the muscle's affection.

After the skin weights have been adjusted, there are usually no unpleasant surprises on some of the stages that are to follow.

It seems many artists underestimate the strength of the geometry based smooth skin influences, but according to me it's the main precondition for building realistic and safely working character rigs. This method secures a solid base to which almost without any problems could be added extra deformers, extra controllers, dynamics, etc.

In fact as everywhere else there are also some refinements. After a long period of wandering I seem to have found the appropriate working formula:
- it is not necessary to build exact physical muscle models, it would be enopugh to create only the contacting surface of the muscle with the skin. This reduces the number of muscular CVs/vertices and thus the smooth skin cluster's performance is improved.

- it seems much more adequate for the muscles to lightly influence the binded geometry at the expense of its bigger transformation. For example if a vertex can be influenced by 2 joints and 1 muscle then let the muscle influence share be 0.2 and the rest 0.8 to be distributed between the two joints. In case that a vertex is influenced by several muscles let their total influence not to exceed 0.3 - 0.5. Saying this I have in mind the fact that it is much easier to adjust and correct the muscle transformation than the skin weights.
Deltoid - this is one of the most important and difficult to adjust muscles. It creates lots of problems at lifting and twisting the arm - that's why the weghts painting has to be extremely presise and as a whole the influence of this muscle has to be stronger than that of the bones in the shoulder area. Using the muscle as a sculpt deformer enables the adjustment of this zone.
Pectoralis - the weights painting is not a problem, just work with small skin weights and eventually use the muscle as a sculpt deformer because of the
great loss of bulk in some extreme postures.
Infraspinatus / Latissimus Dorsi - use small skin weights at the expense of great muscular deformation.
Gluteus - at folding thighs and pelvis a significant loss of bulk occurs. So pay a particular attention to this muscle. Most probably it might be necessary for it to influence greatly the binded geometry. Do not hesitate to apply to it great deformations.
When folding the knee a group of bones and muscles with specific shape is formed under the skin that is difficult to create. So in addition to the muscles use sculpt deformers and/or blend shapes and/or extra joints. The precise skin weights painting in this case is of great help.

The above said are only references of course - it is quite probable that sometimes the muscles influence could be greater than usual but let it be mostly in cases when bodies with massive muscles and/or subcutaneous fat are placed in extreme postures.
Do not hesitate to apply really great deformations to the muscles, no matter that they do not look well at time of animation, important is only the resultant influence on the binded geometry.

The negative side of this method is that a really precise weights painting has to be used.



With the second approach the muscles are used as NURBS geometry based sculpt deformers.
My opinion is that this method is not reliable enough for serious projects, I myself have never used it in my work and I don't think that would ever count on it totally. But it might be a good decission for simpler muscular systems that aren't going into extreme postures and has to be built in short terms.

The method offers two basic advantages:
- sliding effect of the skin along the muscles;
- the prolonged period of skin weights painting can be avoid which as a whole is a serious advantage.

Also there are few disadvantages, arising mostly from the requirements of Maya for the geometry used as sculpt deformer:
- the building of much more precise muscles is demanded. Form, deformation and position has to be to a great extent adequate to the real ones. If not when in some extreme postures their reaction won't be the right one and geometry would "slip away" from the sculpt deformers;
- the starting and ending cross-sections have to be with zero size ( sx = 0, sy = 0, sz = 0 ), which means that each muscle will have 2 extra cross-sections, which increases the number of manipulations for "hooking" them to the skeleton. And besides each muscle used as a sculpt deformer must have a convex shape;
- for all sculpt deformers will be needed precise adjustment of maximumDisplacement / dropoffDistance attributes. In most cases the safe way is to set them to 0. The main reason for all these advices is the fastidious nature of the sculpt deformer. Why that you must be very carefull with the muscle shapes and the sculpt deformer's attributes. Also, another reason is, if muscles ( sculpt deformers ) + sculpted geometry are far from the world origin ( for example tx => 2000, ty => 2000, tz => 2000 ),
- the direction of the surface normals of each muscle's envelope has to be taken into consideration for this would be the direction into which it is going to displace the geometry.

The pictures that are to follow will enlighten these requirements and restrictions:


RIGHT: closed end crossSections;
RIGHT: convex shape;
RIGHT: correct normals orientation.

 WRONG: opened end crossSections;
: convex shape;
 RIGHT: correct normals orientation.
RIGHT: closed end crossSections;
: convex shape;
WRONG: incorrect normals orientation.
 WRONG: the shape is not convex;
The geometry based sculpt deformers are little buggy, why that the ends of the muscles must be as smooth as possible. In fact the best thing is to push them inward, so they dont affect the geometry at all. Otherwise a poping vertecies can occur.
this is the bad guy
this is the good one


The third method is a combination of the above two, e.g. muscles are used as geometry based smooth skin influences and as NURBS based sculpt deformers.

The advantage here is that the geometry is held tight by the muscles used as smooth skin influences ( as i mentioned above: controls how mutch skin surface will be attached to every particular muscle and how strong will be the muscle's affection ) and using them at the same time as sculpt deformers enables preserving the body bulk at extreme postures, creating in addition sliding effect of the skin along the muscles under it. Of course it is not obligatory that all muscles should be smooth skin influences and sculpt deformers. By means of "test - mistake" the "recipe" for each one of them could be found.

For simulating ( and controling ) of the above mentioned sliding effect it is necessary for the muscles to have a greater influence as sculpt deformers than as smooth skin influences.

I myself apply this method to the areas of the armpits/arms and pelvis/thighs but only if the limbs are going to suffer really great twisting.

This approach is rather labour-consuming compared to the above two, but the results are really good.

[ TOP ]


It has been a preffered topic lately, but in my opinion using dynamic rigs in small and medium size projects is more like science-fiction. It's a fact, that most artists don't see how deep and serious a task it is and what a great amount of difficulties has to be overcame before reaching any kind of results.

My only advise is - use dynamics only in extreme cases where quality is first priority.



For recreation of dynamic interaction of skin and muscles together with their specific dynamic characteristics like flexibility and inertia, is applied soft body or cloth simulation onto the binded geometry. This brings a sagnificant betterment of visual quality but the process of adjusting the dynamic parameters is long and difficult.

Soft body - the idea here is that the combination of soft body and smooth skin cluster is working stable. As a rule, every virtual actor has 3 geometry layers ( animation proxy, binded geometry and render geometry ). It is a good idea soft body to be applied onto the binded geometry and not onto the final render geometry - this speeds up considerably the dynamic simulation and at the same time preserves the same quality of results. Of course, the muscles will be used as collision objects for the soft body's particles. After that, everything is PP attributes painting/tweaking and collisions adjustment.

Cloth - we know that the dynamic model of the real skin is much like this of cloth materials. That's why it is suitable to use cloth simulators for recreating dynamic skin. Maya's native cloth solver and Syflex Cloth Simulator offer reliable means for that purpose. Each one of them enables painting properties straight on the surface of the cloth object ( the binded geometry ). It gives a considerable control on the final result. The muscles, again will be used as collision objects.
As a whole Maya's native cloth solver is more precise and yet more slow and difficult to manage. Syflex Cloth Simulator is much faster and easy to use.

Here are some basic problems connected with the application of dynamic skin:
- in many cases will be needed very precise recreation of muscle and bone structure;
- replaying and caching of dynamic simulation has to be carried out for any scene containing virtual actors with dynamic skin;
- when making quick movements of the virtual characters supersampling is required e.g. computing of dynamics at subframe level or else the dynamic skin would react incorrectly. This considerably slows down the replay of the simulation and costs also a much greater amount of cached data and at the same time there's no guarantee that it would help with some really extreme movements;
- no matter how high the quality of dynamic skin setup is, almost always is needed extra secondary control at places where dynamic simulation has produced bad deformations. It is done by baking of dynamic simulation on geometry shape level, after which again are used smooth/rigid skin clusters or other deformers for applying corrections.



This is the preffered by me method for recreating dynamic interaction between skin and muscles - it's quick, easy to realise and control is secure.
The idea here is to use muscles as smooth skin influences and sculpt deformers and to apply soft body to their intermediate cross-sections. The main part here belongs to soft body's massPP and goalPP. In some cases, if a quick transformation of muscles is needed into different extreme postures, springs are used to compensate the unwanted deformations.

Creating of dynamic muscles in fact means the marked intermediate cross-sections of muscles to be converted into soft bodies.
In conclusion I would mention that with this method replaying and caching of dynamic simulations is done quickly, the amount of cached data is small and rarely an additional control is needed.
[ TOP ]


Let construction of muscular system be not a goal in itself, generally speaking they are not needed. Use them only in situations where are really needed and mainly in areas where only binding to joints/transforms is insufficient. Such areas are usually shoulders/armpits and pelvis/thighs.
Do not make things complicated, keep to the formula: less advanced technologies = less problems = better results in a short period of time. For me at least it really works.

Muscles won't help you finish your work quickly. They will help you do it better, but only if you devote to it sufficient time and great effort. And let's not forget the "hard" testing ( and I really have in mind HARD TESTING ).

Don't be quick at setting on fancy third party deformers before using up all instruments from "stock-in-trade". In most cases the external plug-ins bring more trouble than help - especially when there is a big render farm.

[ TOP ]


Basic concepts behind the muscle rigs

Some advanced tips and tricks ( still on the work table for now )

[ TOP ]

Muscles 4.1 Public Edition
There are two main differences bethween the "Public Edition" and the original toolset:
- in the original version, the computations of the muscle components are accellerated with C++ code;
- a set of the powerfull ( but very pipeline specific ) functions, regarding creation and manipulation of muscles in batch mode, are not included in the public version.
[ TOP ]