What's New in MAXScript in 3ds Max 2019 And Updates

This topic will give you a quick overview of the MAXScript language changes and improvements in 3ds Max 2019. For details on each feature, please follow the links to the respective documentation pages.

Note:

New additions to MAXScript in 3ds Max 2019 are marked with NEW in 3ds Max 2019:... throughout the MAXScript Reference. The word NEW links back to this page.

New in 3ds Max 2019.3 Update

Viewport ActiveShade Mode

The ActiveShadeFragmentManager Interface provides MAXScript access to the new viewport ActiveShade display mode.

Custom Attribute Container Owner

A new property is exposed on the custom attribute array returned by MAXWrapper.custattributes, .owner, that contains the owning object.

Node Event System Changes

Two new functions have been added to retrieve information about registered NodeEventCallbacks: getNodeEvents() and showNodeEvents(). A new handling option has been added to NodeEventCallbackValue, polling, which tells the system the callback can be triggered by the new triggerNodeEventCallback() function.

The general event callback inspection function callbacks.show() now takes an optional asArray: keyword argument, which causes the output to be formatted as an array.

3ds Max Process Information

Three new functions have been added to the sysinfo struct to get information about the 3ds Max process, getMAXHandleCount(), getMAXUserObjectCount(), and getMAXGDIObjectCount().

Previously undocumented items

  • The cfgMgr struct, which provides access to the 3dsmax.ini configuration file, is now documented.
  • The isDeleted <MAXWrapper> function and MAXWrapper.isDeleted property are now documented; they indicate whether a MAXWrapper is deleted.
  • The <XRefScene>.overlay property is now documented.
  • The editPolyModReadyToBridge() function is now documented.

New in 3ds Max 2019.2 Update

Fluid Loader

The FluidLoader class is now accessible and creatable in MAXScript. This class exposes the Fluid Loader Geometry object.

Script Loading Detection

The new getMaxscriptStartupState() function can be used to determine the loading state of standard and startup scripts. There is a new corresponding #preStartupScriptLoad event called immediately before the startup scripts are executed.

Rendering UV Range of TextureMaps

The renderMap() function has an additional range parameter to specify a UV range to render, and a new disableBitmapProxies parameter to disable the proxy system.

Max Information

  • The maxVersion() function now includes release year and product version items.
  • New functions in the sysinfo stucture, getCommandLine() and getCommandLineArgs() return information about the command line that executed Max.
  • SystemTools.isDebugBuild() is a new function that indicates whether the currently running 3ds Max is a debug or release build.

Root Node User Properties

The get/setUserProp/val/buffer(), deleteUerProp(), and doesUserPropExist() functions now recognize a special rootNode parameter, allowing access to the scene root node user properties. The parameter can also be the root node of an xref, which is held in the xref file .tree property.

Adding Nodes via Layer Manager

The LayerProperties interface has a new method, addNodes(), that works like addNode(), but takes an array of nodes, allowing you to add multiple nodes in a single call.

SkinOps changes

The SkinOps struct has two new functions: SetBoneWeights() and Hammer(). In addition, many functions that previously required that the modifier UI be selected, now take an optional node:<node> or name:<string> argument, which when supplied, is applied to the specified node even if it is not selected.

Miscellaneous Changes

  • The noValue predefined gobal variable has been renamed silentValue to more accurately indicate what it does.

Removed Items

Synchronization mode related items that were removed from the Unwrap_UVW modifer in 3ds Max 2018.2 Update, have been removed from the documentation: setSyncSelectionMode(), getSyncSelectionMode(), syncTVSelection(), and syncGeomSelection().

Previously undocumented items

New in 3ds Max 2019.1 Update

File Archiving

The File > Archive command is now exposed in MAXScript as archiveMAXFile().

XRefObject re-parenting

The xrefs.addNewXRefObject() method has a new reparentAction parameter to specify how to handle xref re-parenting.

The objXRefts. addNewXRefObject() method has new flag bits to specify how to handle xref re-parenting.

Improved version information

The maxversion() function now returns the build number, and is consistent with the information returned from SystemTools.GetBuildNumber().

The SystemTools struct now has a new function, GetOSVersion(), to report the OS version that works with Windows 10.

Node user-defined properties methods

Two new methods provide better control over how user-defined node properties are stored and retrieved, getUserPropVal() and setUserPropVal(). The doesUserPropExist() method checks whether a user-defined node property exists, and deleteUserProp() removes a user-defined node property.

Alembic Importer File Inspection Methods

Several new methods have been added to the AlembicImport Import Plugin to expose Alembic file inspection functionality.

FBX Exporter Animation Option

The FBX Exporter has a new parameter option, "ExportAnimationOnly".

Fluids

The Volume helper object is exposed as the VolumeHelper : Helper class.

Miscellaneous

  • New miscellaneous function createFloatControllerWithRandomValues() for creating random data for testing.
  • The scene compression setting is now exposed in the maxOps interface methods getCompressSceneFileOnSave() and setCompressSceneFileOnSave().

Previously undocumented items

New in 3ds Max 2019

Advanced Wood

The Advanced Wood procedural texture map is exposed as the Advanced_Wood : TextureMap map.

OSL

The Open Shading Language (OSL) is now supported in 3ds Max. There are many new OSL shaders available, and a generic OSLMap class that can be used to load or modify existing shaders, or create new ones.

Shape Booleans

The ShapeBooleanObject class exposes the functionality of the new Shape Booleans feature.

Alembic Import and Export

Improvements to the Alembic import and export plug-ins are exposed as new or changed properties and methods in Alembic_Import: Importer_Plugin and Alembic_Export: ExporterPlugin.

Custom Scene File Data Streams

You can now write and read custom data to 3ds Max scene files. In MAXScript this functionality is exposed by methods in:

Rollout Resizing Changes

Rollouts and Rollout Floaters now support automatically re-calculating the layout when they are re-sized. This accommodate resizing when docked in the command panel, since command panel can now be arbitrarily sized. Changes include:

Stream parameter for peristents.show()

The persistents.show() method has a new to:<stream> parameter to direct output to.

deepCopy() changes

The deepCopy() method now applies to Dictionaries, DataPairs, and Structures, as well as Arrays. It has been optimized to guarantee that if the copied object contains two references to a value, only one copy of that value is made. That is, the returned object contains two references to a single value, rather than two copies (which was the previous behavior).

Documentation Enhancements

The procedure for enabling autocomplete in the MAXScript Editor is now documented.

What's New Previous

Review new features in previous releases.

Icon made by Freepik from www.flaticon.com.