The MAX Automation Plug-in (MAP) FAQ

The latest modification of this FAQ was on June 30th, 1998.
The latest released version of MAP is 1.1b (June 30th, 1998)
Version 1.2 is not yet ready for testing.

MAP is part of Casey Muratori's free-plugins project, located here.
The latest version of the plug-in and this FAQ can always be found there.

Want to be notified of new version releases? See here.

Need to report a bug? See here.

Wishlist additions? See here.


Table of Contents

  1. Getting Started
  2. Using MAP
  3. MAP Tutorial
  4. Troubleshooting MAP
  5. Common Concerns
  6. Bugs & Features


How do I use this FAQ?

If you already know how to use MAP, and just have general questions, look for the most likely categories in the table of contents. If you've never used MAP before, I recommend you read through the whole Getting Started and Using MAP sections to get the basic concepts down, then read and try the turtorials in the MAP Tutorial section.


Is there documentation besides this FAQ?

Not currently. I have limited time to spend on the plug-in itself, so finding time to write documentation is harder still. However, I try to keep the FAQ fairly up-to-date, and I try to answer any questions I receive via e-mail. If anyone would like to write better documentation for MAP, I'd be much obliged - just let me know.


Which versions of 3D Studio MAX are supported by MAP?

Currently, 2.0 and 2.5 are both supported. Any versions before 2.0 do not support front-end plug-ins (as far as I know), and therefore aren't supported. Assuming versions 3.0 and beyond still do not have hotkey and marking-menu support, I'll keep releasing new versions of MAP as they release new versions of MAX.


Where do I download the latest version of MAP?

The latest version can always be found on my free-plugins page here. It has links for downloading MAP, as well as information about other free plug-ins I might release from time to time.


How do I install MAP once I've downloaded it?

As with all plug-ins, you must place the program ("map11b.dlu") in the "plugins" directory of 3D Studio MAX in order for it to work. However, MAP is also a front-end plug-in, so to use it you must start 3D Studio MAX R2 with the "-f map" switch to enable it. There are two methods you can use to do this:

