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 in
3ds Max
9:...
throughout the MAXScript
Reference.
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.
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.
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
BitmapProxyMgr
Interface
exposes the Bitmap Proxy
system to MAXScript.
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
resolves the
filename using map paths,
returning fully qualified
filename if the file is
found.
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.
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.
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.
Unwrap_UVW interfaces: unwrap5
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
method
provides access to the
master controller of a System.
New
AnimLayerManager
Interface
exposes the Animation
Layer system to MAXScript.
New
Float_Layer
controller
created and used by the
Animation Layer system to manage layered Float
controllers.
Point3_Layer : Point3Controller
New
Point3_Layer
controller
created and used by the
Animation Layer system to manage layered Point3
controllers.
Point4_Layer : Point4Controller
New
Point4_Layer
controller
created and used by the
Animation Layer system to manage layered Point4
controllers.
Position_Layer : PositionController
New
Position_Layer
controller
created and used by the
Animation Layer system to manage layered Position
controllers.
Rotation_Layer : RotationController
New
Rotation_Layer
controller
created and used by the
Animation Layer system to manage layered Rotation
controllers.
New
Scale_Layer
controller
created and used by the
Animation Layer system to manage layered Scale
controllers.
Layer_Output : FloatController
New
Layer_Output
controller
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
following properties are now read|write: srcFileName
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.
Interface: Module_Snooper_Interface
New
Module_Snooper
UtilityPlugin provides memory debugging
options.
The new
Module_Snooper_Interface exposes some of the
features of the Module Snooper to MAXScript.
RefTargMonitor : ReferenceTarget
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.
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.
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.
See also
MAXScript Language Improvements in 3ds Max 9