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
- Getting Started
- Using MAP
- MAP Tutorial
- Troubleshooting MAP
- Common Concerns
- Bugs & Features
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.
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.
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.
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.
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):
- Right-click on the Windows "Start" button and select "Explore".
- Navigate to the location of the 3D Studio MAX R2 shortcut. (On a default installation, this will be Programs->Kinetix).
- Right-click on the shortcut to MAX and select "Properties" from the menu.
- In the properties dialog box, click on the "Shortcut" tab.
- In the field marked "Target:", add "-f map" to the end of the text it contains.
- Hit "OK" to complete the change.
Using the "-f map" switch from the command line:
- From the DOS prompt, "cd" to the directory where you installed 3D Studio MAX R2.
- 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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
- Go to the Create panel and create a sphere primitive.
- Go to the Modify panel and push an Edit Mesh modifier on the stack.
- Select Vertex sub-object mode.
- Move the mouse cursor over the Create button and press CONTROL-SHIFT-R.
- Name the event "CreateVertex" and press OK.
- Select Face sub-object mode.
- Move the mouse cursor over the Build Face button and press CONTROL-SHIFT-R.
- Name the event "BuildFace" and press OK.
- Press CONTROL-SHIFT-E or select "Edit Commands and Bindings" from the MAP menu.
- Select "CreateVertex" and press "Bind to Action".
- Select the "To Keyboard Action:" box and press C.
- Press Bind.
- Select "BuildFace" and press "Bind to Action".
- Select the "To Keyboard Action:" box and press B.
- Press Bind.
- 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:
- Go to the Create panel.
- Select the Geometry button and "Standard Primitives" as a category.
- Move the mouse cursor over the Box button and press CONTROL-SHIFT-R.
- Name the event "CreateBox" and press OK.
- Select "Extended Primitives" as a category.
- Move the mouse cursor over the Hedra button and press CONTROL-SHIFT-R.
- Name the event "CreateHedra" and press OK.
- Select the Shapes button and "Splines" as a category.
- Move the mouse cursor over the Line button and press CONTROL-SHIFT-R.
- Name the event "CreateLine" and press OK.
- Select the Cameras button and "Standard" as a category.
- Move the mouse cursor over the Target button and press CONTROL-SHIFT-R.
- Name the event "CreateTargetCamera" and press OK.
- Press CONTROL-SHIFT-E or select "Edit Commands and Bindings" from the MAP menu.
- Press Add Menu.
- Name the menu "PrimitivesMenu".
- Press Add in the Menu Items box.
- Select CreateTargetCamera, CreateLine, CreateHedra, and CreateBox.
- Press OK.
- Press Label Font in the Appearance box.
- Select a nice, thick, readable font and press OK.
- Press OK to finish editting the menu.
- Select PrimitivesMenu from the Known Commands box.
- Press Bind to Action.
- Check off Right Mouse Button and ALT in the "To Mouse Action:" area.
- Press Bind.
- 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!
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.
You need to make sure 3DSMAX.EXE is being launched with the "-f map" switch.
See the installation instructions for details.
You need to make sure that map11b.dlu is in your 3D Studio MAX R2 plug-ins
directory. See the installation instructions
for details.
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.
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.
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.
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).
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:".
Yes. When editting the menu-items list of a pop-up menu, just add
the name of another pop-up menu.
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.
- New features 1.1b:
-
Binding to combo-boxes now remembers what setting the combo box
was displaying, and attempts to restore that setting. If it
can't, it pops down the list as before. This also handles the
sub-object mode combo-box, which was the #1 requested feature
in v1.1. Note that, to use this fix, you must
re-remember any old commands that
were bound to combo-boxes.
- Bugs fixed in 1.1b:
-
You can now reliably bind and use buttons that push modifiers onto
the stack, the "More..." modifier button, etc. This was the #1
reported bug of v1.1. Note that, to use this fix, you must
re-remember any old commands that
were exhibitting the bug.
-
Pushing modifiers no longer un-does the sub-object level.
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.
- New features 1.1:
-
Pop-up menus! Now you can have hotkeys AND slick one-click menus
to accelerate all your frequently used MAX commands.
-
Rebindability for the Edit Commands dialog and the Edit Command
dialog - they are no longer hardwired to CONTROL-SHIFT-E and
CONTROL-SHIFT-R.
-
Limited support for commands that refer to windows other than the
MAX main window. I'm testing the waters to see how well this will work.
-
Creation Panel handling, so the plug-in will now switch
to the right primitive type and category before trying to execute
a hotkey from the creation panel.
-
Hierarchy Panel handling, so MAP will now switch
to "Pivot", "IK", or "Link Info" modes correctly.
-
Motion Panel handling, so MAP will now switch to
"Paramters" and "Trajectories" modes correctly, as well
as set the appropriate sub-object level in "Trajectories" mode.
- Bugs fixed in 1.1:
-
Three bug fixes thanks to Steve Fait's bug reports:
One was a bug that prevented hotkeys from working consistently with
Edit Mesh/Patch/etc. modifiers. The second was interference with
AutoSave. The third was an over-writing problem when you re-bound
a hotkey to a new command. All of these are now fixed.
-
One other bug (nobody reported this, but I fixed it in anticipation):
The plug-in now prefers staying with the currently selected modifier
if it can replay a hotkey, rather than switching to the top modifier
for which that hotkey can be replayed (this seemed like the most
useful way to do it).
-
Also, I believe I fixed a screen flashing bug that prevented the
plug-in from working correctly with MAX 2.5. However, I don't have
MAX 2.5, so if someone could verify that the new plug-in doesn't
exhibit the buggy behavior, I'd appreciate it... thanks!
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.
- Bugs still outstanding that I've been able to reproduce:
-
When you install a front-end plug-in, MAX R2 purposely stops setting
the titlebar of the main MAX window to reflect the name of the .max
file currently being editted. Thus, it will always show up as
"untitled" while using MAP. I've posted to the Kinetix developer's
forum about fixing this, but as of right now, I don't know of a
workaround. My apologies, and I'll try to get the matter resolved
as soon as possible.
-
You cannot reliably use bindings that refer to windows other than the MAX
main window, such as the material editor or the trackview.
- Bugs still outstanding that I haven't been able to reproduce:
-
When you execute RememberCommand, I've had reports that you sometimes
need to click a mouse button before executing it again.
-
If you switch between two different sub-object modes too quickly,
one of the sub-object panels will stay up along with the new one,
and eventually it will crash MAX.
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!
- User-requested Features:
- Treat "Editable Mesh" and "Edit Mesh" as if they were the same modifier
- Provide built-in commands for scrolling around rollup windows
- Allow binding to buttons in the Edit Stack pop-up
- Ability to bind action + settings, eg. so you can pop a mesh-smooth modifier on the stack with certain presets
- Ability to save specific values in fly-outs and edit boxes
- Graphical layout of pop-up menus
- More control of menu appearance (color, spacing, etc.)
- Some way of keeping pop-up menus on the screen at all times
- Color coded, alphabetized, and/or hierachical listing of commands for easier organization
- Rectangular menu layouts
- Stop showing faded menus when working through multiple pop-ups
- Faster menu ops (stop MAX from repainting)
- Built-in for bringing up last used menu
- Built-in for canceling currently used menu
- Allow space-bar as a legal binding for menus/commands
- Support 4+ button mice
- Non-user-requested Features:
- Context-sensitive bindings based on the current modifier
- Scripts which execute several commands in sequence
- Importing & exporting of menus & MAX events (to share with your friends)
- "Packages" to keep menu & binding sets logically grouped together
- Built-ins that expose internal MAX functions that are hard to do with the GUI
- Store small bitmap of region around mouseclick to show as picture of what command will do
- The Mode Stack
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.