What is New in MAXScript > What was New in MAXScript in Previous Versions > What was New in MAXScript in 3ds Max 2012 >

# What was New in MAXScript in 3ds Max 2012

The following page will give you a quick overview of the MAXScript language changes and improvements in 3ds Max 2012. 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 2012.

## New 3ds Max Features Exposure

### Nitrous Graphics System

The NitrousGraphicsManager Core Interface exposes the controls of the new viewports graphics manager to MAXScript. In addition, it provides script-only access to all parameters of all Non-Photorealistic Rendering styles which are not exposed to the 3ds Max User Interface yet. The topic also contains a fully functioning script example implementing the dynamic dialog generation from the exposed parameters including the options to save and load presets for each rendering style.

The OGSDiagnostics Core Interface provides a property to access a graphics hardware-related report.

### MassFX Dynamics Simulation

The Interface : nvpx exposes the MassFX system settings to MAXScript.

The PhysXPanel : ReferenceTarget exposes the settings of the MassFX control panel and its controls to MAXScript.

The UConstraint : Helper is used to define constraints in the MassFX system.

The pxJoint : Helper object is used to define joints in the MassFX system.

The Skeleton : Helper object is used to introduce animated characters as Kinematic Skeleton objects to drive MassFX simulations.

The nvRagdoll : Helper is used to define a ragdoll rig in the MassFX system.

The MassFX_RBody : Modifier is used by the MassFX system to define the properties of a rigid body object.

The nvBox : GeometryClass is a dedicated geometry object used by the MassFX Rigid Body Modifier to define a custom box-shaped shell for physical simulation.

The nvCapsule : GeometryClass is a dedicated geometry object used by the MassFX Rigid Body Modifier to define a custom capsule-shaped shell for physical simulation.

The nvSphere : GeometryClass is a dedicated geometry object used by the MassFX Rigid Body Modifier to define a custom spherical shell for physical simulation.

### Particle Flow Operators

The Birth_File : Helper implements the loading of particle simulations files in the Autodesk Maya Nucleus Particle Cache format saved out of Autodesk Softimage ICE.

### Substance Texture Maps

The Substance textureMap exposes the Substance procedural 2D maps loader to MAXScript.

The SubstanceShader textureMap implements the mental ray shader of the Substance loader.

The Substance_Output textureMap serves as an output selector to the Substance textureMap - this allows you to connect a single Substance textureMap to multiple Substance_Output nodes in the Slate Material Editor to extract various outputs.

### Vector Displacement Texture Maps

The vector_displacement : textureMap class exposes the Vector Displacement map used to load displacement data generated in Autodesk Mudbox.

The max_vdm : textureMap class implements the mental ray shader for rendering the Vector Displacement maps generated in Autodesk Mudbox.

### iRay Renderer

The iRay_Renderer : RendererClass provides access to the iRay path tracer used for physically correct lighting simulation using the CPUs and any available GPUs.

The iRay String Options provide access to some advanced features currently not exposed to the renderer's User Interface.

### Animation

The AutoTangentMan Core Interface provides access to the AutoTangent algorithm used by 3ds Max, including the new unified AutoTangent implementation found in Autodesk 3ds Max, Autodesk Maya and Autodesk Softimage.

### Help System

The HelpSystem Core Interface provides access to the online and local product help systems.

## Improvements to Existing Features

### Quicksilver Hardware Renderer

The Quicksilver_Hardware_Renderer has been updated to use the new Nitrous Graphics System, resulting in significant changes to both the User Interface controls and the MAXScript exposure of the corresponding features.

### Unwrap UVW Modifier

The Unwrap_UVW Modifier has been significantly improved in 3ds Max 2012:

