What's New in the MAX 2.0 and 2.5 SDKs
See Also: Updating MAX 1.0 Plug-Ins to work with MAX 2.x.
Overview
This section provides a general overview of the new capabilities of the 3ds max R2 API. New classes have been added, new methods to existing classes have been added, and new parameters to existing methods have been added as well.
Any new classes in the SDK begin their Description section with the line:
This class is available in release 2.0 and later only or
This class is available in release 2.5 and later only.
Any new methods in a class begin:
This method is available in release 2.0 and later only or
This method is available in release 2.5 and later only.
Newly added parameters to existing methods begin:
This parameter is available in release 2.0 and later only or
This parameter is available in release 2.5 and later only.
Newly added data members begin:
This data member is available in release 2.0 and later only or
This data member is available in release 2.5 and later only.
The sub-sections below list some of the major areas of improvement or new capabilities in the SDK. This includes new plug-in types available, some animation capabilities for ImageFilter plug-ins, and the G-buffer system. This section does not discuss all the changes -- only the major ones. Developers of existing 1.x plug-ins can look at the reference information for their plug-in class to review any new capabilities. Note that there is a separate section in the SDK which discusses how to get existing 3ds max R1 plug-ins to work with R2. See Updating MAX 1.0 Plug-Ins to work with MAX 2.x for details.
New in the MAX 2.5 SDK
The major change to the 2.5 API is related to NURBS. The additional capabilities of NURBS system (such as projected curves, trimmed surfaces, etc.) have been made available via the SDK. Developers will need to recompile plug-ins that use the NURBS API to run on 3ds max 2.5 because of these significant changes. If your plug-in #includes either SURF_API.H or TESSINT.H you'll need to recompile. If you don't include these files, your plug-in developed for 3ds max 2.0 will run without problems on 3ds max 2.5 without recompilation. See the Advanced Topics section Working With NURBS for information on the new classes available in 2.5.
Also enhanced for 3ds max 2.5 are the Minnesota Mesh and related classes. See Class MNMesh for details.
There are two new callbacks available via Structure NotifyInfo for pre-save and post-save notification.
New Plug-In Types in MAX 2.0
World Space Modifiers Without Helper Objects.
There is a new type of space warp plug-in that doesn't require a helper object to operate in world space. This was done because some plug-in modifiers needed to operate in world space, and thus needed to be space warps, but didn't require being bound to the dummy helper object. The new WSMs are available to be assigned like OSMs via buttons in the Modify branch of the command panel. They don't need to be specifically bound to a helper object to be created and assigned. 3ds max uses the ClassDesc::IsPublic() method to determine if they may be directly assigned. If IsPublic() returns nonzero they may be assigned by the user. If it returns zero then they depend on the helper object and can only be created when bound to the helper.
Easily created WSM versions of OSMs
Modifiers derived SimpleMod may also be used to easily create a Space Warp version as well. See Class SimpleOSMToWSMObject for details on how this is done.
Track View Utilities
There is a new type of utility plug-in that operate inside of Track View. These are accessed by pressing the Track View Utilities icon in the Track View toolbar. Samples of this type of utility are the 'Randomize Keys', 'Create Out of Range Keys' and 'Select Keys by Time'. These plug-ins are derived from Class TrackViewUtility. See that class for more details on their creation.
Front End Controllers
These new plug-ins allow a developer to completely take over the 3ds max user interface. This includes the toolbar, pulldown menus, and command panel. See Class FrontEndController for details.
Motion Capture Input Devices
Motion Capture Input Device plug-ins can now be written that plug-in to the 3ds max motion capture system. See Class IMCInputDevice for details. Sample code is available in the subdirectory \MAXSDK\SAMPLES\MOCAP.
Notification Program
There is a new program whose source code is in \MAXSDK\SAMPLES\UTILTIES\NOTIFY\NOTIFY.CPP. This program gets invoked by the network manager to handle network progress notifications. The network manager calls it with two command line arguments as follows:
Notify.exe datafile type
Where:
datafile
This is the fully qualified path and filename of the actual notification notice. This is the text that may be sent out as email, fax or whatever the notification program wants to do.
type
This is a numeric value indicating what type of notification this is. The types are defined in \MAXSDK\INCLUDE\ALERTS.H. The options are:
NOTIFY_FAILURE
NOTIFY_PROGRESS
NOTIFY_COMPLETION
A developer may write another "Notify" program in order to do any proprietary type of notifications. Note that "Notify" can be either a "*.exe", a "*.bat", or a "*.cmd" executable. This allows a user to create a simple script file to do something without having to resort to writing a binary program.
The current Notify.exe is very simple as it is used simply as a demonstration. It plays a different wave file for each of the event types. If invoked with no command line, it will bring up a dialog box asking the user to define each of the three wave files. The dialog has "Browse" buttons next to each wave file field which puts the user right into the Windows' "Media" directory where wave files are saved. There are also "play" buttons next to each sound so they can be tested.
Animated Parameter in ImageFilter Plug-Ins
A new system has been provided to allow Filter plug-ins to use animated parameters. These parameters are just like the other parameters in 3ds max that are controlled by a animation controller. These parameters appear in Track View as a separate branch under 'World' labeled 'Video Post'. In order for this to work a developer must create something called a Track View Node. Controllers may then be added to this node. Using the SetValue() and GetValue() methods of the controller allow for values to be stored and retrieved.
Also, Filters may have interactive dialog boxes that may be open and operated at the same time as 3ds max and Track View. This allows a user to press the Animate button and adjust the properties of the filters parameters to a animate the value. See Class ImageFilter, Class ImageFilterInfo and Class ITrackViewNode for the new methods available.
The G-Buffer System
Three new channels has been added to the G-buffer. These are BMM_CHAN_COVERAGE, BMM_CHAN_BG, and BMM_CHAN_NODE_RENDER_ID. See List of Image Channels for more details.
New Notifications (Callbacks)
3ds max 2.0 supports a system where a plug-in can ask to receive a callback when events such as the system unit settings change, system time settings change, or the user executes File/Reset or File/New. The documentation for Structure NotifyInfo describes how this system works.
New Mesh Related Classes
The MNMesh class is provided in 3ds max 2.0 for temporary use by plug-ins, to help with complex topology-based modifications to Meshes. It has capabilities, such as the ability to recognize faces with more than 3 sides, that are useful in certain applications. See Class MNMesh for details.
New NURBS API
The NURBS API from 3ds max 1.0 has been replaced in 3ds max 2.0 and extended in 3ds max 2.5. Developers now have a more complete API for developing with NURBS. See the Advanced Topics section Working With NURBS for details.
New Pre and Post Save Callbacks
For use with 3ds max 2.5 and later, two new options have been added for use with Structure NotifyInfo. These allow plug-ins to get called before and after a 3ds max file is saved.
Network Rendering Manager Access
There is a new Advanced Topics section that documents the protocol used to communicate with the network rendering manager. This is for developers who want to write their own Queue Manager and/or submit net render jobs on their own. This is not an SDK and there is no code -- it is just a detailed description of the TCP/IP protocol used to communicate with the manager. See the Advanced Topics section on Network Rendering for information.
Plug-In Project AppWizard
New to the 3ds max 2.0 SDK is an AppWizard which may be used to easily create new plug-in projects. See the Advanced Topics section on Creating a New Plug-In Project for details on using the AppWizard.
On-Line Help Inside the Visual C++ IDE
A program is provided in \MAXSDK\HELP\SDKLINK.ZIP to allow developers to launch the SDK help file and jump to a specific class or method from within VC++. See the README.DOC file inside that ZIP for a description for how to set this up inside the Developer Studio IDE.