From 14acc4cba5ac7480de7192dbbde982018bf5cc3b Mon Sep 17 00:00:00 2001 From: Matt Johnson Date: Fri, 9 Oct 2020 18:25:14 -0700 Subject: [PATCH] move pxrUsdStageNode and pxrUsdPointBasedDeformerNode registration to mayaUsd core These nodes are created when the "useAsAnimationCache" import arg is used. The import arg is built into the base import command, so the nodes must be registered and de-registered in the core, otherwise imports that use the arg will fail. --- lib/mayaUsd/nodes/proxyShapePlugin.cpp | 26 ++++++++++++++++++++++++ plugin/pxr/maya/plugin/pxrUsd/plugin.cpp | 23 --------------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/lib/mayaUsd/nodes/proxyShapePlugin.cpp b/lib/mayaUsd/nodes/proxyShapePlugin.cpp index b88875f51a..996adc1b42 100644 --- a/lib/mayaUsd/nodes/proxyShapePlugin.cpp +++ b/lib/mayaUsd/nodes/proxyShapePlugin.cpp @@ -26,12 +26,15 @@ #include #include #include +#include #include #include +#include #include #include +#include PXR_NAMESPACE_USING_DIRECTIVE @@ -81,6 +84,23 @@ MayaUsdProxyShapePlugin::initialize(MFnPlugin& plugin) getProxyShapeClassification()); CHECK_MSTATUS(status); + // Stage and point-based deformer node registration. These nodes are + // created when the "useAsAnimationCache" import argument is used. + status = plugin.registerNode( + UsdMayaStageNode::typeName, + UsdMayaStageNode::typeId, + UsdMayaStageNode::creator, + UsdMayaStageNode::initialize); + CHECK_MSTATUS_AND_RETURN_IT(status); + + status = plugin.registerNode( + UsdMayaPointBasedDeformerNode::typeName, + UsdMayaPointBasedDeformerNode::typeId, + UsdMayaPointBasedDeformerNode::creator, + UsdMayaPointBasedDeformerNode::initialize, + MPxNode::kDeformerNode); + CHECK_MSTATUS_AND_RETURN_IT(status); + // Hybrid Hydra / VP2 rendering uses a draw override to draw the proxy // shape. The Pixar and MayaUsd plugins use the UsdMayaProxyDrawOverride, // so register it here. Native USD VP2 rendering uses a sub-scene override. @@ -176,6 +196,12 @@ MayaUsdProxyShapePlugin::finalize(MFnPlugin& plugin) CHECK_MSTATUS(status); } + status = plugin.deregisterNode(UsdMayaPointBasedDeformerNode::typeId); + CHECK_MSTATUS(status); + + status = plugin.deregisterNode(UsdMayaStageNode::typeId); + CHECK_MSTATUS(status); + status = plugin.deregisterNode(MayaUsdProxyShapeBase::typeId); CHECK_MSTATUS(status); diff --git a/plugin/pxr/maya/plugin/pxrUsd/plugin.cpp b/plugin/pxr/maya/plugin/pxrUsd/plugin.cpp index 9c3ab4dacf..41aa68ab49 100644 --- a/plugin/pxr/maya/plugin/pxrUsd/plugin.cpp +++ b/plugin/pxr/maya/plugin/pxrUsd/plugin.cpp @@ -26,10 +26,8 @@ #include "usdMaya/listShadingModesCommand.h" #include -#include #include "usdMaya/proxyShape.h" #include "usdMaya/referenceAssembly.h" -#include #include #include @@ -70,21 +68,6 @@ initializePlugin(MObject obj) status = MayaUsdProxyShapePlugin::initialize(plugin); CHECK_MSTATUS_AND_RETURN_IT(status); - status = plugin.registerNode( - UsdMayaStageNode::typeName, - UsdMayaStageNode::typeId, - UsdMayaStageNode::creator, - UsdMayaStageNode::initialize); - CHECK_MSTATUS_AND_RETURN_IT(status); - - status = plugin.registerNode( - UsdMayaPointBasedDeformerNode::typeName, - UsdMayaPointBasedDeformerNode::typeId, - UsdMayaPointBasedDeformerNode::creator, - UsdMayaPointBasedDeformerNode::initialize, - MPxNode::kDeformerNode); - CHECK_MSTATUS_AND_RETURN_IT(status); - status = plugin.registerShape( UsdMayaProxyShape::typeName, UsdMayaProxyShape::typeId, @@ -265,12 +248,6 @@ uninitializePlugin(MObject obj) status = plugin.deregisterNode(UsdMayaProxyShape::typeId); CHECK_MSTATUS(status); - status = plugin.deregisterNode(UsdMayaPointBasedDeformerNode::typeId); - CHECK_MSTATUS(status); - - status = plugin.deregisterNode(UsdMayaStageNode::typeId); - CHECK_MSTATUS(status); - status = MayaUsdProxyShapePlugin::finalize(plugin); CHECK_MSTATUS(status);