- A new Least Squares Conformal Mapping (LSCM) unwrap method has been introduced, allowing the fast peeling of the Mapping Coordinates.
- A new set of Regular Mapping functions has been added to the existing unwrap6 MixinInterface of the modifier.
- A new set of Grouping functions have been added to the UI and to MAXScript.
- A new set of Cluster Rescaling and Aligning functions has been added to the UI and to MAXScript.
- A set of new functions for adding custom toolbars and floaters to the Edit UVWs Floater has been added to MAXScript. These custom UI elements can be defined manually via a dedicated .INI configuration file to expose additional tools.
- The User Interface of the Unwrap_UVW Modifier, both in the Command Panel and in the Edit UVWs Floater, has been redesigned for faster access to often used features.
- The documentation of the Unwrap_UVW Modifier which had grown over the last decade to one of the biggest topics in the MAXScript Reference has been split into a large number of sub-topics covering related tools. These sub-topics are easily accessible through the main Unwrap_UVW Modifier topic.

## Retired, Removed and Unavailable Features

### Interface: ViewportSSB

The ViewportSSB Interface is not available by default in 3ds Max 2012 because the Viewports are set to use the Nitrous Graphics System. You must switch the Viewports to the Direct3D driver to access this interface.

### Legacy Dynamics

The properties .bounce , .staticFriction and .slidingFriction have been removed from the Standard Material due to the complete removal of the legacy Dynamics system introduced back in 3ds Max 2.

The following SpacewarpObjects have been removed from 3ds Max 2012 due to the complete removal of the legacy Dynamics system introduced back in 3ds Max 2:

- SDynaFlect : SpacewarpObjects
- UDynaflect : SpacewarpObjects
- UDynaDeflector : SpacewarpObjects

### Reactor Dynamics

All reactor interfaces, modifiers and objects have been removed from 3ds Max 2012 due to the complete removal of the reactor dynamics system introduced back in 3ds Max 5.

## MAXScript Language Improvements

### maxClass DLL-Related Properties

To reduce the initial memory footprint and to speed up the startup process, 3ds Max 2012 increases the number of plugins that can be deferred and loaded on demand.

Two new read-only properties - .dllName and .dllIsLoaded - have been added to maxClass to query the DLL it was defined in and to check whether that DLL has been already loaded.

### MacroScript Multi-Threaded Loading

MacroScripts are now processed on 3ds Max startup using multiple threads.

### Custom Attributes Version Number Support On Loading

In previous versions, Custom Attribute definitions loaded from a file always replced the definitions in the scene. Starting with 3ds Max 2012, this will only happen if the version number of the definition from the loaded scene is higher than the current definition's version number. See this topic for implementation details.

### Resource String Replacement

To simplify localization of scripts, it is now possible to replace hard-coded strings with Resource IDs defined in external .res files.

### StringStream Value

The append() method is now implemented by the StringStream Value class, allowing for memory-efficient appending of a String value to an existing StringStream.

### Free() Method

The free() method has been implemented since 3ds Max 9 but has remained undocumented. This method frees the memory used by the value without waiting for a garbage collection to occur. It is implemented for the following classes: String Value, StringStream Value, FileStream Value, BitMap Value, Array Value, BitArray Value, Mesh Value

### Rollout Help Event

A new on <rollout> help do() event handler can be specified in rollouts to handle F1 pressed while a rollout has focus.

### Rollout and UI Control Caption

The Caption contruction parameter of Rollouts and UI Controls used to be required as string literal, now it can be a non-local variable (global or top-level local variable in struct or plugin definitions)

### Radiobutton Tooltips

Tooltops have been added to radiobutton user interface controls - either a single string for all labels, or one tooltip per label.

### Test Framework Assert Functions

Several new Assert functions and an AssertReporter struct to manage their message log have been exposed to MAXScript and are now used internally by Autodesk for unit tests during the development of 3ds Max.

### CRT Debug Functions

Several C Run-Time Debug Functions have been exposed to MAXScript and are provided as examples in the SDK. They are meant for hard-core programmers and allow the corrpution of the MAXScript Heap, the check for Heap validity and the generating of C-level asserts.

### Changes To Existing Features:

The previously broken methods GetEulerQuatAngleRatio() and GetMatQuatAngleRatio() documented in the EulerAngles Values topic have been fixed to output correct values using arrays, eulerAngles or by-reference variables.

The existing Viewport Drawing Methods must be wrapped in a Viewport Redraw Callback function when the Nitrous Graphics Manager is active. Otherwise the gw. methods will not be executed due to the progressive refinement approach used by the Nitrous system.

#### See Also

- New in MAXScript