Building the "-f map" switch into your default MAX shortcut (assuming it's in the Start menu):

  1. Right-click on the Windows "Start" button and select "Explore".
  2. Navigate to the location of the 3D Studio MAX R2 shortcut. (On a default installation, this will be Programs->Kinetix).
  3. Right-click on the shortcut to MAX and select "Properties" from the menu.
  4. In the properties dialog box, click on the "Shortcut" tab.
  5. In the field marked "Target:", add "-f map" to the end of the text it contains.
  6. Hit "OK" to complete the change.

Using the "-f map" switch from the command line:

  1. From the DOS prompt, "cd" to the directory where you installed 3D Studio MAX R2.
  2. Type "3DSMAX.EXE -f map".

To make sure you've successfully loaded MAX with the MAP plug-in enabled, look at the main menu bar of the MAX window. It should have an additional menu labeled "MAP". If this menu does not appear, double-check that you've followed the above instructions correctly.

Important note: if you are installing a new version of MAP, be sure to delete the old version first. So, for example, if you were installing version 1.1, you should delete map10.dlu from your plug-in directory before copying map11b.dlu into it.


How do I know when there's a new version of MAP available??

Well, since a lot of people have started using MAP, I've started a mailing list. If you'd like to be on the mailing list, send mail here and request to be added. If you don't mind me listing your company as a MAP user, please include what company you work for and what sorts of things you use MAP for in-house. Thanks!


Who uses MAP?

It's a little too early to tell. Apparently, it's getting good reception, as I've had people from Kinetix report that their own artists are using it internally now! In the future, as I get the mailing list started, I'll post a more complete list of the companies that are using MAP in-house.


I tried MAP, and I think it sucks. How do I uninstall it?

Well, you have two options. You can either remove the "-f map" switch from your execution of 3DSMAX.EXE, or you can remove map11b.dlu from your plug-ins directory. Or you can do both.


What does MAP do for me?

MAP is a front-end plug-in which adds hotkey and marking-menu support to 3D Studio MAX R2. Now, you might say, "MAX already has hotkey support!" Ahhh, but not for everything! In fact, most of the important operations in MAX are not available as hotkeys in MAX's keyboard setup preferences. That's where MAP comes in.

With MAP, no operation can hide from you! If you can click on it, MAP can probably help you bind it to a hotkey. Once you have MAP installed, you'll be able to "teach" MAP all the operations you frequently use, and then MAP will allow you to bind actions to those operations. What's more, with version 1.1 of MAP, you can also create custom pop-up menus (sometimes called "marking menus") with all your favorite MAX operations.


What is a command?

A command is something the MAP can do for you. Switching to "create vertex" mode in the Editable Mesh primitive is a command. Displaying a pop-up menu with your frequently-used modifiers is a command. Opening a dialog that lets you customize commands is itself a command. Essentially, anything MAP can do is a command.

There are different types of commands. A command that is intrinsic to MAP is called a built-in. A command that MAP learns by watching you do something in MAX is called a MAX event. A command that displays a pop-up menu is called a menu.


What is a built-in?

A built-in is a command which is intrisic to MAP. Here are the built-in commands currently available:

RememberCommand (default binding: CONTROL-SHIFT-R)

    Teaches MAP the command that is currently underneath the mouse cursor. For example, if the mouse was over the material editor button, MAP would learn how to tell MAX to open the material editor window. MAP would flash the material editor button to confirm that the command was learned, and it would present you with a dialog box that allowed you to give the newly learned quick-render command a name.

EditCommandsAndBindings (default binding: CONTROL-SHIFT-E)

    Brings up a dialog box that allows you to edit the commands MAP knows about. This is where most MAP customization takes place - you can bind commands to hotkeys, create new menus, and remove unused commands.


What is a MAX event?

A MAX event is a command which MAP has learned from watching you do something in 3D Studio MAX R2. Essentially, it's MAP's way of learning what functions you perform in MAX that you'd like MAP to start doing for you. For example, if you find yourself pressing the turn-edge button in the Edit Mesh modifier, you can teach MAP how to press that button so it can do it for you whenever you press a specific hotkey or select a specific menu item.


How do I teach MAP a new MAX event?

MAX events are learned through the RememberCommand built-in. Whenever that built-in is executed, MAP remembers the button you're mouse cursor is currently over. So, if you wanted MAP to learn the turn-edge button, you'd go to the Edit Mesh modifier, move the mouse over the turn-edge button, and execute RememberCommand.

If all is well, the button you've told MAP to remember will flash for a second, and you'll be presented with a dialog box called "Edit MAX Event". In this dialog box, you can give a name to the MAX event you've just taught MAP. From then on, MAP will always refer to the event by that name. You cannot have two commands with the same name, so MAP will warn you if you try to use the same name twice, and give you the option of picking a new name, or overwriting the other command with that name.

Once you've taught MAP several commands, you might want to rename some of the commands to different names. You can do this through the EditCommandsAndBindings built-in. When you execute that built-in, you have the option of selecting a previously learned MAX event, and pressing "Edit". At that point, you can change the name assigned to the given MAX event.


What is an action?

An action is something you do with the keyboard or mouse that MAP can bind to a command. The hotkey CONTROL-L is an action, as is pressing SHIFT and the left mouse button.


How do I bind an action to a command?

You bind actions to commands through the EditCommandsAndBindings built-in. When you execute this built-in, you will be presented with a dialog box called "Edit Commands". Here, you can select any known command and press "Bind to Action".

Selecting "Bind to Action" brings up another dialog box in which you can pick the action(s) you want to bind to the selected command. There are two types of actions: keyboard actions and mouse actions. To enter a keyboard action, click in the box marked "To Keyboard Action:" and press a key combination. To enter a mouse action, check off the boxes under "To Mouse Action:" that describe a combination of mouse buttons and special keys. When you're finished, press "Bind" to confirm the bindings you've entered, or "Cancel" to leave things as they were.


What is a menu?

A menu is a set of commands which displays itself on top of MAX and allows you to pick which command you'd like to execute. I believe they are similar to the "marking menus" found in PowerAnimator, although I've never really used PowerAnimator so I'm not too sure.


How do I make my own pop-up menu?

You create a menu by executing the EditCommandsAndBindings built-in. There, you can select "Add Menu" to create a new menu.

Once you've selected "Add Menu", you'll be presented with a dialog box titled "Edit Menu". First, you'll want to name the menu, which you do by entering the name into the box marked "Command Name". This name must be unique from all other commands.

Next, you need to select the commands that will appear on the menu. To do this, you select "Add" from the box marked "Menu Items". You'll be prompted to select the commands you'd like to add to the menu. After adding the commands you want, you can arrange them in any order you like with the "Move Up" and "Move Down" buttons, and remove any you no longer want with the "Remove" button.

Finally, once you have the commands selected, press the button marked "Label Font" to select a font face for the menu. After you've found one you like, you're ready to test the menu. Click on the button marked "test" to see what the menu will look like when executed. When you're satisfied with the menu, hit "OK" to save your changes, or "Cancel" to abandon the menu.

If, at any time, you need to change a menu you've created, you can simply execute the EditCommandsAndBindings built-in, select the menu from the list of known commands, and press "Edit".


Binding keys to the Edit Mesh modifier

This tutorial will show you how to speed up the process of building faces by binding two hotkeys to the edit mesh modifier. In a new MAX scene, do the following:
  1. Go to the Create panel and create a sphere primitive.
  2. Go to the Modify panel and push an Edit Mesh modifier on the stack.
  3. Select Vertex sub-object mode.
  4. Move the mouse cursor over the Create button and press CONTROL-SHIFT-R.
  5. Name the event "CreateVertex" and press OK.
  6. Select Face sub-object mode.
  7. Move the mouse cursor over the Build Face button and press CONTROL-SHIFT-R.
  8. Name the event "BuildFace" and press OK.
  9. Press CONTROL-SHIFT-E or select "Edit Commands and Bindings" from the MAP menu.
  10. Select "CreateVertex" and press "Bind to Action".
  11. Select the "To Keyboard Action:" box and press C.
  12. Press Bind.
  13. Select "BuildFace" and press "Bind to Action".
  14. Select the "To Keyboard Action:" box and press B.
  15. Press Bind.
  16. Press Done.
From now on, whenever you press C, you'll be in Create Vertex mode, and whenever you press B, you'll be in Build Face mode. This will allow you to quickly slap down vertices, build faces, slap down more vertices, etc., all without moving your mouse out of the viewport windows!


Creating a menu of primitives

This tutorial will show you how to get easy access to various primitives by building a menu of those primitives. Do the following:
  1. Go to the Create panel.
  2. Select the Geometry button and "Standard Primitives" as a category.
  3. Move the mouse cursor over the Box button and press CONTROL-SHIFT-R.
  4. Name the event "CreateBox" and press OK.
  5. Select "Extended Primitives" as a category.
  6. Move the mouse cursor over the Hedra button and press CONTROL-SHIFT-R.
  7. Name the event "CreateHedra" and press OK.
  8. Select the Shapes button and "Splines" as a category.
  9. Move the mouse cursor over the Line button and press CONTROL-SHIFT-R.
  10. Name the event "CreateLine" and press OK.
  11. Select the Cameras button and "Standard" as a category.
  12. Move the mouse cursor over the Target button and press CONTROL-SHIFT-R.
  13. Name the event "CreateTargetCamera" and press OK.
  14. Press CONTROL-SHIFT-E or select "Edit Commands and Bindings" from the MAP menu.
  15. Press Add Menu.
  16. Name the menu "PrimitivesMenu".
  17. Press Add in the Menu Items box.
  18. Select CreateTargetCamera, CreateLine, CreateHedra, and CreateBox.
  19. Press OK.
  20. Press Label Font in the Appearance box.
  21. Select a nice, thick, readable font and press OK.
  22. Press OK to finish editting the menu.
  23. Select PrimitivesMenu from the Known Commands box.
  24. Press Bind to Action.
  25. Check off Right Mouse Button and ALT in the "To Mouse Action:" area.
  26. Press Bind.
  27. Press Done.
From now on, whenever you hold down the ALT key and hold down the right mouse button, you'll see the four commands you created appear as a pop-up menu. You can move the mouse over whichever item you wish to create, and as soon as you let go of the right mouse button, you'll be switched into that creation mode. Also, if you decide not to create anything, you can select the Cancel option in the center of the menu.

Because the menu is radial, as you can see, it allows you to "gesture" to select one of its items... so, instead of thinking about picking CreateBox from the PrimitivesMenu you just created, all you have to do is learn to hold ALT and the right mouse button while dragging the mouse somewhat upwards. This little flourish will select CreateBox every time. Similarly, a right-flourish will select CreateHedra, a down-flourish CreateLine, and a left-flourish CreateTargetCamera. Try it!


Your instructions say to put map11b.dlu in my MAX plug-ins directory - how do I know where that is?

On a standard installations, it's "\3dsmax2\plugins". If your plug-in directory setup has been modified, launch the program normally and select Configure Paths from the File menu. Click on the Plug Ins tab, and it should display a listing of directories where plug-ins can be located.


I put map11b.dlu into my plug-ins directory, but it doesn't seem to load. What's wrong?

You need to make sure 3DSMAX.EXE is being launched with the "-f map" switch. See the installation instructions for details.


I loaded 3DSMAX.EXE with the "-f map" option, but MAP doesn't seem to load. What's wrong?

You need to make sure that map11b.dlu is in your 3D Studio MAX R2 plug-ins directory. See the installation instructions for details.


I installed a new version of MAP, and now MAX complains about duplicate plug-ins. Why?

You need to remove the old version of MAP from your plug-ins directory. For example, if you're installing map11b.dlu, you need to delete map10.dlu from your plug-ins directory. Otherwise, 3D Studio MAX R2 will think that you want to use both versions of MAP at the same time, which causes the warning.


I installed a new version of MAP which is supposed to fix a MAX event replay bug I was having, but it doesn't seem to be fixed. Am I missing something?

Any commands you have taught MAP before installing a new version won't benefit from the better playback capabilities of the new version. So, if you're having trouble with an old command that should play back correctly with the new version, remove the old command, and re-teach MAP how to do the command. Only through re-doing the command can the new version of MAP use it's improved capabilities to better learn the command.

If you still have problems with command play-back after removing and re-teaching MAP a command, please see the section on reporting bugs.


Why does MAP pause after I select an item (including Cancel) from a pop-up menu?

Believe it or not, this is not MAP, but rather MAX. Because MAP draws on top of MAX, MAX must repaint it's window after MAP finishes doing menu operations. It is possible to speed this up, but I haven't had time yet to look it into it.


Is there any way to get MAP to stop complaining about the stack any time I try to bind a command to a modifier?

Yes. Although this will be fixed in future versions of the plug-in, there is a workaround for v1.1: bind your modifier commands without any objects selected (such that the modifier stack is completely clear).


Is there any way to bind a command to a specific sub-object mode?

Yes. Although this will be more straightforward in future versions of the plug-in, there is a workaround for v1.1: go to the sub-object mode desired, and execute RememberCommand (default: CONTROL-SHIFT-R) somewhere inside the Modifier Stack rollup page but NOT over any buttons or combo boxes. For example, directly over the words "Selection Level:".


Can I make a pop-up menu that leads to other pop-up menus?

Yes. When editting the menu-items list of a pop-up menu, just add the name of another pop-up menu.


What's new in version 1.1b?

Version v1.1b is just a patch release that fixed some of the biggest problems with v1.1. You shouldn't notice any difference from using v1.1, except that certain quirks have now been straightened out.


What's new in version 1.1?

Version v1.1 is a major upgrade from v1.0 - the most notable new feature being the addition of pop-up menus and more extensive hotkey binding ability.


Are there any known bugs?

Below I've listed all the bugs that I can and can't reproduce. If you have any additional information about the non-reproducable bugs, please submit a bug report.


How do I report bugs if I find them?

If you experience something in MAP which doens't seem right, or if you think MAP may have caused MAX to crash or exhibit strange behavior, please send me a bug report here. Be as explicit as possible in describing the bug, and be sure to include the exact sequence of operations that caused the bug. In general, I can't fix anything I can't reproduce, so the more explicit you make the instructions on how to reproduce the bug, the better job I can do fixing it!


What's planned for future versions of MAP?


How do I request features in future versions of MAP?

If you have an idea for an addition to MAP, please let me know. Send me a feature request here, and describe (in as much detail as you can) what you'd like MAP to be able to do. I'll add it to the list of feature requests, and if it's feasible, try to get it into the next version.