This topic describes new items and changes that affect the 3ds Max 2017 C++ SDK.
3ds Max 2017 is not binary compatible with previous versions. This means that plug-ins must be recompiled using the 3ds Max 2017 SDK and the Microsoft Visual C/C++ version 14.0 compiler. See the SDK Requirements to know the platform requirements for building plug-ins in 3ds Max 2017.
New classes support TextPlus bevel profiles:
See the header <maxsdk>\include\BevelProfileInterface.h.
The Voxel/Heat Map skin weighting feature is now exposed in the SDK by the following classes:
See the header <maxsdk>\include\geombind.h, and the example at <maxsdk>\samples\modifiers\bonesdef\VoxelWeights\BMD_Command_VoxelWeight.cpp.
Note that the solver uses openGL and assumes that there is already a valid context. So before calling any of the methods an openGL context must be created first and set current. Also all formats are in an openGL format.
See Geombind.h for documentation and maxsdk\samples\modifiers\bonesdef\VoxelWeights\BMD_Command_VoxelWeight.cpp for example usage.
The OpenSubdiv feature now has SDK exposure via the OSDModifierInterface class (see the OSDModInterface.h header). You can get and set the modifier’s parameters.
OpenSubdiv Crease Sets are exposed by the CreaseSetContainer.h header, which allows plug-ins to work with creased edges and vertices.
The SimplePolyObject class (in SimplePolyObj.h) allows you to easily create procedural objects compatible with Editable Poly.
The Trackview layout is now saved (made "sticky"), and this is customizable with GetDefaultCurveEditorLayout() and SetDefaultCurveEditorLayout(), in itreevw.h.
The SDK now supports Qt for creating plug-in UIs. The QMaxParamBlockWidget class integrates Qt widgets with parameter blocks, and some widgets specialized for use in 3ds Max are available in <maxsdk>\include\Qt. Note: some of these widgets are experimental and will change in a future release.
See the <maxsdk>\samples\systems\sunlight project for an example of a plug-in using Qt for its UI.
3ds Max uses a patched version of Qt 4.8.5, and you can build this from source, or use a pre-compiled package available on ADN. See Using Qt with 3ds Max Plug-ins in the Developer’s Guide for more information.
The new Physical Sun and Sky feature is exposed in the headers under <maxsdk>\include\DaylightSimulation. This is an interface the handles computations related to the Perez All-Weather sky model.
The Mental Ray renderer is now an install option (on by default) in 3ds Max. The mental ray SDK and related headers have been removed from the main SDK.
Material-related headers have been re-organized, and are now in a new <maxsdk>\include\Materials directory. These changes are reflected in imtl.h.
The imtl.h header has been re-organized into several smaller files. Projects that reference this header may have to now explicitly include splineshp.h and spline3d.h, which are no longer included in imtl.h.
The new Physical Material feature replaces older common materials that were not consistent or standard, and mental ray-specific.
Multi-tile functionality is exposed in the IMultiTile class (in IMultiTile.h), and supports:
For an example, see <maxsdk>\samples\materials\MultiTile.
A new notification API facilitates ActiveShade renderer implementations. This API provides methods for monitoring scene elements, and is a more effective mechanism than having to monitor ReferenceTargets directly in the scene. See the IInteractiveRenderingManager class and the headers located in maxsdk/include/NotificationAPI/.
Several extension classes have been eliminated, and their functionality is moved into the class being extended:
Changed the mechanism for getting a IInteractiveRenderer from Renderer; now using a direct method, rather than going through the interface mechanism.
render.h and InteractiveRenderer.h have been split into several smaller files, all under <maxsdk>\include\rendering, with about one class per file. render.h still exists and can continue to be used; it includes all the new files.
Class RendProgressCallback2 has been eliminated and folded into RendProgressCallback, adding method: virtual void SetStep(int current, int total) = 0;
Class IRenderProgressCallback was renamed to IInteractiveRenderer::IProgressCallback, to remove ambiguity in the way the class was named.
All renderer requirements (kRequirement_*) were renamed to remove references to the Max version number.
Plug-ins can now load specific cursors as needed. For a list of available cursor images, see the MouseCursors.h documentation.
RendParams::GetRenderMode() is deprecated, and the associated RenderMode enum is removed.
The Windows Theme option has been removed from the 3ds Max UI, and the corresponding SDK exposure has been removed as well. In IColorManager, the ColorSchemeType enum, and the GetColorSchemeType() and SetColorSchemeType() methods.
See the C++ API Reference > Topics > Deprecated List for more deprecated items.