creating a reverse foot lock system

i’m at the stage if rigging the character (lt. lou) i created for my upcoming short and oh yes, this means high brain activity. but you know what? i like it as a working rig is the portal of making your creations alive and free. or in other words: first the very tough work, then the big fun. to start the process, here’s the creation of a reverse foot system in maya:

set the bones in the following order: hip, knee, ankle, ball, toe. this is the ‘classic’ setup of a human-like leg which my character does have, even it’s quite a short one as you’ll see at later stages of my work. name your joints (i’ll do hip_jnt, knee_jnt etc.)!

reverse foot lock system: setting the bones

now add a ik rp solver (skeleton > ik handle tool with ‘ikRPsolver’ (rp = rotate plane) as current solver; rotate plane is great as it offers a ‘twist’ option) by clicking on the hip joint and then on the ankle joint. let’s name this ik control ankle_ik.

creating a reverse foot lock system, setup the ik

add a single chain solver (‘ikSCSolver’, sc = single chain) from the ankle to the ball and name it ball_ik. add another sc solver between ball and toe and name it toe_ik.

creating a reverse foot lock system, setup further ik

it’s time to set up the reverse foot lock now: create a new series of bones with the joint tool starting a bit away from the ankle, then to the toe, back to the ball and a finishing step to the ankle. name the joints (rfFootLock_ctrl, rfToe_ctrl, etc.). these bones don’t necessarily need to be on top of the first bones, so move them a bit down if you don’t want to get confused and to see them more clearly).

creating a reverse foot lock system, controls

parent ankle_ik to rfAnkle_ctrl, ball_ik to rfBall_ctrl etc. after these steps you should be able to control the whole foot with your rfFootLock_ctrl.

finished? not yet: add a locator in front of the knee joint, name it knee_ctrl and create a pole vector by selecting knee_ctrl first, then the ik handle ankle_ik and choosing constrain > pole vector. instead of a locator you can also use a nice curve representing a knee cap or anything which offers more visual information about the rotation about the knee cap when animating. play around with rfFootLock_ctrl to test your reverse foot lock system and to see why it’s advantageous to create such a setup: it simplifies the task of animating the leg/ feet a lot.

if you have troubles with your setup, always go through the following check points:

  • did you position your joints right (do it in a side view, never in perspective!)?
  • are all joints orienting the right way (every joint should orient to the following bone)?
  • everything frozen (freeze transform joints in the default position)?
  • naming (name your stuff so you don’t connect the wrong objects)?

some additional notes:

  • when setting up the bones, be sure you don’t set them perfectly straight as this will confuse the solver (else you’d have to define an angle through ‘set preferred angle’ manually). just add a little bend and maya will set a correct ik solver.
  • if you have incorrect orientations of your joints, try orient joint available at skeleton > orient joint or do it manually (which is often the best and most controlled way to correct rotations).

Posted in Maya, Tutorials | Tagged , | 2 Comments

The Rollercoaster Problem

The roller-coaster problem – a nice name for a problem you may encounter using motion paths in Maya. Named and explained by my Maya instructor Greg Berridge lately, I hereby note down the solution offered.

First, the problem: Draw a curve (using the EP or CV curve tool) which looks like a roller-coaster loop (hence the name) from the side view in Maya.

rollercoaster loop

Now create an object which has a clear top/ down topology in order to see the problem you’re going to encounter (e.g. air-plane, not a simple ball/ sphere). Select the object and the curve and create a motion path (animate > motion paths > attach to motion path, default settings are fine). You may have to correct rotations of your object by selecting the curve and going into the motionPath1 tab of the attribute editor: tweak the front/ up axis/ inverse up etc. there if required.

Now play through the frames and all looks as expected – except one issue: the air-plane flips in the loop twice, which you definitely don’t want.

the flipping

So, here’s the solution: create a second curve inside the first one. the easiest way is by just offsetting the first one: select the first curve, then Edit Curves > Offset > Offset Curve (be sure you deactivate “cut loop”). Here’s what you should get:

second curve for rollercoaster

