3ds max vs. maya

there’s a very interesting discussion going on over at autodesk’s area where users are comparing 3ds max and maya. luckily there’s not much of the usual flaming going on and most of the comments try to be objective, so it’s definitely worth reading if you want to compare the packages from a user’s perspective.

Posted in 3DSMax, General, Maya | Tagged , , | Leave a comment

orienting joints

orienting joints of a skeleton after positioning them in a character’s mesh is extremely important. without double checking them you’ll experience a lot of troubles as soon as you are playing around with your rig. theoretically if you don’t edit a skeleton at all, you don’t have to orient the joints since the rotation is set automatically when creating them, but this practically never happens: you’ll always edit your skeleton somehow, so fixing or checking the local orientations of all joints is a must. die-hards can still orient all the joints manually by selecting all joints, displaying the local rotation axis (display > transform display > local rotation axis), accessing component mode (f8), switching the miscellaneous selection mask in the status bar to local rotation axes (right-click on the ‘?’ icon) and then rotate each joint step by step. nowadays maya offers a little helper: skeleton > orient joints.

i prefer to have the y axis going down the bones – just because you’re used to this in maya when you are for example rotating an object around the y axis and you know exactly what this means. how you want to orient the z and x axis is just up to you – you just should stay consistent and this command will help you to do this. after orienting you can see that the last joint (e.g. at a finger tip) is still not orienting correctly, but that doesn’t matter since a end joint doesn’t have to control an attached bone.

another interesting way is to create a completely new skeleton by just point snapping (v) new joints to the old skeleton (which you’re happy with but didn’t orient the joints yet). this way you create a fresh new skeleton you’re not going to edit so the rotation of all joints are (automatically) perfectly fine. don’t forget you shouldn’t click on the first joint of the old skeleton else you’ll attach the new joints to it. instead, just click a little next to the start joint and because you have point snap on, it will still snap to the joint, but not attach the new bone structure.

p.s.: for those who are confused by the standard tool maya offers, rigging god jason schleifer wrote a little script many years ago which is still just a tad clearer than the standard tool. his mel script is called jsOrientJoint (nomen est omen) and fulfills the task really straightforward. grab it here as i couldn’t find it on any download site any more.

Posted in Maya, Tricks | Tagged , , , , | Leave a comment

replacing shape nodes

you may ask what’s the advantage of replacing shape nodes in maya since it doesn’t make sense in the first place. but doing so can be enormously helpful when you need to access specific joints or clusters in a rig so they can serve as controls to be accessed easily. the following example explains it:

create 3 joints in one row in an orthographic view. now create a nurb circle and point snap (v) it to the middle joint. rotate the circle by 90 degrees so that the bones are going through it. with the curve being selected, do a freeze transform and parent it to the middle joint (not vice versa, else you’ll break the parent connection from one joint to another!).

freeze transform again and now comes the tricky part: be sure your circle is still selected and launch the hypergraph; assure that shape nodes are displayed (options > display > shape nodes). press f (to focus to your selection), select the shape node of circle and shift select the joint.

hypergraph showing 3 joints and a circle node

now throw a mel command in the mel command line:

parent -r -s;

to clean up, you may delete the transform node of the circle – you don’t need this anymore.

the middle joint offering a circle as a shape node

you’re done; what happened? the circle is now the shape node of the joint and selecting it (e.g. from outside a character’s skin) equals the selection of the joint itself.

circle shape node for joint

the same procedure can be followed with clusters or any other geometry. this is especially useful fur a spine rig where you don’t want to access the small clusters c’s in the character themselves but an easily accessible control. this trick should definitely help making your rig more animator friendly.

last but not least: michael comet has a nice little mel script collection, one of them (wireShape) creates simple shapes like arrows, bulbs etc. to be used as controllers. go grab it and install it in your scripts folder, there are several other very useful little helpers in his collection.

Posted in Maya, Tricks | Tagged , , , , | 1 Comment

problem geometry? try obj export!

they happen eventually, for sure: these famous ‘mysterious’ problems. i had this case lately – whenever i wanted to select the mesh geometry of a character i’m working on, maya crashed! it worked perfectly fine before… and this all on a friday evening. if you’re still able to load your mesh but can’t do anything with it, there’s some last hope: export your geometry as .obj file (you may have to activate the plugin called objexport.mll within the plugin-manager) and re-import it. the obj exporter has the positive tendency to clean up and there’s a very high possibility that your geometry works perfectly fine again (in my case it did, at least).

