From 4fb26bd65897f2610f30ab4f02804b81be62166b Mon Sep 17 00:00:00 2001 From: Jerry Gamache Date: Fri, 12 Jul 2024 13:38:00 -0400 Subject: [PATCH 1/3] MAYA-133932 - Implemented import/export to MaterialX Add support for backported OpenPBR from MaterialX Add unit test. --- cmake/modules/FindUSD.cmake | 16 + .../fileio/shading/shadingModeRegistry.h | 13 + .../fileio/shading/shadingModeUseRegistry.cpp | 20 + .../render/MaterialXGenOgsXml/CMakeLists.txt | 17 + .../GlslFragmentGenerator.cpp | 28 + .../Nodes/MayaClosureSourceCodeNode.cpp | 39 + .../Nodes/MayaClosureSourceCodeNode.h | 25 + .../libraries/mx39_lighting_maya_all.glsl | 112 ++ .../render/vp2RenderDelegate/material.cpp | 24 +- lib/usd/translators/shading/CMakeLists.txt | 18 + .../shading/mtlxFileTextureReader.cpp | 10 + .../translators/shading/mtlxImageReader.cpp | 7 +- .../shading/mtlxOpenPBRSurfaceReader.cpp | 98 ++ .../shading/mtlxOpenPBRSurfaceWriter.cpp | 102 ++ .../shading/mtlxStandardSurfaceReader.cpp | 143 +- .../shading/mtlxStandardSurfaceWriter.cpp | 236 +-- .../shading/mtlxTranslationTableReader.cpp | 154 ++ .../shading/mtlxTranslationTableReader.h | 46 + .../shading/mtlxTranslationTableWriter.cpp | 232 +++ .../shading/mtlxTranslationTableWriter.h | 60 + lib/usd/translators/shading/shadingTokens.cpp | 3 + lib/usd/translators/shading/shadingTokens.h | 97 ++ .../shading/usdOpenPBRSurfaceReader.cpp | 173 ++ .../shading/usdOpenPBRSurfaceWriter.cpp | 420 +++++ .../shading/usdStandardSurfaceWriter.cpp | 2 +- plugin/adsk/scripts/mayaUSDRegisterStrings.py | 1 + .../adsk/scripts/mayaUsdTranslatorImport.mel | 7 +- .../render/vp2RenderDelegate/CMakeLists.txt | 1 + .../OpenPBRShowcase_MTLX_Import_render.png | Bin 0 -> 116922 bytes .../OpenPBRShowcase_UsdPS_Import_render.png | Bin 0 -> 179983 bytes .../testVP2RenderDelegateMaterialX.py | 58 + test/testSamples/MaterialX/OpenPBRShowcase.ma | 1422 +++++++++++++++++ 32 files changed, 3223 insertions(+), 361 deletions(-) create mode 100644 lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.cpp create mode 100644 lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.h create mode 100644 lib/mayaUsd/render/MaterialXGenOgsXml/libraries/mx39_lighting_maya_all.glsl create mode 100644 lib/usd/translators/shading/mtlxOpenPBRSurfaceReader.cpp create mode 100644 lib/usd/translators/shading/mtlxOpenPBRSurfaceWriter.cpp create mode 100644 lib/usd/translators/shading/mtlxTranslationTableReader.cpp create mode 100644 lib/usd/translators/shading/mtlxTranslationTableReader.h create mode 100644 lib/usd/translators/shading/mtlxTranslationTableWriter.cpp create mode 100644 lib/usd/translators/shading/mtlxTranslationTableWriter.h create mode 100644 lib/usd/translators/shading/usdOpenPBRSurfaceReader.cpp create mode 100644 lib/usd/translators/shading/usdOpenPBRSurfaceWriter.cpp create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/OpenPBRShowcase_MTLX_Import_render.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/OpenPBRShowcase_UsdPS_Import_render.png create mode 100644 test/testSamples/MaterialX/OpenPBRShowcase.ma diff --git a/cmake/modules/FindUSD.cmake b/cmake/modules/FindUSD.cmake index 5965cfbf40..26239d626f 100644 --- a/cmake/modules/FindUSD.cmake +++ b/cmake/modules/FindUSD.cmake @@ -153,6 +153,22 @@ if (USD_LIBRARY_DIR AND EXISTS "${USD_LIBRARY_DIR}/${USD_LIB_PREFIX}usdMtlx${CMA endif() endif() +# See if we are getting OpenPBR Surface shader from USD: +set(USD_HAS_MX_OPENPBR_SURFACE FALSE CACHE INTERNAL "USD.MaterialX.OpenPBRSurface") +if (PXR_USD_LOCATION AND + (EXISTS "${PXR_USD_LOCATION}/libraries/bxdf/mx39_open_pbr_surface.mtlx" OR + EXISTS "${PXR_USD_LOCATION}/libraries/bxdf/open_pbr_surface.mtlx")) + set(USD_HAS_MX_OPENPBR_SURFACE TRUE CACHE INTERNAL "USD.MaterialX.OpenPBRSurface") + message(STATUS "USD has OpenPBR Surface") +endif() + +# See if we are using the backported OpenPBR Surface shader, which needs special handling of Mx39FresnelData: +set(USD_HAS_BACKPORTED_MX39_OPENPBR FALSE CACHE INTERNAL "USD.MaterialX.Mx39OpenPBRSurface") +if (PXR_USD_LOCATION AND EXISTS "${PXR_USD_LOCATION}/libraries/pbrlib/genglsl/lib/mx39_microfacet_specular.glsl") + set(USD_HAS_BACKPORTED_MX39_OPENPBR TRUE CACHE INTERNAL "USD.MaterialX.Mx39OpenPBRSurface") + message(STATUS "USD has backported MaterialX 1.39 OpenPBR Surface code") +endif() + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(USD diff --git a/lib/mayaUsd/fileio/shading/shadingModeRegistry.h b/lib/mayaUsd/fileio/shading/shadingModeRegistry.h index 357d79ec00..2359a52365 100644 --- a/lib/mayaUsd/fileio/shading/shadingModeRegistry.h +++ b/lib/mayaUsd/fileio/shading/shadingModeRegistry.h @@ -46,15 +46,28 @@ TF_DECLARE_PUBLIC_TOKENS( MAYAUSD_CORE_PUBLIC, PXRUSDMAYA_SHADINGMODE_TOKENS); +#if MAYA_API_VERSION >= 20250300 // clang-format off #define PXRUSDMAYA_SHADINGCONVERSION_TOKENS \ (none) \ (lambert) \ + (openPBRSurface) \ (standardSurface) \ (usdPreviewSurface) \ (blinn) \ (phong) // clang-format on +#else +// clang-format off +#define PXRUSDMAYA_SHADINGCONVERSION_TOKENS \ + (none) \ + (lambert) \ + (standardSurface) \ + (usdPreviewSurface) \ + (blinn) \ + (phong) +// clang-format on +#endif TF_DECLARE_PUBLIC_TOKENS( UsdMayaPreferredMaterialTokens, diff --git a/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp b/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp index 5af06c2e46..0352677556 100644 --- a/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp +++ b/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp @@ -715,6 +715,26 @@ class UseRegistryShadingModeImporter } if (!mayaAttr.isNull()) { + // Connecting the R component of a color to a color should be possible. Check + // if there is a compatible parent in case of type mismatch. + MFnAttribute srcFnAttr(srcAttr.attribute()); + MFnAttribute mayaFnAttr(mayaAttr.attribute()); + if (!srcFnAttr.acceptsAttribute(mayaFnAttr)) { + if (srcAttr.isChild()) { + const auto srcParentPlug = srcAttr.parent(); + const auto srcParentAttr = MFnAttribute(srcParentPlug); + if (srcParentAttr.acceptsAttribute(mayaFnAttr)) { + srcAttr = srcParentPlug; + } + } else if (mayaAttr.isChild()) { + const auto mayaParentPlug = mayaAttr.parent(); + const auto mayaParentAttr = MFnAttribute(mayaParentPlug); + if (srcFnAttr.acceptsAttribute(mayaParentAttr)) { + mayaAttr = mayaParentPlug; + } + } + } + UsdMayaUtil::Connect(srcAttr, mayaAttr, false); } } diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt b/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt index f7722bfbf8..75d113d070 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt @@ -37,6 +37,17 @@ target_sources(${PROJECT_NAME} ) endif() +if(USD_HAS_BACKPORTED_MX39_OPENPBR) +target_compile_definitions(${PROJECT_NAME} + PRIVATE + USD_HAS_BACKPORTED_MX39_OPENPBR + ) +target_sources(${PROJECT_NAME} + PRIVATE + Nodes/MayaClosureSourceCodeNode.cpp + ) +endif() + set(HEADERS CombinedMaterialXVersion.h GlslFragmentGenerator.h @@ -56,6 +67,12 @@ list(APPEND LIGHT_IMPLEMENTATIONS libraries/mx_lighting_maya_v3.glsl ) +if(USD_HAS_BACKPORTED_MX39_OPENPBR) + list(APPEND LIGHT_IMPLEMENTATIONS + libraries/mx39_lighting_maya_all.glsl + ) +endif() + list(APPEND NODE_DECLARATIONS libraries/maya_surfaces.mtlx libraries/maya_utilities.mtlx diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp index ed180a1fd1..47f713d345 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp @@ -18,6 +18,9 @@ #include "Nodes/MayaHwImageNode.h" #include "Nodes/MayaSourceCodeNode.h" #endif +#ifdef USD_HAS_BACKPORTED_MX39_OPENPBR +#include "Nodes/MayaClosureSourceCodeNode.h" +#endif #include #include @@ -559,21 +562,33 @@ ShaderPtr GlslFragmentGenerator::generate( emitLineBreak(pixelStage); MX_EMIT_INCLUDE( libRoot + "pbrlib/genglsl/ogsxml/mx_lighting_maya_v3.glsl", context, pixelStage); +#ifdef USD_HAS_BACKPORTED_MX39_OPENPBR + emitLine("#define MAYA_MX39_USING_ENVIRONMENT_FIS", pixelStage, false); +#endif } else if (specularMethod == SPECULAR_ENVIRONMENT_PREFILTER) { if (OgsXmlGenerator::useLightAPI() < 2) { MX_EMIT_INCLUDE( libRoot + "pbrlib/genglsl/ogsxml/mx_lighting_maya_v1.glsl", context, pixelStage); +#ifdef USD_HAS_BACKPORTED_MX39_OPENPBR + emitLine("#define MAYA_MX39_USING_ENVIRONMENT_PREFILTER_V1", pixelStage, false); +#endif } else { MX_EMIT_INCLUDE( libRoot + "pbrlib/genglsl/ogsxml/mx_lighting_maya_v2.glsl", context, pixelStage); +#ifdef USD_HAS_BACKPORTED_MX39_OPENPBR + emitLine("#define MAYA_MX39_USING_ENVIRONMENT_PREFILTER_V2", pixelStage, false); +#endif } } else if (specularMethod == SPECULAR_ENVIRONMENT_NONE) { MX_EMIT_INCLUDE( libRoot + "pbrlib/genglsl/ogsxml/mx_lighting_maya_none.glsl", context, pixelStage); +#ifdef USD_HAS_BACKPORTED_MX39_OPENPBR + emitLine("#define MAYA_MX39_USING_ENVIRONMENT_NONE", pixelStage, false); +#endif } else { throw ExceptionShaderGenError( "Invalid hardware specular environment method specified: '" @@ -954,6 +969,19 @@ GlslFragmentGenerator::getImplementation(const NodeDef& nodedef, GenContext& con context.addNodeImplementation(name, impl); return impl; +#ifdef USD_HAS_BACKPORTED_MX39_OPENPBR + } else if ( + implElement->getName() == "IM_dielectric_tf_bsdf_genglsl" + || implElement->getName() == "IM_generalized_schlick_tf_82_bsdf_genglsl") { + // We need to inject lighting code into the backported OpenPBR: + impl = MayaClosureSourceCodeNode::create(); + impl->initialize(*implElement, context); + + // Cache it. + context.addNodeImplementation(name, impl); + + return impl; +#endif } return GlslShaderGenerator::getImplementation(nodedef, context); } diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.cpp b/lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.cpp new file mode 100644 index 0000000000..8a283bfc6a --- /dev/null +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.cpp @@ -0,0 +1,39 @@ +// +// Copyright Contributors to the MaterialX Project +// SPDX-License-Identifier: Apache-2.0 +// + +#include "MayaClosureSourceCodeNode.h" + +#include + +MATERIALX_NAMESPACE_BEGIN + +ShaderNodeImplPtr MayaClosureSourceCodeNode::create() +{ + return std::make_shared(); +} + +void MayaClosureSourceCodeNode::emitFunctionDefinition( + const ShaderNode& node, + GenContext& context, + ShaderStage& stage) const +{ + // Pre-inject backported OpenPBR lighting code: + if (_name == "IM_dielectric_tf_bsdf_genglsl" + || _name == "IM_generalized_schlick_tf_82_bsdf_genglsl") { + static const auto allIncludes + = std::array { "pbrlib/genglsl/lib/mx39_microfacet_specular.glsl", + "pbrlib/genglsl/ogsxml/mx39_lighting_maya_all.glsl" }; + for (auto const& toInclude : allIncludes) { + // Update source code to inject our mx39 lighting functions: + FilePath libraryPrefix = context.getOptions().libraryPrefix; + FilePath fullFilename = libraryPrefix.isEmpty() ? toInclude : libraryPrefix / toInclude; + FilePath resolvedFilename = context.resolveSourceFile(fullFilename, FilePath()); + stage.addInclude(fullFilename, resolvedFilename, context); + } + } + return ClosureSourceCodeNode::emitFunctionDefinition(node, context, stage); +} + +MATERIALX_NAMESPACE_END diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.h b/lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.h new file mode 100644 index 0000000000..878cb9528f --- /dev/null +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/Nodes/MayaClosureSourceCodeNode.h @@ -0,0 +1,25 @@ +// +// Copyright Contributors to the MaterialX Project +// SPDX-License-Identifier: Apache-2.0 +// + +#ifndef MAYA_MATERIALX_CLOSURESOURCECODENODE_H +#define MAYA_MATERIALX_CLOSURESOURCECODENODE_H + +#include + +MATERIALX_NAMESPACE_BEGIN + +/// Source code node that supports the backported OpenPBR Surface node from MaterialX 1.39 +class MayaClosureSourceCodeNode : public ClosureSourceCodeNode +{ +public: + static ShaderNodeImplPtr create(); + + void emitFunctionDefinition(const ShaderNode& node, GenContext& context, ShaderStage& stage) + const override; +}; + +MATERIALX_NAMESPACE_END + +#endif diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/libraries/mx39_lighting_maya_all.glsl b/lib/mayaUsd/render/MaterialXGenOgsXml/libraries/mx39_lighting_maya_all.glsl new file mode 100644 index 0000000000..6cded42526 --- /dev/null +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/libraries/mx39_lighting_maya_all.glsl @@ -0,0 +1,112 @@ +#ifdef MAYA_MX39_USING_ENVIRONMENT_FIS + +vec3 mx39_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, Mx39FresnelData fd) +{ + if (mayaGetSpecularEnvironmentNumLOD() == 0) { + return vec3(0); + } + + // Generate tangent frame. + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + mat3 tangentToWorld = mat3(X, Y, N); + + // Transform the view vector to tangent space. + V = vec3(dot(V, X), dot(V, Y), dot(V, N)); + + // Compute derived properties. + float NdotV = clamp(V.z, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(alpha); + float G1V = mx_ggx_smith_G1(NdotV, avgAlpha); + + // Integrate outgoing radiance using filtered importance sampling. + // http://cgg.mff.cuni.cz/~jaroslav/papers/2008-egsr-fis/2008-egsr-fis-final-embedded.pdf + vec3 radiance = vec3(0.0); + for (int i = 0; i < MX_NUM_FIS_SAMPLES; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, MX_NUM_FIS_SAMPLES); + + // Compute the half vector and incoming light direction. + vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, alpha); + vec3 L = fd.refraction ? mx_refraction_solid_sphere(-V, H, fd.ior.x) : -reflect(V, H); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + // Sample the environment light from the given direction. + vec3 Lw = tangentToWorld * L; + float pdf = mx_ggx_NDF(H, alpha) * G1V / (4.0 * NdotV); + float lod = mx_latlong_compute_lod_adsk(Lw, pdf, float(mayaGetSpecularEnvironmentNumLOD() - 1), MX_NUM_FIS_SAMPLES); + vec3 sampleColor = mayaSampleSpecularEnvironmentAtLOD(Lw, lod); + + // Compute the Fresnel term. + vec3 F = mx39_compute_fresnel(VdotH, fd); + + // Compute the geometric term. + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + // Compute the combined FG term, which is inverted for refraction. + vec3 FG = fd.refraction ? vec3(1.0) - (F * G) : F * G; + + // Add the radiance contribution of this sample. + // From https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf + // incidentLight = sampleColor * NdotL + // microfacetSpecular = D * F * G / (4 * NdotL * NdotV) + // pdf = D * G1V / (4 * NdotV); + // radiance = incidentLight * microfacetSpecular / pdf + radiance += sampleColor * FG; + } + + // Apply the global component of the geometric term and normalize. + radiance /= G1V * float(MX_NUM_FIS_SAMPLES); + + // Return the final radiance. + return radiance; +} + +#endif + +#ifdef MAYA_MX39_USING_ENVIRONMENT_PREFILTER_V1 + +vec3 mx39_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, Mx39FresnelData fd) +{ + N = mx_forward_facing_normal(N, V); + vec3 L = fd.refraction ? mx_refraction_solid_sphere(-V, N, fd.ior.x) : -reflect(V, N); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(alpha); + vec3 F = mx39_compute_fresnel(NdotV, fd); + float G = mx_ggx_smith_G2(NdotV, NdotV, avgAlpha); + vec3 FG = fd.refraction ? vec3(1.0) - (F * G) : F * G; + vec3 Li = mix(g_specularI, g_diffuseI, avgAlpha); + return Li * FG; +} + +#endif + +#ifdef MAYA_MX39_USING_ENVIRONMENT_PREFILTER_V2 + +vec3 mx39_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, Mx39FresnelData fd) +{ + N = mx_forward_facing_normal(N, V); + vec3 L = fd.refraction ? mx_refraction_solid_sphere(-V, N, fd.ior.x) : -reflect(V, N); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(alpha); + vec3 F = mx39_compute_fresnel(NdotV, fd); + float G = mx_ggx_smith_G2(NdotV, NdotV, avgAlpha); + vec3 FG = fd.refraction ? vec3(1.0) - (F * G) : F * G; + float phongExp = mayaRoughnessToPhongExp(sqrt(avgAlpha)); + vec3 Li = mayaGetSpecularEnvironment(N, V, phongExp); + return Li * FG; +} + +#endif + +#ifdef MAYA_MX39_USING_ENVIRONMENT_NONE + +vec3 mx39_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, Mx39FresnelData fd) +{ + return vec3(0.0); +} + +#endif diff --git a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp index 53bcc88ecd..7314267d28 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp @@ -335,21 +335,27 @@ struct _MaterialXData { _MaterialXData() { - _mtlxSearchPath = HdMtlxSearchPaths(); + try { + _mtlxSearchPath = HdMtlxSearchPaths(); #if PXR_VERSION > 2311 - _mtlxLibrary = HdMtlxStdLibraries(); + _mtlxLibrary = HdMtlxStdLibraries(); #else - _mtlxLibrary = mx::createDocument(); - mx::loadLibraries({}, _mtlxSearchPath, _mtlxLibrary); + _mtlxLibrary = mx::createDocument(); + mx::loadLibraries({}, _mtlxSearchPath, _mtlxLibrary); #endif - _FixLibraryTangentInputs(_mtlxLibrary); + _FixLibraryTangentInputs(_mtlxLibrary); - mx::OgsXmlGenerator::setUseLightAPI(MAYA_LIGHTAPI_VERSION_2); + mx::OgsXmlGenerator::setUseLightAPI(MAYA_LIGHTAPI_VERSION_2); - // This environment variable is defined in USD: pxr\usd\usdMtlx\parser.cpp - static const std::string env = TfGetenv("USDMTLX_PRIMARY_UV_NAME"); - _mainUvSetName = env.empty() ? UsdUtilsGetPrimaryUVSetName().GetString() : env; + // This environment variable is defined in USD: pxr\usd\usdMtlx\parser.cpp + static const std::string env = TfGetenv("USDMTLX_PRIMARY_UV_NAME"); + _mainUvSetName = env.empty() ? UsdUtilsGetPrimaryUVSetName().GetString() : env; + + } catch (mx::Exception& e) { + TF_RUNTIME_ERROR( + "Caught exception '%s' while initializing MaterialX library", e.what()); + } } MaterialX::FileSearchPath _mtlxSearchPath; //!< MaterialX library search path MaterialX::DocumentPtr _mtlxLibrary; //!< MaterialX library diff --git a/lib/usd/translators/shading/CMakeLists.txt b/lib/usd/translators/shading/CMakeLists.txt index 71458354bf..0514294d01 100644 --- a/lib/usd/translators/shading/CMakeLists.txt +++ b/lib/usd/translators/shading/CMakeLists.txt @@ -23,6 +23,14 @@ target_sources(${TARGET_NAME} usdStandardSurfaceWriter.cpp ) +if (MAYA_API_VERSION VERSION_GREATER_EQUAL 20250300) + target_sources(${TARGET_NAME} + PRIVATE + usdOpenPBRSurfaceWriter.cpp + usdOpenPBRSurfaceReader.cpp + ) +endif() + if (BUILD_RFM_TRANSLATORS) target_sources(${TARGET_NAME} PRIVATE @@ -54,10 +62,20 @@ if (MAYA_APP_VERSION VERSION_GREATER 2022) mtlxStandardSurfaceWriter.cpp mtlxSymmetricShaderReader.cpp mtlxSymmetricShaderWriter.cpp + mtlxTranslationTableReader.cpp + mtlxTranslationTableWriter.cpp mtlxFileTextureWriter.cpp ) target_compile_definitions(${TARGET_NAME} PRIVATE WANT_MATERIALX_TRANSLATORS=1 ) + if (USD_HAS_MX_OPENPBR_SURFACE AND MAYA_API_VERSION VERSION_GREATER_EQUAL 20250300) + target_sources(${TARGET_NAME} + PRIVATE + mtlxOpenPBRSurfaceReader.cpp + mtlxOpenPBRSurfaceWriter.cpp + ) + endif() + endif() diff --git a/lib/usd/translators/shading/mtlxFileTextureReader.cpp b/lib/usd/translators/shading/mtlxFileTextureReader.cpp index 08ced3cc8a..943cb583e6 100644 --- a/lib/usd/translators/shading/mtlxFileTextureReader.cpp +++ b/lib/usd/translators/shading/mtlxFileTextureReader.cpp @@ -63,6 +63,9 @@ class MtlxUsd_FileTextureReader : public MtlxUsd_BaseReader bool TraverseUnconnectableInput(const TfToken& usdAttrName) override; TfToken GetMayaNameForUsdAttrName(const TfToken& usdAttrName) const override; + +private: + bool _isMonochrome = false; }; PXRUSDMAYA_REGISTER_SHADER_READER(MayaND_fileTexture_float, MtlxUsd_FileTextureReader) @@ -86,6 +89,9 @@ bool MtlxUsd_FileTextureReader::Read(UsdMayaPrimReaderContext& context) return false; } + const auto output = shaderSchema.GetOutput(TrMayaTokens->outColor); + _isMonochrome = output.GetTypeName() == SdfValueTypeNames->Float; + MString mayaNodeName = prim.GetName().GetText(); MObject mayaObject; SdfPath imageNodePath; @@ -195,6 +201,10 @@ TfToken MtlxUsd_FileTextureReader::GetMayaNameForUsdAttrName(const TfToken& usdA if (attrType == UsdShadeAttributeType::Output && (usdPortName == TrMayaTokens->outColor || usdPortName == TrMayaTokens->outAlpha)) { + + if (usdPortName == TrMayaTokens->outColor && _isMonochrome) { + return TrMayaTokens->outColorR; + } return usdPortName; } diff --git a/lib/usd/translators/shading/mtlxImageReader.cpp b/lib/usd/translators/shading/mtlxImageReader.cpp index a7f0edd7f9..8da4b1c4f4 100644 --- a/lib/usd/translators/shading/mtlxImageReader.cpp +++ b/lib/usd/translators/shading/mtlxImageReader.cpp @@ -66,7 +66,7 @@ class MtlxUsd_ImageReader : public MtlxUsd_BaseReader void PostConnectSubtree(UsdMayaPrimReaderContext* context) override; private: - TfToken _shaderID; + bool _isMonochrome = false; }; PXRUSDMAYA_REGISTER_SHADER_READER(ND_image_float, MtlxUsd_ImageReader) @@ -90,6 +90,9 @@ bool MtlxUsd_ImageReader::Read(UsdMayaPrimReaderContext& context) return false; } + const auto output = shaderSchema.GetOutput(TrMtlxTokens->out); + _isMonochrome = output.GetTypeName() == SdfValueTypeNames->Float; + // It is possible the file node already exists if we encountered a post-processor: MObject mayaObject = context.GetMayaNode(prim.GetPath(), false); @@ -157,7 +160,7 @@ TfToken MtlxUsd_ImageReader::GetMayaNameForUsdAttrName(const TfToken& usdAttrNam std::tie(usdOutputName, attrType) = UsdShadeUtils::GetBaseNameAndType(usdAttrName); if (attrType == UsdShadeAttributeType::Output && usdOutputName == TrMtlxTokens->out) { - if (_shaderID == TrMtlxTokens->ND_image_float) { + if (_isMonochrome) { return TrMayaTokens->outColorR; } diff --git a/lib/usd/translators/shading/mtlxOpenPBRSurfaceReader.cpp b/lib/usd/translators/shading/mtlxOpenPBRSurfaceReader.cpp new file mode 100644 index 0000000000..fed4a57cbf --- /dev/null +++ b/lib/usd/translators/shading/mtlxOpenPBRSurfaceReader.cpp @@ -0,0 +1,98 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// +#include "mtlxTranslationTableReader.h" +#include "shadingTokens.h" + +#include +#include + +#include + +#include + +PXR_NAMESPACE_OPEN_SCOPE + +namespace { +// Mapping from Maya to MaterialX: +using TokenHashMap = std::unordered_map; +TokenHashMap mtlxToMaya { + { TrMtlxOpenPBRTokens->base_weight, TrMayaOpenPBRTokens->baseWeight }, + { TrMtlxOpenPBRTokens->base_color, TrMayaOpenPBRTokens->baseColor }, + { TrMtlxOpenPBRTokens->base_diffuse_roughness, TrMayaOpenPBRTokens->baseDiffuseRoughness }, + { TrMtlxOpenPBRTokens->base_metalness, TrMayaOpenPBRTokens->baseMetalness }, + { TrMtlxOpenPBRTokens->specular_weight, TrMayaOpenPBRTokens->specularWeight }, + { TrMtlxOpenPBRTokens->specular_color, TrMayaOpenPBRTokens->specularColor }, + { TrMtlxOpenPBRTokens->specular_roughness, TrMayaOpenPBRTokens->specularRoughness }, + { TrMtlxOpenPBRTokens->specular_ior, TrMayaOpenPBRTokens->specularIOR }, + { TrMtlxOpenPBRTokens->specular_roughness_anisotropy, + TrMayaOpenPBRTokens->specularRoughnessAnisotropy }, + { TrMtlxOpenPBRTokens->transmission_weight, TrMayaOpenPBRTokens->transmissionWeight }, + { TrMtlxOpenPBRTokens->transmission_color, TrMayaOpenPBRTokens->transmissionColor }, + { TrMtlxOpenPBRTokens->transmission_depth, TrMayaOpenPBRTokens->transmissionDepth }, + { TrMtlxOpenPBRTokens->transmission_scatter, TrMayaOpenPBRTokens->transmissionScatter }, + { TrMtlxOpenPBRTokens->transmission_scatter_anisotropy, + TrMayaOpenPBRTokens->transmissionScatterAnisotropy }, + { TrMtlxOpenPBRTokens->transmission_dispersion_scale, + TrMayaOpenPBRTokens->transmissionDispersionScale }, + { TrMtlxOpenPBRTokens->transmission_dispersion_abbe_number, + TrMayaOpenPBRTokens->transmissionDispersionAbbeNumber }, + { TrMtlxOpenPBRTokens->subsurface_weight, TrMayaOpenPBRTokens->subsurfaceWeight }, + { TrMtlxOpenPBRTokens->subsurface_color, TrMayaOpenPBRTokens->subsurfaceColor }, + { TrMtlxOpenPBRTokens->subsurface_radius, TrMayaOpenPBRTokens->subsurfaceRadius }, + { TrMtlxOpenPBRTokens->subsurface_radius_scale, TrMayaOpenPBRTokens->subsurfaceRadiusScale }, + { TrMtlxOpenPBRTokens->subsurface_scatter_anisotropy, + TrMayaOpenPBRTokens->subsurfaceScatterAnisotropy }, + { TrMtlxOpenPBRTokens->fuzz_weight, TrMayaOpenPBRTokens->fuzzWeight }, + { TrMtlxOpenPBRTokens->fuzz_color, TrMayaOpenPBRTokens->fuzzColor }, + { TrMtlxOpenPBRTokens->fuzz_roughness, TrMayaOpenPBRTokens->fuzzRoughness }, + { TrMtlxOpenPBRTokens->coat_weight, TrMayaOpenPBRTokens->coatWeight }, + { TrMtlxOpenPBRTokens->coat_color, TrMayaOpenPBRTokens->coatColor }, + { TrMtlxOpenPBRTokens->coat_roughness, TrMayaOpenPBRTokens->coatRoughness }, + { TrMtlxOpenPBRTokens->coat_roughness_anisotropy, + TrMayaOpenPBRTokens->coatRoughnessAnisotropy }, + { TrMtlxOpenPBRTokens->coat_ior, TrMayaOpenPBRTokens->coatIOR }, + { TrMtlxOpenPBRTokens->coat_darkening, TrMayaOpenPBRTokens->coatDarkening }, + { TrMtlxOpenPBRTokens->thin_film_weight, TrMayaOpenPBRTokens->thinFilmWeight }, + { TrMtlxOpenPBRTokens->thin_film_thickness, TrMayaOpenPBRTokens->thinFilmThickness }, + { TrMtlxOpenPBRTokens->thin_film_ior, TrMayaOpenPBRTokens->thinFilmIOR }, + { TrMtlxOpenPBRTokens->emission_luminance, TrMayaOpenPBRTokens->emissionLuminance }, + { TrMtlxOpenPBRTokens->emission_color, TrMayaOpenPBRTokens->emissionColor }, + { TrMtlxOpenPBRTokens->geometry_opacity, TrMayaOpenPBRTokens->geometryOpacity }, + { TrMtlxOpenPBRTokens->geometry_thin_walled, TrMayaOpenPBRTokens->geometryThinWalled }, + { TrMtlxOpenPBRTokens->geometry_normal, TrMayaOpenPBRTokens->normalCamera }, + { TrMtlxOpenPBRTokens->geometry_coat_normal, TrMayaOpenPBRTokens->geometryCoatNormal }, + { TrMtlxOpenPBRTokens->geometry_tangent, TrMayaOpenPBRTokens->tangentUCamera }, + { TrMtlxOpenPBRTokens->geometry_coat_tangent, TrMayaOpenPBRTokens->geometryCoatTangent } +}; + +} // namespace + +class MtlxUsd_OpenPBRSurfaceReader : public MtlxUsd_TranslationTableReader +{ +public: + MtlxUsd_OpenPBRSurfaceReader(const UsdMayaPrimReaderArgs& readArgs) + : MtlxUsd_TranslationTableReader(readArgs) + { + } + + const TfToken& getMaterialName() const override { return TrMayaOpenPBRTokens->openPBRSurface; } + const TfToken& getOutputName() const override { return TrMayaTokens->outColor; } + const TranslationTable& getTranslationTable() const override { return mtlxToMaya; } +}; + +PXRUSDMAYA_REGISTER_SHADER_READER(ND_open_pbr_surface_surfaceshader, MtlxUsd_OpenPBRSurfaceReader); + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/mtlxOpenPBRSurfaceWriter.cpp b/lib/usd/translators/shading/mtlxOpenPBRSurfaceWriter.cpp new file mode 100644 index 0000000000..bb41646b74 --- /dev/null +++ b/lib/usd/translators/shading/mtlxOpenPBRSurfaceWriter.cpp @@ -0,0 +1,102 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// + +#include "mtlxTranslationTableWriter.h" +#include "shadingTokens.h" + +#include +#include + +#include + +PXR_NAMESPACE_OPEN_SCOPE + +namespace { +MtlxUsd_TranslationTableWriter::TranslationTable mayaToMaterialX { + { TrMayaOpenPBRTokens->baseWeight, TrMtlxOpenPBRTokens->base_weight }, + { TrMayaOpenPBRTokens->baseColor, TrMtlxOpenPBRTokens->base_color }, + { TrMayaOpenPBRTokens->baseDiffuseRoughness, TrMtlxOpenPBRTokens->base_diffuse_roughness }, + { TrMayaOpenPBRTokens->baseMetalness, TrMtlxOpenPBRTokens->base_metalness }, + { TrMayaOpenPBRTokens->specularWeight, TrMtlxOpenPBRTokens->specular_weight }, + { TrMayaOpenPBRTokens->specularColor, TrMtlxOpenPBRTokens->specular_color }, + { TrMayaOpenPBRTokens->specularRoughness, TrMtlxOpenPBRTokens->specular_roughness }, + { TrMayaOpenPBRTokens->specularIOR, TrMtlxOpenPBRTokens->specular_ior }, + { TrMayaOpenPBRTokens->specularRoughnessAnisotropy, + TrMtlxOpenPBRTokens->specular_roughness_anisotropy }, + { TrMayaOpenPBRTokens->transmissionWeight, TrMtlxOpenPBRTokens->transmission_weight }, + { TrMayaOpenPBRTokens->transmissionColor, TrMtlxOpenPBRTokens->transmission_color }, + { TrMayaOpenPBRTokens->transmissionDepth, TrMtlxOpenPBRTokens->transmission_depth }, + { TrMayaOpenPBRTokens->transmissionScatter, TrMtlxOpenPBRTokens->transmission_scatter }, + { TrMayaOpenPBRTokens->transmissionScatterAnisotropy, + TrMtlxOpenPBRTokens->transmission_scatter_anisotropy }, + { TrMayaOpenPBRTokens->transmissionDispersionScale, + TrMtlxOpenPBRTokens->transmission_dispersion_scale }, + { TrMayaOpenPBRTokens->transmissionDispersionAbbeNumber, + TrMtlxOpenPBRTokens->transmission_dispersion_abbe_number }, + { TrMayaOpenPBRTokens->subsurfaceWeight, TrMtlxOpenPBRTokens->subsurface_weight }, + { TrMayaOpenPBRTokens->subsurfaceColor, TrMtlxOpenPBRTokens->subsurface_color }, + { TrMayaOpenPBRTokens->subsurfaceRadius, TrMtlxOpenPBRTokens->subsurface_radius }, + { TrMayaOpenPBRTokens->subsurfaceRadiusScale, TrMtlxOpenPBRTokens->subsurface_radius_scale }, + { TrMayaOpenPBRTokens->subsurfaceScatterAnisotropy, + TrMtlxOpenPBRTokens->subsurface_scatter_anisotropy }, + { TrMayaOpenPBRTokens->fuzzWeight, TrMtlxOpenPBRTokens->fuzz_weight }, + { TrMayaOpenPBRTokens->fuzzColor, TrMtlxOpenPBRTokens->fuzz_color }, + { TrMayaOpenPBRTokens->fuzzRoughness, TrMtlxOpenPBRTokens->fuzz_roughness }, + { TrMayaOpenPBRTokens->coatWeight, TrMtlxOpenPBRTokens->coat_weight }, + { TrMayaOpenPBRTokens->coatColor, TrMtlxOpenPBRTokens->coat_color }, + { TrMayaOpenPBRTokens->coatRoughness, TrMtlxOpenPBRTokens->coat_roughness }, + { TrMayaOpenPBRTokens->coatRoughnessAnisotropy, + TrMtlxOpenPBRTokens->coat_roughness_anisotropy }, + { TrMayaOpenPBRTokens->coatIOR, TrMtlxOpenPBRTokens->coat_ior }, + { TrMayaOpenPBRTokens->coatDarkening, TrMtlxOpenPBRTokens->coat_darkening }, + { TrMayaOpenPBRTokens->thinFilmWeight, TrMtlxOpenPBRTokens->thin_film_weight }, + { TrMayaOpenPBRTokens->thinFilmThickness, TrMtlxOpenPBRTokens->thin_film_thickness }, + { TrMayaOpenPBRTokens->thinFilmIOR, TrMtlxOpenPBRTokens->thin_film_ior }, + { TrMayaOpenPBRTokens->emissionLuminance, TrMtlxOpenPBRTokens->emission_luminance }, + { TrMayaOpenPBRTokens->emissionColor, TrMtlxOpenPBRTokens->emission_color }, + { TrMayaOpenPBRTokens->geometryOpacity, TrMtlxOpenPBRTokens->geometry_opacity }, + { TrMayaOpenPBRTokens->geometryThinWalled, TrMtlxOpenPBRTokens->geometry_thin_walled }, + { TrMayaOpenPBRTokens->normalCamera, TrMtlxOpenPBRTokens->geometry_normal }, + { TrMayaOpenPBRTokens->geometryCoatNormal, TrMtlxOpenPBRTokens->geometry_coat_normal }, + { TrMayaOpenPBRTokens->tangentUCamera, TrMtlxOpenPBRTokens->geometry_tangent }, + { TrMayaOpenPBRTokens->geometryCoatTangent, TrMtlxOpenPBRTokens->geometry_coat_tangent } +}; + +MtlxUsd_TranslationTableWriter::AlwaysAuthored mayaAlwaysAuthored {}; + +} // namespace +// This is basically UsdMayaSymmetricShaderWriter with a table for attribute renaming: +class MaterialXTranslators_OpenPBRSurfaceWriter : public MtlxUsd_TranslationTableWriter +{ +public: + MaterialXTranslators_OpenPBRSurfaceWriter( + const MFnDependencyNode& depNodeFn, + const SdfPath& usdPath, + UsdMayaWriteJobContext& jobCtx) + : MtlxUsd_TranslationTableWriter( + depNodeFn, + usdPath, + jobCtx, + TrMtlxOpenPBRTokens->ND_open_pbr_surface_surfaceshader, + mayaToMaterialX, + mayaAlwaysAuthored) + { + } +}; + +PXRUSDMAYA_REGISTER_SHADER_WRITER(openPBRSurface, MaterialXTranslators_OpenPBRSurfaceWriter); + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/mtlxStandardSurfaceReader.cpp b/lib/usd/translators/shading/mtlxStandardSurfaceReader.cpp index 91de8d239e..885b9b9178 100644 --- a/lib/usd/translators/shading/mtlxStandardSurfaceReader.cpp +++ b/lib/usd/translators/shading/mtlxStandardSurfaceReader.cpp @@ -13,55 +13,18 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "mtlxBaseReader.h" +#include "mtlxTranslationTableReader.h" #include "shadingTokens.h" #include #include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include #include PXR_NAMESPACE_OPEN_SCOPE -class MtlxUsd_StandardSurfaceReader : public MtlxUsd_BaseReader -{ -public: - MtlxUsd_StandardSurfaceReader(const UsdMayaPrimReaderArgs&); - - bool Read(UsdMayaPrimReaderContext& context) override; - - TfToken GetMayaNameForUsdAttrName(const TfToken& usdAttrName) const override; -}; - -PXRUSDMAYA_REGISTER_SHADER_READER(ND_standard_surface_surfaceshader, MtlxUsd_StandardSurfaceReader); - -MtlxUsd_StandardSurfaceReader::MtlxUsd_StandardSurfaceReader(const UsdMayaPrimReaderArgs& readArgs) - : MtlxUsd_BaseReader(readArgs) -{ -} - namespace { // Mapping from Maya to MaterialX: using TokenHashMap = std::unordered_map; @@ -110,103 +73,21 @@ TokenHashMap mtlxToMaya { { TrMtlxTokens->tangent, TrMayaTokens->tangentUCamera } }; -// Read a value that was set on a UsdShadeMaterial instead of the UsdShadeShader. This is something -// we see with materials imported by UsdMtlx: -bool _ReadFromMaterial(const UsdShadeInput& input, VtValue& inputVal) -{ - UsdShadeConnectableAPI source; - TfToken sourceInputName; - UsdShadeAttributeType sourceType; - if (!UsdShadeConnectableAPI::GetConnectedSource( - input, &source, &sourceInputName, &sourceType)) { - return false; - } - - UsdShadeMaterial sourceMaterial(source.GetPrim()); - if (!sourceMaterial) { - return false; - } - - const UsdShadeInput& materialInput = sourceMaterial.GetInput(sourceInputName); - if (!materialInput) { - return false; - } - - return materialInput.Get(&inputVal); -} - } // namespace -/* virtual */ -bool MtlxUsd_StandardSurfaceReader::Read(UsdMayaPrimReaderContext& context) -{ - const UsdPrim& prim = _GetArgs().GetUsdPrim(); - UsdShadeShader shaderSchema = UsdShadeShader(prim); - if (!shaderSchema) { - return false; - } - - MStatus status; - MObject mayaObject; - MFnDependencyNode depFn; - if (!(UsdMayaTranslatorUtil::CreateShaderNode( - MString(prim.GetName().GetText()), - TrMayaTokens->standardSurface.GetText(), - UsdMayaShadingNodeType::Shader, - &status, - &mayaObject) - && depFn.setObject(mayaObject))) { - TF_RUNTIME_ERROR( - "Could not create node of type %s for shader '%s'.\n", - TrMayaTokens->standardSurface.GetText(), - prim.GetPath().GetText()); - return false; - } - - context.RegisterNewMayaNode(prim.GetPath().GetString(), mayaObject); - RegisterConstructorNodes(context, mayaObject); - - for (const UsdShadeInput& input : shaderSchema.GetInputs()) { - TfToken baseName = GetMayaNameForUsdAttrName(input.GetFullName()); - if (baseName.IsEmpty()) { - continue; - } - MPlug mayaAttr = depFn.findPlug(baseName.GetText(), true, &status); - if (status != MS::kSuccess) { - continue; - } - VtValue inputVal; - if (!input.GetAttr().Get(&inputVal) && !_ReadFromMaterial(input, inputVal)) { - continue; - } - - if (UsdMayaReadUtil::SetMayaAttr( - mayaAttr, - inputVal, - /* unlinearizeColors = */ false)) { - UsdMayaReadUtil::SetMayaAttrKeyableState(mayaAttr, input.GetAttr().GetVariability()); - } +class MtlxUsd_StandardSurfaceReader : public MtlxUsd_TranslationTableReader +{ +public: + MtlxUsd_StandardSurfaceReader(const UsdMayaPrimReaderArgs& readArgs) + : MtlxUsd_TranslationTableReader(readArgs) + { } - return true; -} - -/* virtual */ -TfToken MtlxUsd_StandardSurfaceReader::GetMayaNameForUsdAttrName(const TfToken& usdAttrName) const -{ - TfToken baseName; - UsdShadeAttributeType attrType; - std::tie(baseName, attrType) = UsdShadeUtils::GetBaseNameAndType(usdAttrName); + const TfToken& getMaterialName() const override { return TrMayaTokens->standardSurface; } + const TfToken& getOutputName() const override { return TrMayaTokens->outColor; } + const TranslationTable& getTranslationTable() const override { return mtlxToMaya; } +}; - if (attrType == UsdShadeAttributeType::Input) { - auto it = mtlxToMaya.find(baseName); - if (it != mtlxToMaya.end()) { - return it->second; - } - } else if (attrType == UsdShadeAttributeType::Output && baseName == UsdShadeTokens->surface) { - return TrMayaTokens->outColor; - } - return TfToken(); -} +PXRUSDMAYA_REGISTER_SHADER_READER(ND_standard_surface_surfaceshader, MtlxUsd_StandardSurfaceReader); PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/mtlxStandardSurfaceWriter.cpp b/lib/usd/translators/shading/mtlxStandardSurfaceWriter.cpp index 43379782b2..4f96e50d6f 100644 --- a/lib/usd/translators/shading/mtlxStandardSurfaceWriter.cpp +++ b/lib/usd/translators/shading/mtlxStandardSurfaceWriter.cpp @@ -14,36 +14,18 @@ // limitations under the License. // -#include "mtlxBaseWriter.h" +#include "mtlxTranslationTableWriter.h" #include "shadingTokens.h" -#include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include - -#include - PXR_NAMESPACE_OPEN_SCOPE namespace { -// Mapping from Maya to MaterialX: -using TokenHashMap = std::unordered_map; -TokenHashMap mayaToMaterialX { +MtlxUsd_TranslationTableWriter::TranslationTable mayaToMaterialX { { TrMayaTokens->base, TrMtlxTokens->base }, { TrMayaTokens->baseColor, TrMtlxTokens->base_color }, { TrMayaTokens->diffuseRoughness, TrMtlxTokens->diffuse_roughness }, @@ -88,211 +70,33 @@ TokenHashMap mayaToMaterialX { { TrMayaTokens->tangentUCamera, TrMtlxTokens->tangent } }; +MtlxUsd_TranslationTableWriter::AlwaysAuthored mayaAlwaysAuthored { + TrMtlxTokens->base, + TrMtlxTokens->base_color, + TrMtlxTokens->specular, + TrMtlxTokens->specular_roughness +}; + } // namespace // This is basically UsdMayaSymmetricShaderWriter with a table for attribute renaming: -class MaterialXTranslators_StandardSurfaceWriter : public MtlxUsd_BaseWriter +class MaterialXTranslators_StandardSurfaceWriter : public MtlxUsd_TranslationTableWriter { public: MaterialXTranslators_StandardSurfaceWriter( const MFnDependencyNode& depNodeFn, const SdfPath& usdPath, - UsdMayaWriteJobContext& jobCtx); - - void Write(const UsdTimeCode& usdTime) override; - - UsdAttribute - GetShadingAttributeForMayaAttrName(const TfToken&, const SdfValueTypeName&) override; - -private: - std::unordered_map _inputNameAttrMap; + UsdMayaWriteJobContext& jobCtx) + : MtlxUsd_TranslationTableWriter( + depNodeFn, + usdPath, + jobCtx, + TrMtlxTokens->ND_standard_surface_surfaceshader, + mayaToMaterialX, + mayaAlwaysAuthored) + { + } }; PXRUSDMAYA_REGISTER_SHADER_WRITER(standardSurface, MaterialXTranslators_StandardSurfaceWriter); -MaterialXTranslators_StandardSurfaceWriter::MaterialXTranslators_StandardSurfaceWriter( - const MFnDependencyNode& depNodeFn, - const SdfPath& usdPath, - UsdMayaWriteJobContext& jobCtx) - : MtlxUsd_BaseWriter(depNodeFn, usdPath, jobCtx) -{ - UsdShadeShader shaderSchema = UsdShadeShader::Define(GetUsdStage(), GetUsdPath()); - if (!TF_VERIFY( - shaderSchema, - "Could not define UsdShadeShader at path '%s'\n", - GetUsdPath().GetText())) { - return; - } - - _usdPrim = shaderSchema.GetPrim(); - if (!TF_VERIFY( - _usdPrim, - "Could not get UsdPrim for UsdShadeShader at path '%s'\n", - shaderSchema.GetPath().GetText())) { - return; - } - - shaderSchema.CreateIdAttr(VtValue(TrMtlxTokens->ND_standard_surface_surfaceshader)); - - UsdShadeNodeGraph nodegraphSchema; - - for (unsigned int i = 0u; i < depNodeFn.attributeCount(); ++i) { - const MObject attrObj = depNodeFn.reorderedAttribute(i); - const MFnAttribute attrFn(attrObj); - - const TfToken mayaAttrName = TfToken(attrFn.name().asChar()); - TokenHashMap::const_iterator renaming = mayaToMaterialX.find(mayaAttrName); - - if (renaming == mayaToMaterialX.cend()) { - continue; - } - - MPlug attrPlug = depNodeFn.findPlug(attrObj, true); - - const TfToken usdAttrName = renaming->second; - - // Keep our authoring sparse by ignoring attributes with no values set and no connections. - // Some attributes with an history of default value updates will be written always. - if (!(UsdMayaUtil::IsAuthored(attrPlug) || usdAttrName == TrMtlxTokens->base - || usdAttrName == TrMtlxTokens->base_color || usdAttrName == TrMtlxTokens->specular - || usdAttrName == TrMtlxTokens->specular_roughness) - && !attrPlug.isConnected() && !attrPlug.numConnectedChildren()) { - continue; - } - - const SdfValueTypeName valueTypeName = MayaUsd::Converter::getUsdTypeName(attrPlug); - if (!valueTypeName) { - // Unsupported Maya attribute type (e.g. "message" attributes). - continue; - } - - UsdShadeInput input = shaderSchema.CreateInput(usdAttrName, valueTypeName); - if (!input) { - continue; - } - - if (attrPlug.isElement()) { - UsdMayaRoundTripUtil::MarkAttributeAsArray(input.GetAttr(), 0u); - } - - // Add this input to the name/attrPlug map. We'll iterate through - // these entries during Write() to set their values. - _inputNameAttrMap.insert(std::make_pair(usdAttrName, attrPlug)); - - // All connections go directly to the node graph: - if (attrPlug.isConnected() || attrPlug.numConnectedChildren()) { - if (!nodegraphSchema) { - nodegraphSchema = UsdShadeNodeGraph(GetNodeGraph()); - if (!TF_VERIFY( - nodegraphSchema, - "Could not define UsdShadeNodeGraph at path '%s'\n", - GetUsdPath().GetText())) { - return; - } - } - UsdShadeOutput ngOutput = nodegraphSchema.CreateOutput(mayaAttrName, valueTypeName); - input.ConnectToSource(ngOutput); - } - } - - // Surface Output - shaderSchema.CreateOutput( - _GetOutputName(TrMtlxTokens->ND_standard_surface_surfaceshader), SdfValueTypeNames->Token); -} - -/* override */ -void MaterialXTranslators_StandardSurfaceWriter::Write(const UsdTimeCode& usdTime) -{ - UsdMayaShaderWriter::Write(usdTime); - - UsdShadeShader shaderSchema(_usdPrim); - if (!TF_VERIFY( - shaderSchema, - "Could not get UsdShadeShader schema for UsdPrim at path '%s'\n", - _usdPrim.GetPath().GetText())) { - return; - } - - for (const auto& inputAttrPair : _inputNameAttrMap) { - const TfToken& inputName = inputAttrPair.first; - const MPlug& attrPlug = inputAttrPair.second; - - UsdShadeInput input = shaderSchema.GetInput(inputName); - if (!input || attrPlug.isConnected() || attrPlug.numConnectedChildren()) { - continue; - } - - // Color values are all linear on the shader, so do not re-linearize - // them. - VtValue value = UsdMayaWriteUtil::GetVtValue( - attrPlug, - MayaUsd::Converter::getUsdTypeName(attrPlug), - /* linearizeColors = */ false); - - input.Set(value, usdTime); - } -} - -/* override */ -UsdAttribute MaterialXTranslators_StandardSurfaceWriter::GetShadingAttributeForMayaAttrName( - const TfToken& mayaAttrName, - const SdfValueTypeName&) -{ - if (mayaAttrName == TrMayaTokens->outColor) { - UsdShadeShader surfaceSchema(_usdPrim); - if (!surfaceSchema) { - return UsdAttribute(); - } - - // Surface output is on the shader itself - return surfaceSchema.GetOutput( - _GetOutputName(TrMtlxTokens->ND_standard_surface_surfaceshader)); - } - - // All other are outputs of the NodeGraph: - UsdShadeNodeGraph nodegraphSchema(GetNodeGraph()); - if (!nodegraphSchema) { - return UsdAttribute(); - } - - if (mayaAttrName == TrMayaTokens->normalCamera || mayaAttrName == TrMayaTokens->coatNormal) { - // Add the proper nodes for normal mapping: - return AddNormalMapping(nodegraphSchema.GetOutput(mayaAttrName)); - } - - // And they use the camelCase Maya name directly: - UsdShadeOutput output = nodegraphSchema.GetOutput(mayaAttrName); - if (output) { - return output; - } - - // We did not find the attribute directly, but we might be dealing with a subcomponent - // connection on a compound attribute: - MStatus status; - const MFnDependencyNode depNodeFn(GetMayaObject(), &status); - - MPlug childPlug = depNodeFn.findPlug(mayaAttrName.GetText(), &status); - if (!status || childPlug.isNull() || !childPlug.isChild()) { - return {}; - } - - MPlug parentPlug = childPlug.parent(); - unsigned int childIndex = 0; - const unsigned int numChildren = parentPlug.numChildren(); - for (; childIndex < numChildren; ++childIndex) { - if (childPlug.attribute() == parentPlug.child(childIndex).attribute()) { - break; - } - } - - // We need the long name of the attribute: - const TfToken parentAttrName( - parentPlug.partialName(false, false, false, false, false, true).asChar()); - output = nodegraphSchema.GetOutput(parentAttrName); - if (output) { - return AddConstructor(output, static_cast(childIndex), parentPlug); - } - - return {}; -} - PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/mtlxTranslationTableReader.cpp b/lib/usd/translators/shading/mtlxTranslationTableReader.cpp new file mode 100644 index 0000000000..7f12469c27 --- /dev/null +++ b/lib/usd/translators/shading/mtlxTranslationTableReader.cpp @@ -0,0 +1,154 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// +#include "mtlxTranslationTableReader.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +PXR_NAMESPACE_OPEN_SCOPE + +MtlxUsd_TranslationTableReader::MtlxUsd_TranslationTableReader( + const UsdMayaPrimReaderArgs& readArgs) + : MtlxUsd_BaseReader(readArgs) +{ +} + +namespace { + +// Read a value that was set on a UsdShadeMaterial instead of the UsdShadeShader. This is something +// we see with materials imported by UsdMtlx: +bool _ReadFromMaterial(const UsdShadeInput& input, VtValue& inputVal) +{ + UsdShadeConnectableAPI source; + TfToken sourceInputName; + UsdShadeAttributeType sourceType; + if (!UsdShadeConnectableAPI::GetConnectedSource( + input, &source, &sourceInputName, &sourceType)) { + return false; + } + + UsdShadeMaterial sourceMaterial(source.GetPrim()); + if (!sourceMaterial) { + return false; + } + + const UsdShadeInput& materialInput = sourceMaterial.GetInput(sourceInputName); + if (!materialInput) { + return false; + } + + return materialInput.Get(&inputVal); +} + +} // namespace +/* virtual */ +bool MtlxUsd_TranslationTableReader::Read(UsdMayaPrimReaderContext& context) +{ + const UsdPrim& prim = _GetArgs().GetUsdPrim(); + UsdShadeShader shaderSchema = UsdShadeShader(prim); + if (!shaderSchema) { + return false; + } + + MStatus status; + MObject mayaObject; + MFnDependencyNode depFn; + if (!(UsdMayaTranslatorUtil::CreateShaderNode( + MString(prim.GetName().GetText()), + getMaterialName().GetText(), + UsdMayaShadingNodeType::Shader, + &status, + &mayaObject) + && depFn.setObject(mayaObject))) { + TF_RUNTIME_ERROR( + "Could not create node of type %s for shader '%s'.\n", + getMaterialName().GetText(), + prim.GetPath().GetText()); + return false; + } + + context.RegisterNewMayaNode(prim.GetPath().GetString(), mayaObject); + RegisterConstructorNodes(context, mayaObject); + + for (const UsdShadeInput& input : shaderSchema.GetInputs()) { + TfToken baseName = GetMayaNameForUsdAttrName(input.GetFullName()); + if (baseName.IsEmpty()) { + continue; + } + MPlug mayaAttr = depFn.findPlug(baseName.GetText(), true, &status); + if (status != MS::kSuccess) { + continue; + } + + VtValue inputVal; + if (!input.GetAttr().Get(&inputVal) && !_ReadFromMaterial(input, inputVal)) { + continue; + } + + if (UsdMayaReadUtil::SetMayaAttr( + mayaAttr, + inputVal, + /* unlinearizeColors = */ false)) { + UsdMayaReadUtil::SetMayaAttrKeyableState(mayaAttr, input.GetAttr().GetVariability()); + } + } + + return true; +} + +/* virtual */ +TfToken MtlxUsd_TranslationTableReader::GetMayaNameForUsdAttrName(const TfToken& usdAttrName) const +{ + TfToken baseName; + UsdShadeAttributeType attrType; + std::tie(baseName, attrType) = UsdShadeUtils::GetBaseNameAndType(usdAttrName); + + if (attrType == UsdShadeAttributeType::Input) { + auto it = getTranslationTable().find(baseName); + if (it != getTranslationTable().end()) { + return it->second; + } + } else if (attrType == UsdShadeAttributeType::Output && baseName == UsdShadeTokens->surface) { + return getOutputName(); + } + return TfToken(); +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/mtlxTranslationTableReader.h b/lib/usd/translators/shading/mtlxTranslationTableReader.h new file mode 100644 index 0000000000..0d7fb0095c --- /dev/null +++ b/lib/usd/translators/shading/mtlxTranslationTableReader.h @@ -0,0 +1,46 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// +#include "mtlxBaseReader.h" + +#include +#include + +#include +#include + +#include + +PXR_NAMESPACE_OPEN_SCOPE + +// A symmetric reader that takes a translation table. Useful when there +// is a 1-to-1 mapping between camelCased and snake_cased names. +class MtlxUsd_TranslationTableReader : public MtlxUsd_BaseReader +{ +public: + MtlxUsd_TranslationTableReader(const UsdMayaPrimReaderArgs&); + + using TranslationTable = std::unordered_map; + + virtual const TfToken& getMaterialName() const = 0; + virtual const TfToken& getOutputName() const = 0; + virtual const TranslationTable& getTranslationTable() const = 0; + + bool Read(UsdMayaPrimReaderContext& context) override; + + TfToken GetMayaNameForUsdAttrName(const TfToken& usdAttrName) const override; +}; + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/mtlxTranslationTableWriter.cpp b/lib/usd/translators/shading/mtlxTranslationTableWriter.cpp new file mode 100644 index 0000000000..dcecd525b5 --- /dev/null +++ b/lib/usd/translators/shading/mtlxTranslationTableWriter.cpp @@ -0,0 +1,232 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// + +#include "mtlxTranslationTableWriter.h" + +#include "shadingTokens.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include + +PXR_NAMESPACE_OPEN_SCOPE + +MtlxUsd_TranslationTableWriter::MtlxUsd_TranslationTableWriter( + const MFnDependencyNode& depNodeFn, + const SdfPath& usdPath, + UsdMayaWriteJobContext& jobCtx, + TfToken materialName, + const TranslationTable& translationTable, + const AlwaysAuthored& alwaysAuthored) + : MtlxUsd_BaseWriter(depNodeFn, usdPath, jobCtx) + , _materialName(materialName) + , _translationTable(translationTable) + , _alwaysAuthored(alwaysAuthored) +{ + UsdShadeShader shaderSchema = UsdShadeShader::Define(GetUsdStage(), GetUsdPath()); + if (!TF_VERIFY( + shaderSchema, + "Could not define UsdShadeShader at path '%s'\n", + GetUsdPath().GetText())) { + return; + } + + _usdPrim = shaderSchema.GetPrim(); + if (!TF_VERIFY( + _usdPrim, + "Could not get UsdPrim for UsdShadeShader at path '%s'\n", + shaderSchema.GetPath().GetText())) { + return; + } + + shaderSchema.CreateIdAttr(VtValue(_materialName)); + + UsdShadeNodeGraph nodegraphSchema; + + for (unsigned int i = 0u; i < depNodeFn.attributeCount(); ++i) { + const MObject attrObj = depNodeFn.reorderedAttribute(i); + const MFnAttribute attrFn(attrObj); + + const TfToken mayaAttrName = TfToken(attrFn.name().asChar()); + TranslationTable::const_iterator renaming = _translationTable.find(mayaAttrName); + + if (renaming == _translationTable.cend()) { + continue; + } + + MPlug attrPlug = depNodeFn.findPlug(attrObj, true); + + const TfToken usdAttrName = renaming->second; + + // Keep our authoring sparse by ignoring attributes with no values set and no connections. + // Some attributes with an history of default value updates will be written always. + if (!(UsdMayaUtil::IsAuthored(attrPlug) || _alwaysAuthored.count(usdAttrName)) + && !attrPlug.isConnected() && !attrPlug.numConnectedChildren()) { + continue; + } + + const SdfValueTypeName valueTypeName = MayaUsd::Converter::getUsdTypeName(attrPlug); + if (!valueTypeName) { + // Unsupported Maya attribute type (e.g. "message" attributes). + continue; + } + + UsdShadeInput input = shaderSchema.CreateInput(usdAttrName, valueTypeName); + if (!input) { + continue; + } + + if (attrPlug.isElement()) { + UsdMayaRoundTripUtil::MarkAttributeAsArray(input.GetAttr(), 0u); + } + + // Add this input to the name/attrPlug map. We'll iterate through + // these entries during Write() to set their values. + _inputNameAttrMap.insert(std::make_pair(usdAttrName, attrPlug)); + + // All connections go directly to the node graph: + if (attrPlug.isConnected() || attrPlug.numConnectedChildren()) { + if (!nodegraphSchema) { + nodegraphSchema = UsdShadeNodeGraph(GetNodeGraph()); + if (!TF_VERIFY( + nodegraphSchema, + "Could not define UsdShadeNodeGraph at path '%s'\n", + GetUsdPath().GetText())) { + return; + } + } + UsdShadeOutput ngOutput = nodegraphSchema.CreateOutput(mayaAttrName, valueTypeName); + input.ConnectToSource(ngOutput); + } + } + + // Surface Output + shaderSchema.CreateOutput(_GetOutputName(_materialName), SdfValueTypeNames->Token); +} + +/* override */ +void MtlxUsd_TranslationTableWriter::Write(const UsdTimeCode& usdTime) +{ + UsdMayaShaderWriter::Write(usdTime); + + UsdShadeShader shaderSchema(_usdPrim); + if (!TF_VERIFY( + shaderSchema, + "Could not get UsdShadeShader schema for UsdPrim at path '%s'\n", + _usdPrim.GetPath().GetText())) { + return; + } + + for (const auto& inputAttrPair : _inputNameAttrMap) { + const TfToken& inputName = inputAttrPair.first; + const MPlug& attrPlug = inputAttrPair.second; + + UsdShadeInput input = shaderSchema.GetInput(inputName); + if (!input || attrPlug.isConnected() || attrPlug.numConnectedChildren()) { + continue; + } + + // Color values are all linear on the shader, so do not re-linearize + // them. + VtValue value = UsdMayaWriteUtil::GetVtValue( + attrPlug, + MayaUsd::Converter::getUsdTypeName(attrPlug), + /* linearizeColors = */ false); + + input.Set(value, usdTime); + } +} + +/* override */ +UsdAttribute MtlxUsd_TranslationTableWriter::GetShadingAttributeForMayaAttrName( + const TfToken& mayaAttrName, + const SdfValueTypeName&) +{ + if (mayaAttrName == TrMayaTokens->outColor) { + UsdShadeShader surfaceSchema(_usdPrim); + if (!surfaceSchema) { + return UsdAttribute(); + } + + // Surface output is on the shader itself + return surfaceSchema.GetOutput(_GetOutputName(_materialName)); + } + + // All other are outputs of the NodeGraph: + UsdShadeNodeGraph nodegraphSchema(GetNodeGraph()); + if (!nodegraphSchema) { + return UsdAttribute(); + } + + if (mayaAttrName == TrMayaTokens->normalCamera || mayaAttrName == TrMayaTokens->coatNormal) { + // Add the proper nodes for normal mapping: + return AddNormalMapping(nodegraphSchema.GetOutput(mayaAttrName)); + } + + // And they use the camelCase Maya name directly: + UsdShadeOutput output = nodegraphSchema.GetOutput(mayaAttrName); + if (output) { + return output; + } + + // We did not find the attribute directly, but we might be dealing with a subcomponent + // connection on a compound attribute: + MStatus status; + const MFnDependencyNode depNodeFn(GetMayaObject(), &status); + + MPlug childPlug = depNodeFn.findPlug(mayaAttrName.GetText(), &status); + if (!status || childPlug.isNull() || !childPlug.isChild()) { + return {}; + } + + MPlug parentPlug = childPlug.parent(); + unsigned int childIndex = 0; + const unsigned int numChildren = parentPlug.numChildren(); + for (; childIndex < numChildren; ++childIndex) { + if (childPlug.attribute() == parentPlug.child(childIndex).attribute()) { + break; + } + } + + // We need the long name of the attribute: + const TfToken parentAttrName( + parentPlug.partialName(false, false, false, false, false, true).asChar()); + output = nodegraphSchema.GetOutput(parentAttrName); + if (output) { + return AddConstructor(output, static_cast(childIndex), parentPlug); + } + + return {}; +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/mtlxTranslationTableWriter.h b/lib/usd/translators/shading/mtlxTranslationTableWriter.h new file mode 100644 index 0000000000..eba67c979a --- /dev/null +++ b/lib/usd/translators/shading/mtlxTranslationTableWriter.h @@ -0,0 +1,60 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// + +#include "mtlxBaseWriter.h" + +#include + +#include +#include +#include + +#include +#include + +#include +#include + +PXR_NAMESPACE_OPEN_SCOPE + +// This is basically UsdMayaSymmetricShaderWriter with a table for attribute renaming: +class MtlxUsd_TranslationTableWriter : public MtlxUsd_BaseWriter +{ +public: + using TranslationTable = std::unordered_map; + using AlwaysAuthored = std::unordered_set; + + MtlxUsd_TranslationTableWriter( + const MFnDependencyNode& depNodeFn, + const SdfPath& usdPath, + UsdMayaWriteJobContext& jobCtx, + TfToken materialName, + const TranslationTable& translationTable, + const AlwaysAuthored& alwaysAuthored); + + void Write(const UsdTimeCode& usdTime) override; + + UsdAttribute + GetShadingAttributeForMayaAttrName(const TfToken&, const SdfValueTypeName&) override; + +private: + std::unordered_map _inputNameAttrMap; + TfToken _materialName; + const TranslationTable& _translationTable; + const AlwaysAuthored& _alwaysAuthored; +}; + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/shadingTokens.cpp b/lib/usd/translators/shading/shadingTokens.cpp index ff5d6874ac..8014b504fc 100644 --- a/lib/usd/translators/shading/shadingTokens.cpp +++ b/lib/usd/translators/shading/shadingTokens.cpp @@ -24,10 +24,13 @@ TF_DEFINE_PUBLIC_TOKENS( TR_MAYA_MATERIALS TR_MAYA_NODES TR_MAYA_STANDARD_SURFACE TR_MAYA_FILE TR_MAYA_UV TR_MAYA_PRIMVAR); +TF_DEFINE_PUBLIC_TOKENS(TrMayaOpenPBRTokens, TR_MAYA_OPENPBR_SURFACE); + #ifdef WANT_MATERIALX_TRANSLATORS TF_DEFINE_PUBLIC_TOKENS( TrMtlxTokens, TR_MTLX_COMMON TR_MTLX_NODE_DEFS TR_MTLX_STANDARD_SURFACE TR_MTLX_IMAGE TR_MTLX_ATTRIBUTES); +TF_DEFINE_PUBLIC_TOKENS(TrMtlxOpenPBRTokens, TR_MTLX_OPENPBR_SURFACE); #endif PXR_NAMESPACE_CLOSE_SCOPE \ No newline at end of file diff --git a/lib/usd/translators/shading/shadingTokens.h b/lib/usd/translators/shading/shadingTokens.h index 2eefb15453..8f6961b0de 100644 --- a/lib/usd/translators/shading/shadingTokens.h +++ b/lib/usd/translators/shading/shadingTokens.h @@ -199,6 +199,55 @@ TF_DECLARE_PUBLIC_TOKENS( TR_MAYA_MATERIALS TR_MAYA_NODES TR_MAYA_STANDARD_SURFACE TR_MAYA_FILE TR_MAYA_UV TR_MAYA_PRIMVAR); +// clang-format off +#define TR_MAYA_OPENPBR_SURFACE \ + (openPBRSurface) \ + (baseWeight) \ + (baseColor) \ + (baseDiffuseRoughness) \ + (baseMetalness) \ + (specularWeight) \ + (specularColor) \ + (specularRoughness) \ + (specularIOR) \ + (specularRoughnessAnisotropy) \ + (transmissionWeight) \ + (transmissionColor) \ + (transmissionDepth) \ + (transmissionScatter) \ + (transmissionScatterAnisotropy) \ + (transmissionDispersionScale) \ + (transmissionDispersionAbbeNumber) \ + (subsurfaceWeight) \ + (subsurfaceColor) \ + (subsurfaceRadius) \ + (subsurfaceRadiusScale) \ + (subsurfaceScatterAnisotropy) \ + (fuzzWeight) \ + (fuzzColor) \ + (fuzzRoughness) \ + (coatWeight) \ + (coatColor) \ + (coatRoughness) \ + (coatRoughnessAnisotropy) \ + (coatIOR) \ + (coatDarkening) \ + (thinFilmWeight) \ + (thinFilmThickness) \ + (thinFilmIOR) \ + (emissionWeight) \ + (emissionLuminance) \ + (emissionColor) \ + (geometryOpacity) \ + (geometryThinWalled) \ + (normalCamera) \ + (geometryCoatNormal) \ + (tangentUCamera) \ + (geometryCoatTangent) +// clang-format on + +TF_DECLARE_PUBLIC_TOKENS(TrMayaOpenPBRTokens, , TR_MAYA_OPENPBR_SURFACE); + #ifdef WANT_MATERIALX_TRANSLATORS // clang-format off @@ -315,6 +364,54 @@ TF_DECLARE_PUBLIC_TOKENS( , TR_MTLX_COMMON TR_MTLX_NODE_DEFS TR_MTLX_STANDARD_SURFACE TR_MTLX_IMAGE TR_MTLX_ATTRIBUTES); +// clang-format off +#define TR_MTLX_OPENPBR_SURFACE \ + (ND_open_pbr_surface_surfaceshader) \ + (base_weight) \ + (base_color) \ + (base_diffuse_roughness) \ + (base_metalness) \ + (specular_weight) \ + (specular_color) \ + (specular_roughness) \ + (specular_ior) \ + (specular_roughness_anisotropy) \ + (transmission_weight) \ + (transmission_color) \ + (transmission_depth) \ + (transmission_scatter) \ + (transmission_scatter_anisotropy) \ + (transmission_dispersion_scale) \ + (transmission_dispersion_abbe_number) \ + (subsurface_weight) \ + (subsurface_color) \ + (subsurface_radius) \ + (subsurface_radius_scale) \ + (subsurface_scatter_anisotropy) \ + (fuzz_weight) \ + (fuzz_color) \ + (fuzz_roughness) \ + (coat_weight) \ + (coat_color) \ + (coat_roughness) \ + (coat_roughness_anisotropy) \ + (coat_ior) \ + (coat_darkening) \ + (thin_film_weight) \ + (thin_film_thickness) \ + (thin_film_ior) \ + (emission_luminance) \ + (emission_color) \ + (geometry_opacity) \ + (geometry_thin_walled) \ + (geometry_normal) \ + (geometry_coat_normal) \ + (geometry_tangent) \ + (geometry_coat_tangent) +// clang-format on + +TF_DECLARE_PUBLIC_TOKENS(TrMtlxOpenPBRTokens, , TR_MTLX_OPENPBR_SURFACE); + #endif PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/usdOpenPBRSurfaceReader.cpp b/lib/usd/translators/shading/usdOpenPBRSurfaceReader.cpp new file mode 100644 index 0000000000..6ffd4b33ae --- /dev/null +++ b/lib/usd/translators/shading/usdOpenPBRSurfaceReader.cpp @@ -0,0 +1,173 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// +#include "shadingTokens.h" +#include "usdMaterialReader.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +PXR_NAMESPACE_OPEN_SCOPE + +/// Shader reader for importing UsdPreviewSurface to Maya's openPBRShader material nodes +class PxrUsdTranslators_OpenPBRSurfaceReader : public PxrUsdTranslators_MaterialReader +{ + using _BaseClass = PxrUsdTranslators_MaterialReader; + +public: + PxrUsdTranslators_OpenPBRSurfaceReader(const UsdMayaPrimReaderArgs&); + + static ContextSupport CanImport(const UsdMayaJobImportArgs& importArgs); + + /// Get the name of the Maya shading attribute that corresponds to the + /// USD attribute named \p usdAttrName. + TfToken GetMayaNameForUsdAttrName(const TfToken& usdAttrName) const override; + +protected: + /// What is the Maya node type name we want to convert to: + const TfToken& _GetMayaNodeTypeName() const override; + + /// Callback called before the attribute \p mayaAttribute is read from UsdShade. This allows + /// setting back values in \p shaderFn that were lost during the export phase. + void + _OnBeforeReadAttribute(const TfToken& mayaAttrName, MFnDependencyNode& shaderFn) const override; +}; + +PXRUSDMAYA_REGISTER_SHADER_READER(UsdPreviewSurface, PxrUsdTranslators_OpenPBRSurfaceReader); + +PxrUsdTranslators_OpenPBRSurfaceReader::PxrUsdTranslators_OpenPBRSurfaceReader( + const UsdMayaPrimReaderArgs& readArgs) + : PxrUsdTranslators_MaterialReader(readArgs) +{ +} + +/* static */ +UsdMayaShaderReader::ContextSupport +PxrUsdTranslators_OpenPBRSurfaceReader::CanImport(const UsdMayaJobImportArgs& importArgs) +{ + // Check to see if import requested conversion + return importArgs.preferredMaterial == UsdMayaPreferredMaterialTokens->openPBRSurface + ? ContextSupport::Supported + : ContextSupport::Unsupported; +} + +const TfToken& PxrUsdTranslators_OpenPBRSurfaceReader::_GetMayaNodeTypeName() const +{ + return UsdMayaPreferredMaterialTokens->openPBRSurface; +} + +void PxrUsdTranslators_OpenPBRSurfaceReader::_OnBeforeReadAttribute( + const TfToken& mayaAttrName, + MFnDependencyNode& shaderFn) const +{ + MFnOpenPBRSurfaceShader surfaceFn; + surfaceFn.setObject(shaderFn.object()); + if (mayaAttrName == TrMayaOpenPBRTokens->baseColor) { + MColor color(surfaceFn.baseColor()); + float scale(surfaceFn.baseWeight()); + if (scale != 0.0f) { + color /= scale; + } + surfaceFn.setBaseColor(color); + surfaceFn.setBaseWeight(1.0f); + } else if (mayaAttrName == TrMayaOpenPBRTokens->emissionColor) { +#ifdef MAYA_OPENPBR_HAS_EMISSION_WEIGHT + MColor color(surfaceFn.emissionColor()); + float luminance(surfaceFn.emissionLuminance()); + float scale(surfaceFn.emissionWeight()); + if (scale != 0.0f) { + color /= scale; + } + if (luminance != 0.0f) { + color /= (luminance / 1000.0F); + } + surfaceFn.setEmissionColor(color); + surfaceFn.setEmissionLuminance(1000.0f); + surfaceFn.setEmissionWeight(1.0f); +#else + MColor color(surfaceFn.emissionColor()); + float scale(surfaceFn.emissionLuminance()); + if (scale != 0.0f) { + color /= (scale / 1000.0f); + } + surfaceFn.setEmissionColor(color); + surfaceFn.setEmissionLuminance(1000.0f); +#endif + } else { + _BaseClass::_OnBeforeReadAttribute(mayaAttrName, shaderFn); + } +} + +/* virtual */ +TfToken +PxrUsdTranslators_OpenPBRSurfaceReader::GetMayaNameForUsdAttrName(const TfToken& usdAttrName) const +{ + TfToken usdInputName; + UsdShadeAttributeType attrType; + std::tie(usdInputName, attrType) = UsdShadeUtils::GetBaseNameAndType(usdAttrName); + + if (attrType == UsdShadeAttributeType::Input) { + if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->DiffuseColorAttrName) { + return TrMayaOpenPBRTokens->baseColor; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->EmissiveColorAttrName) { + return TrMayaOpenPBRTokens->emissionColor; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->MetallicAttrName) { + return TrMayaOpenPBRTokens->baseMetalness; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->SpecularColorAttrName) { + return TrMayaOpenPBRTokens->specularColor; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->IorAttrName) { + return TrMayaOpenPBRTokens->specularIOR; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->RoughnessAttrName) { + return TrMayaOpenPBRTokens->specularRoughness; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->ClearcoatRoughnessAttrName) { + return TrMayaOpenPBRTokens->coatRoughness; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->NormalAttrName) { + return TrMayaOpenPBRTokens->normalCamera; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->ClearcoatAttrName) { + return TrMayaOpenPBRTokens->coatWeight; + } else if (usdInputName == PxrMayaUsdPreviewSurfaceTokens->OpacityAttrName) { + return TrMayaOpenPBRTokens->geometryOpacity; + } + } + + return _BaseClass::GetMayaNameForUsdAttrName(usdAttrName); +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/usdOpenPBRSurfaceWriter.cpp b/lib/usd/translators/shading/usdOpenPBRSurfaceWriter.cpp new file mode 100644 index 0000000000..cf69e2ec82 --- /dev/null +++ b/lib/usd/translators/shading/usdOpenPBRSurfaceWriter.cpp @@ -0,0 +1,420 @@ +// +// Copyright 2024 Autodesk +// +// 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. +// +#include "pxr/base/gf/math.h" +#include "pxr/base/gf/vec3f.h" +#include "pxr/usd/sdf/types.h" +#include "shadingTokens.h" +#include "usdMaterialWriter.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +PXR_NAMESPACE_OPEN_SCOPE + +namespace { + +template T _GetMayaAttributeValue(const MPlug& attrPlug) +{ + SdfValueTypeName typeName = SdfValueTypeNames->Float; + if (std::is_same()) { + typeName = SdfValueTypeNames->Color3f; + } + + VtValue value = UsdMayaWriteUtil::GetVtValue(attrPlug, typeName); + + if (!TF_VERIFY( + !value.IsEmpty() && value.IsHolding(), + "No value found for '%s'. Incorrect type?\n", + MFnAttribute(attrPlug.attribute()).name().asChar())) { + return {}; + } + + return value.UncheckedGet(); +} + +template +T _GetMayaAttributeValue(const MFnDependencyNode& depNodeFn, const TfToken& attrName) +{ + MStatus status; + MPlug attrPlug = depNodeFn.findPlug( + depNodeFn.attribute(attrName.GetText()), + /* wantNetworkedPlug = */ true, + &status); + if (!TF_VERIFY( + status == MS::kSuccess && !attrPlug.isNull(), + "Invalid plug for attribute '%s'\n", + MFnAttribute(attrPlug.attribute()).name().asChar())) { + return {}; + } + + return _GetMayaAttributeValue(attrPlug); +} + +void _AuthorEmissionAndDiffuse( + const MFnDependencyNode& depNodeFn, + UsdShadeShader& shaderSchema, + const UsdTimeCode usdTime) +{ + // All these OpenPBR attribute contribute to Diffuse: + const auto baseWeight + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->baseWeight); + const auto baseColor + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->baseColor); + const auto baseMetalness + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->baseMetalness); + const auto specularWeight + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->specularWeight); + const auto subsurfaceWeight + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->subsurfaceWeight); + const auto subsurfaceColor + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->subsurfaceColor); + const auto coatWeight + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->coatWeight); + const auto coatColor + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->coatColor); + const auto coatIOR = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->coatIOR); + const auto coatDarkening + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->coatDarkening); + + // Diffuse: Converting from OpenPBR to StandardSurface requires a bit of math to compute coat + // darkening effects. + const auto Emetal = baseColor * specularWeight; + const auto Edielectric = GfLerp(subsurfaceWeight, baseColor, subsurfaceColor); + const auto Ebase = GfLerp(baseMetalness, Edielectric, Emetal); + const auto coat_ior_to_F0_sqrt = (coatIOR - 1) / (coatIOR + 1); + const auto coat_ior_to_F0 = coat_ior_to_F0_sqrt * coat_ior_to_F0_sqrt; + const auto one_minus_coat_F0_over_eta2 = (1 - coat_ior_to_F0) / (coatIOR * coatIOR); + const auto Kcoat = 1 - one_minus_coat_F0_over_eta2; + const auto base_darkening = GfCompDiv(GfVec3f(1 - Kcoat), (GfVec3f(1.0) - (Ebase * Kcoat))); + const auto modulated_base_darkening + = GfLerp(coatWeight * coatDarkening, GfVec3f(1.0), base_darkening); + + // Intermediate StandardSurface values (until we get a direct OpenPBR to UsdPreviewSurface + // graph) + const auto ss_base_color = GfCompMult(baseColor, modulated_base_darkening); + const auto ss_base = baseWeight; + const auto ss_coat_color = coatColor; + const auto ss_coat = coatWeight; + + // Using NG_standard_surface_to_UsdPreviewSurface + const auto scaledBaseColor = ss_base_color * ss_base; + const auto coatAttenuation = GfLerp(ss_coat, GfVec3f { 1.0F }, ss_coat_color); + + const auto albedoOpaqueDielectric = GfLerp(subsurfaceWeight, scaledBaseColor, subsurfaceColor); + const auto ps_diffuseColor = GfCompMult(albedoOpaqueDielectric, coatAttenuation); + auto diffuseColorInput = shaderSchema.CreateInput( + PxrMayaUsdPreviewSurfaceTokens->DiffuseColorAttrName, SdfValueTypeNames->Color3f); + diffuseColorInput.Set(ps_diffuseColor, usdTime); + + // EmissionColor requires checking for OpenPBR Surface v1.2 for a potential emissionWeight: + const auto emissionLuminance + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->emissionLuminance); + if (emissionLuminance == 0.0) { + return; + } + + const auto emissionColor + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->emissionColor); + + GfVec3f scaledEmissionColor; + if (depNodeFn.hasAttribute(TrMayaOpenPBRTokens->emissionWeight.GetText())) { + const auto emissionWeight + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->emissionWeight); + if (emissionWeight == 0.0) { + return; + } + scaledEmissionColor = emissionColor * emissionWeight; + } else { + scaledEmissionColor = emissionColor * emissionLuminance / 1000.0F; + } + + const auto ps_emissiveColor = GfCompMult(scaledEmissionColor, coatAttenuation); + auto emissiveColorInput = shaderSchema.CreateInput( + PxrMayaUsdPreviewSurfaceTokens->EmissiveColorAttrName, SdfValueTypeNames->Color3f); + emissiveColorInput.Set(ps_emissiveColor, usdTime); +} + +void _AuthorClearcoat( + const MFnDependencyNode& depNodeFn, + UsdShadeShader& shaderSchema, + const UsdTimeCode usdTime) +{ + // Clearcoat: + // GfVec3f ss_coat_color = op_coat_color; + // float ss_coat = op_coat_weight; + // GfVec3f coatColor = ss_coat * ss_coat_color; + // float ps_clearcoat = GfDot(coatColor, GfVec3(1/3)); + // So: + // GfVec3f coatColor = op_coat_weight * op_coat_color; + // float ps_clearcoat = GfDot(coatColor, GfVec3(1/3)); + // Trigger: + // Can only happen if coat_weight > 0 + MStatus status; + + MPlug weightNodePlug = depNodeFn.findPlug( + depNodeFn.attribute(TrMayaOpenPBRTokens->coatWeight.GetText()), + /* wantNetworkedPlug = */ true, + &status); + if (status != MS::kSuccess) { + return; + } + + if (!UsdMayaUtil::IsAuthored(weightNodePlug)) { + // Ignore this unauthored Maya attribute and return success. + return; + } + + const bool isDestination = weightNodePlug.isDestination(&status); + if (status != MS::kSuccess) { + return; + } + + UsdShadeInput shaderInput = shaderSchema.CreateInput( + PxrMayaUsdPreviewSurfaceTokens->ClearcoatAttrName, SdfValueTypeNames->Float); + + if (isDestination) { + return; + } + + const auto coatColor + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->coatColor); + const auto coatWeight = _GetMayaAttributeValue(weightNodePlug); + + float clearcoat = GfDot(coatColor * coatWeight, GfVec3f(1.0f / 3.0f)); + + shaderInput.Set(clearcoat, usdTime); +} + +void _AuthorRoughness( + const MFnDependencyNode& depNodeFn, + UsdShadeShader& shaderSchema, + const UsdTimeCode usdTime) +{ + // Roughness: + // float ss_specular_roughness = GfLerp(op_coat_weight, op_specular_roughness, + // op_coat_roughness); float ps_roughness = ss_specular_roughness; + MStatus status; + + MPlug specularRoughnessPlug = depNodeFn.findPlug( + depNodeFn.attribute(TrMayaOpenPBRTokens->specularRoughness.GetText()), + /* wantNetworkedPlug = */ true, + &status); + if (status != MS::kSuccess) { + return; + } + + const bool isDestination = specularRoughnessPlug.isDestination(&status); + if (status != MS::kSuccess) { + return; + } + + UsdShadeInput shaderInput = shaderSchema.CreateInput( + PxrMayaUsdPreviewSurfaceTokens->RoughnessAttrName, SdfValueTypeNames->Float); + + if (isDestination) { + return; + } + + float previewRoughness = _GetMayaAttributeValue(specularRoughnessPlug); + const float coatWeight + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->coatWeight); + if (coatWeight) { + const auto coatRoughness + = _GetMayaAttributeValue(depNodeFn, TrMayaOpenPBRTokens->coatRoughness); + previewRoughness = GfLerp(coatWeight, previewRoughness, coatRoughness); + } + + shaderInput.Set(previewRoughness, usdTime); +} +} // namespace + +class PxrUsdTranslators_OpenPBRSurfaceWriter : public PxrUsdTranslators_MaterialWriter +{ + typedef PxrUsdTranslators_MaterialWriter BaseClass; + +public: + PxrUsdTranslators_OpenPBRSurfaceWriter( + const MFnDependencyNode& depNodeFn, + const SdfPath& usdPath, + UsdMayaWriteJobContext& jobCtx); + + void Write(const UsdTimeCode& usdTime) override; + + TfToken GetShadingAttributeNameForMayaAttrName(const TfToken& mayaAttrName) override; +}; + +PXRUSDMAYA_REGISTER_SHADER_WRITER(openPBRSurface, PxrUsdTranslators_OpenPBRSurfaceWriter); + +PxrUsdTranslators_OpenPBRSurfaceWriter::PxrUsdTranslators_OpenPBRSurfaceWriter( + const MFnDependencyNode& depNodeFn, + const SdfPath& usdPath, + UsdMayaWriteJobContext& jobCtx) + : BaseClass(depNodeFn, usdPath, jobCtx) +{ +} + +/* virtual */ +void PxrUsdTranslators_OpenPBRSurfaceWriter::Write(const UsdTimeCode& usdTime) +{ + BaseClass::Write(usdTime); + + MStatus status; + + const MFnDependencyNode depNodeFn(GetMayaObject(), &status); + if (status != MS::kSuccess) { + return; + } + + UsdShadeShader shaderSchema(_usdPrim); + if (!TF_VERIFY( + shaderSchema, + "Could not get UsdShadeShader schema for UsdPrim at path '%s'\n", + _usdPrim.GetPath().GetText())) { + return; + } + + // We are basing the exporter on a concatenation of the MaterialX math found in + // NG_open_pbr_surface_to_standard_surface + // + + // Emission and Diffuse are non-trivial and affected by coat color: + _AuthorEmissionAndDiffuse(depNodeFn, shaderSchema, usdTime); + + // Metallic: trivial + // float ss_metalness = op_base_metalness; + // float ps_metallic = ss_metalness; + + AuthorShaderInputFromShadingNodeAttr( + depNodeFn, + TrMayaOpenPBRTokens->baseMetalness, + shaderSchema, + PxrMayaUsdPreviewSurfaceTokens->MetallicAttrName, + usdTime); + + // Please note that the MaterialX recommended translation completely ignores + // useSpecularWorkflow and specularColor, so these are never converted. + + // IOR: trivial + // float ss_specular_IOR = op_specular_ior; + // float ps_ior = ss_specular_IOR + AuthorShaderInputFromShadingNodeAttr( + depNodeFn, + TrMayaOpenPBRTokens->specularIOR, + shaderSchema, + PxrMayaUsdPreviewSurfaceTokens->IorAttrName, + usdTime); + + // Roughness is non-trivial: + _AuthorRoughness(depNodeFn, shaderSchema, usdTime); + + // Clearcoat is complex: + _AuthorClearcoat(depNodeFn, shaderSchema, usdTime); + + // ClearcoatRoughness: + // float ss_coat_roughness = op_coat_roughness; + // float ps_clearcoatRoughness = ss_coat_roughness; + // So a direct copy: + AuthorShaderInputFromShadingNodeAttr( + depNodeFn, + TrMayaOpenPBRTokens->coatRoughness, + shaderSchema, + PxrMayaUsdPreviewSurfaceTokens->ClearcoatRoughnessAttrName, + usdTime); + + // Opacity: + // GfVec3f ss_opacity = GfVec3f(op_geometry_opacity); + // float ps_opacity = GfDot(ss_opacity, GfVec3f(1.0f/3.0f)); + // Reducing to: + // float ps_opacity = op_geometry_opacity + MPlug opacityPlug = depNodeFn.findPlug( + depNodeFn.attribute(TrMayaOpenPBRTokens->geometryOpacity.GetText()), + /* wantNetworkedPlug = */ true, + &status); + if (UsdMayaUtil::IsAuthored(opacityPlug) || opacityPlug.isDestination()) { + UsdShadeInput opacityInput = shaderSchema.CreateInput( + PxrMayaUsdPreviewSurfaceTokens->OpacityAttrName, SdfValueTypeNames->Float); + + if (!opacityPlug.isDestination()) { + VtValue opacityValue + = UsdMayaWriteUtil::GetVtValue(opacityPlug, SdfValueTypeNames->Float); + + opacityInput.Set(opacityValue, usdTime); + } + } + + // Exported, but unsupported in hdStorm. + AuthorShaderInputFromShadingNodeAttr( + depNodeFn, + TrMayaOpenPBRTokens->normalCamera, + shaderSchema, + PxrMayaUsdPreviewSurfaceTokens->NormalAttrName, + usdTime, + /* ignoreIfUnauthored = */ true, + /* inputTypeName = */ SdfValueTypeNames->Normal3f); +} + +/* virtual */ +TfToken PxrUsdTranslators_OpenPBRSurfaceWriter::GetShadingAttributeNameForMayaAttrName( + const TfToken& mayaAttrName) +{ + TfToken usdAttrName; + + if (mayaAttrName == TrMayaOpenPBRTokens->baseColor) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->DiffuseColorAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->emissionColor) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->EmissiveColorAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->baseMetalness) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->MetallicAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->specularIOR) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->IorAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->specularRoughness) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->RoughnessAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->coatWeight) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->ClearcoatAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->coatRoughness) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->ClearcoatRoughnessAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->geometryOpacity) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->OpacityAttrName; + } else if (mayaAttrName == TrMayaOpenPBRTokens->normalCamera) { + usdAttrName = PxrMayaUsdPreviewSurfaceTokens->NormalAttrName; + } else { + return BaseClass::GetShadingAttributeNameForMayaAttrName(mayaAttrName); + } + + return UsdShadeUtils::GetFullName(usdAttrName, UsdShadeAttributeType::Input); +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/lib/usd/translators/shading/usdStandardSurfaceWriter.cpp b/lib/usd/translators/shading/usdStandardSurfaceWriter.cpp index a8bf9c1614..edd6b0907c 100644 --- a/lib/usd/translators/shading/usdStandardSurfaceWriter.cpp +++ b/lib/usd/translators/shading/usdStandardSurfaceWriter.cpp @@ -184,7 +184,7 @@ void PxrUsdTranslators_StandardSurfaceWriter::Write(const UsdTimeCode& usdTime) shaderSchema, PxrMayaUsdPreviewSurfaceTokens->NormalAttrName, usdTime, - /* ignoreIfUnauthored = */ false, + /* ignoreIfUnauthored = */ true, /* inputTypeName = */ SdfValueTypeNames->Normal3f); } diff --git a/plugin/adsk/scripts/mayaUSDRegisterStrings.py b/plugin/adsk/scripts/mayaUSDRegisterStrings.py index bf46606410..72ce2cc384 100644 --- a/plugin/adsk/scripts/mayaUSDRegisterStrings.py +++ b/plugin/adsk/scripts/mayaUSDRegisterStrings.py @@ -302,6 +302,7 @@ "kImportMaterialConvAnn": "Select the preferred conversion method for inbound USD shading data to bind with Maya geometry", "kImportMaterialConvLbl": "Convert to:", "kImportMaterialConvNoneLbl": "Automatic", + "kImportMaterialConvOPBRLbl": "OpenPBR Surface", "kImportMaterialConvSSLbl": "Standard Surface", "kImportMaterialConvLamLbl": "Lambert", "kImportMaterialConvPSLbl": "USD Preview Surface", diff --git a/plugin/adsk/scripts/mayaUsdTranslatorImport.mel b/plugin/adsk/scripts/mayaUsdTranslatorImport.mel index 734ebdc0a1..b7f5085130 100644 --- a/plugin/adsk/scripts/mayaUsdTranslatorImport.mel +++ b/plugin/adsk/scripts/mayaUsdTranslatorImport.mel @@ -525,10 +525,13 @@ global proc int mayaUsdTranslatorImport (string $parent, separator -style "none"; checkBoxGrp -label "" -label1 `getMayaUsdString("kImportMaterialsLbl")` -cw 1 $cw1 -value1 1 -ann `getMayaUsdString("kImportMaterialsAnn")` -cc ("mayaUsdTranslatorImport_MaterialsCB") mayaUsdTranslator_MaterialsCheckBox; - string $apiString = `about -q -apiVersion`; - $apiString = `substring $apiString 1 4`; + string $apiStringFull = `about -q -apiVersion`; + $apiString = `substring $apiStringFull 1 4`; optionMenuGrp -l `getMayaUsdString("kImportMaterialConvLbl")` -cw 1 $cw1 -ann `getMayaUsdString("kImportMaterialConvAnn")` mayaUsdTranslator_MaterialsConversionMenu; menuItem -l `getMayaUsdString("kImportMaterialConvNoneLbl")` -ann "none"; + if ((int)$apiStringFull >= 20250300) { + menuItem -l `getMayaUsdString("kImportMaterialConvOPBRLbl")` -ann "openPBRSurface"; + } if ((int)$apiString >= 2020) { menuItem -l `getMayaUsdString("kImportMaterialConvSSLbl")` -ann "standardSurface"; } diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt index 5f3bb894df..4ef9695d96 100644 --- a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt @@ -53,6 +53,7 @@ if (CMAKE_WANT_MATERIALX_BUILD) "MATERIALX_VERSION=${MaterialX_VERSION}" "MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API=${MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API}" "MAYAUSD_EXPORT_EXPANDED_COLORSPACE_ATTRIBUTE=1" + "USD_HAS_MX_OPENPBR_SURFACE=${USD_HAS_MX_OPENPBR_SURFACE}" # Maya uses a very old version of GLEW, so we need support for # pre-loading a newer version from elsewhere. "LD_PRELOAD=${ADDITIONAL_LD_PRELOAD}" diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/OpenPBRShowcase_MTLX_Import_render.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/OpenPBRShowcase_MTLX_Import_render.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9e2ce98658e711048832537dd781a596924471 GIT binary patch literal 116922 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%0DO*;Iq+qb=SV3-=jF_t;UwM49o3ocjP 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 j0jJwz!)M0EbP~X4Kw01Or?EjuSg-P=3zf;6_ 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�=-cOawQmfeG4TigaPZ-5O*g0Ipr7pXVLv50 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/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 "polyPlane1.out" "pPlaneShape1.i"; +relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface2SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface3SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface4SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface5SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface6SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface7SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface8SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface9SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface10SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "openPBRSurface11SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface2SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface3SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface4SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface5SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface6SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface7SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface8SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface9SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface10SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "WIP1:openPBRSurface11SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface2SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface3SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface4SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface5SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface6SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface7SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface8SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface9SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface10SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "openPBRSurface11SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface2SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface3SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface4SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface5SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface6SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface7SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface8SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface9SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface10SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "WIP1:openPBRSurface11SG.message" ":defaultLightSet.message"; +connectAttr "layerManager.dli[0]" "defaultLayer.id"; +connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid"; +connectAttr ":lightLinker1.msg" "MayaNodeEditorSavedTabsInfo.tgi[0].ni[3].dn"; +connectAttr ":renderPartition.msg" "MayaNodeEditorSavedTabsInfo.tgi[0].ni[5].dn" + ; +connectAttr "file32.ocr" "openPBRSurface2.geop"; +connectAttr "openPBRSurface2.oc" "openPBRSurface2SG.ss"; +connectAttr "pPlaneShape1.iog" "openPBRSurface2SG.dsm" -na; +connectAttr "openPBRSurface2SG.msg" "materialInfo25.sg"; +connectAttr "openPBRSurface2.msg" "materialInfo25.m"; +connectAttr "openPBRSurface3.oc" "openPBRSurface3SG.ss"; +connectAttr "pPlaneShape2.iog" "openPBRSurface3SG.dsm" -na; +connectAttr "openPBRSurface3SG.msg" "materialInfo26.sg"; +connectAttr "openPBRSurface3.msg" "materialInfo26.m"; +connectAttr "bump2d1.o" "openPBRSurface4.n"; +connectAttr "openPBRSurface4.oc" "openPBRSurface4SG.ss"; +connectAttr "pPlaneShape3.iog" "openPBRSurface4SG.dsm" -na; +connectAttr "openPBRSurface4SG.msg" "materialInfo27.sg"; +connectAttr "openPBRSurface4.msg" "materialInfo27.m"; +connectAttr "file25.oc" "openPBRSurface5.bc"; +connectAttr "openPBRSurface5.oc" "openPBRSurface5SG.ss"; +connectAttr "pPlaneShape4.iog" "openPBRSurface5SG.dsm" -na; +connectAttr "openPBRSurface5SG.msg" "materialInfo28.sg"; +connectAttr "openPBRSurface5.msg" "materialInfo28.m"; +connectAttr "file25.msg" "materialInfo28.t" -na; +connectAttr "file26.oc" "openPBRSurface6.ec"; +connectAttr "openPBRSurface6.oc" "openPBRSurface6SG.ss"; +connectAttr "pPlaneShape5.iog" "openPBRSurface6SG.dsm" -na; +connectAttr "openPBRSurface6SG.msg" "materialInfo29.sg"; +connectAttr "openPBRSurface6.msg" "materialInfo29.m"; +connectAttr "file27.ocr" "openPBRSurface7.m"; +connectAttr "openPBRSurface7.oc" "openPBRSurface7SG.ss"; +connectAttr "pPlaneShape11.iog" "openPBRSurface7SG.dsm" -na; +connectAttr "openPBRSurface7SG.msg" "materialInfo30.sg"; +connectAttr "openPBRSurface7.msg" "materialInfo30.m"; +connectAttr "file28.ocr" "openPBRSurface8.sior"; +connectAttr "openPBRSurface8.oc" "openPBRSurface8SG.ss"; +connectAttr "pPlaneShape12.iog" "openPBRSurface8SG.dsm" -na; +connectAttr "openPBRSurface8SG.msg" "materialInfo31.sg"; +connectAttr "openPBRSurface8.msg" "materialInfo31.m"; +connectAttr "file29.ocr" "openPBRSurface9.sr"; +connectAttr "openPBRSurface9.oc" "openPBRSurface9SG.ss"; +connectAttr "pPlaneShape13.iog" "openPBRSurface9SG.dsm" -na; +connectAttr "openPBRSurface9SG.msg" "materialInfo32.sg"; +connectAttr "openPBRSurface9.msg" "materialInfo32.m"; +connectAttr "file30.ocr" "openPBRSurface10.ct"; +connectAttr "openPBRSurface10.oc" "openPBRSurface10SG.ss"; +connectAttr "pPlaneShape14.iog" "openPBRSurface10SG.dsm" -na; +connectAttr "openPBRSurface10SG.msg" "materialInfo33.sg"; +connectAttr "openPBRSurface10.msg" "materialInfo33.m"; +connectAttr "file31.ocr" "openPBRSurface11.ctr"; +connectAttr "openPBRSurface11.oc" "openPBRSurface11SG.ss"; +connectAttr "pPlaneShape15.iog" "openPBRSurface11SG.dsm" -na; +connectAttr "openPBRSurface11SG.msg" "materialInfo34.sg"; +connectAttr "openPBRSurface11.msg" "materialInfo34.m"; +connectAttr ":defaultColorMgtGlobals.cme" "file25.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file25.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file25.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file25.ws"; +connectAttr "place2dTexture25.c" "file25.c"; +connectAttr "place2dTexture25.tf" "file25.tf"; +connectAttr "place2dTexture25.rf" "file25.rf"; +connectAttr "place2dTexture25.mu" "file25.mu"; +connectAttr "place2dTexture25.mv" "file25.mv"; +connectAttr "place2dTexture25.s" "file25.s"; +connectAttr "place2dTexture25.wu" "file25.wu"; +connectAttr "place2dTexture25.wv" "file25.wv"; +connectAttr "place2dTexture25.re" "file25.re"; +connectAttr "place2dTexture25.of" "file25.of"; +connectAttr "place2dTexture25.r" "file25.ro"; +connectAttr "place2dTexture25.n" "file25.n"; +connectAttr "place2dTexture25.vt1" "file25.vt1"; +connectAttr "place2dTexture25.vt2" "file25.vt2"; +connectAttr "place2dTexture25.vt3" "file25.vt3"; +connectAttr "place2dTexture25.vc1" "file25.vc1"; +connectAttr "place2dTexture25.o" "file25.uv"; +connectAttr "place2dTexture25.ofs" "file25.fs"; +connectAttr ":defaultColorMgtGlobals.cme" "file26.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file26.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file26.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file26.ws"; +connectAttr "place2dTexture26.c" "file26.c"; +connectAttr "place2dTexture26.tf" "file26.tf"; +connectAttr "place2dTexture26.rf" "file26.rf"; +connectAttr "place2dTexture26.mu" "file26.mu"; +connectAttr "place2dTexture26.mv" "file26.mv"; +connectAttr "place2dTexture26.s" "file26.s"; +connectAttr "place2dTexture26.wu" "file26.wu"; +connectAttr "place2dTexture26.wv" "file26.wv"; +connectAttr "place2dTexture26.re" "file26.re"; +connectAttr "place2dTexture26.of" "file26.of"; +connectAttr "place2dTexture26.r" "file26.ro"; +connectAttr "place2dTexture26.n" "file26.n"; +connectAttr "place2dTexture26.vt1" "file26.vt1"; +connectAttr "place2dTexture26.vt2" "file26.vt2"; +connectAttr "place2dTexture26.vt3" "file26.vt3"; +connectAttr "place2dTexture26.vc1" "file26.vc1"; +connectAttr "place2dTexture26.o" "file26.uv"; +connectAttr "place2dTexture26.ofs" "file26.fs"; +connectAttr ":defaultColorMgtGlobals.cme" "file27.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file27.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file27.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file27.ws"; +connectAttr "place2dTexture27.c" "file27.c"; +connectAttr "place2dTexture27.tf" "file27.tf"; +connectAttr "place2dTexture27.rf" "file27.rf"; +connectAttr "place2dTexture27.mu" "file27.mu"; +connectAttr "place2dTexture27.mv" "file27.mv"; +connectAttr "place2dTexture27.s" "file27.s"; +connectAttr "place2dTexture27.wu" "file27.wu"; +connectAttr "place2dTexture27.wv" "file27.wv"; +connectAttr "place2dTexture27.re" "file27.re"; +connectAttr "place2dTexture27.of" "file27.of"; +connectAttr "place2dTexture27.r" "file27.ro"; +connectAttr "place2dTexture27.n" "file27.n"; +connectAttr "place2dTexture27.vt1" "file27.vt1"; +connectAttr "place2dTexture27.vt2" "file27.vt2"; +connectAttr "place2dTexture27.vt3" "file27.vt3"; +connectAttr "place2dTexture27.vc1" "file27.vc1"; +connectAttr "place2dTexture27.o" "file27.uv"; +connectAttr "place2dTexture27.ofs" "file27.fs"; +connectAttr ":defaultColorMgtGlobals.cme" "file28.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file28.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file28.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file28.ws"; +connectAttr "place2dTexture28.c" "file28.c"; +connectAttr "place2dTexture28.tf" "file28.tf"; +connectAttr "place2dTexture28.rf" "file28.rf"; +connectAttr "place2dTexture28.mu" "file28.mu"; +connectAttr "place2dTexture28.mv" "file28.mv"; +connectAttr "place2dTexture28.s" "file28.s"; +connectAttr "place2dTexture28.wu" "file28.wu"; +connectAttr "place2dTexture28.wv" "file28.wv"; +connectAttr "place2dTexture28.re" "file28.re"; +connectAttr "place2dTexture28.of" "file28.of"; +connectAttr "place2dTexture28.r" "file28.ro"; +connectAttr "place2dTexture28.n" "file28.n"; +connectAttr "place2dTexture28.vt1" "file28.vt1"; +connectAttr "place2dTexture28.vt2" "file28.vt2"; +connectAttr "place2dTexture28.vt3" "file28.vt3"; +connectAttr "place2dTexture28.vc1" "file28.vc1"; +connectAttr "place2dTexture28.o" "file28.uv"; +connectAttr "place2dTexture28.ofs" "file28.fs"; +connectAttr ":defaultColorMgtGlobals.cme" "file29.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file29.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file29.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file29.ws"; +connectAttr "place2dTexture29.c" "file29.c"; +connectAttr "place2dTexture29.tf" "file29.tf"; +connectAttr "place2dTexture29.rf" "file29.rf"; +connectAttr "place2dTexture29.mu" "file29.mu"; +connectAttr "place2dTexture29.mv" "file29.mv"; +connectAttr "place2dTexture29.s" "file29.s"; +connectAttr "place2dTexture29.wu" "file29.wu"; +connectAttr "place2dTexture29.wv" "file29.wv"; +connectAttr "place2dTexture29.re" "file29.re"; +connectAttr "place2dTexture29.of" "file29.of"; +connectAttr "place2dTexture29.r" "file29.ro"; +connectAttr "place2dTexture29.n" "file29.n"; +connectAttr "place2dTexture29.vt1" "file29.vt1"; +connectAttr "place2dTexture29.vt2" "file29.vt2"; +connectAttr "place2dTexture29.vt3" "file29.vt3"; +connectAttr "place2dTexture29.vc1" "file29.vc1"; +connectAttr "place2dTexture29.o" "file29.uv"; +connectAttr "place2dTexture29.ofs" "file29.fs"; +connectAttr ":defaultColorMgtGlobals.cme" "file30.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file30.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file30.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file30.ws"; +connectAttr "place2dTexture30.c" "file30.c"; +connectAttr "place2dTexture30.tf" "file30.tf"; +connectAttr "place2dTexture30.rf" "file30.rf"; +connectAttr "place2dTexture30.mu" "file30.mu"; +connectAttr "place2dTexture30.mv" "file30.mv"; +connectAttr "place2dTexture30.s" "file30.s"; +connectAttr "place2dTexture30.wu" "file30.wu"; +connectAttr "place2dTexture30.wv" "file30.wv"; +connectAttr "place2dTexture30.re" "file30.re"; +connectAttr "place2dTexture30.of" "file30.of"; +connectAttr "place2dTexture30.r" "file30.ro"; +connectAttr "place2dTexture30.n" "file30.n"; +connectAttr "place2dTexture30.vt1" "file30.vt1"; +connectAttr "place2dTexture30.vt2" "file30.vt2"; +connectAttr "place2dTexture30.vt3" "file30.vt3"; +connectAttr "place2dTexture30.vc1" "file30.vc1"; +connectAttr "place2dTexture30.o" "file30.uv"; +connectAttr "place2dTexture30.ofs" "file30.fs"; +connectAttr ":defaultColorMgtGlobals.cme" "file31.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file31.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file31.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file31.ws"; +connectAttr "place2dTexture31.c" "file31.c"; +connectAttr "place2dTexture31.tf" "file31.tf"; +connectAttr "place2dTexture31.rf" "file31.rf"; +connectAttr "place2dTexture31.mu" "file31.mu"; +connectAttr "place2dTexture31.mv" "file31.mv"; +connectAttr "place2dTexture31.s" "file31.s"; +connectAttr "place2dTexture31.wu" "file31.wu"; +connectAttr "place2dTexture31.wv" "file31.wv"; +connectAttr "place2dTexture31.re" "file31.re"; +connectAttr "place2dTexture31.of" "file31.of"; +connectAttr "place2dTexture31.r" "file31.ro"; +connectAttr "place2dTexture31.n" "file31.n"; +connectAttr "place2dTexture31.vt1" "file31.vt1"; +connectAttr "place2dTexture31.vt2" "file31.vt2"; +connectAttr "place2dTexture31.vt3" "file31.vt3"; +connectAttr "place2dTexture31.vc1" "file31.vc1"; +connectAttr "place2dTexture31.o" "file31.uv"; +connectAttr "place2dTexture31.ofs" "file31.fs"; +connectAttr ":defaultColorMgtGlobals.cme" "file32.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file32.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file32.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file32.ws"; +connectAttr "place2dTexture32.c" "file32.c"; +connectAttr "place2dTexture32.tf" "file32.tf"; +connectAttr "place2dTexture32.rf" "file32.rf"; +connectAttr "place2dTexture32.mu" "file32.mu"; +connectAttr "place2dTexture32.mv" "file32.mv"; +connectAttr "place2dTexture32.s" "file32.s"; +connectAttr "place2dTexture32.wu" "file32.wu"; +connectAttr "place2dTexture32.wv" "file32.wv"; +connectAttr "place2dTexture32.re" "file32.re"; +connectAttr "place2dTexture32.of" "file32.of"; +connectAttr "place2dTexture32.r" "file32.ro"; +connectAttr "place2dTexture32.n" "file32.n"; +connectAttr "place2dTexture32.vt1" "file32.vt1"; +connectAttr "place2dTexture32.vt2" "file32.vt2"; +connectAttr "place2dTexture32.vt3" "file32.vt3"; +connectAttr "place2dTexture32.vc1" "file32.vc1"; +connectAttr "place2dTexture32.o" "file32.uv"; +connectAttr "place2dTexture32.ofs" "file32.fs"; +connectAttr "file33.oa" "bump2d1.bv"; +connectAttr ":defaultColorMgtGlobals.cme" "file33.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file33.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file33.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file33.ws"; +connectAttr "place2dTexture33.c" "file33.c"; +connectAttr "place2dTexture33.tf" "file33.tf"; +connectAttr "place2dTexture33.rf" "file33.rf"; +connectAttr "place2dTexture33.mu" "file33.mu"; +connectAttr "place2dTexture33.mv" "file33.mv"; +connectAttr "place2dTexture33.s" "file33.s"; +connectAttr "place2dTexture33.wu" "file33.wu"; +connectAttr "place2dTexture33.wv" "file33.wv"; +connectAttr "place2dTexture33.re" "file33.re"; +connectAttr "place2dTexture33.of" "file33.of"; +connectAttr "place2dTexture33.r" "file33.ro"; +connectAttr "place2dTexture33.n" "file33.n"; +connectAttr "place2dTexture33.vt1" "file33.vt1"; +connectAttr "place2dTexture33.vt2" "file33.vt2"; +connectAttr "place2dTexture33.vt3" "file33.vt3"; +connectAttr "place2dTexture33.vc1" "file33.vc1"; +connectAttr "place2dTexture33.o" "file33.uv"; +connectAttr "place2dTexture33.ofs" "file33.fs"; +connectAttr "WIP1:file32.ocr" "WIP1:openPBRSurface2.geop"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file32.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file32.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file32.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file32.ws"; +connectAttr "WIP1:place2dTexture.o" "WIP1:file32.uv"; +connectAttr "WIP1:place2dTexture.ofs" "WIP1:file32.fs"; +connectAttr "WIP1:place2dTexture.c" "WIP1:file32.c"; +connectAttr "WIP1:place2dTexture.tf" "WIP1:file32.tf"; +connectAttr "WIP1:place2dTexture.rf" "WIP1:file32.rf"; +connectAttr "WIP1:place2dTexture.mu" "WIP1:file32.mu"; +connectAttr "WIP1:place2dTexture.mv" "WIP1:file32.mv"; +connectAttr "WIP1:place2dTexture.s" "WIP1:file32.s"; +connectAttr "WIP1:place2dTexture.wu" "WIP1:file32.wu"; +connectAttr "WIP1:place2dTexture.wv" "WIP1:file32.wv"; +connectAttr "WIP1:place2dTexture.re" "WIP1:file32.re"; +connectAttr "WIP1:place2dTexture.of" "WIP1:file32.of"; +connectAttr "WIP1:place2dTexture.r" "WIP1:file32.ro"; +connectAttr "WIP1:place2dTexture.n" "WIP1:file32.n"; +connectAttr "WIP1:place2dTexture.vt1" "WIP1:file32.vt1"; +connectAttr "WIP1:place2dTexture.vt2" "WIP1:file32.vt2"; +connectAttr "WIP1:place2dTexture.vt3" "WIP1:file32.vt3"; +connectAttr "WIP1:place2dTexture.vc1" "WIP1:file32.vc1"; +connectAttr "WIP1:openPBRSurface2.oc" "WIP1:openPBRSurface2SG.ss"; +connectAttr "WIP1:openPBRSurface2SG.msg" "WIP1:materialInfo1.sg"; +connectAttr "WIP1:openPBRSurface2.msg" "WIP1:materialInfo1.m"; +connectAttr "WIP1:openPBRSurface3.oc" "WIP1:openPBRSurface3SG.ss"; +connectAttr "WIP1:openPBRSurface3SG.msg" "WIP1:materialInfo2.sg"; +connectAttr "WIP1:openPBRSurface3.msg" "WIP1:materialInfo2.m"; +connectAttr "WIP1:openPBRSurface4.oc" "WIP1:openPBRSurface4SG.ss"; +connectAttr "WIP1:openPBRSurface4SG.msg" "WIP1:materialInfo3.sg"; +connectAttr "WIP1:openPBRSurface4.msg" "WIP1:materialInfo3.m"; +connectAttr "WIP1:file25.oc" "WIP1:openPBRSurface5.bc"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file25.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file25.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file25.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file25.ws"; +connectAttr "WIP1:place2dTexture1.o" "WIP1:file25.uv"; +connectAttr "WIP1:place2dTexture1.ofs" "WIP1:file25.fs"; +connectAttr "WIP1:place2dTexture1.c" "WIP1:file25.c"; +connectAttr "WIP1:place2dTexture1.tf" "WIP1:file25.tf"; +connectAttr "WIP1:place2dTexture1.rf" "WIP1:file25.rf"; +connectAttr "WIP1:place2dTexture1.mu" "WIP1:file25.mu"; +connectAttr "WIP1:place2dTexture1.mv" "WIP1:file25.mv"; +connectAttr "WIP1:place2dTexture1.s" "WIP1:file25.s"; +connectAttr "WIP1:place2dTexture1.wu" "WIP1:file25.wu"; +connectAttr "WIP1:place2dTexture1.wv" "WIP1:file25.wv"; +connectAttr "WIP1:place2dTexture1.re" "WIP1:file25.re"; +connectAttr "WIP1:place2dTexture1.of" "WIP1:file25.of"; +connectAttr "WIP1:place2dTexture1.r" "WIP1:file25.ro"; +connectAttr "WIP1:place2dTexture1.n" "WIP1:file25.n"; +connectAttr "WIP1:place2dTexture1.vt1" "WIP1:file25.vt1"; +connectAttr "WIP1:place2dTexture1.vt2" "WIP1:file25.vt2"; +connectAttr "WIP1:place2dTexture1.vt3" "WIP1:file25.vt3"; +connectAttr "WIP1:place2dTexture1.vc1" "WIP1:file25.vc1"; +connectAttr "WIP1:openPBRSurface5.oc" "WIP1:openPBRSurface5SG.ss"; +connectAttr "WIP1:openPBRSurface5SG.msg" "WIP1:materialInfo4.sg"; +connectAttr "WIP1:openPBRSurface5.msg" "WIP1:materialInfo4.m"; +connectAttr "WIP1:file25.msg" "WIP1:materialInfo4.t" -na; +connectAttr "WIP1:file26.oc" "WIP1:openPBRSurface6.ec"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file26.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file26.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file26.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file26.ws"; +connectAttr "WIP1:place2dTexture2.o" "WIP1:file26.uv"; +connectAttr "WIP1:place2dTexture2.ofs" "WIP1:file26.fs"; +connectAttr "WIP1:place2dTexture2.c" "WIP1:file26.c"; +connectAttr "WIP1:place2dTexture2.tf" "WIP1:file26.tf"; +connectAttr "WIP1:place2dTexture2.rf" "WIP1:file26.rf"; +connectAttr "WIP1:place2dTexture2.mu" "WIP1:file26.mu"; +connectAttr "WIP1:place2dTexture2.mv" "WIP1:file26.mv"; +connectAttr "WIP1:place2dTexture2.s" "WIP1:file26.s"; +connectAttr "WIP1:place2dTexture2.wu" "WIP1:file26.wu"; +connectAttr "WIP1:place2dTexture2.wv" "WIP1:file26.wv"; +connectAttr "WIP1:place2dTexture2.re" "WIP1:file26.re"; +connectAttr "WIP1:place2dTexture2.of" "WIP1:file26.of"; +connectAttr "WIP1:place2dTexture2.r" "WIP1:file26.ro"; +connectAttr "WIP1:place2dTexture2.n" "WIP1:file26.n"; +connectAttr "WIP1:place2dTexture2.vt1" "WIP1:file26.vt1"; +connectAttr "WIP1:place2dTexture2.vt2" "WIP1:file26.vt2"; +connectAttr "WIP1:place2dTexture2.vt3" "WIP1:file26.vt3"; +connectAttr "WIP1:place2dTexture2.vc1" "WIP1:file26.vc1"; +connectAttr "WIP1:openPBRSurface6.oc" "WIP1:openPBRSurface6SG.ss"; +connectAttr "WIP1:openPBRSurface6SG.msg" "WIP1:materialInfo5.sg"; +connectAttr "WIP1:openPBRSurface6.msg" "WIP1:materialInfo5.m"; +connectAttr "WIP1:file27.ocr" "WIP1:openPBRSurface7.m"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file27.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file27.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file27.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file27.ws"; +connectAttr "WIP1:place2dTexture3.o" "WIP1:file27.uv"; +connectAttr "WIP1:place2dTexture3.ofs" "WIP1:file27.fs"; +connectAttr "WIP1:place2dTexture3.c" "WIP1:file27.c"; +connectAttr "WIP1:place2dTexture3.tf" "WIP1:file27.tf"; +connectAttr "WIP1:place2dTexture3.rf" "WIP1:file27.rf"; +connectAttr "WIP1:place2dTexture3.mu" "WIP1:file27.mu"; +connectAttr "WIP1:place2dTexture3.mv" "WIP1:file27.mv"; +connectAttr "WIP1:place2dTexture3.s" "WIP1:file27.s"; +connectAttr "WIP1:place2dTexture3.wu" "WIP1:file27.wu"; +connectAttr "WIP1:place2dTexture3.wv" "WIP1:file27.wv"; +connectAttr "WIP1:place2dTexture3.re" "WIP1:file27.re"; +connectAttr "WIP1:place2dTexture3.of" "WIP1:file27.of"; +connectAttr "WIP1:place2dTexture3.r" "WIP1:file27.ro"; +connectAttr "WIP1:place2dTexture3.n" "WIP1:file27.n"; +connectAttr "WIP1:place2dTexture3.vt1" "WIP1:file27.vt1"; +connectAttr "WIP1:place2dTexture3.vt2" "WIP1:file27.vt2"; +connectAttr "WIP1:place2dTexture3.vt3" "WIP1:file27.vt3"; +connectAttr "WIP1:place2dTexture3.vc1" "WIP1:file27.vc1"; +connectAttr "WIP1:openPBRSurface7.oc" "WIP1:openPBRSurface7SG.ss"; +connectAttr "WIP1:openPBRSurface7SG.msg" "WIP1:materialInfo6.sg"; +connectAttr "WIP1:openPBRSurface7.msg" "WIP1:materialInfo6.m"; +connectAttr "WIP1:file28.ocr" "WIP1:openPBRSurface8.sior"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file28.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file28.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file28.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file28.ws"; +connectAttr "WIP1:place2dTexture4.o" "WIP1:file28.uv"; +connectAttr "WIP1:place2dTexture4.ofs" "WIP1:file28.fs"; +connectAttr "WIP1:place2dTexture4.c" "WIP1:file28.c"; +connectAttr "WIP1:place2dTexture4.tf" "WIP1:file28.tf"; +connectAttr "WIP1:place2dTexture4.rf" "WIP1:file28.rf"; +connectAttr "WIP1:place2dTexture4.mu" "WIP1:file28.mu"; +connectAttr "WIP1:place2dTexture4.mv" "WIP1:file28.mv"; +connectAttr "WIP1:place2dTexture4.s" "WIP1:file28.s"; +connectAttr "WIP1:place2dTexture4.wu" "WIP1:file28.wu"; +connectAttr "WIP1:place2dTexture4.wv" "WIP1:file28.wv"; +connectAttr "WIP1:place2dTexture4.re" "WIP1:file28.re"; +connectAttr "WIP1:place2dTexture4.of" "WIP1:file28.of"; +connectAttr "WIP1:place2dTexture4.r" "WIP1:file28.ro"; +connectAttr "WIP1:place2dTexture4.n" "WIP1:file28.n"; +connectAttr "WIP1:place2dTexture4.vt1" "WIP1:file28.vt1"; +connectAttr "WIP1:place2dTexture4.vt2" "WIP1:file28.vt2"; +connectAttr "WIP1:place2dTexture4.vt3" "WIP1:file28.vt3"; +connectAttr "WIP1:place2dTexture4.vc1" "WIP1:file28.vc1"; +connectAttr "WIP1:openPBRSurface8.oc" "WIP1:openPBRSurface8SG.ss"; +connectAttr "WIP1:openPBRSurface8SG.msg" "WIP1:materialInfo7.sg"; +connectAttr "WIP1:openPBRSurface8.msg" "WIP1:materialInfo7.m"; +connectAttr "WIP1:file29.ocr" "WIP1:openPBRSurface9.sr"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file29.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file29.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file29.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file29.ws"; +connectAttr "WIP1:place2dTexture5.o" "WIP1:file29.uv"; +connectAttr "WIP1:place2dTexture5.ofs" "WIP1:file29.fs"; +connectAttr "WIP1:place2dTexture5.c" "WIP1:file29.c"; +connectAttr "WIP1:place2dTexture5.tf" "WIP1:file29.tf"; +connectAttr "WIP1:place2dTexture5.rf" "WIP1:file29.rf"; +connectAttr "WIP1:place2dTexture5.mu" "WIP1:file29.mu"; +connectAttr "WIP1:place2dTexture5.mv" "WIP1:file29.mv"; +connectAttr "WIP1:place2dTexture5.s" "WIP1:file29.s"; +connectAttr "WIP1:place2dTexture5.wu" "WIP1:file29.wu"; +connectAttr "WIP1:place2dTexture5.wv" "WIP1:file29.wv"; +connectAttr "WIP1:place2dTexture5.re" "WIP1:file29.re"; +connectAttr "WIP1:place2dTexture5.of" "WIP1:file29.of"; +connectAttr "WIP1:place2dTexture5.r" "WIP1:file29.ro"; +connectAttr "WIP1:place2dTexture5.n" "WIP1:file29.n"; +connectAttr "WIP1:place2dTexture5.vt1" "WIP1:file29.vt1"; +connectAttr "WIP1:place2dTexture5.vt2" "WIP1:file29.vt2"; +connectAttr "WIP1:place2dTexture5.vt3" "WIP1:file29.vt3"; +connectAttr "WIP1:place2dTexture5.vc1" "WIP1:file29.vc1"; +connectAttr "WIP1:openPBRSurface9.oc" "WIP1:openPBRSurface9SG.ss"; +connectAttr "WIP1:openPBRSurface9SG.msg" "WIP1:materialInfo8.sg"; +connectAttr "WIP1:openPBRSurface9.msg" "WIP1:materialInfo8.m"; +connectAttr "WIP1:file30.ocr" "WIP1:openPBRSurface10.ct"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file30.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file30.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file30.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file30.ws"; +connectAttr "WIP1:place2dTexture6.o" "WIP1:file30.uv"; +connectAttr "WIP1:place2dTexture6.ofs" "WIP1:file30.fs"; +connectAttr "WIP1:place2dTexture6.c" "WIP1:file30.c"; +connectAttr "WIP1:place2dTexture6.tf" "WIP1:file30.tf"; +connectAttr "WIP1:place2dTexture6.rf" "WIP1:file30.rf"; +connectAttr "WIP1:place2dTexture6.mu" "WIP1:file30.mu"; +connectAttr "WIP1:place2dTexture6.mv" "WIP1:file30.mv"; +connectAttr "WIP1:place2dTexture6.s" "WIP1:file30.s"; +connectAttr "WIP1:place2dTexture6.wu" "WIP1:file30.wu"; +connectAttr "WIP1:place2dTexture6.wv" "WIP1:file30.wv"; +connectAttr "WIP1:place2dTexture6.re" "WIP1:file30.re"; +connectAttr "WIP1:place2dTexture6.of" "WIP1:file30.of"; +connectAttr "WIP1:place2dTexture6.r" "WIP1:file30.ro"; +connectAttr "WIP1:place2dTexture6.n" "WIP1:file30.n"; +connectAttr "WIP1:place2dTexture6.vt1" "WIP1:file30.vt1"; +connectAttr "WIP1:place2dTexture6.vt2" "WIP1:file30.vt2"; +connectAttr "WIP1:place2dTexture6.vt3" "WIP1:file30.vt3"; +connectAttr "WIP1:place2dTexture6.vc1" "WIP1:file30.vc1"; +connectAttr "WIP1:openPBRSurface10.oc" "WIP1:openPBRSurface10SG.ss"; +connectAttr "WIP1:openPBRSurface10SG.msg" "WIP1:materialInfo9.sg"; +connectAttr "WIP1:openPBRSurface10.msg" "WIP1:materialInfo9.m"; +connectAttr "WIP1:file31.ocr" "WIP1:openPBRSurface11.ctr"; +connectAttr ":defaultColorMgtGlobals.cme" "WIP1:file31.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "WIP1:file31.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "WIP1:file31.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "WIP1:file31.ws"; +connectAttr "WIP1:place2dTexture7.o" "WIP1:file31.uv"; +connectAttr "WIP1:place2dTexture7.ofs" "WIP1:file31.fs"; +connectAttr "WIP1:place2dTexture7.c" "WIP1:file31.c"; +connectAttr "WIP1:place2dTexture7.tf" "WIP1:file31.tf"; +connectAttr "WIP1:place2dTexture7.rf" "WIP1:file31.rf"; +connectAttr "WIP1:place2dTexture7.mu" "WIP1:file31.mu"; +connectAttr "WIP1:place2dTexture7.mv" "WIP1:file31.mv"; +connectAttr "WIP1:place2dTexture7.s" "WIP1:file31.s"; +connectAttr "WIP1:place2dTexture7.wu" "WIP1:file31.wu"; +connectAttr "WIP1:place2dTexture7.wv" "WIP1:file31.wv"; +connectAttr "WIP1:place2dTexture7.re" "WIP1:file31.re"; +connectAttr "WIP1:place2dTexture7.of" "WIP1:file31.of"; +connectAttr "WIP1:place2dTexture7.r" "WIP1:file31.ro"; +connectAttr "WIP1:place2dTexture7.n" "WIP1:file31.n"; +connectAttr "WIP1:place2dTexture7.vt1" "WIP1:file31.vt1"; +connectAttr "WIP1:place2dTexture7.vt2" "WIP1:file31.vt2"; +connectAttr "WIP1:place2dTexture7.vt3" "WIP1:file31.vt3"; +connectAttr "WIP1:place2dTexture7.vc1" "WIP1:file31.vc1"; +connectAttr "WIP1:openPBRSurface11.oc" "WIP1:openPBRSurface11SG.ss"; +connectAttr "WIP1:openPBRSurface11SG.msg" "WIP1:materialInfo10.sg"; +connectAttr "WIP1:openPBRSurface11.msg" "WIP1:materialInfo10.m"; +connectAttr "WIP1:place2dTexture3.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo.tgi[0].ni[0].dn" + ; +connectAttr "WIP1:openPBRSurface7.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo.tgi[0].ni[1].dn" + ; +connectAttr "WIP1:file27.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo.tgi[0].ni[2].dn" + ; +connectAttr "WIP1:openPBRSurface7SG.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo.tgi[0].ni[3].dn" + ; +connectAttr "openPBRSurface2SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface3SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface4SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface5SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface6SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface7SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface8SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface9SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface10SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface11SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface2SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface3SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface4SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface5SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface6SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface7SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface8SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface9SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface10SG.pa" ":renderPartition.st" -na; +connectAttr "WIP1:openPBRSurface11SG.pa" ":renderPartition.st" -na; +connectAttr "openPBRSurface2.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface3.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface4.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface5.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface6.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface7.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface8.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface9.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface10.msg" ":defaultShaderList1.s" -na; +connectAttr "openPBRSurface11.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface2.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface3.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface4.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface5.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface6.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface7.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface8.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface9.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface10.msg" ":defaultShaderList1.s" -na; +connectAttr "WIP1:openPBRSurface11.msg" ":defaultShaderList1.s" -na; +connectAttr "place2dTexture25.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture26.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture27.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture28.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture29.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture30.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture31.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture32.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "bump2d1.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture33.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture1.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture2.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture3.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture4.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture5.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture6.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "WIP1:place2dTexture7.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na; +connectAttr "directionalLightShape1.ltd" ":lightList1.l" -na; +connectAttr "file25.msg" ":defaultTextureList1.tx" -na; +connectAttr "file26.msg" ":defaultTextureList1.tx" -na; +connectAttr "file27.msg" ":defaultTextureList1.tx" -na; +connectAttr "file28.msg" ":defaultTextureList1.tx" -na; +connectAttr "file29.msg" ":defaultTextureList1.tx" -na; +connectAttr "file30.msg" ":defaultTextureList1.tx" -na; +connectAttr "file31.msg" ":defaultTextureList1.tx" -na; +connectAttr "file32.msg" ":defaultTextureList1.tx" -na; +connectAttr "file33.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file32.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file25.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file26.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file27.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file28.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file29.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file30.msg" ":defaultTextureList1.tx" -na; +connectAttr "WIP1:file31.msg" ":defaultTextureList1.tx" -na; +connectAttr "directionalLight1.iog" ":defaultLightSet.dsm" -na; +// End of OpenPBRShowcase.ma From f79146629209a643f8ff420949c89080fd90f765 Mon Sep 17 00:00:00 2001 From: Jerry Gamache Date: Fri, 8 Nov 2024 10:20:53 -0500 Subject: [PATCH 2/3] Use better OpenPBR Surface detection on the Maya side --- cmake/modules/FindMaya.cmake | 7 +++++++ lib/mayaUsd/CMakeLists.txt | 7 +++++++ lib/mayaUsd/fileio/shading/shadingModeRegistry.h | 2 +- lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp | 4 ++-- lib/usd/translators/CMakeLists.txt | 7 +++++++ lib/usd/translators/shading/CMakeLists.txt | 4 ++-- 6 files changed, 26 insertions(+), 5 deletions(-) diff --git a/cmake/modules/FindMaya.cmake b/cmake/modules/FindMaya.cmake index ecd792a935..36cc6746eb 100644 --- a/cmake/modules/FindMaya.cmake +++ b/cmake/modules/FindMaya.cmake @@ -16,6 +16,7 @@ # Cache variables: # MAYA_HAS_DEFAULT_MATERIAL_API Presence of a default material API on MRenderItem. # MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API Maya API provides color management support +# MAYA_HAS_OPENPBR_SURFACE_SHADER Maya has an OpenPBR shader # MAYA_NEW_POINT_SNAPPING_SUPPORT Presence of point new snapping support. # MAYA_CURRENT_UFE_CAMERA_SUPPORT Presence of MFrameContext::getCurrentUfeCameraPath. # MAYA_HAS_CRASH_DETECTION Presence of isInCrashHandler API @@ -350,6 +351,12 @@ if(MAYA_INCLUDE_DIRS AND EXISTS "${MAYA_INCLUDE_DIR}/maya/MFragmentManager.h") endif() endif() +set(MAYA_HAS_OPENPBR_SURFACE_SHADER FALSE CACHE INTERNAL "OpenPBRSurfaceShader") +if(MAYA_INCLUDE_DIRS AND EXISTS "${MAYA_INCLUDE_DIR}/maya/MFnOpenPBRSurfaceShader.h") + set(MAYA_HAS_OPENPBR_SURFACE_SHADER TRUE CACHE INTERNAL "OpenPBRSurfaceShader") + message(STATUS "Maya has OpenPBR Surface Shader") +endif() + set(MAYA_NEW_POINT_SNAPPING_SUPPORT FALSE CACHE INTERNAL "snapToActive") if (MAYA_INCLUDE_DIRS AND EXISTS "${MAYA_INCLUDE_DIR}/maya/MSelectionContext.h") file(STRINGS ${MAYA_INCLUDE_DIR}/maya/MSelectionContext.h MAYA_HAS_API REGEX "snapToActive") diff --git a/lib/mayaUsd/CMakeLists.txt b/lib/mayaUsd/CMakeLists.txt index 298ef4c85f..bcfbf0efff 100644 --- a/lib/mayaUsd/CMakeLists.txt +++ b/lib/mayaUsd/CMakeLists.txt @@ -79,6 +79,13 @@ if (MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API) ) endif() +if (MAYA_HAS_OPENPBR_SURFACE_SHADER) + target_compile_definitions(${PROJECT_NAME} + PRIVATE + MAYA_HAS_OPENPBR_SURFACE_SHADER=1 + ) +endif() + message(STATUS "MAYA_NEW_POINT_SNAPPING_SUPPORT is ${MAYA_NEW_POINT_SNAPPING_SUPPORT}") if (MAYA_NEW_POINT_SNAPPING_SUPPORT) target_compile_definitions(${PROJECT_NAME} diff --git a/lib/mayaUsd/fileio/shading/shadingModeRegistry.h b/lib/mayaUsd/fileio/shading/shadingModeRegistry.h index 2359a52365..952b1343da 100644 --- a/lib/mayaUsd/fileio/shading/shadingModeRegistry.h +++ b/lib/mayaUsd/fileio/shading/shadingModeRegistry.h @@ -46,7 +46,7 @@ TF_DECLARE_PUBLIC_TOKENS( MAYAUSD_CORE_PUBLIC, PXRUSDMAYA_SHADINGMODE_TOKENS); -#if MAYA_API_VERSION >= 20250300 +#ifdef MAYA_HAS_OPENPBR_SURFACE_SHADER // clang-format off #define PXRUSDMAYA_SHADINGCONVERSION_TOKENS \ (none) \ diff --git a/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp b/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp index 0352677556..45b73dece6 100644 --- a/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp +++ b/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp @@ -722,13 +722,13 @@ class UseRegistryShadingModeImporter if (!srcFnAttr.acceptsAttribute(mayaFnAttr)) { if (srcAttr.isChild()) { const auto srcParentPlug = srcAttr.parent(); - const auto srcParentAttr = MFnAttribute(srcParentPlug); + MFnAttribute srcParentAttr(srcParentPlug.attribute()); if (srcParentAttr.acceptsAttribute(mayaFnAttr)) { srcAttr = srcParentPlug; } } else if (mayaAttr.isChild()) { const auto mayaParentPlug = mayaAttr.parent(); - const auto mayaParentAttr = MFnAttribute(mayaParentPlug); + MFnAttribute mayaParentAttr(mayaParentPlug.attribute()); if (srcFnAttr.acceptsAttribute(mayaParentAttr)) { mayaAttr = mayaParentPlug; } diff --git a/lib/usd/translators/CMakeLists.txt b/lib/usd/translators/CMakeLists.txt index 8b5282e161..b4c27c45cd 100644 --- a/lib/usd/translators/CMakeLists.txt +++ b/lib/usd/translators/CMakeLists.txt @@ -60,6 +60,13 @@ target_compile_definitions(${TARGET_NAME} $<$:OSMac_> ) +if (MAYA_HAS_OPENPBR_SURFACE_SHADER) + target_compile_definitions(${TARGET_NAME} + PRIVATE + MAYA_HAS_OPENPBR_SURFACE_SHADER=1 + ) +endif() + mayaUsd_compile_config(${TARGET_NAME}) # ----------------------------------------------------------------------------- diff --git a/lib/usd/translators/shading/CMakeLists.txt b/lib/usd/translators/shading/CMakeLists.txt index 0514294d01..741582771c 100644 --- a/lib/usd/translators/shading/CMakeLists.txt +++ b/lib/usd/translators/shading/CMakeLists.txt @@ -23,7 +23,7 @@ target_sources(${TARGET_NAME} usdStandardSurfaceWriter.cpp ) -if (MAYA_API_VERSION VERSION_GREATER_EQUAL 20250300) +if (MAYA_HAS_OPENPBR_SURFACE_SHADER) target_sources(${TARGET_NAME} PRIVATE usdOpenPBRSurfaceWriter.cpp @@ -70,7 +70,7 @@ if (MAYA_APP_VERSION VERSION_GREATER 2022) PRIVATE WANT_MATERIALX_TRANSLATORS=1 ) - if (USD_HAS_MX_OPENPBR_SURFACE AND MAYA_API_VERSION VERSION_GREATER_EQUAL 20250300) + if (USD_HAS_MX_OPENPBR_SURFACE AND MAYA_HAS_OPENPBR_SURFACE_SHADER) target_sources(${TARGET_NAME} PRIVATE mtlxOpenPBRSurfaceReader.cpp From 16fbe8a6db5a42f088b3368d6617c224f0e9f1aa Mon Sep 17 00:00:00 2001 From: Jerry Gamache Date: Fri, 8 Nov 2024 10:24:32 -0500 Subject: [PATCH 3/3] clang-format --- lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp b/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp index 45b73dece6..97e7d8f069 100644 --- a/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp +++ b/lib/mayaUsd/fileio/shading/shadingModeUseRegistry.cpp @@ -721,13 +721,13 @@ class UseRegistryShadingModeImporter MFnAttribute mayaFnAttr(mayaAttr.attribute()); if (!srcFnAttr.acceptsAttribute(mayaFnAttr)) { if (srcAttr.isChild()) { - const auto srcParentPlug = srcAttr.parent(); + const auto srcParentPlug = srcAttr.parent(); MFnAttribute srcParentAttr(srcParentPlug.attribute()); if (srcParentAttr.acceptsAttribute(mayaFnAttr)) { srcAttr = srcParentPlug; } } else if (mayaAttr.isChild()) { - const auto mayaParentPlug = mayaAttr.parent(); + const auto mayaParentPlug = mayaAttr.parent(); MFnAttribute mayaParentAttr(mayaParentPlug.attribute()); if (srcFnAttr.acceptsAttribute(mayaParentAttr)) { mayaAttr = mayaParentPlug;