What is New in MAXScript in 3ds Max 9

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

Note:

All new additions to MAXScript in 3ds Max 9 are marked with new.gif NEW in 3ds Max 9:... throughout the MAXScript Reference.

Geometry

ProBoolean Extension

Interface: PolyBoolean

new.gif Exposes methods to create and manage the ProBoolean Compound Object

Interface: ProCutter

new.gif Exposes methods to create and manage the ProCutter Compound Object

Exposure Controls

Logarithmic_Exposure_Control : ToneOperator

new.gif A new tone mapping algorithm has been implemented for this exposure control. The old algorithm is still available for backwards compatibility. A new property .useLegacyAlgorithm has been added to allow the switching between the old and the new behavior.

DirectX and DirectX Shaders

Interface: SceneEffectLoader

new.gif New SceneEffectLoader Interface exposes the Scene Effect Loader Utility to MAXScript.

Viewport Drawing Methods

new.gif New method gw.setDirectXDisplayAllTriangle() lets the user change the Display All Triangle Edges option available in the UI as a checkbox in the Customize>Preferences>Viewports>Configure Driver dialog of the Direct3D driver.

Mental Ray

New mental ray properties in 3ds Max 9

new.gif Two new read-only properties were added to the mental ray renderer: .LastTotalNonRenderTime_ms and .LastTotalGeomTranslationTime_ms.
They will contain details about the translation time.

Arch___Design__mi: material

new.gif New Arch and Design Material added to 3ds Max 9 provides advanced functionality like shader presets, glossy reflections, custom BRDF reflectivity functions, built-in environment occlusion and edge rounding effects etc.

mr_Sky : light

mr_Sun : Light

new.gif New Photometric Lights added to 3ds Max 9. Provides physically correct sky light and sun light when rendering with mental ray.

mr_Physical_Sky : textureMap

new.gif New mental ray shader added to 3ds Max 9. Provides visual representation of the physical sky as an environment map.

Bitmap Proxy Management

Interface: BitmapProxyMgr

new.gif New BitmapProxyMgr Interface exposes the Bitmap Proxy system to MAXScript.

Asset Tracking System

Interface: ATSOps

new.gif New property added to the Asset Tracking System: CheckNetworkPaths

new.gif New methods added to the Asset Tracking System to allow the querying of a file's status: GetFileStatus(), GetFileSystemStatus(),TestFileSystemStatus().

new.gif New methods added to the Asset Tracking System to allow the conversion of selected paths to UNC, relative or absolute paths: ResolveSelectionToUNC(), ResolveSelectionRelativeToProjectFolder() and ResolveSelectionToAbsolute().

new.gif Return value for checkin(), checkout(), undocheckout(), addfiles() and getlatest() changed from <void> to <bool>.

new.gif New methods added to the Asset Tracking System: IsInputFile(),SetWorkingFolder(), GetWorkingFolder(), IsFileShareLocked()

Path Configuration, Access and Management

PathConfig Struct

new.gif The new PathConfig Struct exposes advanced methods for dealing with relative and absolute paths and provides access to System and Profile Paths.

3ds Max System Directories

new.gif New path names have been added as options to the GetDir(), SetDir() and some pathConfig struct methods expecting a system directory name value: #animations, #archives, #downloads, #maxData, #Photometric, #proxies, #renderassets, #renderPresets, #renderoutput, #temp, #userMacros, #userScripts, #userStartupScripts, #userIcons

new.gif New method has been added to MAXScript: ConvertDirIDToInt() - returns an integer corresponding to the system directory name ID.

mapPaths Struct

new.gif New method has been added to the mapPaths struct: getFullFilePath(). It resolves the filename using map paths, returning fully qualified filename if the file is found.

pluginPaths Struct

new.gif The new pluginPaths struct provides two methods: count() and get(). The former method returns the number of defined plugin paths, the latter returns the indexed plugin path.

xrefPaths Struct

new.gif New method has been added to the mapPaths struct: getFullFilePath(). It resolves the filename using xref paths, returning fully qualified filename if the file is found.

SymbolicPaths Struct

new.gif The new symbolicPaths Struct exposes advanced methods for accessing system symbolic paths and managing user-defined symbolic paths.

logsystem const StructDef

new.gif New method logName added to logsystem struct. It lets you define the log file name and path.

Filename Properties and Arguments Changed from String to Filename Type

Bake Elements

new.gif The type of the Properties .fileName and .fileType in all Bake Elements has been changed from String to Filename.

bipedSystem : System

new.gif The type of the Properties .fileName and .dirName has been changed from String to Filename.

BitmapTexture : TextureMap

Particle_Bitmap : TextureMap

new.gif The type of the Property .fileName has been changed from String to Filename.

HairMod : Modifier

new.gif The type of the preset name argument in the SavePreset() and LoadPreset() methods of the Hair Interface has been changed from String to Filename.

