What's New: 3ds Max 2017 SDK

This topic describes new items and changes that affect the 3ds Max 2017 C++ SDK.

SDK Break

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.

Text Plus

New classes support TextPlus bevel profiles:

See the header <maxsdk>\include\BevelProfileInterface.h.

Skin Weighting

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.

OpenSubdiv

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.

SimplePolyObject

The SimplePolyObject class (in SimplePolyObj.h) allows you to easily create procedural objects compatible with Editable Poly.

Trackview

The Trackview layout is now saved (made "sticky"), and this is customizable with GetDefaultCurveEditorLayout() and SetDefaultCurveEditorLayout(), in itreevw.h.

Qt

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.

Daylight Simulation

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.

Mental Ray

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.

Materials

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.

Physical Material

The new Physical Material feature replaces older common materials that were not consistent or standard, and mental ray-specific.

Multi-Tile SDK

Multi-tile functionality is exposed in the IMultiTile class (in IMultiTile.h), and supports:

For an example, see <maxsdk>\samples\materials\MultiTile.

Notification API

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

Rendering

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.

Mouse Cursors

Plug-ins can now load specific cursors as needed. For a list of available cursor images, see the MouseCursors.h documentation.

Removed and Deprecated

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.