Applications and plug-ins are now built using the cmake tool. When building a plug-in or application, cmake must be called twice: once to create a makefile, and a second time to build the application or plug-in using the makefile.
CMake is available to download from https://cmake.org/download/.
The embedded version of Python on MacOSX has been updated to Python 2.7.15.
Maya now sets the SSL_CERT_FILE environment variable to point to the cert.pem file within its embedded Python Framework if SSL_CERT_FILE is unset.
To keep SSL_CERT_FILE unset, the MAYA_DO_NOT_SET_SSL_CERT_FILE environment variable must be set to 1 before launching Maya.
Updates to the MPxGeometryOverride class include the following new methods:
MPxGeometryOverride::requiresGeometryUpdate(), which determines if other MPxGeometryOverride methods get called for the associated DAG object during the draw preparation phase.MPxGeometryOverride::requiresUpdateRenderItems(), which gets called when an instance of a DAG object changes to determine whether MPxGeometryOverride::updateRenderItems() needs to be called.MPxGeometryOverride::supportsEvaluationManagerParallelUpdate(), which gets called to determine if the scene is supported by the Evaluation Manager Parallel Update.MPxGeometryOverride::supportsVP2CustomCaching(), which gets called during evaluation to determine if VP2 Custom Caching is supported.The MPyMPxGeometryOverride class in the Python API also includes these new methods.
When a 3D model view activates Isolate Select for components, Viewport 2.0 creates and maintains necessary render items to represent the drawing of the isolate selected components specifically for that view. These render items are copies of their original items and so they have the same properties including name, type, primitive type, and draw mode. However, their shading components are filtered from the view selected set of that view.
New methods have been added to allow custom render items created in a MPxGeometryOverride implementation to have their copies created for the drawing of isolate selected components. They also provide access of the view-selected shading components so that the MPxGeometryOverride implementation can fill in geometries properly.
These new methods include:
MRenderItem::shadingComponent()MRenderItem::setAllowIsolateSelectCopy()MRenderItem::allowIsolateSelectCopy()MRenderItem::isIsolateSelectCopy()The apiMeshShape example plugin has been updated to use these new methods.
The Python API also includes these changes.
The MColorManagementNodes C++ API class has been added that allows you to manipulate color managed nodes; for example: you can color manage one or all input nodes, and query whether an object is color manageable or color managed. A colorManageAllNodes flag has also been added to the colorManagementPrefs MEL/Python command.
The following methods have been deprecated:
theRenderer()backEndString()makeResourceContextCurrent()addDrawProcedure()removeDrawProcedure()insertDrawProcedure()getDrawProcedureCount()getDrawProcedureListNames()findDrawProcedure()restoreCurrent()getBufferSize()getColorBufferPixelFormat()getDepthBufferPixelFormat()dereferenceGeometry()glFunctionTable()geometryOverrideExample1/geometryOverrideExample1.cpp example plug-in, which demonstrates how to render geometry with a stock shader.geometryOverrideExample2/geometryOverrideExample2.cpp example plug-in, which demonstrates how render geometry with a Maya shader network.tessellatedQuad example plugin to the Maya devkit. The example demonstrates how to implement custom selection shader for kPatch render items in a MPxGeometryOverride. It also shows how to share geometry/index streams among several render items to avoid expensive recalculation.captureViewRenderCmd/captureViewRenderCmd.cpp devkit example now shows how to disable the output transform in Viewport 2.0 using the MRenderer::render() API.footPrintNode_GeometryOverride/footPrintNode_GeometryOverride.cpp example plug-in now make it fully compatible with Evaluation Caching.New methods added to the MFnDependencyNode class let you set and manage which nodes have permission to be scheduled for evaluation by the evaluation graph. Nodes that do not have permission for evaluation can be created and destroyed without invalidating the evaluation graph.
The Python API also includes these new methods. See the MPyMFnDependencyNode class.
MFnDependencyNode::setAllowedToAnimate(), sets whether or not a node has permission to be added to the evaluation graph for scheduling during playback or manipulation. Nodes without permission, cannot be added to the evaluation graph.MFnDependencyNode::allowedToAnimate() indicates whether or not the node has permission for evaluation based on MFnDependencyNode::setAllowedToAnimate().Added the following new methods to the MGraphEditorInfo class:
MGraphEditorInfo::isStackedViewportMode(), which returns whether or not the Graph Editor is in Stacked View mode.MGraphEditorInfo::isNormalizedViewportMode(), which returns whether or not the Graph Editor is in Normalized View mode.MProfiler::addCategory() and MProfiler::getAllCategories() methods now use a categoryInfo parameter in addition to the previous accepted parameters. Previous versions of these methods have been deprecated.MProfiler::getCategoryInfo() method returns the profiling category description.A new MPxCacheConfigRuleFilter class lets you define custom configuration rule filters for background evaluation caching. The new class includes the following methods:
MPxCacheConfigRuleFilter::preRulesExecution(), which is called when the cache configuration rule application starts.MPxCacheConfigRuleFilter::postRulesExecution(), which is called when the cache configuration rule application stops.MPxCacheConfigRuleFilter::isMatch(), which gets called for each evaluation node when filter rules are applied for the cache configuration.A new MCacheConfigRuleRegistry class includes a static method for registering and deregistering MPxCacheConfigRuleFilter custom classes.
A new nameFilter/NameFilter.cpp example demonstrates how to create custom configuration rule filters.
Updates to the MUIDrawManager include the following:
New cylinder and capsule primitive extension methods:
New parametric primitive methods now let you define the number of subdivisions for primitives:
The Python API also includes these methods. See the pyUiDrawManager.py class.
Updates to the uiDrawManager example plugin in the Maya devkit include the new methods.
A new MCameraMessage class lets you register callbacks for interactive camera manipulation messages. To remove a callback use MMessage::removeCallback(). Note that all callbacks registered by a plug-in must be removed by that plug-in when it is unloaded. Failure to do so will result in a fatal error. The Python API has also been updated with these new methods. See the MPyMCameraMessage class.
A new cameraMessageCmd/cameraMessageCmd.cpp plug-in example demonstrates how to use each of the new camera manipulation callbacks.
A new version of the MFnMesh::create() method now stores vertices in doubles and allows edge connections.
The OpenMaya.MFnMesh.create () method in the Python API has also been updated with this improvement.
Added new kPinToGeometryUV and kPinToGeometryProx enums.
Added the MPolyMessage::addColorSetChangedCallback() method to register a callback when ColorSetChanged is modified.
Added the following new enums to specify the type of color set change message:
kColorSetAdded when a new color set gets added.kColorSetDeleted when a color set gets deleted.kCurrentColorSetChanged when the current color set gets changed.The Python API has also been updated to include these changes.
Updates to the MGlobal class include the addition of the MGlobal::executeTaskOnIdle() method. Use this method to execute a customized task to execute on the next idle event. This is a thread safe way to schedule a task for the main thread to execute. This method is not available in Python.
Added the MMessage::stopRegisteringCallableScript() method. Use this method to stop the MMessage object from being passed.
The following methods are deprecated:
beginGL()endGL()setDrawColor(unsigned int, ColorTable)setDrawColor(const MColor& )setDrawColorAndAlpha()colorMask()setColorMask()drawText()readColorBuffer()writeColorBuffer()readDepthMap()readBufferTo2dTexture()setMultipleDrawEnable()multipleDrawPassCount()setMultipleDrawPassCount()beginProjMatrixOverride()endProjMatrixOverride()kAfterCreateReference enum to the MPyMSceneMessage class. The enum provides support for MSceneMessage.addReferenceCallback().MColorPickerUtilities class, which lets you create a color picker that can grab colors from third-party plugins.MnCloth::setAddCrossLinks() method now uses a boolean instead of a float value.