Particle_Cache : SpacewarpModifier

Point_Cache : modifier

Point_CacheSpacewarpModifier : SpacewarpModifier

new.gif The type of the Property .cache_name has been changed from String to Filename.

Reflect_Refract : TextureMap

new.gif The type of the Properties .bitmapName and .outputName has been changed from StringsArray res. String to FilenameArray resp. Filename.

Interface: RenderElementMgr

new.gif The types of the filename arguments in the SetCombustionOutputPath() and SetRenderElementFilename() methods as well as the type of the return values of the GetCombustionOutputPath() and GetRenderElementFilename() methods have been changed from String to Filename.

Unwrap_UVW interfaces: unwrap5

new.gif The type of the filename argument to the method renderUV() has been changed from String to Filename.

ViewportManagerCustAttrib interfaces: viewportmanager

new.gif The type of the filename argument to the method saveFXFile() has been changed from String to Filename.

Interface: colorMan

new.gif The types of the filename arguments to the methods loadColorFile(), saveColorFile(), setIconFolder() as well as the return value types of the methods getColorFile(), getFileName(), getIconFolder() have been changed from String to Filename.

Interface: msZip

new.gif The type of the filename arguments to the methods fileInPackage() and unloadPackage() has been changed from String to Filename.

Interface: menuMan

new.gif The types of the filename arguments to the methods loadMenuFile() and saveMenuFile() as well as the return value type of the method getMenuFile() have been changed from String to Filename.

Interface: actionMan

new.gif The types of the filename arguments to the methods loadKeyboardFile() and saveKeyboardFile() as well as the return value type of the method getKeyboardFile() have been changed from String to Filename.

Interface: dragAndDrop

new.gif The types of the filename arguments to the methods dropPackage(),downloadPackage() and DownloadUrlToDisk() as well as the return value type of the method getDownloadDirectory() have been changed from String to Filename.

Interface: LoadSaveAnimation

new.gif The return type of the methods getAnimFileDirectory() and getAnimMapFile() has been changed from String to Filename.

Interface: BitmapLayerManager

new.gif The type of the filename arguments to the methods getLayerCount() and getLayerName() and LoadLayer() has been changed from String to Filename.

Interface: maxOps

new.gif The type of the filename arguments to the methods canImportBitmap() and loadCUIFile() has been changed from String to Filename.

Interface: BrushPresetMgr

new.gif The type of the filename arguments to the methods LoadPresetFile() and SavePresetFile() has been changed from String to Filename.

Interface: visualMS

new.gif The type of the filename argument to the method createFormFromFile() has been changed from String to Filename.

Interface: XMLMaterial

new.gif The type of the filename arguments to the methods export() and exportArray() has been changed from String to Filename.

Interface: Hair

new.gif The type of the filename argument to the method ExportDRA() has been changed from String to Filename.

Interface: BipAnalyzer

new.gif The type of the filename arguments to the methods LoadAnalysisFile() and SaveAnalysisFile() has been changed from String to Filename.

Interface: ATSCustomDepsOps

new.gif The type of the filename arguments to the methods GetFiles(), AddFile(), SetFile() and RemoveFileByName() has been changed from String to Filename.

Interface: memStreamMgr

new.gif The type of the filename argument to the method openFile() has been changed from String to Filename.

Mixin Interface: maxOps.GetCurRenderElementMgr(...) : Interface: RenderElementMgr

new.gif The types of the filename arguments to the methods SetCombustionOutputPath() and SetRenderElementFilename() as well as the return value types of the methods GetCombustionOutputPath() and GetRenderElementFilename() have been changed from String to Filename.

Mixin Interface: memStreamMgr.openString(...) : Interface: memStream

new.gif The return value type of the method getFileName() has been changed from String to Filename.

Mixin Interface: netRender.getManager(...) : Interface: NetManager

new.gif The type of the file: keyword argument to the method NewJob() has been changed from String to Filename.

Mixin Interface: (schematicviews.open "A";schematicviews.current) : Interface: SchematicView

new.gif The return value type of the method getBackgroundImageName() as well as the type of the filename argument to the method setBackgroundImageName() has been changed from String to Filename.

Mixin Interface: batchRenderMgr.createView(...) : Interface: batchRenderViewOps

new.gif The value type of the properties .presetFile and .outputFilename has been changed from String to Filename.

Auto-Backup

Controlling the Auto-Backup

Interface: autosave

new.gif New autosave Interface exposes the Auto-Backup feature and lets the user enable and disable it, change the backup interval, the number and the name of auto-backup files, reset the timer and check whether the system is currently active. The Auto-Backup system has been refactored and will now respect the scene dirty flag (scene needs saving). In addition, the timer will be reset after the saving has finished, leaving the user enough time to work on the scene before the next auto-save.

Controllers

GetMasterController() Method

