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

# What was 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.

## Geometry

ProBoolean Extension

Interface: PolyBoolean

Exposes methods to create and manage the ProBoolean Compound Object

Interface: ProCutter

Exposes methods to create and manage the ProCutter Compound Object

## Exposure Controls

Logarithmic_Exposure_Control : ToneOperator

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 SceneEffectLoader Interface exposes the Scene Effect Loader Utility to MAXScript.

Viewport Drawing Methods

Newmethodgw.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

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 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 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 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 BitmapProxyMgr Interface exposes the Bitmap Proxy system to MAXScript.

## Asset Tracking System

Interface: ATSOps

New property added to the Asset Tracking System: CheckNetworkPaths

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

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() .

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

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

## Path Configuration, Access and Management

PathConfig Struct

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 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 method has been added to MAXScript: ConvertDirIDToInt() - returns an integer corresponding to the system directory name ID.

mapPaths Struct

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

pluginPaths Struct

The new plugin Paths 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 method has been added to the mapPaths struct: getFullFilePath() . It resolvesthefilename using xref paths, returning fully qualified filename if the file is found.

SymbolicPaths Struct

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

logsystem_Struct

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

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

bipedSystem : System

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

BitmapTexture : TextureMap

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

HairMod : Modifier

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

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

Reflect_Refract : TextureMap

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

Interface: RenderElementMgr

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 : Modifier

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

ViewportManagerCustAttrib interfaces: viewportmanager

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

Interface: colorMan

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

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

Interface: menuMan

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

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

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

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

Interface: BitmapLayerManager

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

Interface: maxOps

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

Interface: BrushPresetMgr

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

Interface: visualMS

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

Interface: XMLMaterial

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

Interface: Hair

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

Interface: BipAnalyzer

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

Interface: ATSCustomDepsOps

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

Interface: memStreamMgr

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

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

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

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

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

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

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

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 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 method provides access to the master controller of a System.

## Animation Layers

Interface: AnimLayerManager

New AnimLayerManager Interface exposes the Animation Layer system to MAXScript.

Float_Layer : FloatController

New Float_Layercontroller created and used by the Animation Layer system to manage layered Float controllers.

Point3_Layer : Point3Controller

NewPoint3_Layercontroller created and used by the Animation Layer system to manage layered Point3 controllers.

Point4_Layer : Point4Controller

NewPoint4_Layercontroller created and used by the Animation Layer system to manage layered Point4 controllers.

Position_Layer : PositionController

New Position_Layercontroller created and used by the Animation Layer system to manage layered Position controllers.

Rotation_Layer : RotationController

New Rotation_Layercontroller created and used by the Animation Layer system to manage layered Rotation controllers.

Scale_Layer : ScaleController

New Scale_Layercontroller created and used by the Animation Layer system to manage layered Scale controllers.

Layer_Output : FloatController

New Layer_Outputcontroller created and used by the Animation Layer system to manage the output of the Layer controllers.

Layer Controller Interfaces

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

## LayerManager Interface

Interface: LayerManager

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

The following properties are now writable: srcFileName, srcItemName

IXrefProxy

The following properties are now writable: proxyFileName, proxyItemName

IXrefRecord

The following properties are now read|write: srcFileName

## Named Selection Sets

SelectionSet Values

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.

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

SelectionSetArray Values

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

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.

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

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 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

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.

## Reference Target Monitor

RefTargMonitor : ReferenceTarget

This classicality 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

The RingArrayinterface 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 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 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 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