Posted in Maya, Tricks | Tagged , , , | Leave a comment

check list to save rendering time in maya

here’s a check list to go through in order to save rendering time:

  • render attributes: be sure you don’t have any unnecessary render attributes activated (shape node: render stats > cast shadows, receive shadows, motion blur, primary visibility, smooth shading, visible in reflections/ refractions, double sided).
  • tesselation (nurbs): check the tesselation of every nurbs. very often they’re set too high and will cause render time go through the roof (shape node > tesselation > simple tesselation option > u and v divisions factor). often ‘buest guess’ helps so maya takes care about the required tesselation.
  • surface materials: check index of refractions, reflections etc. be sure you don’t use too high values as they are one of the most time consuming elements to render.
  • clipping planes: change the clipping planes the way that they just show the things you actually want to have rendered. don’t just increase the planes to insane values just to make sure everything can be seen at all times. keep in mind that if you use high values in far clipping plane, you should also tweak the near clipping plane, e.g. 0.1/1’000, 1/10’000, 10/100’000 etc. else you’ll run into strange display problems.
  • render settings: double check if you have set global settings correctly – e.g. if you don’t need any reflections, just turn off the raytracer.
  • light links: link all lights to the objects you want to have lighted, don’t just throw in dozens of lights not caring about their influences!

use the attribute spread sheet if you have to change many attributes at a time (window > general editors > attribute spread sheet). invest these minutes whenever you do your final render – they’re worth it. while keeping your script window open, go to render > run render diagnostics and check out the results maya will spit out, they are sometimes very helpful.

Posted in Maya, Rendering, Tricks | Tagged , , , , , , , | Leave a comment

creating blend shapes after binding your character

usually, the head’s blend shapes of a character are done before the binding process. there’s a way that allows you do this after binding, it’s quite straightforward: select all faces to be used for the blend shapes of your character’s head, duplicate them and move the shape outside the head and color it with some distinct color (just to be prevent a false selection). name this shape buffer_head and blend this shape back to the original head. if needed, add also eyes, teeth etc. to this buffer_head and group the objects (be sure you don’t change the group order as it will break the blend shape functionality). turn off all the unnecessary attributes of the buffer_head because you don’t want it to render at all. increase the blend node to 1 so that all changes to buffer_head are always visible in the original.

you can now export the buffer_head as a reference and blend all your face expressions into the head in the new scene. there’s an additional advantage behind this process: when animating you don’t need to go to the character’s original face all the time and change its expression, but you can just put an additional camera in front of the buffer_head and call it face_cam. just activate this face_cam whenever you want to change the character’s face and it will be reflected into the original this saves you some minutes everyday when animating.

Posted in Maya, Tricks | Tagged , , , , | Leave a comment

mirroring blend shapes – impossible?

whenever you’re into creating a bunch of blend shapes for example for a face, you may wish to mirror certain face expressions instead of having to do the tedious and time-consuming work of moving around vertices again (and try to reflect the same mesh deformations on both sides of the face).

but you can’t just copy a shape and mirror (negative scale) it as the vertice numbers stay the same; the mirrored shape doesn’t change the other side of your base object when you scrub the channel attributes – the exact same side again is blended as if your blend shape is still the same even if it looks different in the viewport. so in a first thought it may sound impossible to save time this way and you’d go back to the manual work. but there’s a solution which really works fine.

there’s no specific hidden command to accomplish such a task but there’s one interesting workaround which is based on the nature of wrap deformers that work proximity based and not like blend shapes vertice number based. this production workflow helps you to speed up your blend shape production a lot since you only have to do the shapes of one side of the face.

to explain the solution, simple cubes will be used:

create a cube and call it base. this is the cube which the blend shapes are going  to be blended into. duplicate the cube and call it for example lift_l since you now lift up the 2 left side vertices up some visible distance. blend this lift_l shape into the base and test it to make sure it works fine (animation > create deformers > blend shape/ default settings).

now again: you can’t just negative scale (in component or object mode) this lift_l shape and expect that this new blend shape would work correctly, just because the scale doesn’t change the vertice numbers. e.g. vertice number 3 of lift_l moves vertice number 3 of base etc., that’s good but the problem at the same time. so make a duplicate of the base cube and call it blend_cube and another one with the name mirror_cube. as blend_cube and mirror_cube look exactly the same it is advantageous if you color both shapes dstinct so you don’t mistake the one for the other; let’s take yellow for the blend_cube and purple for the mirror_cube (just take two different lambert shaders).