Now create a locator, select the new path and make a motion path again. Double check if the locator follows the path when playing through your frames. To finalise, select the air-plane and change world up type to “object up” and type in “locator1″ in the now editable field at world up object. The air-plane shouldn’t flip now any more.

no flipping any more!

This solution may help you to solve a lot of other troubles using motion paths. the more I dig into animation, the more I know: locators are the animator’s friends.

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

renderman’s micro-tesselation

since i’m allowed to use pixar’s renderman for my upcoming short to be released by the end of this summer here at vfs, learning this legendary rendering system is a must since i don’t expect that i’ll have much time left at the end of the production in june. so i’ll post some research & development notes about my experiences with renderman here rather regularly.

in this blog post, i’ll start with one of the first things i encountered in renderman that are special: the micro-tesselation available for polygonal objects (down to 1 pixel!). as i’m used the crank up the tesselation of polygons and smoothen out the normals i’m surprised to see that this work is not necessary with renderman; well, at least not to the density of the tesselation i’m used to go. sounds weird? here’s what i mean:

take any polygonal object and go to its attributes and be sure you have your shape node (tab) activated. go to attributes > renderman > subdiv scheme, now a new attribute called extra renderman attributes should appear in your attributes window. by default it’s set to catmull-clark which works fine for quads: if you have tris, try loop as subdivision scheme.

shoe rendered with renderman

this is what i get if i render my upcoming character’s shoe (lt. lou) with renderman, micro-tesselated with subdiv scheme catmull-clark. you can also set the scheme to none again, if you want to have the ‘usual behaviour’ (like when you use maya software as renderer).

so this basically means i can save the step of tesselating my object too far and can do my high-quality animation render this way. this also speeds up my animation work a lot when i’m digging into my graph editor and my now very perfomant viewport doesn’t have to update too many vertices.

Posted in Maya, Rendering | Tagged , , , | 3 Comments

comparison of 3d tools

which is the best 3d tool?” – a question which can not be answered as it totally depends of what and how you want to achieve your goals. check out the detailed comparison available on the wiki of cg society to understand why some animation studios pick up different packages to model or render (e.g. compare the supported renderers of 3ds max and maya). i especially miss the pelt mapping possibility in maya which impressed me a lot since it has been introduced in 3ds max. i hope this list will be kept up to date since the features offered in new editions of the software packages change in an increasing rate.

Posted in General | Tagged , , | Leave a comment

rendering wireframes (again)

i was writing about rendering wireframes in 3ds max quite a while ago and the solution offered by using a special mental ray shader works in maya, too; because maya now also has a built-in mental ray rendering system. there’s another way i recently discovered: use the maya vector renderer - but this one has a disadvantage, too: it renders surfaces with triangulated faces. so if you plan to keep the faces quadriliteral, use the hardware render buffer window:

choose window > rendering editors > hardware render buffer. in the window opened select render > attributes (the name of the tab should be defaultHardwareRenderGlobals). jump to the render modes section and change the draw style to wireframe. do a test render: if you’d like to change the default back- & foreground colors then choose another one through background color in the display options of the defaultHardwareRenderGlobals. the wire color can be changes through the color settings window (window > settings/ preferences > color settings).

to increase the overall quality of your wireframe render (please keep in mind the render is dependent on the graphics card installed), turn on multi pass rendering in the corresponding options and crank up the render passes. you also may try to render a larger image (resolution).

sounds too complicated? ok, let’s go for the third way: select your object, start up the uv texture editor and choose polygons > unitize. this process sets each face to fill the full uv space. in hypershade create a surface shader and click on the map button next to the out color attribute. add a ramp an set type to box ramp, interpolation to none and delete the middle color. move down the top color marker a bit down. go for a render and be surprised. here a possible result using the beloved raygun, my first maya model in nicely wireframe shaded:

wireframe render of raygun

so you’ve got three choices to fulfill this task – enough to keep you busy experimenting with the settings and find your own preferred way to deal with rendering wireframes.

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

easy neon effect

here’s a tiny little tutorial to easily create a neon effect.

  1. create a surface shader in the hypershade and assign it to the object of your preference.
  2. set the out color attribute to a bright color.
  3. set the out glow color to a darker and complementary color.

