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.
Exposes methods to create and manage the ProBoolean Compound Object
Exposes methods to create and manage the ProCutter Compound Object
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.
New SceneEffectLoader Interface exposes the Scene Effect Loader Utility to MAXScript.
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.
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.
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.
New Photometric Lights added to 3ds Max 9. Provides physically correct sky light and sun light when rendering with mental ray.
New mental ray shader added to 3ds Max 9. Provides visual representation of the physical sky as an environment map.
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()
The new PathConfig Struct exposes advanced methods for dealing with relative and absolute paths and provides access to System and Profile Paths.
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.
New method has been added to the mapPaths struct: getFullFilePath() . It resolvesthefilename using map paths, returning fully qualified filename if the file is found.
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.
New method has been added to the mapPaths struct: getFullFilePath() . It resolvesthefilename using xref paths, returning fully qualified filename if the file is found.
The new symbolicPaths Struct exposes advanced methods for accessing system symbolic paths and managing user-defined symbolic paths.
New method logName added to logsystem struct. It lets you define the log file name and path.
The type of the Properties .fileName and .fileType in all Bake Elements has been changed from String to Filename.
The type of the Properties .fileName and .dirName has been changed from String to Filename.
The type of the Property .fileName has been changed from String to Filename.
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_CacheSpacewarpModifier : SpacewarpModifier
The type of the Property .cache_name has been changed from String to Filename.
The type of the Properties .bitmapName and .outputName has been changed from StringsArray res. String to FilenameArray resp. Filename.
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.
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.
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.
The type of the filename arguments to the methods fileInPackage() and unloadPackage() has been changed from String to Filename.
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.
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.
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.
The return type of the methods getAnimFileDirectory() and getAnimMapFile() has been changed from String to Filename.
The type of the filename arguments to the methods getLayerCount() and getLayerName() and LoadLayer() has been changed from String to Filename.
The type of the filename arguments to the methods canImportBitmap() and loadCUIFile() has been changed from String to Filename.
The type of the filename arguments to the methods LoadPresetFile() and SavePresetFile() has been changed from String to Filename.
The type of the filename argument to the method createFormFromFile() has been changed from String to Filename.
The type of the filename arguments to the methods export() and exportArray() has been changed from String to Filename.
The type of the filename argument to the method ExportDRA() has been changed from String to Filename.
The type of the filename arguments to the methods LoadAnalysisFile() and SaveAnalysisFile() has been changed from String to Filename.
The type of the filename arguments to the methods GetFiles(), AddFile(), SetFile() and RemoveFileByName() has been changed from String to Filename.
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.
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.
New AnimLayerManager Interface exposes the Animation Layer system to MAXScript.
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.
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.
All Animation Layer Controllers except the Layer_Output controller expose the Layer Interface.
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.
The following properties are now writable: srcFileName, srcItemName
The following properties are now writable: proxyFileName, proxyItemName
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.
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.
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()
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.
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.
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.
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.
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() .
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.
CommCenterGUP : GlobalUtilityPlugin
New Global Utility Plugin added but does not expose any properties, methods or interfaces.