david | | Monday, November 5th, 2007

right-click save-as to download .bmp for use as maya shelf icon In maya the term pickwalk refers to using the arrow keys to select objects by "walking" up and down the object heirarchy or, if you are in component selection mode, to neighboring vertices and cv's. There are times when this is a very convenient way to select things.

Consider this example. You are animating the rotation of your character's ankle and then you want to adjust the rotation of the knee. To select the knee by clicking on it may be awkward due to the rotation manipulator being in the way. You could deselect the ankle by clicking in an empty space and then select the knee, but if the knee is behind another object then you may need to tumble your view to get to it.

If you use pickwalking, then while the ankle is selected you just click the up-arrow to select the knee and continue animating. Much easier. But maya's default pickwalking only works for objects in the same heirarchy. What if you wanted to jump from the right ankle to the left ankle? What if the ankle controller and the knee controllers were not part of the same heirarchy? This is when you need the zooPickwalkAuthor.

The zooPickwalkAuthor lets you define your own pickwalk relationships between the various objects in your scene. It works with any object and it doesnt care about the heirarchy. And it doesnt care if you rename the objects or change the heirarchy afterwards.

The zooPickwalkAuthor is intended to be integrated with maya's default pickwalk hotkeys (the arrow keys) but it allows you to define your own hot keys if you wish (more on this shortly).

This image is a snapshot of the zooPickwalkAuthor user interface


To load this tool you need to type the following in the MEL command window


You could add the command to your shelf if you wish (download the icon that I made by right-click save-link-as the one at the top of this page).

The zooPickwalkAuthor comes with it's own Help menu so please read that in conjunction with this walk-through. There is some fairly detailed and useful info in there. (Hamish used to work at a company called DNA and there is a section towards the end of the help text entitled "DNA Pipeline Usage" which is not relevant to new users, so just skip that bit.)

Ok...so how does it work?

First you have to set up your hotkeys. The following image shows the Help menu


Choose Setup Hotkeys... and you get the following UI


Make sure it is configured as shown above and click the setup hotkeys button.

IMPORTANT NOTE: Your hotkeys have now been setup for zooPickwalking. Have another look at the drop-down Help menu. The last item is Pro Hotkeys. If this is activated then the zooPickwalk is integrated with the default maya pickwalk. That means if a zooPickwalk action has not been defined when you hit an arrow key, then the default maya pickwalk will be used. If you turn off Pro Hotkeys then the arrow keys only work if a zooPickwalk action has been defined.

My recommendation is that you leave Pro Hotkeys activated.

Now you are ready to author your zooPickwalk actions. There are two ways to do this.

simple authoring

Start by selecting the objects in your scene in the order that you want to walk over them. When they are all selected go to the Authoring|simple author menu as shown in the following picture


Now you can use [up-arrow] and [down-arrow] to walk from one object to the next in the order that you selected them. You can also use [ctrl][up-arrow] to do additive pickwalking, which means that each new object is added to the selection list, so you can select multiple objects.

custom authoring

Simple authoring is quick and easy, but usually you are going to want more. You do this one object at a time, but its still very simple.

Select the object you want to start from (objectA) and click the load button. Notice how the button name becomes capitalised - LOAD - indicating that there is an object associated with the UI. Now select another object (objectB), so that now you only have objectB selected. By clicking one of the direction buttons in the UI you are creating an association between objectA (the one you loaded) and objectB (the one you just selected). So if you click the right button you define the action of the [right-arrow] key. So if you select objectA and you press [right-arrow] you walk to objectB.

Notice the make reciprocal option on the bottom left of the UI. If you had that activated in the example just given, then a reciprocal relationship would also be created. That just means that if you have objectB selected and you press [left-arrow] it will take you back to objectA. Usually this is what you want and it saves you half the setup time, but you can disable it if you wish.

Try it out and you will find it is very easy to set up complex pickwalk systems with very little effort. I find that being able to pickwalk through my rig controllers when I am animating a character means I can work with the controllers hidden much of the time.

note: The zooPickwalkAuthor Presets menu is not currently functional and you can safely ignore the <Cannot find procedure "zooPickwalkPresets"> error messages.


  1. Thanks much for posting these tutorials for the ZooTools.
    As a new Maya user, scouring the web for learning materials, your tutorials are very helpful.
    A question and a comment:
    I discovered this tutorial when I found the Maya default pickwalking inadequate for animation.
    As I setup a custom pickwalking scheme for blocking the animation of a character, I realized that I really need a more flexible system.
    During blocking we need only a few controls, such as hip, spine, hands, elbows, feet and knees - a dozen or so controls. But when refining the animation we need many more - we might want to move from the hand into the fingers and back. We might have 50 or more controls. So we need separate pickwalking systems.
    When I read the "DNA" section of the help file, I noticed that this tool could be used on "trigger" sets and then the pick would be transfered to the actual control objects.
    Creating separate trigger sets would be an efficient approach for using multiple pickwalking sets (ie. sets for blocking, refinement, etc.) Do you know if it's still possible to use the DNA type setup? If so, could you outline how to approach creating this type of setup?
    You might want to add a link from your zooTools menu on the right side of your page to your "keymaster" tutorial.
    Thanks again for all your tutorials - very generous of you to take the time to write and share them.

    Comment by PixL — April 9, 2008 @ 6:57 am

  2. PixL, thanks for your kind words. I took your suggestion, but I added a keymaster page rather than a link to the old post (still the same content though).
    I dont know much about the DNA setup. The export and import of pickwalk presets is not functional in the authoring UI. If you ask about this on the zoo forum at google groups, Hamish will probably be able to help you out.

    Comment by david — April 9, 2008 @ 11:51 pm

  3. David, thanks for the response.
    I've taken a look over there.
    Do you know how the zooPickWalkAuthor actually works?
    I see that once it is assigned to an object, a ".message" attribute is added to the object and it is connected to a ".zooWalk*" attribute which is added to the target.
    In the scene file, I see the establishment of the connection, ie:
    connectAttr "nurbsTorus1.msg" "nurbsCone1.zooWalkdown";
    However, when looking thru zooPickwalkAuthor.mel, I don't see how these attributes are created and assigned, nor do I see where the actual commands reside in the Maya file.
    Do you know how these relationships are established by the script? I'm going to ask at the Google forum as well, but thought you might know.
    Thanks again.

    Comment by PixL — April 10, 2008 @ 3:04 pm

  4. Have a look at zooPickWalk.mel. There is a proc called zooSetPickwalkObj() that builds the attributes and connections.

    Comment by david — April 10, 2008 @ 10:40 pm

RSS feed for comments on this post.

Leave a comment

You must be logged in to post a comment.

Powered by WordPress | Based on a theme by Roy Tanck