On Wednesday 3ds Max 2020 started to roll out to customers and partners. The most important news is that 3ds Max 2020 is a binary breaking release and bumps the developer environment to Visual Studio 2017, so C++ plugins will need to be minimally recompiled. There was not a lot of change to the SDK, so rebuilding should not be an issue.
To start, it's important to know what came into 3ds Max during the 2019 cycle, which is of course all included in the 20202 release. Here is a list of links to feature updates that came from 2019 Update 1 through 3ds Max 2020.
- What’s new in 3ds Max 2019 Update 1 here
- What’s new in 3ds Max 2019 Update 2 here
- What’s new in 3ds Max 2019 Update 3 here
- What’s new in 3ds Max 2020 here
- Also see the current AREA new feature blogs here.
Plugin Package Format (aka App Store bundle format)
The 3ds Max product team also released a Forge 3ds Max Design Automation engine into beta last fall. See here for that info. The Plugin Package Format is an important aspect of the 3ds Max DA functionality, but it also extends to the entire 3ds Max product (3ds Max, 3dsmaxbatch, and 3ds Max DA). If you are someone who customizes 3ds Max, especially as a commercial developer, or a tools developer, where you need to redistribute the customization routines/plugins, this format can be very helpful. It is completely independent of the 3ds max install and profile locations. You can place this anywhere, and 3ds Max can be configured to use it and as a default location as well. It also helps you to keep your file set in a standalone folder structure.
Changes to Plugin Package format for 3ds Max 2020 are mentioned here in the change listing. One thing to note is that
UpgradeCode is now a required value. This help ensures there are no clashes between like-named packages. Make sure to read the important changes to that aspect. Packages without an
UpgradeCode will not load in 3ds Max 2020 (but did in prior releases). The package format and MSI that are generated for the App Store are using Microsoft standards (see here). The
UpgradeCode is explained in greater detail there. See these sections for complete details:
We also have two examples showing this Plugin Package Format for the Autodesk App Store:
- https://github.com/ADN-DevTech/3dsMax-Bake-Radiosity (C++ utility plugin)
- https://github.com/ADN-DevTech/3dsMax-Explode-Geometry (.NET plugin)
This format is used by any of the applications that are supported in the App Store. This means products like Revit, AutoCAD, and Inventor all use this format as well. If you are developing apps for other products, it can be helpful to manage all the apps in a similar way. Of course there are some product specific features, but the overall idea is the same. 3ds Max, Revit, Inventor, and AutoCAD all now have Forge Design Automation engines as well, so a lot of possibility!
What’s new in the 3ds Max 2020 SDK
For all the changes in 3ds Max 2020 SDK, see here.
Important Details for C++ developers!
For complete SDK requirements, see here.
The 3ds Max 2020 SDK is not binary backward compatible with the 3ds Max 2019 SDK. Plugins will need to be re-compiled to work in 3ds Max 2020.
Microsoft Visual Studio 2017
3ds Max 2020 has been compiled with Microsoft Visual Studio 2017 version 15.8.3, Platform Toolset v141. The Windows Platform SDK version is 10.0.17134.0. Plugins need to be built using the same Platform Toolset version. Any version of Microsoft Visual Studio can be used where the main requirement is to use the Platform Toolset v141. Although other Platform SDK versions may work, it is also suggested to use 10.0.17134.0. The SDK property sheets refer to this, so if you change to a newer version or some reason, you will have to update the property sheet.
3ds Max 2020 is based on Qt 5.11.2. Although Qt guarantees that minor releases are binary and source backward compatible, we recommend using the same Qt version as 3ds Max uses for plugin development. Qt Support for parameter blocks-based UI and also the Plugin Wizard has been added.
Recently 3ds Max switched from “fast math” to “precise math” compiler settings. There is an interesting MS blog article that explains the differences here.
3ds Max 2020 also adds OSL Shader API for 3rd party renderers.
If you are developing Modifiers, make sure to see the Modifier Plugin Class Changes to Support Pb1 to Pb2 Migration section of SDK changes. There were also two new functions added to help find nodes from within the Modifier APIs.
Make sure to review the entire article here for complete 3ds Max 202 SDK changes, here.
Again, there were several changes made during the 2019 cycle. For those details, see here.
For 3ds Max 2020, all the changes are listed here. One thing to note, is that to support the Plugin Package format and changes, the
ExchangeStorePackageManager has been renamed to
PluginPackageManager. The old name will continue to work as a global variable, but I would encourage you to get used to the new name for the overall system.
The Python version used by 3ds Max has been upgraded to 2.7.15. The Pyside2 version included with 3ds Max is updated to 5.11.2.
The pymxs docs (starting in 2019.3) are being updated to add more examples, and explanation of how to handle edge cases and known issues.
There were no changes to the .NET API, and .NET Framework remains at 4.7