Scripted tools for 3ds Max 4-2016
scripts.breidt.net is my personal collection of useful and free tools for 3ds Max I have created and published over the years.
All files © 1999 - 2016 Martin Breidt.
No redistribution without explicit permission of the author. All content published under "Quote ware" license.
Send any feedback to martin at breidt.net
Apr 15, 2016 | camera utility | 3ds Max 2008+ | download v0.2
This is a small script for quickly locking/unlocking your 3ds Max camera.
Install and run the macroscript ('addCameraLock' in category 'MB Tools') to attach a new rollout (implemented by a Custom Attribute) to the selected camera(s).
Position, rotation and scale of the cameras and their targets will be locked. This is useful if you want to prevent any accidental changes to the cameras.
Unlike other scripted solutions, this will work without any additional script files, once you have applied it to a camera. So you can safely send the file
to your render farm or other 3ds Max users without having to worry about missing script files.
Note: Locking a camera will not affect any existing animation.
Feb 03, 2016 | update
Just a short update that I am still around, despite the fact that this poor website hasn't seen many updates recently. ;-)
In the meantime, you can take a look at some of my tools at the 3ds Max App store.
removeMissingPlugins v0.1 beta
Oct 20, 2010 | plugin utility | 3ds Max 2008+ | download v0.1 beta
This is a small script for completely removing all references to missing plugins from your 3ds Max scene.
Use with care! and do not save the results under the same file name! The script will replace any missing plugin object with the first usable alternative object of the same class it can find. I cannot give any guarantuees this will not mess up your data, your machine or your live. This could work for versions older than 2008 if you have the free AVGDLX extension installed.
Just open the scene that repors missing plugins and run the script by drag-and-drop or through the MAXScript > Run menu.
Minimal testing so far - if it works or does not work for you, please let me know, thanks!
MB Resource Collector v0.2 beta - updated
This script is something like a replacement for the File > Archive... function found in 3ds Max. It will collect ALL assets currently used in the scene file into one common directory. This is useful if you want to send your entire scene with all required files to someone else in one flat folder.
Optionally, the script can change the asset path names to match the new location, either as absolute or relative path names. It can also include the currently open .max file and create a .zip archive from all collected files.
This script is a classic Utility script, so you just run it using MAXScript > Run Script... from the main menu. Afterwards, you will find it in the MAXScript Utility dropdown list, from which you can select it to execute it.
It is currently in beta (which is why it is still encrypted), so please inform me of any issues you encounter. Any other feedback welcome, too.
- Option to open Windows Explorer in target folder after operation
- Will ask user for confirmation when encountering a file larger than 100 MB
- Saves all settings to config file
- Creates subdirectories for different asset types, comes with editor for specifying filters
- New 'run this command afterwards' feature that will execute a MAXScript command after all assets were collected (e.g. for automatic uploading of the archive)
- New option to rename assets if target file already exists (important when using multiple assets with the same name from different directories!
Currently known issues
- ZIP archive contains full path hierarchy (might be a security issue?!)
- will not recurse into IFL or XML pointcaches
- will also collect output assets, e.g. an AVI from the Render Output > Save File slot
Feb 03, 2016 | viewport utility | 3ds Max 2008+ | download
Somewhat similar to showBoneAxis, this macroscript allows you to turn on text labels for specific scene nodes, so you can permanently see the node names in the viewport, even if they currently are not selected.
This is for the viewport only (the labels will not render) and the label will follow the bounding box of your nodes, whether you animate them, or change their geometry in any other way.
After the usual macroscript installation, select some scene objects and hit the macro's button to turn on viewport labels only for these nodes. Hit the button again to turn off viewport labels for any selected nodes (in fact, it will toggle the label display for all selected nodes). Don't select any objects and hit the button to turn off ALL current labels. Word of caution: don't turn on labels for too many (> 200) objects, or your viewport might get rather slow. See the file header for more information.
Oct 20, 2009 | controller utility | 3ds Max 2008+ | download
Creates a modeless floating window that contains all controllers in the scene
for quick access to the controller properties. The user can switch on/off
filters to control what types of controllers will be displayed.
Currently supports wire, expression, script, noise, reactor, list, wave, audio,
spring, motioncapture and limit controllers.
- Resizable dialog
- Macroscript that can toggle the dialog on/off
- Support for Limit controllers
- Fixed a refresh bug
- Converted ActiveX UI element to dotNet, making it 64bit compatible (breaking compatibility to versions prior to 2008). Download v0.3 if you are still using an older version of 3ds Max
See included readme.txt for further information.
New "quote ware" license!
Nov 26, 2008
Over the years, I sometimes learned through the grapevine that some of my scripts were/are used extensively on large commercial projects or in professional production environments. This is great, and I am very happy to see my tools being used, but I'd like to hear about that first hand and I'd like to quote these projects to prove that my tools are "production tested".
Therefore, I have decided to change the license of my tools to something I call "Quote ware":
If you use one of my scripts in a production environment with a group of more than two people, or have used it in the past under such conditions, then you are obliged to tell me about it and allow me to list that project title and your company name as a reference on this website.
I have updated the header in all my scripts accordingly.
All my tools have remained free and opensource, so this really is a very small thing to ask in exchange for using them. I hope you all agree. Thanks, and looking forward to hearing from your project!
I added a new references page listing commercial projects and studios that make use of some of my tools
ImagePlane v1.45 - updated
Nov 25, 2008 | camera object| 3ds Max 4+ | download
Scripted object plugin that will generate a parametric imageplane for a given camera; useful for matchmoving, previewing set extensions, combining live footage with CG etc.
New: plane non-renderable by default, buttons for quickly changing render/display state.
New in v1.45:
- Richard Annema from Splutterfish added support for Brazil v2 cameras
Note: This will probably not work for Vray cameras or other 3rd party camera types.
gizmoControl v0.4 - updated
Feb 24, 2008 | modifier utility | 3ds Max 8+, avg_dlx| download
This macroscript (to be found in the "MB Tools" category) will allow you to link any modifier gizmo to any other scene object.
Afterwards, the gizmo will always be fully aligned to that other scene object, which can then be freely animated by any kind of controller and linked to any other scene node. In some way this is very similar to World Space Modifiers but it works for any kind of modifier gizmo.
This tool can be very useful for creating complex modifier animations, for example animating a Slice modifier's plane along a path, attaching a UVW Map modfier to some animated helper object (effectively creating a UVW Map WSM), transforming a Displace modifier with some other object, or having an extra node control the symmetry plane of a Symmetry modifier.
Currently only works for modifier gizmos that can move, rotate and scale (i.e. use a Matrix3 controller).
New in v0.2:
- Copy/pasting a modifier that has a linked gizmo now works correctly.
- Added a button to remove the scripted controler that links the gizmo to the control node; the gizmo transformation will be reset afterwards.
- Should work correctly with Merge and Xref.
New in v0.3:
- Added the option (hold SHIFT when pressing the 'Link' button) to keep the initial offset. The gizmo will stay where it is but follow any further movement of the control node.
- Added the option (hold SHIFT when pressing the 'Reset' button) to keep the current gizmo transformation. Use this if you don't want to move the gizmo but want to remove the link to the control node.
New in v0.4:
- Fixed a major bug that caused incorrect gizmo placement with objects that had an edited pivot transform.
- Some minor UI tweaks
Note: Script requires Larry Minton's Avguard MAXScript Extensions v.7.0.3 or greater. Download the Max8
version and install as plugin before you run this script. 3ds Max 2008 and above already have the extension installed.
Feb 054, 2008 | rendering effect | download
This Render Effect displays additional information such as frame number, file name etc. in your rendered image. Works with any renderer.
Installation: Unzip into the <3dsmaxroot>\scripts\startup directory (see script file for more details).
Includes option for font size, useful for highres rendering; frame number in number, SMPTE or seconds time format; accepts generic MAXScript commands for custom frame information; option for displaying last frame's 'Render Time' in seconds; can display current camera name; option for long or short scene filename; image overlay (e.g. for watermarks) with different types of compositing modes and scaling. All options are animatable.
New in 0.9:
- X/Y position for freely placing additional text
- Scale option for image overlay
- New render time system
- Safe Frame display
- New ' Seconds' time format
- Center cross and 3x3 'Rule Of Thirds' grid
Note: Unfortunately, there is a problem in 3ds Max 9+ with scripted render effects and mental ray that can lead to crashes when the render effect is cleaning up memory.
Update: Thankfully, Autodesk has fixed this bug (amongst others) in a hotfix for 3ds Max 2010!
projectSwitcher v0.31 - update
ProjectSwitcher is a Macroscript utility for quickly switching between multiple project folders. It keeps track of the previously opened projects, saves them to an .ini file and presents them in a drop down list. The dialog can be resized to accommodate long path names. It can also be docked at the top or bottom.
Installation: For automatic startup, just copy this script into your scripts\startup folder and restart 3ds Max.
Use the 'X' key to remove an entry from the list (this will not do anything to your actual project folder!); the 'Set' key works just like the 'File > Set Project Folder function: it allows you to select another existing project folder or create a new one. Both will be added to the list. Note: projectSwitcher does not currently track any project folder actions that were performed directly in 3ds Max.
New in v0.31:
- Due to a bug in 3ds Max 2014, I have made an alternative version for 3ds Max 2014
- The alternative version 0.31 no longer works as a dockable toolbar but inside a floating dialog instead
- Dialog now remembers position and size
New in v0.3:
- Automatic Project Switching when opening .max files: When opening the file c:\projects\myproject\scenes\file.max, this function will automatically set c:\projects\myproject\ as the new project folder. Thanks to Tollef Roe Steen for the suggestion.
- No longer a macroscript; can be automatically run when 3ds Max starts
Bug in 3ds Max 2008: A bug in the latest release of 3ds Max causes projectSwitcher to always show a Browse-Folder-Dialog. This can be fixed by manually editing the file Macro_SetProjectFolder.mcr in the <3dsmax_root>\ui\macroscripts directory and changing
in line 25 and 26 to
Save the .mcr file and restart 3ds Max. This should return normal functionality for projectSwitcher
MB Collapse v0.3
Aug 08, 2007 | keyframe utility |3ds Max 4-9 | download
MacroScript (without user interface) that will collapse any transformation (position, rotation, scale) into keyframes (one keyframe per frame for the current animation range). Works for any kind of controller and linked objects (which will be unlinked afterwards).
- Fixed a bug with pivot offsets
- Now includes an option (hold SHIFT while invoking the macroscript) to force a full redraw for each time step. While this will be much slower, it will ensure proper updating of any controller. This was necessary for complex scripted controllers that would also modify other objects in the scene
Autodesk Master Nomination
May 22, 2007
I am quite honored to be nominated for the Autodesk Master award this year! Everybody can vote online until June 3rd, so if you think what I am doing is useful, you are welcome to cast your vote.
Read this first!
Apr 25, 2007
Many of these MAXScripts are at beta stage, so use at your own risk. Detailed information how to install the script can usually be found at the beginning of the
script code along with an explanation of the usage, and any known bugs. All macroscripts install themselfes into the "MB Tools" category in the Customize User Interface dialog. If you need more help in installation, please read the Script Installation in 3ds max page.
Nov 11, 2006 | simulation utility / modeling aid | 3ds Max 9 | download
This is a macroscript for 3ds Max 9 that will break up the selected mesh object into volumetric pieces.
Note: Will not always produce a valid fragmentation and no Undo available, so save your scene or use the built-in 'hold' or 'copy' feature!
Works best on closed, watertight meshes without self intersections --> no teapots please
To install, run the .mcr file and use the new 'Fragment selected mesh' action in the 'MB Tools' category. Requires 3ds Max R9
Oct 5, 2006 | visibility actions | download
Two macroscripts (to be found in the "MB Tools" category) that replace the standard hide/unhide functions. The first one will hide all selected objects but also store the information which objects were just hidden in the scene file. The second macroscript can then be called to undo the previous hide action.
Aug 17, 2007 | viewport utility | download
Small collections of X-Windows/Maya-like MacroScripts for 3ds max 6-9, intended as keyboard shortcuts. Contains two types of actions:
Toggles, that will open a dialog upon keypress and also close it (MEdit, Trackview, Render Dialog):
toggleMEdit: open material editor or close it if it's already open (obsolete since R8)
toggleRenderDialog: open render dialog or close it if it's already open (obsolete since R8)
toggleTrackview: open trackview or close it if it's already open
toggleFCurveDope: toggle open trackview between Dopesheet and FCurve view
toggleSelectRegion: switch to select tool, and if already in select mode, then toggle between rectangular and lasso region
togglePivotOnly: toggle "Affect Pivot Only" mode on/off
MouseOver viewport shortcuts, that work without explicit viewport activation (Maximize viewport, zoom selected object(s), zoom all objects). [Inspired by scripts from Roger Hyde and Martijn van Herk]:
quickMaximize: maximize the viewport that has the mouse cursor over it
quickZoomSelected: Zoom to the selected object in the viewport that has the mouse cursor over it
quickZoomAll: Zoom to the all objects in the viewport that has the mouse cursor over it
quickRender2: quick-render the viewport that has the mouse cursor over it
quickWireSmooth: quick-toggle between wireframe and smooth shading for the viewport that has the mouse cursor over it
quickWireOverlay: quick-toggle wireframe overlay on/off for the viewport that has the mouse cursor over it
quickGridToggle: quick-toggle the grid on/off for the viewport that has the mouse cursor over it
quickCycleShade: quick-cycle through the viewport shading modes for the viewport that has the mouse cursor over it
quickShadeList: show mouse menu for quickly switching viewport shading
quickPlay: start playing the animation for the viewport that has the mouse cursor over it
New in v1.8: Updated toggleSelectRegion for 3ds Max 9
Jul 2, 2005 | camera utility | download
Useful utility if you need extra margins in your renderings - it adjusts your camera and render settings so that your old image will be part of the new rendering without changing perspective - just like changing 'Canvas Size' in Photoshop, but in 3D.
Option to copy/keep old camera; dialog remembers original render size; optional delta values relative to original render size.
Note: This will probably not work for Brazil or Vray cameras or other 3rd party custom camera types.
Jun 18, 2005 | object converter | download
Convert .obj sequence to Realflow .bin format; based on .bin writer by Ben Lipman
Early test version. no interface
Jan 12, 2005 | general utility | download
This utility helps you to embed MAXScript code into any scene file.
The code will then be run each time after the file has loaded,
much like the old autoexec.bat file in MS-DOS
To run, just run the script (MAXScript > Run Script, then select
this file). A floating dialog will appear.
You can either enter MAXScript code directly, or point to an external
MAXScript file that will then be loaded each time. The advantage of an
external file is that you can easily change the code that will be run
upon load by changing that file. The disadvantage is that you need to
remember to copy that file if you give the scene file to someone else.
If you choose to use an external script file, you have the option of
using an absolute filename (e.g. C:\3dsmax\scripts\myscripts\runme.ms)
or use a path relative to the scene file (e.g. ..\scripts\myscripts\runme.ms).
There also is an option 'Delete after first run' which will remove the
autoexec script after it has run once. Another option determines whether
the autoexec script will be run right before a file is opened or right
after. Note that 'before loading' does not affect the to-be-loaded file
but instead the currently loaded that is going to be replaced.
Finally, there are three buttons in the 'Advanced' rollout to 1.) print
all callback info to the Listener, 2.) remove all autoexec callbacks from
the current scene and 3.) to manually test the current autoexec script(s).
Nov 9, 2004 | viewport utility | download
Displays a small RGB icon in the viewport for each bone's pivot point to indicate the bone's local coordinate system; can be useful for adjusting bone orientations, for example.
Nov 9, 2004 | transformation utility | download
MacroScript that allows you to precisely align an object by aligning three points on the object to any another three points in space.
New: Modeless dialog; support for groups; automatic snap
Jun 24, 2004 | file/project utility | download
This MacroScript is a replacement for the save function. It saves incremental file versions while keeping the name of the latest, most-up-to-date version always the same as the original file. This is good for XRef'ing (or batchfile processing) because the filename does not change. Just add it to your File menu and/or define Ctrl+S as shortcut. Production-tested with 3dsmax v5-v9. Based on an idea by Christian Sawade-Meyer.
New: Old file versions will now be saved to a subdirectory; invoke macro with ALT pressed to access parameters
Mar 17, 2004 | object plugin generator | download
Takes any geometric object and converts it to a new object plugin for future use, just like any other standard primitive.
New in 2.0: Speed optimization; Now supports texture coordinates; Objects need not to be converted to EditableMesh before plugin generation; Updated creation tool; generated objects have new mesh data options for
Feb 12, 2004 | viewport/camera utility | download
Select a camera, then run this MacroScript in 3ds max R6 to create a geometric representation of the camera's view frustum (can be useful, for example, in combination with Vol.Select to remove geometry that is not seen by the camera).
Will handle non-square pixels, renaming objects and allows for an offset between camera FOV and view frustum angle. Based on code by Christopher Subiago.
Feb 12, 2004 | motion capture utility | download
Import utility for importing generic .CSM (Character Studio Marker) motion capture data as animated point helpers.
v0.2b: minor fixes, better dropout handling, .CSM file name saved as scene comment
Path Distribute v0.1
Nov 14, 2003 | transform utility | download
MAXScript utility for evenly distributing selected objects along a curve; objects will maintain their relative positions if the curve is modified.
Sep 18, 2003 | selection utility | download
Assigned to a hotkey, this will allow you to quickly select and unhide any named selections through shortcuts based on the first character of each selection.
Jun 03, 2003 | motion capture utility | download
Export utility for exporting .CSM (Character Studio Marker) motion capture data from any object selection.
Also check out my ReadCSM script.
Dec 12, 2002 | light/camera utility | download
LightMatcher will exactly match a "Free Spot" to a camera. This is handy when using projector lights as an alternative to camera mapping. (v1.2.1 fixes some stupid bugs)
PLY Export v1.3
Nov 28, 2002 | geometry exporter | avg_dlx| download
Export utility for exporting editable meshes to .PLY ASCII or Binary format with support for vertex colors.
Requires Larry Minton's avg_dlx MAXScript extension for older versions of 3dsmax.
Wrap Deformer v0.5
Nov 28, 2002 | deformation modifier | download
A scripted modifier plugin that allows you to bind one polygonal object A to another editable mesh B. Any transformation/deformation of B will be transferred to A based on distance between vertices.
Requires bindPoints.dlm by John Burnett, a local copy for 3ds Max v4 and v5 can be found here
Apr 15, 2002 | light/viewport utility | download
Works like the built-in "Match Camera to View" command but for light objects.
Hollow Cube v1.0
Apr 15, 2002 | object | download
A scripted object plugin that creates a procedural hollow cube (nice toy for meshsmoothing).