From 2837dea4e1276a72a3a9fcbfa7d1ef454f4b8516 Mon Sep 17 00:00:00 2001 From: Jerry Gamache Date: Wed, 3 Apr 2024 17:16:29 -0400 Subject: [PATCH 1/2] LOOKDEVX-2358 - Fix image file attribute detection An image UsdShade node that never had its filename attribute set would fail the isImageAttribute test. Allow the image code since a filename in a shader is always an image. --- lib/mayaUsd/resources/ae/usdschemabase/ae_template.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/mayaUsd/resources/ae/usdschemabase/ae_template.py b/lib/mayaUsd/resources/ae/usdschemabase/ae_template.py index 6584232c6b..6dac372175 100644 --- a/lib/mayaUsd/resources/ae/usdschemabase/ae_template.py +++ b/lib/mayaUsd/resources/ae/usdschemabase/ae_template.py @@ -963,6 +963,10 @@ def isImageAttribute(self, attrName): kFilenameAttr = ufe.Attribute.kFilename if hasattr(ufe.Attribute, "kFilename") else 'Filename' if self.attrS.attributeType(attrName) != kFilenameAttr: return False + shader = UsdShade.Shader(self.prim) + if shader and attrName.startswith("inputs:"): + # Shader attribute. The actual USD Attribute might not exist yet. + return True attr = self.prim.GetAttribute(attrName) if not attr: return False From e964cc3ee444c10249f3fc047e3162cc3e24c334 Mon Sep 17 00:00:00 2001 From: Jerry Gamache Date: Wed, 3 Apr 2024 17:42:43 -0400 Subject: [PATCH 2/2] LOOKDEVX-2358 - Allow LookdevX to use relative layer handler --- lib/mayaUsdAPI/utils.cpp | 10 ++++++++++ lib/mayaUsdAPI/utils.h | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/lib/mayaUsdAPI/utils.cpp b/lib/mayaUsdAPI/utils.cpp index d305e00293..f8f6bca926 100644 --- a/lib/mayaUsdAPI/utils.cpp +++ b/lib/mayaUsdAPI/utils.cpp @@ -128,4 +128,14 @@ bool requireUsdPathsRelativeToEditTargetLayer() return PXR_NS::UsdMayaUtilFileSystem::requireUsdPathsRelativeToEditTargetLayer(); } +std::string handleAssetPathThatMaybeRelativeToLayer( + std::string fileName, + const std::string& attrName, + const PXR_NS::SdfLayerHandle& layer, + const std::string& optionVarName) +{ + return PXR_NS::UsdMayaUtilFileSystem::handleAssetPathThatMaybeRelativeToLayer( + fileName, attrName, layer, optionVarName); +} + } // End of namespace MAYAUSDAPI_NS_DEF \ No newline at end of file diff --git a/lib/mayaUsdAPI/utils.h b/lib/mayaUsdAPI/utils.h index cb9f5357a7..bc7f7ca28d 100644 --- a/lib/mayaUsdAPI/utils.h +++ b/lib/mayaUsdAPI/utils.h @@ -111,6 +111,13 @@ makePathRelativeTo(const std::string& fileName, const std::string& relativeToDir MAYAUSD_API_PUBLIC bool requireUsdPathsRelativeToEditTargetLayer(); +MAYAUSD_API_PUBLIC +std::string handleAssetPathThatMaybeRelativeToLayer( + std::string fileName, + const std::string& attrName, + const PXR_NS::SdfLayerHandle& layer, + const std::string& optionVarName); + } // namespace MAYAUSDAPI_NS_DEF #endif // MAYAUSDAPI_UTILS_H