new.gif New method provides access to the master controller of a System.

Animation Layers

Interface: AnimLayerManager

new.gif New AnimLayerManager Interface exposes the Animation Layer system to MAXScript.

Float_Layer : FloatController

new.gif New Float_Layer controller created and used by the Animation Layer system to manage layered Float controllers.

Point3_Layer : Point3Controller

new.gif New Point3_Layer controller created and used by the Animation Layer system to manage layered Point3 controllers.

Point4_Layer : Point4Controller

new.gif New Point4_Layer controller created and used by the Animation Layer system to manage layered Point4 controllers.

Position_Layer : PositionController

new.gif New Position_Layer controller created and used by the Animation Layer system to manage layered Position controllers.

Rotation_Layer : RotationController

new.gif New Rotation_Layer controller created and used by the Animation Layer system to manage layered Rotation controllers.

Scale_Layer : ScaleController

new.gif New Scale_Layer controller created and used by the Animation Layer system to manage layered Scale controllers.

Layer_Output : FloatController

new.gif New Layer_Output controller created and used by the Animation Layer system to manage the output of the Layer controllers.

 

Layer Controller Interfaces

new.gif All Animation Layer Controllers except the Layer_Output controller expose the Layer Interface.

LayerManager Interface

Interface: LayerManager

new.gif Calling layermanger.newlayerfromname() triggers a new layer created callback. In previous versions, when polling the callback notification parameter, it would report the wrong name - the same default name that layermanager.newlayer() would report. This error has been fixed.

Object XRefs

IXrefItem Interface

new.gif The following properties are now writable: srcFileName, srcItemName

IXrefProxy

new.gif The following properties are now writable: proxyFileName, proxyItemName

IXrefRecord

new.gif The following properties are now read|write: srcFileName

Named Selection Sets

SelectionSet Values

new.gif The new .name property of named selection sets can be both get and set. This allows the direct renaming of existing named selection sets without the need to delete the old set and recreate a new one with a new name.

new.gif The isDeleted() method is now valid for named selection sets.

SelectionSetArray Values

new.gif The deleteItem() method for named selection sets can now accept the selection set value instead of the name of the selection set as the second argument.

Point Cache

Point_Cache : modifier

new.gif The PointCache Modifier has been replaced with the previously available as free plug-in PointCache2 modifier. It provides advanced controls over the cache playback and can now be used to share deformation and animation data with Autodesk Maya which implements a new cache using the same data format.

new.gif The same modifier defines the PointCacheMan struct exposing a method to get the current memory usage by PointCache modifiers: pointCacheMan.GetMemoryUsed()

new.gif The same modifier defines the CacheOps struct exposing methods to enable and disable modifiers below the Cache, Record, Reload and Unload the cache via MAXScript: CacheOps.DisableBelow(), cacheOps.EnableBelow(), cacheOps.RecordCache(), cacheOps.Reload, cacheOps.Unload()

Simple Face Data

Interface: simpleFaceManager

new.gif New Per-Face Data storage exposed to MAXScript via the simpleFaceManager Interface and the simpleFaceChannel MixinInterface returned by some of its methods. Enables the storage of integer, index, float, boolean, point2 and point3 values in each face.

Dialog Monitor

Interface: DialogMonitorOPS

Interface: UIAccessor

new.gif The DialogMonitorOPS Interface provides a system to register custom callbacks to be triggered by UI activities and handle dialogs and popups automatically using the methods exposed by the UIAccessor Interface.

Module Snooper Interface

Interface: Module_Snooper_Interface

new.gif New Module_Snooper UtilityPlugin provides memory debugging options.

new.gif The new Module_Snooper_Interface exposes some of the features of the Module Snooper to MAXScript.

Reference Target Monitor

RefTargMonitor : ReferenceTarget

new.gif This class can hold an indirect reference to any ReferenceTarget. It was added mainly for internal testing, but was left accessible as someone could find it useful in a script.

Systems

Interface: RingArray

new.gif The RingArray interface exposes a creation method for the RingArray System. This interface was created mainly for test and debugging purposes as the RingArray has no real function in 3ds Max. It is only an System example.

Character Studio

Biped Node Hierarchy

new.gif New methods added to the Biped Struct to allow MAXScript access to the twisty nodes and links in a character studio Biped: biped.maxTwistNodes(), biped.maxTwistLinks() and biped.getTwistStartID().

Viewport Frame Rate

viewport.getFPS

new.gif New method added to the viewport Struct to allow MAXScript access to the frame rate measurement of the current viewport provided by the Show Statistics option.

Communication Center

CommCenterGUP : GlobalUtilityPlugin

new.gif New Global Utility Plugin added but does not expose any properties, methods or interfaces.

See also

MAXScript Language Improvements in 3ds Max 9

Documentation Changes in 3ds Max 9

New in MAXScript