Another big time for the 2018 release of M&E products, the following products are released on July 25:
- Maya 2018
- Arnold SDK 5.0
- MotionBuilder 2018
- Mudbox 2018
- Entertainment Creation Suite Ultimate 2018
- Maya Entertainment Creation Suite Standard 2018
- 3ds Max Entertainment Creation Suite Standard 2018
- Maya 2018 with Softimage
For our 3rd party developers, it means you should check out the new APIs and upgrade your plugin to support the latest versions. If you are in our Beta forum, you should already be aware of these new APIs through our Limelight program. This program is designed to help our Maya/3ds Max plugin developers to get ready with the upcoming APIs, to help prepare/upgrade their plugins and get them released at the same time as Maya/3ds Max is officially released. If you are not familiar with this, go to Beta forum to check out, or send us an email and we can help you get involved.
Now, let’s talk about the main API change for Maya 2018 release. There are lots of improvements, including the features of Modeling, Animation, Rendering, Evaluation and Performance. We have a video recording talking about them on Limelight program and you can also check the section “What’s New in Maya API in 2018” of Maya SDK help for details. We won’t describe every detail of these improvements here again, but just a few key changes that are important to developers.
There are some critical changes that you have to know before anything else. For example, the compiler on Windows is now upgraded to VS 2015, for Mac, it’s also upgraded to Xcode 7.3.1 with SDK 10.11. But I believe the most important change is the new OpenMaya namespace. In short, starting from Maya 2018, all the Maya C++ classes are not declared in the global namespace anymore, and instead, they are under the “OpenMaya20180000” namespace.
This is mainly designed to minimize disruptions to Maya plug-in development and extend binary compatibility of the Maya API over multiple updates. So if your plugin does not want to make use of the new API feature of update version, in theory, there is almost nothing to worry about, everything is handled automatically for you, except that it is not allowed to forward declare class names anymore, plug-in code will need to be modified in order to remove those forward declaration statements. Check the following code, for example, you can see that you can derive your class from MPxNode as usual, and the MPxNode is already under the correct namespace.
But if you want to make use of the new APIs in the Maya update versions, you have to specify the correct namespace. Here is an example of what macros for Update 1 might look like:
- #define OPENMAYA_UPDATE1_NAMESPACE OpenMaya20181000
- #define OPENMAYA_UPDATE1_NAMESPACE_OPEN OPENMAYA_NAMESPACE_OPEN(OPENMAYA_UPDATE1_NAMESPACE)
- #define OPENMAYA_UPDATE1_NAMESPACE_SCHEMA OPENMAYA_NAMESPACE_SCHEMA(OPENMAYA_UPDATE1_NAMESPACE)
For example, a new class named MNewClassForUpdate is added under OPENMAYA_UPDATE1_NAMESPACE for Maya 2018 update 1, if you want to use this class, you need to specify the full name with namespace like OPENMAYA_UPDATE1_NAMESPACE:MNewClassForUpdate, and also remember if you are using any new classes of update version, your plugin will not work with the other version.
BTW, Python 1.0 and .NET API are currently not supported by the new OpenMaya namespace. I will prepare a follow-up blog for the details about the feature soon.