The following page will give you a quick overview of the MAXScript language changes and improvements in 3ds Max 2010. For details on each feature, please follow the links to the respective documentation pages.
For a list of changes made to the MAXScript Reference itself besides documenting new feature, see Documentation Changes in 3ds Max 2010.
The following new features have been added to 3ds Max 2010 and have been exposed to MAXScript:
Containers are helper scene objects that can be used to group self-contained content together, manage, publish and inherit the content on disk, including the ability to unload the content objects from memory.
The Containers interface provides management functions for working with the new Container objects.
The Container Helper represents the object used to create and manage containers in the scene.
The new Quadify_MeshModifier based on ProBoolean technology procedurally changes the topology of geometry objects to quads with user-defined size.
The new WelderModifier based on Cloth technology procedurally welds vertices or normals.
Two new methods added to the existing Cloth Modifier to create and remove tears in the cloth.
The XViewChecker feature provides means to interactively check geometry objects in the viewport for various error conditions.
This Core Interface exposes properties and methods for interacting with the xViewChecker feature.
This Core Interface exposes the properties and methods of a flipped faces checker which shows the backfacing faces in a different color.
This Core Interface exposes the properties and methods of an xView checker which shows flipped texture faces.
This Core Interface exposes the properties and methods of an xView checker which shows isolated vertices not used by any faces.
Interface: MissingUVCoordinates
This Core Interface exposes the properties and methods of an xView checker which shows missing texture coordinates.
This Core Interface exposes the properties and methods of an xView checker which shows multiple edges.
This Core Interface exposes the properties and methods of an xView checker which shows open edges (edges referencing only one polygon).
This Core Interface exposes the properties of an xView checker which shows overlapping texture faces.
This Core Interface exposes the properties and methods of an xView checker which shows overlapping faces that typically cause Z-fighting in viewport and rendering.
Interface: OverlappingVertices
This Core Interface exposes the properties and methods of an xView checker which shows overlapping (not welded) vertices within a given tolerance.
This Core Interface exposes the methods of an xView checker which detects T-Vertices where edges meet in the shape of the letter T and the edge loop flow is interrupted by a full polygon.
How To ... Develop A Face Area XView Checker - Part 1
How To ... Develop A Face Area XView Checker - Part 2
How To ... Develop A Face Area XView Checker - Part 3
How To ... Develop A Face Area XView Checker - Part 4
These tutorials show the creation of custom XView Checkers using MAXScript functions.
This Core Interface exposes the new Bitmap Pager settings. The documentation also discusses the Heuristics involved in the Automatic Memory Limit calculations for the Bitmap Pager and the mental ray renderer.
New #pageFile enum added to the list of available system paths.
Global Tuning Parameters Rollout
New properties added to the mental ray renderer to expose the new global tuning parameters for soft shadows, glossy reflections and glossy refractions precision.
Indirect Illumination Reuse FG and GI Disk Caching Rollout
New properties added to the mental ray renderer to control the reuse of FG and GI Caches and the interpolation of caches.
Processing > Translator Options Rollout > Memory_Options
New property added to the mental ray renderer to control the use of automatic and manual memory limit.
New core interface exposing the ability to lock tracks to prevent their editing.
New property . showUnlockedIcons added to the existing MixinInterface.
New methods .getLayerLocked() and .setLayerLocked() added to the existing Core Interface.
Also added a method refreshAnimLayerPropertiesDlg() to the same Core Interface to refresh the Properties dialog.
Interface: SceneExplorerManager
New methods AddLocalizableProperty() and AddLocalizableReadOnlyProperty() added to the existing interface to allow for localizable custom columns.
New methods CreateExplorer() and SetExplorerVisibleColumns() added to the existing interface to allow for creation of an Explorer with specific columns layout and setting the columns layout of existing Explorers.
New method clearAllExplorers() added to close all Scene Explorers and clear the Saved Scene Explorers menu list.
Interface: MaterialExplorerManager
This new Core Interface exposes the Material Explorer to MAXScript.
Three new properties have been added to the existing Interface: .colorCorrectionPrefMode controls the preferred Color Correction mode which is now stored in an INI file and persists between files; .affectColorPickers and .affectMEdit control whether the Color Picker and the Material Editor will be affected by the Gamma settings.
A new command max file preferences gamma added to the list of available MAX commands. It opens the Preference Settings dialog at the Gamma tab.
A new maxOps struct method provides an object exposing several interfaces controlling various advanced viewport shading options like Soft Shadows, Ambient Occlusion and Exposure Control preview, as well as some experimental (unsupported) preview modes - Indirect Lighting and Depth Of Field.
Interface: IViewportShadingMgr
Two new properties added to the existing Core Interface to control the Ambient Occlusion interaction with transparency and the size of the Soft Shadows filter.
This new Core Interface exposes several properties and methods related to the control of Soft Shadows display in the viewports.
This new Core Interface exposes a property to control the display of the Viewport Buttons.
Direct 3DCacheAllocation Query Functions
Three new functions allow the user to query information about the memory, face count and timing of the Direct3D Mesh Cache.
Another function allows the switching between single-threaded and multi-threaded Mesh Cache creation.
EditablePoly Get/Set VertexColor,Illumination and Alpha
New methods were added to get and set the vertex color, illumination and alpha values of selected vertices and selected polygons.
New methods added to commit and cancel the Paint Deform data.
Editable_Poly Polygon Material IDs Floater
Two new methods were added to toggle the visibility of a Material IDs Floater version of the Material IDs rollout, and to test the visibility of the floater.
Editable_Poly Polygon Smoothing Groups Floater
Two new methods were added to toggle the visibility of a Smoothing Groups Floater version of the Smoothing Groups rollout, and to test the visibility of the floater.
Edit_Poly Polygon Material IDs Floater
Two new methods were added to toggle the visibility of a Material IDs Floater version of the Material IDs rollout, and to test the visibility of the floater.
Edit_Poly Polygon Smoothing Groups Floater
Two new methods were added to toggle the visibility of a Smoothing Groups Floater version of the Smoothing Groups rollout, and to test the visibility of the floater.
Accessing AssetManager, AssetUser and Asset Metadata in MAX Files
The way external assets are created, managed and stored throughout 3ds Max has been rewritten from the ground up. New interfaces, objects and methods have been introduced to handle the Asset Data management:
A new Core Interface exposing methods to interact with the Asset Manager and AssetUser IObjects.
Instances of the new AssetUser Class are used to store and manage Asset Data.MAXScript filenames stored in Parameter Blocks can now be coerced to AssetUser Class Instances using the form '<object>.filename as AssetUser'.
MAX File Asset Metadata Stream Access
The.MAX file format now stores all asset data information in a separate stream as metadata which can be accessed and modified by external applications or MAXScript without loading the scene itself.Two methods provide read and write access to the Metadata stored in a .MAX file.
Interface: FileResolutionManager
This new Core Interface exposes methods for resolving asset files.
A new option dupMtlNameAction: added to the existing xrefs.addNewXRefObject() function to control the merging of materials with duplicate names.
Two properties of the mr_Proxy exposed back in 3ds Max 2009 collided with node-level properties using the same name. To solve this, two new aliases were added to the .points and .scale properties of the mr_Proxy object. A note was also included in the documentation showing how the values could be accessed alternatively via the .baseobject property of the object.
The two OBJ I/O plugins now store their settings and presets in a pure ASCII INI file format which can be read and modified using the standard getIniSetting() and setIniSetting() MAXScript functions. Both expose methods to access the current INI file name and Preset INI file name.
Several new properties to control the Welding, Pressure and Tearing features have been added to the Cloth Modifier.
These interfaces were previously available in 3ds Max 2009 via the Flight Studio add-on for OpenFlight simulation database I/O and are now integral part of 3ds Max 2010.
The qat interface allows the adding, swapping and removing of Action Items in the Quick Access Toolbar next to the Application Icon. This includes Action Items defined by MacroScripts.
Three new methods added to the existing modPanel struct to access and control the state of the Pin Stack button of the Modify Panel.
A new property maxOps.productID has been added to the existing interface to determine the "flavour" of 3ds Max the script is running on (3ds Max Entertainment or 3ds Max Design).
A new system information method has been added to return the 3ds Max Language.
Biped Knuckles And Short Thumb Properties
Two new properties added to control the Knuckles and Short Thumbs.
Biped Layers Retargeting Methods
Several new methods added to control the Biped Layer Retargeting.
The following features were initially available as Extension to 3ds Max 2009 for Subscription members and are now an integral part of 3ds Max 2010:
The ProOptimizer modifier provides advanced optimization capabilities.
The Batch ProOptimizer Interface allows the batch processing of optimization tasks.
The ProSound feature provides support for up to 100 sound tracks in stereo and exposes a number of functions to MAXScript.
The Particle Flow Advanced extensionprovides operators previously available in the Orbaz Particle Flow Toolbox #1.
The Particle Flow Advanced extension provides the Express_Save operator previously available in the Orbaz Particle Flow Toolbox #1 only for backwards compatibility when loading older scenes containing this operator. The functionality of the operator is now fully integrated into the core of Particle Flow and the operator is obsolete.
The Particle Flow Advanced extension provides a new default Shape operator replacing the old ShapeStandard Helper. The old operator can still be loaded and created by MAXScript, but is not exposed by the Particle Flow Depot anymore.
Five new methods have been added to the existing ParticleFlow Interface to implement the cleanup functionality previously available in Orbaz Particle Flow Toolbox #1 via a Particle Flow Utility and a Utility Operator.
The following new features have been added to the MAXScript language in 3ds Max 2010:
MAXScript Source Filename Access
Line Numbers are now supported by the MAXScript code tree, allowing error messages and the Debugger to report the line inside the code where an error or break occurred. The new method getSourceFileLine() returns the source file line number it is being called from.
The Assert() function made possible by the support for line numbers allows the developer to assert predicates inside the script code helping to reason about the correctness of the code's execution.
Private and Public Members in Structure Definitions
Struct Members (functions and variables) can now be declared as public or private to control their visibility to outside code and the Debugger.
Structure Creation and Cloning Event Handlers
Struct Definitions can now implement private event handlers which will be called on creation or cloning.
DotNet Objects and Classes Life Time Control
In previous versions of 3ds Max, performing MAXScript garbage collection could cause DotNet event handlers to be deleted too early. Using a new method, this can be avoided.
MAXScript / DotNet Value Conversions
A new method was added to allow the explicit conversion of MAXScript values to DotNet values, specifically to facilitate the creation of DotNet Arrays from MAXScript arrays.
Two new functions, getFileSecurityInfo() and isDirectoryWriteable() have been added to test the security attributes and accessibility of files and directories.
The existing hiddenDOSCommand() method has been updated to work correctly without specifying the optional start path argument. In previous releases, it failed if the start path argument was omitted. In addition, a new optional argument to provide access to the return code of the DOS Command via a by-reference variable has been added.
Node Common Methods-GroupMethods
Two new functions, attachNodesToGroup() and detachNodesFromGroup() have been added to MAXScript to mirror the Main Menu > Group > Attach and Detach operations.
The method will now return false if the argument is undefined to be consistent with the OkToCreate() method.
The existing function has been enhanced to support a custom MAXScript function to composite two images into one. The function will be passed the colors and positions of the two pixels and returns the resulting pixel color. It will be called internally once per every pair of pixels that have to be combined and is faster than using getPixels() and setPixels() inside MAXScript FOR loops.
New on rightClick do() handler added to the existing User Interface controls.
New tooltip construction parameter and property added to the existing Spinner User Interface control.
New tooltip construction parameter and property added to the existing Slider User Interface control.
MacroScriptautoUndoEnabledParameter
New autoUndoEnabled construction parameter added to the existing MacroScript constructor to allow the disabling of automatic Undo record generation for the whole MacroScript body.
User Interface controls' Event Handlers can now be included inside the body of a User Interface Group. Previously, including Event Handlers in Groups caused a Syntax Error.
A new optional 9 th element is now supported by the images: construction parameter and property of buttons, checkbuttons, mapbuttons and materialbuttons to control the use of the Windows Color Theme.
The loading order of startup scripts (especially those loaded from the \Startup folder) has been improved to allow #preFileOpen callback events to use code evaluated from the \Startup folder when loading a .MAX file via command line launching or drag-and-drop onto the 3ds Max desktop shortcut icon.