diff --git a/lib/flowViewport/sceneIndex/fvpWireframeSelectionHighlightSceneIndex.cpp b/lib/flowViewport/sceneIndex/fvpWireframeSelectionHighlightSceneIndex.cpp index f87a0fcf1f..9b8fa82bdb 100644 --- a/lib/flowViewport/sceneIndex/fvpWireframeSelectionHighlightSceneIndex.cpp +++ b/lib/flowViewport/sceneIndex/fvpWireframeSelectionHighlightSceneIndex.cpp @@ -70,6 +70,9 @@ const std::string selectionHighlightMirrorTag = "_SelectionHighlight"; SdfPath _GetSelectionHighlightMirrorPathFromOriginal(const SdfPath& originalPath) { + if (originalPath == SdfPath::AbsoluteRootPath()) { + return originalPath; //Avoid a warning in Hydra + } return originalPath.ReplaceName(TfToken(originalPath.GetName() + selectionHighlightMirrorTag)); } diff --git a/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.cpp b/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.cpp index 0dddc8b718..c51b49a90d 100644 --- a/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.cpp +++ b/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.cpp @@ -142,7 +142,7 @@ void MayaHydraRenderItemAdapter::UpdateFromDelta(const UpdateFromDeltaData& data // const bool isNew = flags & MViewportScene::MVS_new; //not used yet const bool visible = data._flags & MVS::MVS_visible; const bool matrixChanged = data._flags & MVS::MVS_changedMatrix; - const bool geomChanged = (data._flags & MVS::MVS_changedGeometry) || positionsHaveBeenReset; + bool geomChanged = (data._flags & MVS::MVS_changedGeometry) || positionsHaveBeenReset;//Non const as we may modify it later => Temp workaround for a bug in Maya MAYA-134200 const bool topoChanged = (data._flags & MVS::MVS_changedTopo) || positionsHaveBeenReset; const bool visibChanged = data._flags & MVS::MVS_changedVisibility; const bool effectChanged = data._flags & MVS::MVS_changedEffect; @@ -192,6 +192,33 @@ void MayaHydraRenderItemAdapter::UpdateFromDelta(const UpdateFromDeltaData& data static const bool passNormalsToHydra = MayaHydraSceneIndex::passNormalsToHydra(); const int vertexBuffercount = geom ? geom->vertexBufferCount() : 0; + + //Temp workaround for a bug in Maya MAYA-134200 + if ((!geomChanged && topoChanged) && vertexBuffercount) { + //With face components selection, we have topoChanged which is true but geomChanged is false, but this is wrong, the number of vertices may have changed. + //We want to check here if we also need to update the geometry if the number of vertices is different from what is stored already + for (int vbIdx = 0; (vbIdx < vertexBuffercount) && (!geomChanged); vbIdx++) { + MVertexBuffer* mvb = geom->vertexBuffer(vbIdx); + if (!mvb) { + continue; + } + + const MVertexBufferDescriptor& desc = mvb->descriptor(); + const auto semantic = desc.semantic(); + switch (semantic) { + case MGeometry::Semantic::kPosition: { + // Vertices + MVertexBuffer* verts = mvb; + const unsigned int originalVertexCount = verts->vertexCount(); + if (_positions.size() != originalVertexCount) {//Is it different ? + geomChanged = true;//this will stop the loop + } + } break; + default: break; + } + } + } + // Vertices if (geomChanged && vertexBuffercount) { //vertexBuffercount > 0 means geom is non null @@ -356,21 +383,25 @@ void MayaHydraRenderItemAdapter::UpdateFromDelta(const UpdateFromDeltaData& data switch (GetPrimitive()) { case MGeometry::Primitive::kTriangles:{ static const bool passNormalsToHydra = MayaHydraSceneIndex::passNormalsToHydra(); - if (passNormalsToHydra){ - _topology.reset(new HdMeshTopology( - PxOsdOpenSubdivTokens->none,//For the OGS normals vertex buffer to be used, we need to use PxOsdOpenSubdivTokens->none - UsdGeomTokens->rightHanded, - vertexCounts, - vertexIndices)); - } else{ - _topology.reset(new HdMeshTopology( - (GetMayaHydraSceneIndex()->GetParams().displaySmoothMeshes - || GetDisplayStyle().refineLevel > 0) - ? PxOsdOpenSubdivTokens->catmullClark - : PxOsdOpenSubdivTokens->none, - UsdGeomTokens->rightHanded, - vertexCounts, - vertexIndices)); + if (vertexCounts.size()) { + if (passNormalsToHydra) { + // For the OGS normals vertex buffer to be used, we need to use + // PxOsdOpenSubdivTokens->none + _topology.reset(new HdMeshTopology( + PxOsdOpenSubdivTokens->none, + UsdGeomTokens->rightHanded, + vertexCounts, + vertexIndices)); + } else { + _topology.reset(new HdMeshTopology( + (GetMayaHydraSceneIndex()->GetParams().displaySmoothMeshes + || GetDisplayStyle().refineLevel > 0) + ? PxOsdOpenSubdivTokens->catmullClark + : PxOsdOpenSubdivTokens->none, + UsdGeomTokens->rightHanded, + vertexCounts, + vertexIndices)); + } } } break; diff --git a/lib/mayaHydra/hydraExtensions/mhWireframeColorInterfaceImp.cpp b/lib/mayaHydra/hydraExtensions/mhWireframeColorInterfaceImp.cpp index d2064af9f4..8852e74875 100644 --- a/lib/mayaHydra/hydraExtensions/mhWireframeColorInterfaceImp.cpp +++ b/lib/mayaHydra/hydraExtensions/mhWireframeColorInterfaceImp.cpp @@ -16,6 +16,7 @@ //Local headers #include "mhWireframeColorInterfaceImp.h" +#include "mixedUtils.h" //Flow viewport headers #include @@ -29,14 +30,6 @@ PXR_NAMESPACE_USING_DIRECTIVE -// An implementation for maya of the WireframeColorInterface to get the wireframe color from a prim for selection highlighting -namespace { - PXR_NS::GfVec4f getPreferencesColor(const PXR_NS::TfToken& token) { - PXR_NS::GfVec4f color; - Fvp::ColorPreferences::getInstance().getColor(token, color); - return color; - } -} namespace MAYAHYDRA_NS_DEF { MhWireframeColorInterfaceImp::MhWireframeColorInterfaceImp(const std::shared_ptr& selection diff --git a/lib/mayaHydra/hydraExtensions/mixedUtils.cpp b/lib/mayaHydra/hydraExtensions/mixedUtils.cpp index b796aaa46a..98f638faaa 100644 --- a/lib/mayaHydra/hydraExtensions/mixedUtils.cpp +++ b/lib/mayaHydra/hydraExtensions/mixedUtils.cpp @@ -17,6 +17,8 @@ #include "mixedUtils.h" +#include + #include #include @@ -172,4 +174,11 @@ bool getIndexedColorPreferenceValue( return false; } +PXR_NS::GfVec4f getPreferencesColor(const PXR_NS::TfToken& token) +{ + PXR_NS::GfVec4f color; + Fvp::ColorPreferences::getInstance().getColor(token, color); + return color; +} + } // namespace MAYAHYDRA_NS_DEF diff --git a/lib/mayaHydra/hydraExtensions/mixedUtils.h b/lib/mayaHydra/hydraExtensions/mixedUtils.h index a35e1d3c08..21f2954313 100644 --- a/lib/mayaHydra/hydraExtensions/mixedUtils.h +++ b/lib/mayaHydra/hydraExtensions/mixedUtils.h @@ -225,6 +225,15 @@ bool getIndexedColorPreferenceValue( const std::string& tableName, PXR_NS::GfVec4f& outColor); +/** + * @brief Retrieves a color preference from Maya using the Flow Viewport Color Preferences API. + * + * @param[in] token is a Flow Viewport color preferences token e.g : FvpColorPreferencesTokens->polymeshDormant + * + * @return the color that will be populated if retrieved from Maya. + */ +PXR_NS::GfVec4f getPreferencesColor(const PXR_NS::TfToken& token); + } // namespace MAYAHYDRA_NS_DEF #endif // MAYAHYDRALIB_MIXED_UTILS_H diff --git a/lib/mayaHydra/hydraExtensions/sceneIndex/CMakeLists.txt b/lib/mayaHydra/hydraExtensions/sceneIndex/CMakeLists.txt index 5f09979edb..976ab5d11e 100644 --- a/lib/mayaHydra/hydraExtensions/sceneIndex/CMakeLists.txt +++ b/lib/mayaHydra/hydraExtensions/sceneIndex/CMakeLists.txt @@ -11,7 +11,7 @@ target_sources(${TARGET_NAME} mayaHydraCameraDataSource.cpp mayaHydraLightDataSource.cpp mayaHydraDefaultLightDataSource.cpp - mayaHydraDefaultMaterialDataSource.cpp + mayaHydraMaterialDataSource.cpp mayaHydraMayaDataProducerSceneIndexData.cpp mayaHydraMayaDataProducerSceneIndexDataConcreteFactory.cpp mayaHydraSceneIndexDataFactoriesSetup.cpp @@ -31,7 +31,7 @@ set(HEADERS mayaHydraLightDataSource.h mayaHydraSceneIndexUtils.h mayaHydraDefaultLightDataSource.h - mayaHydraDefaultMaterialDataSource.h + mayaHydraMaterialDataSource.h mayaHydraMayaDataProducerSceneIndexData.h mayaHydraMayaDataProducerSceneIndexDataConcreteFactory.h mayaHydraSceneIndexDataFactoriesSetup.h diff --git a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraDefaultMaterialDataSource.cpp b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraMaterialDataSource.cpp similarity index 89% rename from lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraDefaultMaterialDataSource.cpp rename to lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraMaterialDataSource.cpp index cc81294184..efa27abb0a 100644 --- a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraDefaultMaterialDataSource.cpp +++ b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraMaterialDataSource.cpp @@ -14,7 +14,7 @@ // limitations under the License. // -#include "mayaHydraDefaultMaterialDataSource.h" +#include "mayaHydraMaterialDataSource.h" #include #include @@ -32,7 +32,7 @@ PXR_NAMESPACE_OPEN_SCOPE // ---------------------------------------------------------------------------- -MayaHydraDefaultMaterialDataSource::MayaHydraDefaultMaterialDataSource( +MayaHydraMaterialDataSource::MayaHydraMaterialDataSource( const SdfPath& id, TfToken type, MayaHydraSceneIndex* sceneIndex) @@ -44,7 +44,7 @@ MayaHydraDefaultMaterialDataSource::MayaHydraDefaultMaterialDataSource( TfTokenVector -MayaHydraDefaultMaterialDataSource::GetNames() +MayaHydraMaterialDataSource::GetNames() { TfTokenVector result; result.push_back(HdMaterialSchemaTokens->material); @@ -52,7 +52,7 @@ MayaHydraDefaultMaterialDataSource::GetNames() } HdDataSourceBaseHandle -MayaHydraDefaultMaterialDataSource::Get(const TfToken& name) +MayaHydraMaterialDataSource::Get(const TfToken& name) { if (name == HdMaterialSchemaTokens->material) { return _GetMaterialDataSource(); @@ -66,7 +66,7 @@ MayaHydraDefaultMaterialDataSource::Get(const TfToken& name) } HdDataSourceBaseHandle -MayaHydraDefaultMaterialDataSource::_GetMaterialBindingDataSource() +MayaHydraMaterialDataSource::_GetMaterialBindingDataSource() { const SdfPath path = _sceneIndex->GetMaterialId(_id); if (path.IsEmpty()) { @@ -88,7 +88,7 @@ MayaHydraDefaultMaterialDataSource::_GetMaterialBindingDataSource() } HdDataSourceBaseHandle -MayaHydraDefaultMaterialDataSource::_GetMaterialDataSource() +MayaHydraMaterialDataSource::_GetMaterialDataSource() { VtValue materialContainer = _sceneIndex->GetMaterialResource(_id); diff --git a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraDefaultMaterialDataSource.h b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraMaterialDataSource.h similarity index 74% rename from lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraDefaultMaterialDataSource.h rename to lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraMaterialDataSource.h index 5ff81ba6a0..b368cda402 100644 --- a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraDefaultMaterialDataSource.h +++ b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraMaterialDataSource.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef MAYAHYDRADEFAULTMATERIALDATASOURCE_H -#define MAYAHYDRADEFAULTMATERIALDATASOURCE_H +#ifndef SCENEINDEX_MAYA_HYDRA_MATERIAL_DATASOURCE_H +#define SCENEINDEX_MAYA_HYDRA_MATERIAL_DATASOURCE_H #include #include @@ -27,12 +27,12 @@ PXR_NAMESPACE_OPEN_SCOPE class MayaHydraSceneIndex; /** - * \brief A container data source representing a default material with USDPreviewSurface + * \brief A generic container data source representing a maya hydra material */ - class MayaHydraDefaultMaterialDataSource : public HdContainerDataSource + class MayaHydraMaterialDataSource : public HdContainerDataSource { public: - HD_DECLARE_DATASOURCE(MayaHydraDefaultMaterialDataSource); + HD_DECLARE_DATASOURCE(MayaHydraMaterialDataSource); // ------------------------------------------------------------------------ // HdContainerDataSource implementations @@ -40,7 +40,7 @@ class MayaHydraSceneIndex; HdDataSourceBaseHandle Get(const TfToken& name) override; private: - MayaHydraDefaultMaterialDataSource( + MayaHydraMaterialDataSource( const SdfPath& id, TfToken type, MayaHydraSceneIndex* sceneIndex); @@ -53,8 +53,8 @@ class MayaHydraSceneIndex; MayaHydraSceneIndex* _sceneIndex = nullptr; }; -HD_DECLARE_DATASOURCE_HANDLES(MayaHydraDefaultMaterialDataSource); +HD_DECLARE_DATASOURCE_HANDLES(MayaHydraMaterialDataSource); PXR_NAMESPACE_CLOSE_SCOPE -#endif // MAYAHYDRADEFAULTMATERIALDATASOURCE_H +#endif // SCENEINDEX_MAYA_HYDRA_MATERIAL_DATASOURCE_H diff --git a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.cpp b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.cpp index d14ace33fc..0982e08092 100644 --- a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.cpp +++ b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.cpp @@ -16,6 +16,8 @@ #include "mayaHydraSceneIndex.h" +#include + #include #include #include @@ -30,6 +32,8 @@ #include #include #include +#include +#include #include #include @@ -60,6 +64,7 @@ namespace { static std::mutex _adaptersToRecreateMutex; static std::mutex _adaptersToRebuildMutex; + static const MString sActiveFacesName(L"PolyActiveFaces");//When we have a render item which is a selection of faces, it always has this name in maya. } PXR_NAMESPACE_OPEN_SCOPE @@ -374,6 +379,7 @@ TF_DEFINE_PRIVATE_TOKENS( _tokens, ((MayaDefaultMaterial, "__maya_default_material__")) + ((MayaFacesSelectionMaterial, "__maya_faces_selection_material__")) (diffuseColor) (emissiveColor) (opacity) @@ -387,6 +393,7 @@ SdfPath MayaHydraSceneIndex::_fallbackMaterial; SdfPath MayaHydraSceneIndex::_mayaDefaultMaterialPath; // Common to all scene indexes VtValue MayaHydraSceneIndex::_mayaDefaultMaterial; SdfPath MayaHydraSceneIndex::_mayaDefaultLightPath; // Common to all scene indexes +SdfPath MayaHydraSceneIndex::_mayaFacesSelectionMaterialPath; // Common to all scene indexes MayaHydraSceneIndex::MayaHydraSceneIndex( MayaHydraInitData& initData, @@ -405,8 +412,20 @@ MayaHydraSceneIndex::MayaHydraSceneIndex( _tokens->MayaDefaultMaterial); // Is an absolute path, not linked to a scene index _mayaDefaultLightPath = SdfPath::AbsoluteRootPath().AppendChild(_tokens->DefaultMayaLight); _mayaDefaultMaterial = MayaHydraSceneIndex::CreateMayaDefaultMaterial(); + _mayaFacesSelectionMaterialPath = SdfPath::AbsoluteRootPath().AppendChild( + _tokens->MayaFacesSelectionMaterial); + _fallbackMaterial = SdfPath::EmptyPath(); // Empty path for hydra fallback material }); + + //Always add the mayaHydraFacesSelectionMaterialDataSource to display faces selection + auto mayaHydraFacesSelectionMaterialDataSource = MayaHydraMaterialDataSource::New( + _mayaFacesSelectionMaterialPath, HdPrimTypeTokens->material, this); + AddPrims({ { _mayaFacesSelectionMaterialPath, + HdPrimTypeTokens->material, + mayaHydraFacesSelectionMaterialDataSource } }); + //Always Create the material since it will update the color from the preferences if it has changed. + _mayaFacesSelectionMaterial = MayaHydraSceneIndex::CreateMayaFacesSelectionMaterial(); } MayaHydraSceneIndex::~MayaHydraSceneIndex() @@ -418,6 +437,8 @@ MayaHydraSceneIndex::~MayaHydraSceneIndex() void MayaHydraSceneIndex::RemoveCallbacksAndDeleteAdapters() { + RemovePrims({ { _mayaFacesSelectionMaterialPath} }); //Remove _mayaFacesSelectionMaterialPath used to display faces selection + for (auto callback : _callbacks) { MMessage::removeCallback(callback); } @@ -627,6 +648,10 @@ VtValue MayaHydraSceneIndex::GetMaterialResource(const SdfPath& id) return _mayaDefaultMaterial; } + if (id == _mayaFacesSelectionMaterialPath) { + return _mayaFacesSelectionMaterial; + } + if (id == _fallbackMaterial) { return MayaHydraMaterialAdapter::GetPreviewMaterialResource(id); } @@ -659,6 +684,25 @@ VtValue MayaHydraSceneIndex::CreateMayaDefaultMaterial() return VtValue(networkMap); } +VtValue MayaHydraSceneIndex::CreateMayaFacesSelectionMaterial() +{ + const GfVec4f faceSelectioncolor = getPreferencesColor(FvpColorPreferencesTokens->faceSelection); + + HdMaterialNetworkMap networkMap; + HdMaterialNetwork network; + HdMaterialNode node; + node.identifier = UsdImagingTokens->UsdPreviewSurface; + node.path = _mayaFacesSelectionMaterialPath; + node.parameters.insert( + { _tokens->diffuseColor, + VtValue(GfVec3f(faceSelectioncolor[0], faceSelectioncolor[1], faceSelectioncolor[2])) }); + node.parameters.insert({ _tokens->opacity, VtValue(float(0.3f)) }); + network.nodes.push_back(std::move(node)); + networkMap.map.insert({ HdMaterialTerminalTokens->surface, std::move(network) }); + networkMap.terminals.push_back(_mayaFacesSelectionMaterialPath); + return VtValue(networkMap); +} + Fvp::PrimSelections MayaHydraSceneIndex::UfePathToPrimSelections(const Ufe::Path& appPath) const { TF_DEBUG(MAYAHYDRALIB_SCENE_INDEX) @@ -692,6 +736,45 @@ SdfPath MayaHydraSceneIndex::SetCameraViewport(const MDagPath& camPath, const Gf return {}; } +bool MayaHydraSceneIndex::IsPickedNodeInComponentsPickingMode(const HdxPickHit& hit)const +{ + // Is the picked node in components selection mode ? If so it is in the hilite list + MSelectionList hiliteList; + MGlobal::getHiliteList(hiliteList); + if (hiliteList.isEmpty()){ + return false; + } + + bool isOneMayaNodeInComponentsPickingMode = false; + + SdfPath hitId = hit.objectId; + if (hitId.HasPrefix(GetRprimPath())) { + _FindAdapter( + hitId, + [&hit, &hiliteList, &isOneMayaNodeInComponentsPickingMode]( + MayaHydraRenderItemAdapter* a) { + // prepare the selection path of the hit item, the transform path is expected if + // available + const auto& itemPath = a->GetDagPath(); + + // Is the picked node in components selection mode ? If so it is in the hilite list + MItSelectionList selListIter(hiliteList, MFn::kMesh); // Iterate on meshes only + for (; !selListIter.isDone(); selListIter.next()) { + MDagPath dagPath; + selListIter.getDagPath(dagPath); + if (itemPath == dagPath) { + isOneMayaNodeInComponentsPickingMode = true; + return; + } + } + }, + _renderItemsAdapters); + return isOneMayaNodeInComponentsPickingMode; + } + + return false; +} + bool MayaHydraSceneIndex::AddPickHitToSelectionList( const HdxPickHit& hit, const MHWRender::MSelectionInfo& /* selectInfo */, @@ -707,15 +790,16 @@ bool MayaHydraSceneIndex::AddPickHitToSelectionList( [&selectionList, &worldSpaceHitPts, &hit](MayaHydraRenderItemAdapter* a) { // prepare the selection path of the hit item, the transform path is expected if available const auto& itemPath = a->GetDagPath(); - MDagPath selectPath; - if (MS::kSuccess != MDagPath::getAPathTo(itemPath.transform(), selectPath)) { - selectPath = itemPath; - } - selectionList.add(selectPath); - worldSpaceHitPts.append( - hit.worldSpaceHitPoint[0], - hit.worldSpaceHitPoint[1], - hit.worldSpaceHitPoint[2]); + + MDagPath selectPath; + if (MS::kSuccess != MDagPath::getAPathTo(itemPath.transform(), selectPath)) { + selectPath = itemPath; + } + selectionList.add(selectPath); + worldSpaceHitPts.append( + hit.worldSpaceHitPoint[0], + hit.worldSpaceHitPoint[1], + hit.worldSpaceHitPoint[2]); }, _renderItemsAdapters); return true; @@ -752,8 +836,10 @@ LightDagPathMap MayaHydraSceneIndex::_GetGlobalLightPaths() const void MayaHydraSceneIndex::SetDefaultMaterial(bool useDefMaterial) { if (useDefMaterial) { - auto mayaDefaultMaterialDataSource = MayaHydraDefaultMaterialDataSource::New(_mayaDefaultMaterialPath, HdPrimTypeTokens->material, this); - AddPrims({ { _mayaDefaultMaterialPath, HdPrimTypeTokens->material, mayaDefaultMaterialDataSource } }); + auto mayaHydraDefaultMaterialDataSource = MayaHydraMaterialDataSource::New(_mayaDefaultMaterialPath, HdPrimTypeTokens->material, this); + AddPrims({ { _mayaDefaultMaterialPath, + HdPrimTypeTokens->material, + mayaHydraDefaultMaterialDataSource } }); } else RemovePrim(_mayaDefaultMaterialPath); @@ -1127,6 +1213,10 @@ SdfPath MayaHydraSceneIndex::GetMaterialId(const SdfPath& id) return _fallbackMaterial; } + if (material == _mayaFacesSelectionMaterialPath) { + return _mayaFacesSelectionMaterialPath; + } + if (TfMapLookupPtr(_materialAdapters, material) != nullptr) { return material; } @@ -1239,6 +1329,14 @@ bool MayaHydraSceneIndex::_GetRenderItemMaterial( return true; } + //Is it a face components selection render item ? + const MString& renderItemName = ri.name(); + //Compare its name with the content of sActiveFacesName which is the hardcoded name for face components selection render item + if (renderItemName.indexW(sActiveFacesName) >= 0) { + material = _mayaFacesSelectionMaterialPath; + return true; + } + if (GetShadingEngineNode(ri, shadingEngineNode)) // Else try to find associated material node if this is a material shader. // NOTE: The existing maya material support in hydra expects a shading engine node diff --git a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.h b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.h index 01a71e20e7..d1cf0054d5 100644 --- a/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.h +++ b/lib/mayaHydra/hydraExtensions/sceneIndex/mayaHydraSceneIndex.h @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include "flowViewport/sceneIndex/fvpPathInterface.h" @@ -127,6 +127,9 @@ class MAYAHYDRALIB_API MayaHydraSceneIndex : public HdRetainedSceneIndex, public MSelectionList& selectionList, MPointArray& worldSpaceHitPts); + bool IsPickedNodeInComponentsPickingMode(const HdxPickHit& hit)const; + + // Insert a primitive to hydra scene void InsertPrim( MayaHydraAdapter* adapter, @@ -277,6 +280,7 @@ class MAYAHYDRALIB_API MayaHydraSceneIndex : public HdRetainedSceneIndex, public using LightDagPathMap = std::unordered_map; LightDagPathMap _GetGlobalLightPaths() const; static VtValue CreateMayaDefaultMaterial(); + static VtValue CreateMayaFacesSelectionMaterial(); using DirtyBitsToLocatorsFunc = std::function; void _MarkPrimDirty( @@ -325,6 +329,11 @@ class MAYAHYDRALIB_API MayaHydraSceneIndex : public HdRetainedSceneIndex, public /// _useDefaultMaterial is true static VtValue _mayaDefaultMaterial; + /// _mayaFacesSelectionMaterialPath is a path to a Hydra material used to display the faces selection on nodes when being in components selection mode + static SdfPath _mayaFacesSelectionMaterialPath; + /// _mayaFacesSelectionMaterial is a Hydra material used to display the faces selection on nodes when being in components selection mode + VtValue _mayaFacesSelectionMaterial; + // Default light GlfSimpleLight _mayaDefaultLight; bool _useMayaDefaultLight = false; diff --git a/lib/mayaHydra/mayaPlugin/renderOverride.cpp b/lib/mayaHydra/mayaPlugin/renderOverride.cpp index 144916ac48..53315d9aa1 100644 --- a/lib/mayaHydra/mayaPlugin/renderOverride.cpp +++ b/lib/mayaHydra/mayaPlugin/renderOverride.cpp @@ -345,6 +345,17 @@ inline bool areDifferentForOneOfTheseBits(unsigned int val1, unsigned int val2, return ((val1 & bitsToTest) != (val2 & bitsToTest)); } +inline bool isInComponentsPickingMode(const MHWRender::MSelectionInfo& selectInfo) +{ + return selectInfo.selectable(MSelectionMask::kSelectMeshVerts) + || selectInfo.selectable(MSelectionMask::kSelectMeshEdges) + || selectInfo.selectable(MSelectionMask::kSelectMeshFreeEdges) + || selectInfo.selectable(MSelectionMask::kSelectMeshFaces) + || selectInfo.selectable(MSelectionMask::kSelectVertices) + || selectInfo.selectable(MSelectionMask::kSelectEdges) + || selectInfo.selectable(MSelectionMask::kSelectFacets); +} + } PXR_NAMESPACE_OPEN_SCOPE @@ -353,8 +364,7 @@ class MtohRenderOverride::PickHandlerBase { public: virtual bool handlePickHit( - const PickInput& pickInput, PickOutput& pickOutput - ) const = 0; + const PickInput& pickInput, PickOutput& pickOutput) const = 0; protected: @@ -415,8 +425,7 @@ class MayaPickHandler : public MtohRenderOverride::PickHandlerBase { PickHandlerBase(renderOverride) {} bool handlePickHit( - const PickInput& pickInput, PickOutput& pickOutput - ) const override + const PickInput& pickInput, PickOutput& pickOutput) const override { if (!mayaSceneIndex()) { TF_FATAL_ERROR("Picking called while no Maya scene index exists"); @@ -1690,7 +1699,8 @@ void MtohRenderOverride::_PopulateSelectionList( const HdxPickHitVector& hits, const MHWRender::MSelectionInfo& selectInfo, MSelectionList& selectionList, - MPointArray& worldSpaceHitPts) + MPointArray& worldSpaceHitPts, + bool& isOneMayaNodeInComponentsPickingMode) { if (hits.empty() || !_mayaHydraSceneIndex || !_ufeSn) { return; @@ -1698,14 +1708,32 @@ void MtohRenderOverride::_PopulateSelectionList( PickOutput pickOutput(selectionList, worldSpaceHitPts, _ufeSn); + // Is the picked node in components selection mode ? If so it is in the hilite list + MSelectionList hiliteList; + MGlobal::getHiliteList(hiliteList); + const bool hiliteListIsEmpty = hiliteList.isEmpty(); + MStatus status; for (const HdxPickHit& hit : hits) { PickInput pickInput(hit, selectInfo); - - _PickHandler(hit)->handlePickHit(pickInput, pickOutput); + auto pickHandler = _PickHandler(hit); + if (!hiliteListIsEmpty && _IsMayaPickHandler(pickHandler)){ + // Maya does not create Hydra instances, so if the pick hit instancer + // ID isn't empty, it's not a Maya pick hit. + if (_mayaHydraSceneIndex && pickInput.pickHit.instancerId.IsEmpty() && _mayaHydraSceneIndex->IsPickedNodeInComponentsPickingMode(pickInput.pickHit)){ + isOneMayaNodeInComponentsPickingMode = true; + return; + } + } + pickHandler->handlePickHit(pickInput, pickOutput); } } +bool MtohRenderOverride::_IsMayaPickHandler(const MtohRenderOverride::PickHandlerBase* pickHandler)const +{ + return pickHandler == _pickHandlers[0].get(); +} + const MtohRenderOverride::PickHandlerBase* MtohRenderOverride::_PickHandler(const HdxPickHit& pickHit) const { @@ -1791,6 +1819,16 @@ bool MtohRenderOverride::select( "MtohRenderOverride::select", "MtohRenderOverride::select"); #endif + /* + * There are 2 modes of selection picking for components in maya : + * 1) You can be in components picking mode, this setting is global.This is detected in the function "isInComponentsPickingMode(selectInfo)" + * 2) The second mode is when you right click on a node and choose a component to pick it (e.g : Face), this is + * where we use the variable "isOneNodeInComponentsPickingMode" to detect that case, later in this function. + */ + if (isInComponentsPickingMode(selectInfo)) { + return false; //When being in components picking, returning false will use maya/OGS for components selection + } + MStatus status = MStatus::kFailure; MMatrix viewMatrix = frameContext.getMatrix(MHWRender::MFrameContext::kViewMtx, &status); @@ -1864,7 +1902,12 @@ bool MtohRenderOverride::select( } } - _PopulateSelectionList(outHits, selectInfo, selectionList, worldSpaceHitPts); + //isOneMayaNodeInComponentsPickingMode will be true if one of the picked node is in components picking mode + bool isOneMayaNodeInComponentsPickingMode = false; + _PopulateSelectionList(outHits, selectInfo, selectionList, worldSpaceHitPts, isOneMayaNodeInComponentsPickingMode); + if (isOneMayaNodeInComponentsPickingMode){ + return false;//When being in components picking on a node, returning false will use maya/OGS for components selection + } return true; } diff --git a/lib/mayaHydra/mayaPlugin/renderOverride.h b/lib/mayaHydra/mayaPlugin/renderOverride.h index 409b6ebed6..76c19d7e74 100644 --- a/lib/mayaHydra/mayaPlugin/renderOverride.h +++ b/lib/mayaHydra/mayaPlugin/renderOverride.h @@ -194,12 +194,15 @@ class MtohRenderOverride : public MHWRender::MRenderOverride const HdxPickHitVector& hits, const MHWRender::MSelectionInfo& selectInfo, MSelectionList& selectionList, - MPointArray& worldSpaceHitPts); + MPointArray& worldSpaceHitPts, + bool& isOneMayaNodeInComponentsPickingMode); void _AddPluginSelectionHighlighting(); bool _NeedToRecreateTheSceneIndicesChain(unsigned int currentDisplayStyle, bool currentUseDefaultMaterial, bool xRayEnabled); + bool _IsMayaPickHandler(const MtohRenderOverride::PickHandlerBase* pickHandler)const; + // Determine the pick handler which should handle a pick hit, to transform // the pick hit into a selection. const PickHandlerBase* _PickHandler(const HdxPickHit& hit) const; diff --git a/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt b/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt index 05c32f14c3..1b88840cea 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt +++ b/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt @@ -46,6 +46,7 @@ set(INTERACTIVE_TEST_SCRIPT_FILES testDataProducerSelHighlight.py|skipOnPlatform:osx testPassingNormalsOnMayaNative.py testViewportFilters.py + testMayaComponentsPicking.py cpp/testColorPreferences.py cpp/testCppFramework.py cpp/testMayaSceneFlattening.py diff --git a/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/face236SelStorm.png b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/face236SelStorm.png new file mode 100644 index 0000000000..d3c5104805 Binary files /dev/null and b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/face236SelStorm.png differ diff --git a/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/facesSelStorm.png b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/facesSelStorm.png new file mode 100644 index 0000000000..e4751c75df Binary files /dev/null and b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/facesSelStorm.png differ diff --git a/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/facesSelVP2.png b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/facesSelVP2.png new file mode 100644 index 0000000000..e4751c75df Binary files /dev/null and b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/facesSelVP2.png differ diff --git a/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/smoothwireframe.png b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/smoothwireframe.png new file mode 100644 index 0000000000..d658bb9e78 Binary files /dev/null and b/test/lib/mayaUsd/render/mayaToHydra/MayaComponentsPickingTest/smoothwireframe.png differ diff --git a/test/lib/mayaUsd/render/mayaToHydra/testMayaComponentsPicking.py b/test/lib/mayaUsd/render/mayaToHydra/testMayaComponentsPicking.py new file mode 100644 index 0000000000..096328b5ee --- /dev/null +++ b/test/lib/mayaUsd/render/mayaToHydra/testMayaComponentsPicking.py @@ -0,0 +1,57 @@ +# +# Copyright 2024 Autodesk, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import maya.cmds as cmds +import fixturesUtils +import mtohUtils +import mayaUtils + +import platform + +class TestMayaComponentsPicking(mtohUtils.MayaHydraBaseTestCase): #Subclassing mtohUtils.MayaHydraBaseTestCase to be able to call self.assertSnapshotClose + # MayaHydraBaseTestCase.setUpClass requirement. + _file = __file__ + + IMAGE_DIFF_FAIL_THRESHOLD = 0.1 + IMAGE_DIFF_FAIL_PERCENT = 2 + + def test_MayaFaceComponentsPicking(self): + + # load a maya scene + testFile = mayaUtils.openTestScene( + "testMayaComponentsPicking", + "testMayaComponentsPicking.ma", useTestSettings=False) + cmds.refresh() + + #We are in VP2, select some faces + cmds.select( 'pSphere1.f[1:300]', r=True ) + self.assertSnapshotClose("facesSelVP2" + ".png", self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) + + self.setHdStormRenderer() + self.assertSnapshotClose("facesSelStorm" + ".png", self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) + cmds.select( 'pSphere1.f[236]', r=True ) + self.assertSnapshotClose("face236SelStorm" + ".png", self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) + + #Check in wireframe + cmds.select( 'pSphere1.f[1:200]', r=True ) + panel = mayaUtils.activeModelPanel() + cmds.modelEditor(panel, edit=True, displayAppearance="wireframe") + cmds.modelEditor(panel, edit=True, smoothWireframe=True) + cmds.refresh() + self.assertSnapshotClose("smoothwireframe" + ".png", self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) + +if __name__ == '__main__': + fixturesUtils.runTests(globals()) diff --git a/test/testSamples/testMayaComponentsPicking/testMayaComponentsPicking.ma b/test/testSamples/testMayaComponentsPicking/testMayaComponentsPicking.ma new file mode 100644 index 0000000000..0c75f0634d --- /dev/null +++ b/test/testSamples/testMayaComponentsPicking/testMayaComponentsPicking.ma @@ -0,0 +1,228 @@ +//Maya ASCII 2025ff01 scene +//Name: componentsPicking.ma +//Last modified: Wed, Jun 19, 2024 06:08:46 PM +//Codeset: 1252 +requires maya "2025ff01"; +currentUnit -l centimeter -a degree -t film; +fileInfo "application" "maya"; +fileInfo "product" "Maya 2025"; +fileInfo "version" "Preview Release"; +fileInfo "cutIdentifier" "202406121005-000000"; +fileInfo "osv" "Windows 10 Enterprise v2009 (Build: 19045)"; +fileInfo "UUID" "85CC0579-4CBB-8A68-CB55-07983C941D43"; +createNode transform -s -n "persp"; + rename -uid "720FC5FB-4145-9BD8-227B-63A0E021B34F"; + setAttr ".v" no; + setAttr ".t" -type "double3" 3.143750001294551 2.3578125009708839 3.1437500012945292 ; + setAttr ".r" -type "double3" -27.938352729602379 44.999999999999972 -5.172681101354183e-14 ; +createNode camera -s -n "perspShape" -p "persp"; + rename -uid "9485393C-43BF-DE8D-A0FF-F792629755ED"; + setAttr -k off ".v" no; + setAttr ".fl" 34.999999999999993; + setAttr ".coi" 5.0324554574296387; + setAttr ".imn" -type "string" "persp"; + setAttr ".den" -type "string" "persp_depth"; + setAttr ".man" -type "string" "persp_mask"; + setAttr ".hc" -type "string" "viewSet -p %camera"; +createNode transform -s -n "top"; + rename -uid "AC1586F9-4C38-BDE6-8D30-599DD708F6E7"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 1000.1 0 ; + setAttr ".r" -type "double3" -90 0 0 ; +createNode camera -s -n "topShape" -p "top"; + rename -uid "76DC2A1B-4774-1581-8A13-138917EC0BC2"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "top"; + setAttr ".den" -type "string" "top_depth"; + setAttr ".man" -type "string" "top_mask"; + setAttr ".hc" -type "string" "viewSet -t %camera"; + setAttr ".o" yes; +createNode transform -s -n "front"; + rename -uid "BBF28995-40AC-ACA4-3ABF-BFA2FC79B916"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 0 1000.1 ; +createNode camera -s -n "frontShape" -p "front"; + rename -uid "3262A0C0-4BF1-444F-F907-66B3A17B5BE8"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "front"; + setAttr ".den" -type "string" "front_depth"; + setAttr ".man" -type "string" "front_mask"; + setAttr ".hc" -type "string" "viewSet -f %camera"; + setAttr ".o" yes; +createNode transform -s -n "side"; + rename -uid "FC986AEB-45C4-46A1-DB69-789CE7FFA472"; + setAttr ".v" no; + setAttr ".t" -type "double3" 1000.1 0 0 ; + setAttr ".r" -type "double3" 0 90 0 ; +createNode camera -s -n "sideShape" -p "side"; + rename -uid "B2D0CC95-491C-E9DB-1362-929CBBA86042"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "side"; + setAttr ".den" -type "string" "side_depth"; + setAttr ".man" -type "string" "side_mask"; + setAttr ".hc" -type "string" "viewSet -s %camera"; + setAttr ".o" yes; +createNode transform -n "pSphere1"; + rename -uid "F2826354-4DA2-35BF-1D0C-408FDC1FAEEF"; +createNode mesh -n "pSphereShape1" -p "pSphere1"; + rename -uid "91379734-4D2D-B9B1-F1F5-BEB276C05E33"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; +createNode lightLinker -s -n "lightLinker1"; + rename -uid "124CBC71-4D9F-257B-5383-48B16ACAF1C5"; + setAttr -s 2 ".lnk"; + setAttr -s 2 ".slnk"; +createNode shapeEditorManager -n "shapeEditorManager"; + rename -uid "46B39A2B-46F3-7632-D6C3-04BDBF96C644"; +createNode poseInterpolatorManager -n "poseInterpolatorManager"; + rename -uid "62562FDD-45DC-298B-C955-92A806BEFBE1"; +createNode displayLayerManager -n "layerManager"; + rename -uid "6B02F043-4AD5-7908-E856-E2BDD031CFE5"; +createNode displayLayer -n "defaultLayer"; + rename -uid "6870788A-4AE2-9D39-7225-3BBDA995FD6C"; + setAttr ".ufem" -type "stringArray" 0 ; +createNode renderLayerManager -n "renderLayerManager"; + rename -uid "A88CC719-4258-C589-8737-10800A27BD09"; +createNode renderLayer -n "defaultRenderLayer"; + rename -uid "D4045783-4274-6584-5920-63B7C5D9E27A"; + setAttr ".g" yes; +createNode polySphere -n "polySphere1"; + rename -uid "07586E0F-498C-41BA-7AFD-7FA71160FE5D"; +createNode script -n "uiConfigurationScriptNode"; + rename -uid "740433C1-40EF-2B46-F10A-BF86C18EF59D"; + setAttr ".b" -type "string" ( + "// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $nodeEditorPanelVisible = stringArrayContains(\"nodeEditorPanel1\", `getPanel -vis`);\n\tint $nodeEditorWorkspaceControlOpen = (`workspaceControl -exists nodeEditorPanel1Window` && `workspaceControl -q -visible nodeEditorPanel1Window`);\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\n\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"|top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n" + + " -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" + + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"|side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n" + + " -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n" + + " -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n" + + " -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"|front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n" + + " -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n" + + " -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n" + + " -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n" + + " -camera \"|persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n" + + " -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n" + + " -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n -shadows 0\n -captureSequenceNumber -1\n -width 1317\n -height 715\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n" + + "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"ToggledOutliner\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"ToggledOutliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n" + + " -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n" + + " -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n" + + " -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n" + + " -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n" + + " -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n" + + " -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n" + + "\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayValues 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showPlayRangeShades \"on\" \n -lockPlayRangeShades \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -tangentScale 1\n -tangentLineThickness 1\n -keyMinScale 1\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -preSelectionHighlight 0\n -limitToSelectedCurves 0\n -constrainDrag 0\n -valueLinesToggle 0\n -highlightAffectedCurves 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n" + + "\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n" + + " -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n" + + " -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayValues 0\n -snapTime \"none\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -hierarchyBelow 0\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"timeEditorPanel\" (localizedPanelLabel(\"Time Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Time Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n" + + "\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayValues 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayValues 0\n" + + " -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n" + + " -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n" + + "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif ($nodeEditorPanelVisible || $nodeEditorWorkspaceControlOpen) {\n\t\tif (\"\" == $panelName) {\n\t\t\tif ($useSceneConfig) {\n\t\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -connectNodeOnCreation 0\n" + + " -connectOnDrop 0\n -copyConnectionsOnPaste 0\n -connectionStyle \"bezier\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -connectedGraphingMode 1\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -crosshairOnEdgeDragging 0\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -showUnitConversions 0\n -editorMode \"default\" \n -hasWatchpoint 0\n $editorName;\n\t\t\t}\n\t\t} else {\n\t\t\t$label = `panel -q -label $panelName`;\n" + + "\t\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -connectNodeOnCreation 0\n -connectOnDrop 0\n -copyConnectionsOnPaste 0\n -connectionStyle \"bezier\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -connectedGraphingMode 1\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -crosshairOnEdgeDragging 0\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n" + + " -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -showUnitConversions 0\n -editorMode \"default\" \n -hasWatchpoint 0\n $editorName;\n\t\t\tif (!$useSceneConfig) {\n\t\t\t\tpanel -e -l $label $panelName;\n\t\t\t}\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n" + + "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-userCreated false\n\t\t\t\t-defaultImage \"\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"single\\\" -ps 1 100 100 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n" + + "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -controllers 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -bluePencil 1\\n -greasePencils 0\\n -excludeObjectPreset \\\"All\\\" \\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1317\\n -height 715\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -controllers 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -bluePencil 1\\n -greasePencils 0\\n -excludeObjectPreset \\\"All\\\" \\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1317\\n -height 715\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n"); + setAttr ".st" 3; +createNode script -n "sceneConfigurationScriptNode"; + rename -uid "C56C4B9A-4FBA-2B00-FE39-A8B99FB5CA5A"; + setAttr ".b" -type "string" "playbackOptions -min 1 -max 120 -ast 1 -aet 200 "; + setAttr ".st" 6; +select -ne :time1; + setAttr ".o" 1; + setAttr ".unw" 1; +select -ne :hardwareRenderingGlobals; + setAttr ".otfna" -type "stringArray" 22 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surface" "Particles" "Particle Instance" "Fluids" "Strokes" "Image Planes" "UI" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Hair Systems" "Follicles" "Misc. UI" "Ornaments" ; + setAttr ".otfva" -type "Int32Array" 22 0 1 1 1 1 1 + 1 1 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 ; + setAttr ".fprt" yes; + setAttr ".rtfm" 1; +select -ne :renderPartition; + setAttr -s 2 ".st"; +select -ne :renderGlobalsList1; +select -ne :defaultShaderList1; + setAttr -s 5 ".s"; +select -ne :postProcessList1; + setAttr -s 2 ".p"; +select -ne :defaultRenderingList1; +select -ne :standardSurface1; + setAttr ".bc" -type "float3" 0.40000001 0.40000001 0.40000001 ; + setAttr ".sr" 0.5; +select -ne :initialShadingGroup; + setAttr ".ro" yes; +select -ne :initialParticleSE; + setAttr ".ro" yes; +select -ne :defaultRenderGlobals; + addAttr -ci true -sn "mtohMotionSampleStart" -ln "mtohMotionSampleStart" -at "float"; + addAttr -ci true -sn "mtohMotionSampleEnd" -ln "mtohMotionSampleEnd" -at "float"; + addAttr -ci true -sn "mayaHydraRenderPurpose" -ln "mayaHydraRenderPurpose" -min + 0 -max 1 -at "bool"; + addAttr -ci true -sn "mayaHydraProxyPurpose" -ln "mayaHydraProxyPurpose" -dv 1 -min + 0 -max 1 -at "bool"; + addAttr -ci true -sn "mayaHydraGuidePurpose" -ln "mayaHydraGuidePurpose" -min 0 + -max 1 -at "bool"; + addAttr -ci true -sn "mtohTextureMemoryPerTexture" -ln "mtohTextureMemoryPerTexture" + -dv 4096 -min 1 -max 262144 -smn 16384 -at "long"; + addAttr -ci true -sn "mtohMaximumShadowMapResolution" -ln "mtohMaximumShadowMapResolution" + -dv 2048 -min 32 -max 8192 -at "long"; + addAttr -ci true -sn "mayaHydraRefinementLevel" -ln "mayaHydraRefinementLevel" -min + 0 -max 8 -at "long"; + addAttr -ci true -sn "HdStormRendererPlugin__enableTinyPrimCulling" -ln "HdStormRendererPlugin__enableTinyPrimCulling" + -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "HdStormRendererPlugin__volumeRaymarchingStepSize" -ln "HdStormRendererPlugin__volumeRaymarchingStepSize" + -dv 1 -at "float"; + addAttr -ci true -sn "HdStormRendererPlugin__volumeRaymarchingStepSizeLighting" + -ln "HdStormRendererPlugin__volumeRaymarchingStepSizeLighting" -dv 10 -at "float"; + addAttr -ci true -sn "HdStormRendererPlugin__volumeMaxTextureMemoryPerField" -ln "HdStormRendererPlugin__volumeMaxTextureMemoryPerField" + -dv 128 -at "float"; + addAttr -ci true -sn "HdStormRendererPlugin__maxLights" -ln "HdStormRendererPlugin__maxLights" + -dv 16 -at "long"; + addAttr -ci true -h true -sn "dss" -ln "defaultSurfaceShader" -dt "string"; + setAttr ".dss" -type "string" "standardSurface1"; +select -ne :defaultResolution; + setAttr ".pa" 1; +select -ne :defaultColorMgtGlobals; + setAttr ".cfe" yes; + setAttr ".cfp" -type "string" "/OCIO-configs/Maya2022-default/config.ocio"; + setAttr ".vtn" -type "string" "ACES 1.0 SDR-video (sRGB)"; + setAttr ".vn" -type "string" "ACES 1.0 SDR-video"; + setAttr ".dn" -type "string" "sRGB"; + setAttr ".wsn" -type "string" "ACEScg"; + setAttr ".otn" -type "string" "ACES 1.0 SDR-video (sRGB)"; + setAttr ".potn" -type "string" "ACES 1.0 SDR-video (sRGB)"; +select -ne :hardwareRenderGlobals; + setAttr ".ctrs" 256; + setAttr ".btrs" 512; +connectAttr "polySphere1.out" "pSphereShape1.i"; +relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +connectAttr "layerManager.dli[0]" "defaultLayer.id"; +connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid"; +connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na; +connectAttr "pSphereShape1.iog" ":initialShadingGroup.dsm" -na; +// End of componentsPicking.ma