done. easy as a-b-c, isn’t it?

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

two ways to squash a ball

the bouncing ball – a classic protagonist in animation. but how do you setup a good way to animate the ball jumping around including its squashing and stretching? here two basic setup proposals:

create a sphere and name it ball (obviously) and move it up so the is ‘sitting’ on the grid. group this ball three times to itself and launch the hypergraph window. name the three group nodes above the ball from top to down: move, rotate and squash. the order of those transformations is important, else you’ll encounter problems when animating. now select the ball and add a squash deformer (create deformers > nonlinear > squash). move the squash deformer down (distance: radius of your ball) and enter the attribute editor: low bound should be 0,0,0 (where the ball is touching the grid) and the high bound should be a bit higher than the ball. now parent the handle to the squash group within the hypergraph. now you can animate your ball using the group nodes. it is recommended to lock (and hide) the unnecessary attributes in every group node: lock rotate and scale in the move group node etc. this way you can assure that you don’t change values in the wrong group node accidentally.

the other way is done through a little bit of mel scripting: do all the steps mentioned above and stop when you have set up all group nodes and named them accordingly. select the squash node and add an expression (window > animation editors > expression editor) by naming the expression ‘squasher’, selecting scaleY and typing in the following expression (case sensitive! squash is here the group node name):

squash.scaleX = 1/squash.scaleY;
squash.scaleZ = 1/squash.scaleY;

press create and you’re done. alternatively you can just type in:

sx = 1/sy;
sz = 1/sy;

maya will automatically extend this script to the one mentioned above. now you can control the squash of the ball by changing the value of scaleY through the channel box or by selecting scaleY and changing its value by scrubbing the middle mouse button within the viewport (which is quite intuitive). i prefer this method since i don’t have any additional elements within my viewport and doing all this by an expression is just hassle-free. it’s also recommended to lock the unnecessary attributes in each group node to ‘protect’ them from used in a wrong way (e.g. rotating when the mode node is active) as mentioned in the first setup.

some additional notes:

  • add new squash group nodes if you need more squashing centers (like having one on the top or on the bottom of the ball to have more flexibility when animating).
  • be sure the channel box shows long or short names, not nice - this will just cause troubles when scripting (since the nice names are not the ones to be used within mel scripting, so this can cause a lot of confusion).

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

a marking menu for selection masks

inspired by a gnomon tutorial lately i also wanted to set up my own selection mask hotbox. since i work with maya with a gui completely turned off, the usual selection masks aren’t accessible from the status line any more, so i get them back by adding a marking menu within the hotbox. so i just browsed highend3d because i didn’t want to script my own menu and found a great script for my needs: selection masks 2.0.0. grab it, put the mel file in your marking menus prefs folder and start up the marking menu editor of maya. it will automatically ask you to load the new mel file and define center/ right mouse button to make it accessible when pressing space to reveal the hotbox.

marking menu for selection masks

if everything went right, you’ll have these nicely arranged selection options when pressing space and the right mouse click.

Posted in Maya, Plug-ins & Scripts | Tagged , , | Leave a comment

polyboost gets a boost

my beloved polyboost tool has just undergone a large upgrade and it’s more than worth installing it. the partial rewrite in c++ makes quite a difference and makes the tool even more powerful with dense objects. i’m just amazed how many innovative selection tools are being made available through polyboost which definitely should save a lot of time when making complex selections.

enjoy all the new features on the developer’s ‘what’s new?‘ page. there’s also a well prepared video to watch the tool in action. and best of all: registered users get this upgrade for free. so go and grab it if you’re a polyboost 3.x owner.

Posted in 3DSMax, Plug-ins & Scripts | Tagged , | Leave a comment

straighten out vertices or curve points

i just discovered that the same trick i use in 3ds max to straighten out vertices or curve points when they’re just slightly away from a prospective alignment, works in maya, too. just pick the vertices or curve points and scale them along the axis you want them to have aligned. this is helpful not only in modelling, but also in the uvw editor. the following two screenshots should clarify this little, but extremely handy trick:

scaling vertices to align them

Posted in 3DSMax, Maya, Tricks | Tagged , , , | 3 Comments