now blend lift_l into the blend_cube and negative scale it (usually x=-1) to have a mirrored shape. now the tricky part: select mirror_cube, shift-select the blend_cube and add a wrap deformer (animation > create deformers > wrap/ default settings). set lift_l of blend_cube to 1 so you can see the deformation (don’t do this before the wrap!). now you can instantly see how base is being deformed on the other side. base has now correct blend attributes for both sides.

mirror blend shapes

if you experience the problem that the mirrored blend overrides the first blend, delete the blend nodes of base and re-add the blend by shift-selecting lift_l, mirror_cube and base, then add the blend, but this time with the options: in advanced, set the deformation order to parallel.

with this setup you can now mirror all available shapes through this pipeline: select any shape, blend it to the blend_cube and blend the result back to the base. with this pipeline it should be obvious now that you can save a lot of time.

p.s.: as always – thanks to greg berridge, mr. know-it-all and head instructor at vfs for his fabulous tricks.

Posted in Maya, Tricks | Tagged , , | 4 Comments

ascii just saved my life

some minutes ago i was in a desperate mood: i just couldn’t open a certain maya file anymore, it just crashed right at the time when i tried to open it – did i lose all my work of the last few hours? the reason was that i accidentally entered tesselation values for a nurbs element far too high as i just wanted to go from 4.500 to 5.000 in the u and v divisions factor but i entered 500 and just saved my file (doh!). this incredibly high value caused my file to be unloadable but there was a tiny little hope left: since i save all my work in maya’s ascii format i just loaded the .ma file in a simple text editor, searched for “.nufa” and “.nvfa” and changed the values back from 500 to 5, saved and loaded the file in maya again. and look there! it worked. ascii just definitely saved my life! so i really recommend everyone to switch to the ascii format, too. it has such a lot of benefits to offer.

Posted in Maya, Tricks | Tagged , , | Leave a comment

creating a rim shader in maya

using the sampler info utility in maya (hypershade) allows you to receive information about the shading on a point of a surface; so if you want to create a rim shader in maya connect the facing ratio of a sampler info utility to a the vCoord of a ramp (black to white, smooth) and the the ramp’s outcolor to the ambientColor channel of a material (e.g. blinn). the result is a nice rim shading great for a cartoon-like skin. this way you can also do x-ray effects (by connecting the outcolor to the transparency of the object).

rim shader sample

or you just pick up the nice rim shader from autodesk’s area offered by miguel santiago which offers quite a high degree of artistic control without adding any lights to your scene.

Posted in Maya, Tricks | Tagged , | Leave a comment

spline ik setup for the spine

while going through all the different rig setups of my character, the spine needs specific attention, too. later on, i’ll dig into a full rig, but for now i just want to note down certain parts in order to take a more concentrated look at problems you may encounter.

set a series of bones right above your center of gravity (cog). the start joint (which i named spineBase_jnt, spine01_jnt etc. and the last one spineTop_jnt) should not be the center of gravity itself else you won’t have enough control over it: since we’ll use the ik spline solver, the cog wouldn’t be controllable on its own as spline ik’s can only be controlled through the generated spline itself (unlike regular ik controls).

now set the spline ik by going to skeleton > ik spline handle tool and selecting the lowest joint first and the topmost one afterwards. now a spline should be visible which can be adjusted in component mode (f8 and then moving the control points around). as you don’t want to animate your character’s spine with just those cv’s, clusters are necessary (a cluster is a deformer in maya which gives you control over a set of cv’s). create a cluster for every cv (animation > deform > create cluster), they’ll appear as a ‘c’ icon which you now can use as control. be sure you set the creation mode to relative else your controls will not follow when transforming.

that’s basically all you need. here are some optimization proposals:

  • if you’d like to have a cv for every joint (which i personally like), just rebuild the curve (edit curves > rebuild curve) and add/ remove as many spans as you require. be sure you’re in object mode when rebuilding the curve.
  • if your cv is very near to the spline curve it may become near to unselectable. turn on the display handle of the cluster in the attribute editor and enter transformation values in the according entry fields. the handle now resides outside and is much better selectable.

Posted in Maya, Tutorials | Tagged , , , | Leave a comment