diff --git a/render_delegate/light.cpp b/render_delegate/light.cpp index 076e5f5903..9e244db301 100644 --- a/render_delegate/light.cpp +++ b/render_delegate/light.cpp @@ -624,38 +624,12 @@ void HdArnoldGenericLight::Sync(HdSceneDelegate* sceneDelegate, HdRenderParam* r } AiNodeSetDisabled(_light, !sceneDelegate->GetVisible(id)); - // get the sdf path for the light shader arnold node graph container - SdfPath lightShaderPath; - ArnoldUsdCheckForSdfPathValue(sceneDelegate->GetLightParamValue(id, TfToken("primvars:arnold:shaders")), - [&](const SdfPath& p) { lightShaderPath = p; }); + SdfPath lightShaderPath = HdArnoldLight::ComputeLightShaders(sceneDelegate, id, TfToken("primvars:arnold:shaders"), _light); - AtNode *color = nullptr; - std::vector lightFilters; HdArnoldRenderDelegate::PathSet pathSet; - - if (!lightShaderPath.IsEmpty()) { + if (!lightShaderPath.IsEmpty()) pathSet.insert(lightShaderPath); - const HdArnoldNodeGraph *nodeGraph = HdArnoldNodeGraph::GetNodeGraph(&sceneDelegate->GetRenderIndex(), lightShaderPath); - if (nodeGraph) { - color = nodeGraph->GetTerminal(str::t_color); - if (color) { - // Only certain types of light can be linked - if (AiNodeIs(_light, str::skydome_light) || - AiNodeIs(_light, str::quad_light) || - AiNodeIs(_light, str::mesh_light)) { - AiNodeLink(color, str::color, _light); - } else { - AiMsgWarning("%s : Cannot connect shader to light's color for \"%s\"", AiNodeGetName(_light), AiNodeEntryGetName(AiNodeGetNodeEntry(_light))); - } - } - - lightFilters = nodeGraph->GetTerminals(_tokens->filtersArray); - if (!lightFilters.empty()) { - AiNodeSetArray(_light, str::filters, AiArrayConvert(static_cast(lightFilters.size()), 1, - AI_TYPE_NODE, lightFilters.data())); - } - } - } + // If we previously had node graph connected, we need to call TrackDependencies // even if our list is empty. This is needed to clear the previous dependencies if (_hasNodeGraphs || !pathSet.empty()) { @@ -782,6 +756,40 @@ AtNode* GetLightNode(const HdLight* light) return static_cast(light)->GetLightNode(); } +SdfPath ComputeLightShaders(HdSceneDelegate* sceneDelegate, const SdfPath &id, const TfToken &attr, AtNode *light ) +{ + // get the sdf path for the light shader arnold node graph container + SdfPath lightShaderPath; + ArnoldUsdCheckForSdfPathValue(sceneDelegate->GetLightParamValue(id, attr), + [&](const SdfPath& p) { lightShaderPath = p; }); + + AtNode *color = nullptr; + std::vector lightFilters; + if (!lightShaderPath.IsEmpty()) { + const HdArnoldNodeGraph *nodeGraph = HdArnoldNodeGraph::GetNodeGraph(&sceneDelegate->GetRenderIndex(), lightShaderPath); + if (nodeGraph) { + color = nodeGraph->GetTerminal(str::t_color); + if (color) { + // Only certain types of light can be linked + if (AiNodeIs(light, str::skydome_light) || + AiNodeIs(light, str::quad_light) || + AiNodeIs(light, str::mesh_light)) { + AiNodeLink(color, str::color, light); + } else { + AiMsgWarning("%s : Cannot connect shader to light's color for \"%s\"", AiNodeGetName(light), AiNodeEntryGetName(AiNodeGetNodeEntry(light))); + } + } + + lightFilters = nodeGraph->GetTerminals(_tokens->filtersArray); + if (!lightFilters.empty()) { + AiNodeSetArray(light, str::filters, AiArrayConvert(static_cast(lightFilters.size()), 1, + AI_TYPE_NODE, lightFilters.data())); + } + } + } + return lightShaderPath; +} + } // namespace HdArnoldLight PXR_NAMESPACE_CLOSE_SCOPE diff --git a/render_delegate/light.h b/render_delegate/light.h index 76af1312a2..691db497ea 100755 --- a/render_delegate/light.h +++ b/render_delegate/light.h @@ -100,6 +100,8 @@ HdLight* CreateGeometryLight(HdArnoldRenderDelegate* renderDelegate, const SdfPa /// @return Pointer to the Arnold Light, can be nullptr. AtNode* GetLightNode(const HdLight* light); +SdfPath ComputeLightShaders(HdSceneDelegate* sceneDelegate, const SdfPath &id, const TfToken &attr, AtNode *light); + } // namespace HdArnoldLight PXR_NAMESPACE_CLOSE_SCOPE diff --git a/render_delegate/mesh.cpp b/render_delegate/mesh.cpp index 961ea19a69..13602637a1 100644 --- a/render_delegate/mesh.cpp +++ b/render_delegate/mesh.cpp @@ -26,6 +26,7 @@ // See the License for the specific language governing permissions and // limitations under the License. #include "mesh.h" +#include "light.h" #include #include @@ -363,6 +364,7 @@ void HdArnoldMesh::Sync( // to trigger the creation of the mesh light if (primvar.first == str::t_arnold_light) continue; + std::string primvarStr = primvar.first.GetText(); const static std::string s_lightPrefix = "arnold:light:"; // check if the attribute starts with "arnold:light:" @@ -371,9 +373,15 @@ void HdArnoldMesh::Sync( // we want to read this attribute and set it in the light node. We need to // modify the attribute name so that we remove the light prefix primvarStr.erase(7, 6); - HdArnoldSetConstantPrimvar( - _geometryLight, TfToken(primvarStr.c_str()), desc.role, desc.value, - nullptr, nullptr, nullptr); + + if (primvarStr == "arnold:shaders") { + HdArnoldLight::ComputeLightShaders(sceneDelegate, id, + TfToken("primvars:arnold:light:shaders"), meshLight); + } else { + HdArnoldSetConstantPrimvar( + _geometryLight, TfToken(primvarStr.c_str()), desc.role, desc.value, + nullptr, nullptr, nullptr); + } continue; } } diff --git a/testsuite/test_1294/README b/testsuite/test_1294/README new file mode 100644 index 0000000000..f5f8aec360 --- /dev/null +++ b/testsuite/test_1294/README @@ -0,0 +1,7 @@ +Support shader connections to mesh lights + +See #1294 + +author: sebastien ortega + +PARAMS: {'scene':'scene.usda'} \ No newline at end of file diff --git a/testsuite/test_1294/data/scene.usda b/testsuite/test_1294/data/scene.usda new file mode 100644 index 0000000000..5786724591 --- /dev/null +++ b/testsuite/test_1294/data/scene.usda @@ -0,0 +1,115 @@ +#usda 1.0 +( + defaultPrim = "grid1" + endTimeCode = 1 + framesPerSecond = 24 + metersPerUnit = 1 + startTimeCode = 1 + timeCodesPerSecond = 24 + upAxis = "Y" +) + +def Scope "materials" +{ + def ArnoldNodeGraph "arnold_materialbuilder1" + { + custom int _delegate_update + token outputs:color.connect = + + def Shader "flat1" + { + uniform token info:id = "arnold:flat" + color3f inputs:color = (0, 1, 0) + token outputs:shader + } + } +} +def Mesh "sphere1" +{ + float3[] extent = [(-1, -1, -1), (1, 1, 1)] + bool primvars:arnold:light = 1 ( + interpolation = "constant" + ) + float primvars:arnold:light:intensity = 10 ( + interpolation = "constant" + ) + string primvars:arnold:light:shaders = "/materials/arnold_materialbuilder1" ( + interpolation = "constant" + ) + double radius = 0.20000000298023224 + matrix4d xformOp:transform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 1.6804359257221222, 3.1162188053131104, 1) ) + uniform token[] xformOpOrder = ["xformOp:transform"] + + int[] faceVertexCounts = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] + int[] faceVertexIndices = [0, 1, 21, 20, 1, 2, 22, 21, 2, 3, 23, 22, 3, 4, 24, 23, 4, 5, 25, 24, 5, 6, 26, 25, 6, 7, 27, 26, 7, 8, 28, 27, 8, 9, 29, 28, 9, 10, 30, 29, 10, 11, 31, 30, 11, 12, 32, 31, 12, 13, 33, 32, 13, 14, 34, 33, 14, 15, 35, 34, 15, 16, 36, 35, 16, 17, 37, 36, 17, 18, 38, 37, 18, 19, 39, 38, 19, 0, 20, 39, 20, 21, 41, 40, 21, 22, 42, 41, 22, 23, 43, 42, 23, 24, 44, 43, 24, 25, 45, 44, 25, 26, 46, 45, 26, 27, 47, 46, 27, 28, 48, 47, 28, 29, 49, 48, 29, 30, 50, 49, 30, 31, 51, 50, 31, 32, 52, 51, 32, 33, 53, 52, 33, 34, 54, 53, 34, 35, 55, 54, 35, 36, 56, 55, 36, 37, 57, 56, 37, 38, 58, 57, 38, 39, 59, 58, 39, 20, 40, 59, 40, 41, 61, 60, 41, 42, 62, 61, 42, 43, 63, 62, 43, 44, 64, 63, 44, 45, 65, 64, 45, 46, 66, 65, 46, 47, 67, 66, 47, 48, 68, 67, 48, 49, 69, 68, 49, 50, 70, 69, 50, 51, 71, 70, 51, 52, 72, 71, 52, 53, 73, 72, 53, 54, 74, 73, 54, 55, 75, 74, 55, 56, 76, 75, 56, 57, 77, 76, 57, 58, 78, 77, 58, 59, 79, 78, 59, 40, 60, 79, 60, 61, 81, 80, 61, 62, 82, 81, 62, 63, 83, 82, 63, 64, 84, 83, 64, 65, 85, 84, 65, 66, 86, 85, 66, 67, 87, 86, 67, 68, 88, 87, 68, 69, 89, 88, 69, 70, 90, 89, 70, 71, 91, 90, 71, 72, 92, 91, 72, 73, 93, 92, 73, 74, 94, 93, 74, 75, 95, 94, 75, 76, 96, 95, 76, 77, 97, 96, 77, 78, 98, 97, 78, 79, 99, 98, 79, 60, 80, 99, 80, 81, 101, 100, 81, 82, 102, 101, 82, 83, 103, 102, 83, 84, 104, 103, 84, 85, 105, 104, 85, 86, 106, 105, 86, 87, 107, 106, 87, 88, 108, 107, 88, 89, 109, 108, 89, 90, 110, 109, 90, 91, 111, 110, 91, 92, 112, 111, 92, 93, 113, 112, 93, 94, 114, 113, 94, 95, 115, 114, 95, 96, 116, 115, 96, 97, 117, 116, 97, 98, 118, 117, 98, 99, 119, 118, 99, 80, 100, 119, 100, 101, 121, 120, 101, 102, 122, 121, 102, 103, 123, 122, 103, 104, 124, 123, 104, 105, 125, 124, 105, 106, 126, 125, 106, 107, 127, 126, 107, 108, 128, 127, 108, 109, 129, 128, 109, 110, 130, 129, 110, 111, 131, 130, 111, 112, 132, 131, 112, 113, 133, 132, 113, 114, 134, 133, 114, 115, 135, 134, 115, 116, 136, 135, 116, 117, 137, 136, 117, 118, 138, 137, 118, 119, 139, 138, 119, 100, 120, 139, 120, 121, 141, 140, 121, 122, 142, 141, 122, 123, 143, 142, 123, 124, 144, 143, 124, 125, 145, 144, 125, 126, 146, 145, 126, 127, 147, 146, 127, 128, 148, 147, 128, 129, 149, 148, 129, 130, 150, 149, 130, 131, 151, 150, 131, 132, 152, 151, 132, 133, 153, 152, 133, 134, 154, 153, 134, 135, 155, 154, 135, 136, 156, 155, 136, 137, 157, 156, 137, 138, 158, 157, 138, 139, 159, 158, 139, 120, 140, 159, 140, 141, 161, 160, 141, 142, 162, 161, 142, 143, 163, 162, 143, 144, 164, 163, 144, 145, 165, 164, 145, 146, 166, 165, 146, 147, 167, 166, 147, 148, 168, 167, 148, 149, 169, 168, 149, 150, 170, 169, 150, 151, 171, 170, 151, 152, 172, 171, 152, 153, 173, 172, 153, 154, 174, 173, 154, 155, 175, 174, 155, 156, 176, 175, 156, 157, 177, 176, 157, 158, 178, 177, 158, 159, 179, 178, 159, 140, 160, 179, 160, 161, 181, 180, 161, 162, 182, 181, 162, 163, 183, 182, 163, 164, 184, 183, 164, 165, 185, 184, 165, 166, 186, 185, 166, 167, 187, 186, 167, 168, 188, 187, 168, 169, 189, 188, 169, 170, 190, 189, 170, 171, 191, 190, 171, 172, 192, 191, 172, 173, 193, 192, 173, 174, 194, 193, 174, 175, 195, 194, 175, 176, 196, 195, 176, 177, 197, 196, 177, 178, 198, 197, 178, 179, 199, 198, 179, 160, 180, 199, 180, 181, 201, 200, 181, 182, 202, 201, 182, 183, 203, 202, 183, 184, 204, 203, 184, 185, 205, 204, 185, 186, 206, 205, 186, 187, 207, 206, 187, 188, 208, 207, 188, 189, 209, 208, 189, 190, 210, 209, 190, 191, 211, 210, 191, 192, 212, 211, 192, 193, 213, 212, 193, 194, 214, 213, 194, 195, 215, 214, 195, 196, 216, 215, 196, 197, 217, 216, 197, 198, 218, 217, 198, 199, 219, 218, 199, 180, 200, 219, 200, 201, 221, 220, 201, 202, 222, 221, 202, 203, 223, 222, 203, 204, 224, 223, 204, 205, 225, 224, 205, 206, 226, 225, 206, 207, 227, 226, 207, 208, 228, 227, 208, 209, 229, 228, 209, 210, 230, 229, 210, 211, 231, 230, 211, 212, 232, 231, 212, 213, 233, 232, 213, 214, 234, 233, 214, 215, 235, 234, 215, 216, 236, 235, 216, 217, 237, 236, 217, 218, 238, 237, 218, 219, 239, 238, 219, 200, 220, 239, 220, 221, 241, 240, 221, 222, 242, 241, 222, 223, 243, 242, 223, 224, 244, 243, 224, 225, 245, 244, 225, 226, 246, 245, 226, 227, 247, 246, 227, 228, 248, 247, 228, 229, 249, 248, 229, 230, 250, 249, 230, 231, 251, 250, 231, 232, 252, 251, 232, 233, 253, 252, 233, 234, 254, 253, 234, 235, 255, 254, 235, 236, 256, 255, 236, 237, 257, 256, 237, 238, 258, 257, 238, 239, 259, 258, 239, 220, 240, 259, 240, 241, 261, 260, 241, 242, 262, 261, 242, 243, 263, 262, 243, 244, 264, 263, 244, 245, 265, 264, 245, 246, 266, 265, 246, 247, 267, 266, 247, 248, 268, 267, 248, 249, 269, 268, 249, 250, 270, 269, 250, 251, 271, 270, 251, 252, 272, 271, 252, 253, 273, 272, 253, 254, 274, 273, 254, 255, 275, 274, 255, 256, 276, 275, 256, 257, 277, 276, 257, 258, 278, 277, 258, 259, 279, 278, 259, 240, 260, 279, 260, 261, 281, 280, 261, 262, 282, 281, 262, 263, 283, 282, 263, 264, 284, 283, 264, 265, 285, 284, 265, 266, 286, 285, 266, 267, 287, 286, 267, 268, 288, 287, 268, 269, 289, 288, 269, 270, 290, 289, 270, 271, 291, 290, 271, 272, 292, 291, 272, 273, 293, 292, 273, 274, 294, 293, 274, 275, 295, 294, 275, 276, 296, 295, 276, 277, 297, 296, 277, 278, 298, 297, 278, 279, 299, 298, 279, 260, 280, 299, 280, 281, 301, 300, 281, 282, 302, 301, 282, 283, 303, 302, 283, 284, 304, 303, 284, 285, 305, 304, 285, 286, 306, 305, 286, 287, 307, 306, 287, 288, 308, 307, 288, 289, 309, 308, 289, 290, 310, 309, 290, 291, 311, 310, 291, 292, 312, 311, 292, 293, 313, 312, 293, 294, 314, 313, 294, 295, 315, 314, 295, 296, 316, 315, 296, 297, 317, 316, 297, 298, 318, 317, 298, 299, 319, 318, 299, 280, 300, 319, 300, 301, 321, 320, 301, 302, 322, 321, 302, 303, 323, 322, 303, 304, 324, 323, 304, 305, 325, 324, 305, 306, 326, 325, 306, 307, 327, 326, 307, 308, 328, 327, 308, 309, 329, 328, 309, 310, 330, 329, 310, 311, 331, 330, 311, 312, 332, 331, 312, 313, 333, 332, 313, 314, 334, 333, 314, 315, 335, 334, 315, 316, 336, 335, 316, 317, 337, 336, 317, 318, 338, 337, 318, 319, 339, 338, 319, 300, 320, 339, 320, 321, 341, 340, 321, 322, 342, 341, 322, 323, 343, 342, 323, 324, 344, 343, 324, 325, 345, 344, 325, 326, 346, 345, 326, 327, 347, 346, 327, 328, 348, 347, 328, 329, 349, 348, 329, 330, 350, 349, 330, 331, 351, 350, 331, 332, 352, 351, 332, 333, 353, 352, 333, 334, 354, 353, 334, 335, 355, 354, 335, 336, 356, 355, 336, 337, 357, 356, 337, 338, 358, 357, 338, 339, 359, 358, 339, 320, 340, 359, 340, 341, 361, 360, 341, 342, 362, 361, 342, 343, 363, 362, 343, 344, 364, 363, 344, 345, 365, 364, 345, 346, 366, 365, 346, 347, 367, 366, 347, 348, 368, 367, 348, 349, 369, 368, 349, 350, 370, 369, 350, 351, 371, 370, 351, 352, 372, 371, 352, 353, 373, 372, 353, 354, 374, 373, 354, 355, 375, 374, 355, 356, 376, 375, 356, 357, 377, 376, 357, 358, 378, 377, 358, 359, 379, 378, 359, 340, 360, 379, 1, 0, 380, 2, 1, 380, 3, 2, 380, 4, 3, 380, 5, 4, 380, 6, 5, 380, 7, 6, 380, 8, 7, 380, 9, 8, 380, 10, 9, 380, 11, 10, 380, 12, 11, 380, 13, 12, 380, 14, 13, 380, 15, 14, 380, 16, 15, 380, 17, 16, 380, 18, 17, 380, 19, 18, 380, 0, 19, 380, 360, 361, 381, 361, 362, 381, 362, 363, 381, 363, 364, 381, 364, 365, 381, 365, 366, 381, 366, 367, 381, 367, 368, 381, 368, 369, 381, 369, 370, 381, 370, 371, 381, 371, 372, 381, 372, 373, 381, 373, 374, 381, 374, 375, 381, 375, 376, 381, 376, 377, 381, 377, 378, 381, 378, 379, 381, 379, 360, 381] + token interpolateBoundary = "edgeAndCorner" + uniform token orientation = "rightHanded" + float3[] points = [(0.148778, -0.987688, -0.0483409), (0.126558, -0.987688, -0.0919499), (0.0919499, -0.987688, -0.126558), (0.0483409, -0.987688, -0.148778), (0, -0.987688, -0.156435), (-0.0483409, -0.987688, -0.148778), (-0.0919499, -0.987688, -0.126558), (-0.126558, -0.987688, -0.0919499), (-0.148778, -0.987688, -0.0483409), (-0.156435, -0.987688, 0), (-0.148778, -0.987688, 0.0483409), (-0.126558, -0.987688, 0.0919499), (-0.0919499, -0.987688, 0.126558), (-0.0483409, -0.987688, 0.148778), (-4.66211e-09, -0.987688, 0.156434), (0.0483409, -0.987688, 0.148778), (0.0919499, -0.987688, 0.126558), (0.126558, -0.987688, 0.0919499), (0.148778, -0.987688, 0.0483409), (0.156434, -0.987688, 0), (0.293893, -0.951057, -0.0954916), (0.25, -0.951057, -0.181636), (0.181636, -0.951057, -0.25), (0.0954916, -0.951057, -0.293893), (0, -0.951057, -0.309017), (-0.0954916, -0.951057, -0.293893), (-0.181636, -0.951057, -0.25), (-0.25, -0.951057, -0.181636), (-0.293893, -0.951057, -0.0954915), (-0.309017, -0.951057, 0), (-0.293893, -0.951057, 0.0954915), (-0.25, -0.951057, 0.181636), (-0.181636, -0.951057, 0.25), (-0.0954915, -0.951057, 0.293893), (-9.20942e-09, -0.951057, 0.309017), (0.0954915, -0.951057, 0.293893), (0.181636, -0.951057, 0.25), (0.25, -0.951057, 0.181636), (0.293893, -0.951057, 0.0954915), (0.309017, -0.951057, 0), (0.431771, -0.891007, -0.140291), (0.367286, -0.891007, -0.266849), (0.266849, -0.891007, -0.367286), (0.140291, -0.891007, -0.431771), (0, -0.891007, -0.453991), (-0.140291, -0.891007, -0.431771), (-0.266849, -0.891007, -0.367286), (-0.367286, -0.891007, -0.266849), (-0.431771, -0.891007, -0.140291), (-0.453991, -0.891007, 0), (-0.431771, -0.891007, 0.140291), (-0.367286, -0.891007, 0.266849), (-0.266849, -0.891007, 0.367286), (-0.140291, -0.891007, 0.431771), (-1.353e-08, -0.891007, 0.453991), (0.140291, -0.891007, 0.431771), (0.266849, -0.891007, 0.367286), (0.367286, -0.891007, 0.266849), (0.431771, -0.891007, 0.140291), (0.453991, -0.891007, 0), (0.559017, -0.809017, -0.181636), (0.475529, -0.809017, -0.345492), (0.345492, -0.809017, -0.475529), (0.181636, -0.809017, -0.559017), (0, -0.809017, -0.587786), (-0.181636, -0.809017, -0.559017), (-0.345492, -0.809017, -0.475528), (-0.475528, -0.809017, -0.345492), (-0.559017, -0.809017, -0.181636), (-0.587785, -0.809017, 0), (-0.559017, -0.809017, 0.181636), (-0.475528, -0.809017, 0.345492), (-0.345492, -0.809017, 0.475528), (-0.181636, -0.809017, 0.559017), (-1.75174e-08, -0.809017, 0.587785), (0.181636, -0.809017, 0.559017), (0.345491, -0.809017, 0.475528), (0.475528, -0.809017, 0.345492), (0.559017, -0.809017, 0.181636), (0.587785, -0.809017, 0), (0.672499, -0.707107, -0.218508), (0.572062, -0.707107, -0.415627), (0.415627, -0.707107, -0.572062), (0.218508, -0.707107, -0.672499), (0, -0.707107, -0.707107), (-0.218508, -0.707107, -0.672499), (-0.415627, -0.707107, -0.572062), (-0.572062, -0.707107, -0.415627), (-0.672499, -0.707107, -0.218508), (-0.707107, -0.707107, 0), (-0.672499, -0.707107, 0.218508), (-0.572062, -0.707107, 0.415627), (-0.415627, -0.707107, 0.572061), (-0.218508, -0.707107, 0.672499), (-2.10734e-08, -0.707107, 0.707107), (0.218508, -0.707107, 0.672499), (0.415627, -0.707107, 0.572061), (0.572061, -0.707107, 0.415627), (0.672499, -0.707107, 0.218508), (0.707107, -0.707107, 0), (0.769421, -0.587785, -0.25), (0.654509, -0.587785, -0.475529), (0.475529, -0.587785, -0.654509), (0.25, -0.587785, -0.769421), (0, -0.587785, -0.809017), (-0.25, -0.587785, -0.769421), (-0.475528, -0.587785, -0.654509), (-0.654509, -0.587785, -0.475528), (-0.769421, -0.587785, -0.25), (-0.809017, -0.587785, 0), (-0.769421, -0.587785, 0.25), (-0.654509, -0.587785, 0.475528), (-0.475528, -0.587785, 0.654509), (-0.25, -0.587785, 0.769421), (-2.41106e-08, -0.587785, 0.809017), (0.25, -0.587785, 0.769421), (0.475528, -0.587785, 0.654509), (0.654509, -0.587785, 0.475528), (0.769421, -0.587785, 0.25), (0.809017, -0.587785, 0), (0.847398, -0.453991, -0.275336), (0.72084, -0.453991, -0.523721), (0.523721, -0.453991, -0.72084), (0.275336, -0.453991, -0.847398), (0, -0.453991, -0.891007), (-0.275336, -0.453991, -0.847398), (-0.523721, -0.453991, -0.72084), (-0.72084, -0.453991, -0.523721), (-0.847398, -0.453991, -0.275336), (-0.891007, -0.453991, 0), (-0.847398, -0.453991, 0.275336), (-0.72084, -0.453991, 0.523721), (-0.523721, -0.453991, 0.72084), (-0.275336, -0.453991, 0.847398), (-2.65541e-08, -0.453991, 0.891007), (0.275336, -0.453991, 0.847398), (0.523721, -0.453991, 0.72084), (0.720839, -0.453991, 0.523721), (0.847398, -0.453991, 0.275336), (0.891007, -0.453991, 0), (0.904509, -0.309017, -0.293893), (0.769421, -0.309017, -0.559017), (0.559017, -0.309017, -0.769421), (0.293893, -0.309017, -0.904509), (0, -0.309017, -0.951057), (-0.293893, -0.309017, -0.904509), (-0.559017, -0.309017, -0.769421), (-0.769421, -0.309017, -0.559017), (-0.904509, -0.309017, -0.293893), (-0.951057, -0.309017, 0), (-0.904509, -0.309017, 0.293893), (-0.769421, -0.309017, 0.559017), (-0.559017, -0.309017, 0.769421), (-0.293893, -0.309017, 0.904509), (-2.83437e-08, -0.309017, 0.951057), (0.293893, -0.309017, 0.904509), (0.559017, -0.309017, 0.769421), (0.769421, -0.309017, 0.559017), (0.904509, -0.309017, 0.293893), (0.951057, -0.309017, 0), (0.939348, -0.156434, -0.305213), (0.799057, -0.156434, -0.580549), (0.580549, -0.156434, -0.799057), (0.305213, -0.156434, -0.939348), (0, -0.156434, -0.987689), (-0.305213, -0.156434, -0.939348), (-0.580549, -0.156434, -0.799057), (-0.799057, -0.156434, -0.580549), (-0.939348, -0.156434, -0.305213), (-0.987689, -0.156434, 0), (-0.939348, -0.156434, 0.305213), (-0.799057, -0.156434, 0.580549), (-0.580549, -0.156434, 0.799057), (-0.305213, -0.156434, 0.939348), (-2.94354e-08, -0.156434, 0.987688), (0.305212, -0.156434, 0.939348), (0.580549, -0.156434, 0.799057), (0.799057, -0.156434, 0.580549), (0.939348, -0.156434, 0.305212), (0.987688, -0.156434, 0), (0.951057, 0, -0.309017), (0.809018, 0, -0.587786), (0.587786, 0, -0.809017), (0.309017, 0, -0.951057), (0, 0, -1), (-0.309017, 0, -0.951057), (-0.587785, 0, -0.809017), (-0.809017, 0, -0.587785), (-0.951057, 0, -0.309017), (-1, 0, 0), (-0.951057, 0, 0.309017), (-0.809017, 0, 0.587785), (-0.587785, 0, 0.809017), (-0.309017, 0, 0.951057), (-2.98023e-08, 0, 1), (0.309017, 0, 0.951057), (0.587785, 0, 0.809017), (0.809017, 0, 0.587785), (0.951057, 0, 0.309017), (1, 0, 0), (0.939348, 0.156434, -0.305213), (0.799057, 0.156434, -0.580549), (0.580549, 0.156434, -0.799057), (0.305213, 0.156434, -0.939348), (0, 0.156434, -0.987689), (-0.305213, 0.156434, -0.939348), (-0.580549, 0.156434, -0.799057), (-0.799057, 0.156434, -0.580549), (-0.939348, 0.156434, -0.305213), (-0.987689, 0.156434, 0), (-0.939348, 0.156434, 0.305213), (-0.799057, 0.156434, 0.580549), (-0.580549, 0.156434, 0.799057), (-0.305213, 0.156434, 0.939348), (-2.94354e-08, 0.156434, 0.987688), (0.305212, 0.156434, 0.939348), (0.580549, 0.156434, 0.799057), (0.799057, 0.156434, 0.580549), (0.939348, 0.156434, 0.305212), (0.987688, 0.156434, 0), (0.904509, 0.309017, -0.293893), (0.769421, 0.309017, -0.559017), (0.559017, 0.309017, -0.769421), (0.293893, 0.309017, -0.904509), (0, 0.309017, -0.951057), (-0.293893, 0.309017, -0.904509), (-0.559017, 0.309017, -0.769421), (-0.769421, 0.309017, -0.559017), (-0.904509, 0.309017, -0.293893), (-0.951057, 0.309017, 0), (-0.904509, 0.309017, 0.293893), (-0.769421, 0.309017, 0.559017), (-0.559017, 0.309017, 0.769421), (-0.293893, 0.309017, 0.904509), (-2.83437e-08, 0.309017, 0.951057), (0.293893, 0.309017, 0.904509), (0.559017, 0.309017, 0.769421), (0.769421, 0.309017, 0.559017), (0.904509, 0.309017, 0.293893), (0.951057, 0.309017, 0), (0.847398, 0.453991, -0.275336), (0.72084, 0.453991, -0.523721), (0.523721, 0.453991, -0.72084), (0.275336, 0.453991, -0.847398), (0, 0.453991, -0.891007), (-0.275336, 0.453991, -0.847398), (-0.523721, 0.453991, -0.72084), (-0.72084, 0.453991, -0.523721), (-0.847398, 0.453991, -0.275336), (-0.891007, 0.453991, 0), (-0.847398, 0.453991, 0.275336), (-0.72084, 0.453991, 0.523721), (-0.523721, 0.453991, 0.72084), (-0.275336, 0.453991, 0.847398), (-2.65541e-08, 0.453991, 0.891007), (0.275336, 0.453991, 0.847398), (0.523721, 0.453991, 0.72084), (0.720839, 0.453991, 0.523721), (0.847398, 0.453991, 0.275336), (0.891007, 0.453991, 0), (0.769421, 0.587785, -0.25), (0.654509, 0.587785, -0.475529), (0.475529, 0.587785, -0.654509), (0.25, 0.587785, -0.769421), (0, 0.587785, -0.809017), (-0.25, 0.587785, -0.769421), (-0.475528, 0.587785, -0.654509), (-0.654509, 0.587785, -0.475528), (-0.769421, 0.587785, -0.25), (-0.809017, 0.587785, 0), (-0.769421, 0.587785, 0.25), (-0.654509, 0.587785, 0.475528), (-0.475528, 0.587785, 0.654509), (-0.25, 0.587785, 0.769421), (-2.41106e-08, 0.587785, 0.809017), (0.25, 0.587785, 0.769421), (0.475528, 0.587785, 0.654509), (0.654509, 0.587785, 0.475528), (0.769421, 0.587785, 0.25), (0.809017, 0.587785, 0), (0.672499, 0.707107, -0.218508), (0.572062, 0.707107, -0.415627), (0.415627, 0.707107, -0.572062), (0.218508, 0.707107, -0.672499), (0, 0.707107, -0.707107), (-0.218508, 0.707107, -0.672499), (-0.415627, 0.707107, -0.572062), (-0.572062, 0.707107, -0.415627), (-0.672499, 0.707107, -0.218508), (-0.707107, 0.707107, 0), (-0.672499, 0.707107, 0.218508), (-0.572062, 0.707107, 0.415627), (-0.415627, 0.707107, 0.572061), (-0.218508, 0.707107, 0.672499), (-2.10734e-08, 0.707107, 0.707107), (0.218508, 0.707107, 0.672499), (0.415627, 0.707107, 0.572061), (0.572061, 0.707107, 0.415627), (0.672499, 0.707107, 0.218508), (0.707107, 0.707107, 0), (0.559017, 0.809017, -0.181636), (0.475529, 0.809017, -0.345492), (0.345492, 0.809017, -0.475529), (0.181636, 0.809017, -0.559017), (0, 0.809017, -0.587786), (-0.181636, 0.809017, -0.559017), (-0.345492, 0.809017, -0.475528), (-0.475528, 0.809017, -0.345492), (-0.559017, 0.809017, -0.181636), (-0.587785, 0.809017, 0), (-0.559017, 0.809017, 0.181636), (-0.475528, 0.809017, 0.345492), (-0.345492, 0.809017, 0.475528), (-0.181636, 0.809017, 0.559017), (-1.75174e-08, 0.809017, 0.587785), (0.181636, 0.809017, 0.559017), (0.345491, 0.809017, 0.475528), (0.475528, 0.809017, 0.345492), (0.559017, 0.809017, 0.181636), (0.587785, 0.809017, 0), (0.431771, 0.891007, -0.140291), (0.367286, 0.891007, -0.266849), (0.266849, 0.891007, -0.367286), (0.140291, 0.891007, -0.431771), (0, 0.891007, -0.453991), (-0.140291, 0.891007, -0.431771), (-0.266849, 0.891007, -0.367286), (-0.367286, 0.891007, -0.266849), (-0.431771, 0.891007, -0.140291), (-0.453991, 0.891007, 0), (-0.431771, 0.891007, 0.140291), (-0.367286, 0.891007, 0.266849), (-0.266849, 0.891007, 0.367286), (-0.140291, 0.891007, 0.431771), (-1.353e-08, 0.891007, 0.453991), (0.140291, 0.891007, 0.431771), (0.266849, 0.891007, 0.367286), (0.367286, 0.891007, 0.266849), (0.431771, 0.891007, 0.140291), (0.453991, 0.891007, 0), (0.293893, 0.951057, -0.0954916), (0.25, 0.951057, -0.181636), (0.181636, 0.951057, -0.25), (0.0954916, 0.951057, -0.293893), (0, 0.951057, -0.309017), (-0.0954916, 0.951057, -0.293893), (-0.181636, 0.951057, -0.25), (-0.25, 0.951057, -0.181636), (-0.293893, 0.951057, -0.0954915), (-0.309017, 0.951057, 0), (-0.293893, 0.951057, 0.0954915), (-0.25, 0.951057, 0.181636), (-0.181636, 0.951057, 0.25), (-0.0954915, 0.951057, 0.293893), (-9.20942e-09, 0.951057, 0.309017), (0.0954915, 0.951057, 0.293893), (0.181636, 0.951057, 0.25), (0.25, 0.951057, 0.181636), (0.293893, 0.951057, 0.0954915), (0.309017, 0.951057, 0), (0.148778, 0.987688, -0.0483409), (0.126558, 0.987688, -0.0919499), (0.0919499, 0.987688, -0.126558), (0.0483409, 0.987688, -0.148778), (0, 0.987688, -0.156435), (-0.0483409, 0.987688, -0.148778), (-0.0919499, 0.987688, -0.126558), (-0.126558, 0.987688, -0.0919499), (-0.148778, 0.987688, -0.0483409), (-0.156435, 0.987688, 0), (-0.148778, 0.987688, 0.0483409), (-0.126558, 0.987688, 0.0919499), (-0.0919499, 0.987688, 0.126558), (-0.0483409, 0.987688, 0.148778), (-4.66211e-09, 0.987688, 0.156434), (0.0483409, 0.987688, 0.148778), (0.0919499, 0.987688, 0.126558), (0.126558, 0.987688, 0.0919499), (0.148778, 0.987688, 0.0483409), (0.156434, 0.987688, 0), (0, -1, 0), (0, 1, 0)] + string primvars:__handleid = "${user:ModelInstance}_pSphere1" ( + interpolation = "constant" + ) + color3f[] primvars:displayColor = [(0.217638, 0.217638, 0.217638)] + float3[] primvars:ModelBuildRefPose = [(0.148778, -0.987688, -0.0483409), (0.126558, -0.987688, -0.0919499), (0.0919499, -0.987688, -0.126558), (0.0483409, -0.987688, -0.148778), (0, -0.987688, -0.156435), (-0.0483409, -0.987688, -0.148778), (-0.0919499, -0.987688, -0.126558), (-0.126558, -0.987688, -0.0919499), (-0.148778, -0.987688, -0.0483409), (-0.156435, -0.987688, 0), (-0.148778, -0.987688, 0.0483409), (-0.126558, -0.987688, 0.0919499), (-0.0919499, -0.987688, 0.126558), (-0.0483409, -0.987688, 0.148778), (-4.66211e-09, -0.987688, 0.156434), (0.0483409, -0.987688, 0.148778), (0.0919499, -0.987688, 0.126558), (0.126558, -0.987688, 0.0919499), (0.148778, -0.987688, 0.0483409), (0.156434, -0.987688, 0), (0.293893, -0.951057, -0.0954916), (0.25, -0.951057, -0.181636), (0.181636, -0.951057, -0.25), (0.0954916, -0.951057, -0.293893), (0, -0.951057, -0.309017), (-0.0954916, -0.951057, -0.293893), (-0.181636, -0.951057, -0.25), (-0.25, -0.951057, -0.181636), (-0.293893, -0.951057, -0.0954915), (-0.309017, -0.951057, 0), (-0.293893, -0.951057, 0.0954915), (-0.25, -0.951057, 0.181636), (-0.181636, -0.951057, 0.25), (-0.0954915, -0.951057, 0.293893), (-9.20942e-09, -0.951057, 0.309017), (0.0954915, -0.951057, 0.293893), (0.181636, -0.951057, 0.25), (0.25, -0.951057, 0.181636), (0.293893, -0.951057, 0.0954915), (0.309017, -0.951057, 0), (0.431771, -0.891007, -0.140291), (0.367286, -0.891007, -0.266849), (0.266849, -0.891007, -0.367286), (0.140291, -0.891007, -0.431771), (0, -0.891007, -0.453991), (-0.140291, -0.891007, -0.431771), (-0.266849, -0.891007, -0.367286), (-0.367286, -0.891007, -0.266849), (-0.431771, -0.891007, -0.140291), (-0.453991, -0.891007, 0), (-0.431771, -0.891007, 0.140291), (-0.367286, -0.891007, 0.266849), (-0.266849, -0.891007, 0.367286), (-0.140291, -0.891007, 0.431771), (-1.353e-08, -0.891007, 0.453991), (0.140291, -0.891007, 0.431771), (0.266849, -0.891007, 0.367286), (0.367286, -0.891007, 0.266849), (0.431771, -0.891007, 0.140291), (0.453991, -0.891007, 0), (0.559017, -0.809017, -0.181636), (0.475529, -0.809017, -0.345492), (0.345492, -0.809017, -0.475529), (0.181636, -0.809017, -0.559017), (0, -0.809017, -0.587786), (-0.181636, -0.809017, -0.559017), (-0.345492, -0.809017, -0.475528), (-0.475528, -0.809017, -0.345492), (-0.559017, -0.809017, -0.181636), (-0.587785, -0.809017, 0), (-0.559017, -0.809017, 0.181636), (-0.475528, -0.809017, 0.345492), (-0.345492, -0.809017, 0.475528), (-0.181636, -0.809017, 0.559017), (-1.75174e-08, -0.809017, 0.587785), (0.181636, -0.809017, 0.559017), (0.345491, -0.809017, 0.475528), (0.475528, -0.809017, 0.345492), (0.559017, -0.809017, 0.181636), (0.587785, -0.809017, 0), (0.672499, -0.707107, -0.218508), (0.572062, -0.707107, -0.415627), (0.415627, -0.707107, -0.572062), (0.218508, -0.707107, -0.672499), (0, -0.707107, -0.707107), (-0.218508, -0.707107, -0.672499), (-0.415627, -0.707107, -0.572062), (-0.572062, -0.707107, -0.415627), (-0.672499, -0.707107, -0.218508), (-0.707107, -0.707107, 0), (-0.672499, -0.707107, 0.218508), (-0.572062, -0.707107, 0.415627), (-0.415627, -0.707107, 0.572061), (-0.218508, -0.707107, 0.672499), (-2.10734e-08, -0.707107, 0.707107), (0.218508, -0.707107, 0.672499), (0.415627, -0.707107, 0.572061), (0.572061, -0.707107, 0.415627), (0.672499, -0.707107, 0.218508), (0.707107, -0.707107, 0), (0.769421, -0.587785, -0.25), (0.654509, -0.587785, -0.475529), (0.475529, -0.587785, -0.654509), (0.25, -0.587785, -0.769421), (0, -0.587785, -0.809017), (-0.25, -0.587785, -0.769421), (-0.475528, -0.587785, -0.654509), (-0.654509, -0.587785, -0.475528), (-0.769421, -0.587785, -0.25), (-0.809017, -0.587785, 0), (-0.769421, -0.587785, 0.25), (-0.654509, -0.587785, 0.475528), (-0.475528, -0.587785, 0.654509), (-0.25, -0.587785, 0.769421), (-2.41106e-08, -0.587785, 0.809017), (0.25, -0.587785, 0.769421), (0.475528, -0.587785, 0.654509), (0.654509, -0.587785, 0.475528), (0.769421, -0.587785, 0.25), (0.809017, -0.587785, 0), (0.847398, -0.453991, -0.275336), (0.72084, -0.453991, -0.523721), (0.523721, -0.453991, -0.72084), (0.275336, -0.453991, -0.847398), (0, -0.453991, -0.891007), (-0.275336, -0.453991, -0.847398), (-0.523721, -0.453991, -0.72084), (-0.72084, -0.453991, -0.523721), (-0.847398, -0.453991, -0.275336), (-0.891007, -0.453991, 0), (-0.847398, -0.453991, 0.275336), (-0.72084, -0.453991, 0.523721), (-0.523721, -0.453991, 0.72084), (-0.275336, -0.453991, 0.847398), (-2.65541e-08, -0.453991, 0.891007), (0.275336, -0.453991, 0.847398), (0.523721, -0.453991, 0.72084), (0.720839, -0.453991, 0.523721), (0.847398, -0.453991, 0.275336), (0.891007, -0.453991, 0), (0.904509, -0.309017, -0.293893), (0.769421, -0.309017, -0.559017), (0.559017, -0.309017, -0.769421), (0.293893, -0.309017, -0.904509), (0, -0.309017, -0.951057), (-0.293893, -0.309017, -0.904509), (-0.559017, -0.309017, -0.769421), (-0.769421, -0.309017, -0.559017), (-0.904509, -0.309017, -0.293893), (-0.951057, -0.309017, 0), (-0.904509, -0.309017, 0.293893), (-0.769421, -0.309017, 0.559017), (-0.559017, -0.309017, 0.769421), (-0.293893, -0.309017, 0.904509), (-2.83437e-08, -0.309017, 0.951057), (0.293893, -0.309017, 0.904509), (0.559017, -0.309017, 0.769421), (0.769421, -0.309017, 0.559017), (0.904509, -0.309017, 0.293893), (0.951057, -0.309017, 0), (0.939348, -0.156434, -0.305213), (0.799057, -0.156434, -0.580549), (0.580549, -0.156434, -0.799057), (0.305213, -0.156434, -0.939348), (0, -0.156434, -0.987689), (-0.305213, -0.156434, -0.939348), (-0.580549, -0.156434, -0.799057), (-0.799057, -0.156434, -0.580549), (-0.939348, -0.156434, -0.305213), (-0.987689, -0.156434, 0), (-0.939348, -0.156434, 0.305213), (-0.799057, -0.156434, 0.580549), (-0.580549, -0.156434, 0.799057), (-0.305213, -0.156434, 0.939348), (-2.94354e-08, -0.156434, 0.987688), (0.305212, -0.156434, 0.939348), (0.580549, -0.156434, 0.799057), (0.799057, -0.156434, 0.580549), (0.939348, -0.156434, 0.305212), (0.987688, -0.156434, 0), (0.951057, 0, -0.309017), (0.809018, 0, -0.587786), (0.587786, 0, -0.809017), (0.309017, 0, -0.951057), (0, 0, -1), (-0.309017, 0, -0.951057), (-0.587785, 0, -0.809017), (-0.809017, 0, -0.587785), (-0.951057, 0, -0.309017), (-1, 0, 0), (-0.951057, 0, 0.309017), (-0.809017, 0, 0.587785), (-0.587785, 0, 0.809017), (-0.309017, 0, 0.951057), (-2.98023e-08, 0, 1), (0.309017, 0, 0.951057), (0.587785, 0, 0.809017), (0.809017, 0, 0.587785), (0.951057, 0, 0.309017), (1, 0, 0), (0.939348, 0.156434, -0.305213), (0.799057, 0.156434, -0.580549), (0.580549, 0.156434, -0.799057), (0.305213, 0.156434, -0.939348), (0, 0.156434, -0.987689), (-0.305213, 0.156434, -0.939348), (-0.580549, 0.156434, -0.799057), (-0.799057, 0.156434, -0.580549), (-0.939348, 0.156434, -0.305213), (-0.987689, 0.156434, 0), (-0.939348, 0.156434, 0.305213), (-0.799057, 0.156434, 0.580549), (-0.580549, 0.156434, 0.799057), (-0.305213, 0.156434, 0.939348), (-2.94354e-08, 0.156434, 0.987688), (0.305212, 0.156434, 0.939348), (0.580549, 0.156434, 0.799057), (0.799057, 0.156434, 0.580549), (0.939348, 0.156434, 0.305212), (0.987688, 0.156434, 0), (0.904509, 0.309017, -0.293893), (0.769421, 0.309017, -0.559017), (0.559017, 0.309017, -0.769421), (0.293893, 0.309017, -0.904509), (0, 0.309017, -0.951057), (-0.293893, 0.309017, -0.904509), (-0.559017, 0.309017, -0.769421), (-0.769421, 0.309017, -0.559017), (-0.904509, 0.309017, -0.293893), (-0.951057, 0.309017, 0), (-0.904509, 0.309017, 0.293893), (-0.769421, 0.309017, 0.559017), (-0.559017, 0.309017, 0.769421), (-0.293893, 0.309017, 0.904509), (-2.83437e-08, 0.309017, 0.951057), (0.293893, 0.309017, 0.904509), (0.559017, 0.309017, 0.769421), (0.769421, 0.309017, 0.559017), (0.904509, 0.309017, 0.293893), (0.951057, 0.309017, 0), (0.847398, 0.453991, -0.275336), (0.72084, 0.453991, -0.523721), (0.523721, 0.453991, -0.72084), (0.275336, 0.453991, -0.847398), (0, 0.453991, -0.891007), (-0.275336, 0.453991, -0.847398), (-0.523721, 0.453991, -0.72084), (-0.72084, 0.453991, -0.523721), (-0.847398, 0.453991, -0.275336), (-0.891007, 0.453991, 0), (-0.847398, 0.453991, 0.275336), (-0.72084, 0.453991, 0.523721), (-0.523721, 0.453991, 0.72084), (-0.275336, 0.453991, 0.847398), (-2.65541e-08, 0.453991, 0.891007), (0.275336, 0.453991, 0.847398), (0.523721, 0.453991, 0.72084), (0.720839, 0.453991, 0.523721), (0.847398, 0.453991, 0.275336), (0.891007, 0.453991, 0), (0.769421, 0.587785, -0.25), (0.654509, 0.587785, -0.475529), (0.475529, 0.587785, -0.654509), (0.25, 0.587785, -0.769421), (0, 0.587785, -0.809017), (-0.25, 0.587785, -0.769421), (-0.475528, 0.587785, -0.654509), (-0.654509, 0.587785, -0.475528), (-0.769421, 0.587785, -0.25), (-0.809017, 0.587785, 0), (-0.769421, 0.587785, 0.25), (-0.654509, 0.587785, 0.475528), (-0.475528, 0.587785, 0.654509), (-0.25, 0.587785, 0.769421), (-2.41106e-08, 0.587785, 0.809017), (0.25, 0.587785, 0.769421), (0.475528, 0.587785, 0.654509), (0.654509, 0.587785, 0.475528), (0.769421, 0.587785, 0.25), (0.809017, 0.587785, 0), (0.672499, 0.707107, -0.218508), (0.572062, 0.707107, -0.415627), (0.415627, 0.707107, -0.572062), (0.218508, 0.707107, -0.672499), (0, 0.707107, -0.707107), (-0.218508, 0.707107, -0.672499), (-0.415627, 0.707107, -0.572062), (-0.572062, 0.707107, -0.415627), (-0.672499, 0.707107, -0.218508), (-0.707107, 0.707107, 0), (-0.672499, 0.707107, 0.218508), (-0.572062, 0.707107, 0.415627), (-0.415627, 0.707107, 0.572061), (-0.218508, 0.707107, 0.672499), (-2.10734e-08, 0.707107, 0.707107), (0.218508, 0.707107, 0.672499), (0.415627, 0.707107, 0.572061), (0.572061, 0.707107, 0.415627), (0.672499, 0.707107, 0.218508), (0.707107, 0.707107, 0), (0.559017, 0.809017, -0.181636), (0.475529, 0.809017, -0.345492), (0.345492, 0.809017, -0.475529), (0.181636, 0.809017, -0.559017), (0, 0.809017, -0.587786), (-0.181636, 0.809017, -0.559017), (-0.345492, 0.809017, -0.475528), (-0.475528, 0.809017, -0.345492), (-0.559017, 0.809017, -0.181636), (-0.587785, 0.809017, 0), (-0.559017, 0.809017, 0.181636), (-0.475528, 0.809017, 0.345492), (-0.345492, 0.809017, 0.475528), (-0.181636, 0.809017, 0.559017), (-1.75174e-08, 0.809017, 0.587785), (0.181636, 0.809017, 0.559017), (0.345491, 0.809017, 0.475528), (0.475528, 0.809017, 0.345492), (0.559017, 0.809017, 0.181636), (0.587785, 0.809017, 0), (0.431771, 0.891007, -0.140291), (0.367286, 0.891007, -0.266849), (0.266849, 0.891007, -0.367286), (0.140291, 0.891007, -0.431771), (0, 0.891007, -0.453991), (-0.140291, 0.891007, -0.431771), (-0.266849, 0.891007, -0.367286), (-0.367286, 0.891007, -0.266849), (-0.431771, 0.891007, -0.140291), (-0.453991, 0.891007, 0), (-0.431771, 0.891007, 0.140291), (-0.367286, 0.891007, 0.266849), (-0.266849, 0.891007, 0.367286), (-0.140291, 0.891007, 0.431771), (-1.353e-08, 0.891007, 0.453991), (0.140291, 0.891007, 0.431771), (0.266849, 0.891007, 0.367286), (0.367286, 0.891007, 0.266849), (0.431771, 0.891007, 0.140291), (0.453991, 0.891007, 0), (0.293893, 0.951057, -0.0954916), (0.25, 0.951057, -0.181636), (0.181636, 0.951057, -0.25), (0.0954916, 0.951057, -0.293893), (0, 0.951057, -0.309017), (-0.0954916, 0.951057, -0.293893), (-0.181636, 0.951057, -0.25), (-0.25, 0.951057, -0.181636), (-0.293893, 0.951057, -0.0954915), (-0.309017, 0.951057, 0), (-0.293893, 0.951057, 0.0954915), (-0.25, 0.951057, 0.181636), (-0.181636, 0.951057, 0.25), (-0.0954915, 0.951057, 0.293893), (-9.20942e-09, 0.951057, 0.309017), (0.0954915, 0.951057, 0.293893), (0.181636, 0.951057, 0.25), (0.25, 0.951057, 0.181636), (0.293893, 0.951057, 0.0954915), (0.309017, 0.951057, 0), (0.148778, 0.987688, -0.0483409), (0.126558, 0.987688, -0.0919499), (0.0919499, 0.987688, -0.126558), (0.0483409, 0.987688, -0.148778), (0, 0.987688, -0.156435), (-0.0483409, 0.987688, -0.148778), (-0.0919499, 0.987688, -0.126558), (-0.126558, 0.987688, -0.0919499), (-0.148778, 0.987688, -0.0483409), (-0.156435, 0.987688, 0), (-0.148778, 0.987688, 0.0483409), (-0.126558, 0.987688, 0.0919499), (-0.0919499, 0.987688, 0.126558), (-0.0483409, 0.987688, 0.148778), (-4.66211e-09, 0.987688, 0.156434), (0.0483409, 0.987688, 0.148778), (0.0919499, 0.987688, 0.126558), (0.126558, 0.987688, 0.0919499), (0.148778, 0.987688, 0.0483409), (0.156434, 0.987688, 0), (0, -1, 0), (0, 1, 0)] ( + interpolation = "vertex" + ) + float[] primvars:ptexFaceIndex = [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 64, 64, 64, 64, 65, 65, 65, 65, 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, 68, 68, 69, 69, 69, 69, 70, 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 74, 74, 74, 74, 75, 75, 75, 75, 76, 76, 76, 76, 77, 77, 77, 77, 78, 78, 78, 78, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 81, 82, 82, 82, 82, 83, 83, 83, 83, 84, 84, 84, 84, 85, 85, 85, 85, 86, 86, 86, 86, 87, 87, 87, 87, 88, 88, 88, 88, 89, 89, 89, 89, 90, 90, 90, 90, 91, 91, 91, 91, 92, 92, 92, 92, 93, 93, 93, 93, 94, 94, 94, 94, 95, 95, 95, 95, 96, 96, 96, 96, 97, 97, 97, 97, 98, 98, 98, 98, 99, 99, 99, 99, 100, 100, 100, 100, 101, 101, 101, 101, 102, 102, 102, 102, 103, 103, 103, 103, 104, 104, 104, 104, 105, 105, 105, 105, 106, 106, 106, 106, 107, 107, 107, 107, 108, 108, 108, 108, 109, 109, 109, 109, 110, 110, 110, 110, 111, 111, 111, 111, 112, 112, 112, 112, 113, 113, 113, 113, 114, 114, 114, 114, 115, 115, 115, 115, 116, 116, 116, 116, 117, 117, 117, 117, 118, 118, 118, 118, 119, 119, 119, 119, 120, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122, 122, 123, 123, 123, 123, 124, 124, 124, 124, 125, 125, 125, 125, 126, 126, 126, 126, 127, 127, 127, 127, 128, 128, 128, 128, 129, 129, 129, 129, 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, 133, 133, 133, 133, 134, 134, 134, 134, 135, 135, 135, 135, 136, 136, 136, 136, 137, 137, 137, 137, 138, 138, 138, 138, 139, 139, 139, 139, 140, 140, 140, 140, 141, 141, 141, 141, 142, 142, 142, 142, 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, 145, 145, 146, 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, 148, 149, 149, 149, 149, 150, 150, 150, 150, 151, 151, 151, 151, 152, 152, 152, 152, 153, 153, 153, 153, 154, 154, 154, 154, 155, 155, 155, 155, 156, 156, 156, 156, 157, 157, 157, 157, 158, 158, 158, 158, 159, 159, 159, 159, 160, 160, 160, 160, 161, 161, 161, 161, 162, 162, 162, 162, 163, 163, 163, 163, 164, 164, 164, 164, 165, 165, 165, 165, 166, 166, 166, 166, 167, 167, 167, 167, 168, 168, 168, 168, 169, 169, 169, 169, 170, 170, 170, 170, 171, 171, 171, 171, 172, 172, 172, 172, 173, 173, 173, 173, 174, 174, 174, 174, 175, 175, 175, 175, 176, 176, 176, 176, 177, 177, 177, 177, 178, 178, 178, 178, 179, 179, 179, 179, 180, 180, 180, 180, 181, 181, 181, 181, 182, 182, 182, 182, 183, 183, 183, 183, 184, 184, 184, 184, 185, 185, 185, 185, 186, 186, 186, 186, 187, 187, 187, 187, 188, 188, 188, 188, 189, 189, 189, 189, 190, 190, 190, 190, 191, 191, 191, 191, 192, 192, 192, 192, 193, 193, 193, 193, 194, 194, 194, 194, 195, 195, 195, 195, 196, 196, 196, 196, 197, 197, 197, 197, 198, 198, 198, 198, 199, 199, 199, 199, 200, 200, 200, 200, 201, 201, 201, 201, 202, 202, 202, 202, 203, 203, 203, 203, 204, 204, 204, 204, 205, 205, 205, 205, 206, 206, 206, 206, 207, 207, 207, 207, 208, 208, 208, 208, 209, 209, 209, 209, 210, 210, 210, 210, 211, 211, 211, 211, 212, 212, 212, 212, 213, 213, 213, 213, 214, 214, 214, 214, 215, 215, 215, 215, 216, 216, 216, 216, 217, 217, 217, 217, 218, 218, 218, 218, 219, 219, 219, 219, 220, 220, 220, 220, 221, 221, 221, 221, 222, 222, 222, 222, 223, 223, 223, 223, 224, 224, 224, 224, 225, 225, 225, 225, 226, 226, 226, 226, 227, 227, 227, 227, 228, 228, 228, 228, 229, 229, 229, 229, 230, 230, 230, 230, 231, 231, 231, 231, 232, 232, 232, 232, 233, 233, 233, 233, 234, 234, 234, 234, 235, 235, 235, 235, 236, 236, 236, 236, 237, 237, 237, 237, 238, 238, 238, 238, 239, 239, 239, 239, 240, 240, 240, 240, 241, 241, 241, 241, 242, 242, 242, 242, 243, 243, 243, 243, 244, 244, 244, 244, 245, 245, 245, 245, 246, 246, 246, 246, 247, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 250, 250, 250, 250, 251, 251, 251, 251, 252, 252, 252, 252, 253, 253, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, 256, 256, 256, 256, 257, 257, 257, 257, 258, 258, 258, 258, 259, 259, 259, 259, 260, 260, 260, 260, 261, 261, 261, 261, 262, 262, 262, 262, 263, 263, 263, 263, 264, 264, 264, 264, 265, 265, 265, 265, 266, 266, 266, 266, 267, 267, 267, 267, 268, 268, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, 272, 273, 273, 273, 273, 274, 274, 274, 274, 275, 275, 275, 275, 276, 276, 276, 276, 277, 277, 277, 277, 278, 278, 278, 278, 279, 279, 279, 279, 280, 280, 280, 280, 281, 281, 281, 281, 282, 282, 282, 282, 283, 283, 283, 283, 284, 284, 284, 284, 285, 285, 285, 285, 286, 286, 286, 286, 287, 287, 287, 287, 288, 288, 288, 288, 289, 289, 289, 289, 290, 290, 290, 290, 291, 291, 291, 291, 292, 292, 292, 292, 293, 293, 293, 293, 294, 294, 294, 294, 295, 295, 295, 295, 296, 296, 296, 296, 297, 297, 297, 297, 298, 298, 298, 298, 299, 299, 299, 299, 300, 300, 300, 300, 301, 301, 301, 301, 302, 302, 302, 302, 303, 303, 303, 303, 304, 304, 304, 304, 305, 305, 305, 305, 306, 306, 306, 306, 307, 307, 307, 307, 308, 308, 308, 308, 309, 309, 309, 309, 310, 310, 310, 310, 311, 311, 311, 311, 312, 312, 312, 312, 313, 313, 313, 313, 314, 314, 314, 314, 315, 315, 315, 315, 316, 316, 316, 316, 317, 317, 317, 317, 318, 318, 318, 318, 319, 319, 319, 319, 320, 320, 320, 320, 321, 321, 321, 321, 322, 322, 322, 322, 323, 323, 323, 323, 324, 324, 324, 324, 325, 325, 325, 325, 326, 326, 326, 326, 327, 327, 327, 327, 328, 328, 328, 328, 329, 329, 329, 329, 330, 330, 330, 330, 331, 331, 331, 331, 332, 332, 332, 332, 333, 333, 333, 333, 334, 334, 334, 334, 335, 335, 335, 335, 336, 336, 336, 336, 337, 337, 337, 337, 338, 338, 338, 338, 339, 339, 339, 339, 340, 340, 340, 340, 341, 341, 341, 341, 342, 342, 342, 342, 343, 343, 343, 343, 344, 344, 344, 344, 345, 345, 345, 345, 346, 346, 346, 346, 347, 347, 347, 347, 348, 348, 348, 348, 349, 349, 349, 349, 350, 350, 350, 350, 351, 351, 351, 351, 352, 352, 352, 352, 353, 353, 353, 353, 354, 354, 354, 354, 355, 355, 355, 355, 356, 356, 356, 356, 357, 357, 357, 357, 358, 358, 358, 358, 359, 359, 359, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479] ( + interpolation = "faceVarying" + ) + int primvars:ptexFaceOffset = 0 ( + interpolation = "constant" + ) + float[] primvars:u_map1 = [0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0, 0.05, 0.05, 0, 0.05, 0.1, 0.1, 0.05, 0.1, 0.15, 0.15, 0.1, 0.15, 0.2, 0.2, 0.15, 0.2, 0.25, 0.25, 0.2, 0.25, 0.3, 0.3, 0.25, 0.3, 0.35000002, 0.35000002, 0.3, 0.35000002, 0.40000004, 0.40000004, 0.35000002, 0.40000004, 0.45000005, 0.45000005, 0.40000004, 0.45000005, 0.50000006, 0.50000006, 0.45000005, 0.50000006, 0.5500001, 0.5500001, 0.50000006, 0.5500001, 0.6000001, 0.6000001, 0.5500001, 0.6000001, 0.6500001, 0.6500001, 0.6000001, 0.6500001, 0.7000001, 0.7000001, 0.6500001, 0.7000001, 0.7500001, 0.7500001, 0.7000001, 0.7500001, 0.80000013, 0.80000013, 0.7500001, 0.80000013, 0.85000014, 0.85000014, 0.80000013, 0.85000014, 0.90000015, 0.90000015, 0.85000014, 0.90000015, 0.95000017, 0.95000017, 0.90000015, 0.95000017, 1.0000001, 1.0000001, 0.95000017, 0.05, 0, 0.025, 0.1, 0.05, 0.075, 0.15, 0.1, 0.125, 0.2, 0.15, 0.175, 0.25, 0.2, 0.22500001, 0.3, 0.25, 0.275, 0.35000002, 0.3, 0.32500002, 0.40000004, 0.35000002, 0.375, 0.45000005, 0.40000004, 0.425, 0.50000006, 0.45000005, 0.475, 0.5500001, 0.50000006, 0.52500004, 0.6000001, 0.5500001, 0.575, 0.6500001, 0.6000001, 0.625, 0.7000001, 0.6500001, 0.675, 0.7500001, 0.7000001, 0.725, 0.80000013, 0.7500001, 0.77500004, 0.85000014, 0.80000013, 0.825, 0.90000015, 0.85000014, 0.875, 0.95000017, 0.90000015, 0.925, 1.0000001, 0.95000017, 0.975, 0, 0.05, 0.025, 0.05, 0.1, 0.075, 0.1, 0.15, 0.125, 0.15, 0.2, 0.175, 0.2, 0.25, 0.22500001, 0.25, 0.3, 0.275, 0.3, 0.35000002, 0.32500002, 0.35000002, 0.40000004, 0.375, 0.40000004, 0.45000005, 0.425, 0.45000005, 0.50000006, 0.475, 0.50000006, 0.5500001, 0.52500004, 0.5500001, 0.6000001, 0.575, 0.6000001, 0.6500001, 0.625, 0.6500001, 0.7000001, 0.675, 0.7000001, 0.7500001, 0.725, 0.7500001, 0.80000013, 0.77500004, 0.80000013, 0.85000014, 0.825, 0.85000014, 0.90000015, 0.875, 0.90000015, 0.95000017, 0.925, 0.95000017, 1.0000001, 0.975] ( + interpolation = "faceVarying" + ) + float[] primvars:v_map1 = [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.35000002, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.40000004, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.45000005, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.50000006, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.5500001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6000001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.6500001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7000001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.7500001, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.80000013, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.85000014, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.90000015, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0.95000017, 0, 1] ( + interpolation = "vertex" + ) +} + +def Xform "grid1" ( + kind = "component" +) +{ + matrix4d xformOp:transform:xform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) ) + uniform token[] xformOpOrder = ["xformOp:transform:xform"] + + def Mesh "mesh_0" + { + float3[] extent = [(-5, 0, -5), (5, 0, 5)] + int[] faceVertexCounts = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] + int[] faceVertexIndices = [0, 1, 11, 10, 1, 2, 12, 11, 2, 3, 13, 12, 3, 4, 14, 13, 4, 5, 15, 14, 5, 6, 16, 15, 6, 7, 17, 16, 7, 8, 18, 17, 8, 9, 19, 18, 10, 11, 21, 20, 11, 12, 22, 21, 12, 13, 23, 22, 13, 14, 24, 23, 14, 15, 25, 24, 15, 16, 26, 25, 16, 17, 27, 26, 17, 18, 28, 27, 18, 19, 29, 28, 20, 21, 31, 30, 21, 22, 32, 31, 22, 23, 33, 32, 23, 24, 34, 33, 24, 25, 35, 34, 25, 26, 36, 35, 26, 27, 37, 36, 27, 28, 38, 37, 28, 29, 39, 38, 30, 31, 41, 40, 31, 32, 42, 41, 32, 33, 43, 42, 33, 34, 44, 43, 34, 35, 45, 44, 35, 36, 46, 45, 36, 37, 47, 46, 37, 38, 48, 47, 38, 39, 49, 48, 40, 41, 51, 50, 41, 42, 52, 51, 42, 43, 53, 52, 43, 44, 54, 53, 44, 45, 55, 54, 45, 46, 56, 55, 46, 47, 57, 56, 47, 48, 58, 57, 48, 49, 59, 58, 50, 51, 61, 60, 51, 52, 62, 61, 52, 53, 63, 62, 53, 54, 64, 63, 54, 55, 65, 64, 55, 56, 66, 65, 56, 57, 67, 66, 57, 58, 68, 67, 58, 59, 69, 68, 60, 61, 71, 70, 61, 62, 72, 71, 62, 63, 73, 72, 63, 64, 74, 73, 64, 65, 75, 74, 65, 66, 76, 75, 66, 67, 77, 76, 67, 68, 78, 77, 68, 69, 79, 78, 70, 71, 81, 80, 71, 72, 82, 81, 72, 73, 83, 82, 73, 74, 84, 83, 74, 75, 85, 84, 75, 76, 86, 85, 76, 77, 87, 86, 77, 78, 88, 87, 78, 79, 89, 88, 80, 81, 91, 90, 81, 82, 92, 91, 82, 83, 93, 92, 83, 84, 94, 93, 84, 85, 95, 94, 85, 86, 96, 95, 86, 87, 97, 96, 87, 88, 98, 97, 88, 89, 99, 98] + uniform token orientation = "leftHanded" + point3f[] points = [(-5, 0, -5), (-3.8888888, 0, -5), (-2.7777777, 0, -5), (-1.6666665, 0, -5), (-0.55555534, 0, -5), (0.5555558, 0, -5), (1.666667, 0, -5), (2.7777781, 0, -5), (3.8888893, 0, -5), (5, 0, -5), (-5, 0, -3.8888888), (-3.8888888, 0, -3.8888888), (-2.7777777, 0, -3.8888888), (-1.6666665, 0, -3.8888888), (-0.55555534, 0, -3.8888888), (0.5555558, 0, -3.8888888), (1.666667, 0, -3.8888888), (2.7777781, 0, -3.8888888), (3.8888893, 0, -3.8888888), (5, 0, -3.8888888), (-5, 0, -2.7777777), (-3.8888888, 0, -2.7777777), (-2.7777777, 0, -2.7777777), (-1.6666665, 0, -2.7777777), (-0.55555534, 0, -2.7777777), (0.5555558, 0, -2.7777777), (1.666667, 0, -2.7777777), (2.7777781, 0, -2.7777777), (3.8888893, 0, -2.7777777), (5, 0, -2.7777777), (-5, 0, -1.6666665), (-3.8888888, 0, -1.6666665), (-2.7777777, 0, -1.6666665), (-1.6666665, 0, -1.6666665), (-0.55555534, 0, -1.6666665), (0.5555558, 0, -1.6666665), (1.666667, 0, -1.6666665), (2.7777781, 0, -1.6666665), (3.8888893, 0, -1.6666665), (5, 0, -1.6666665), (-5, 0, -0.55555534), (-3.8888888, 0, -0.55555534), (-2.7777777, 0, -0.55555534), (-1.6666665, 0, -0.55555534), (-0.55555534, 0, -0.55555534), (0.5555558, 0, -0.55555534), (1.666667, 0, -0.55555534), (2.7777781, 0, -0.55555534), (3.8888893, 0, -0.55555534), (5, 0, -0.55555534), (-5, 0, 0.5555558), (-3.8888888, 0, 0.5555558), (-2.7777777, 0, 0.5555558), (-1.6666665, 0, 0.5555558), (-0.55555534, 0, 0.5555558), (0.5555558, 0, 0.5555558), (1.666667, 0, 0.5555558), (2.7777781, 0, 0.5555558), (3.8888893, 0, 0.5555558), (5, 0, 0.5555558), (-5, 0, 1.666667), (-3.8888888, 0, 1.666667), (-2.7777777, 0, 1.666667), (-1.6666665, 0, 1.666667), (-0.55555534, 0, 1.666667), (0.5555558, 0, 1.666667), (1.666667, 0, 1.666667), (2.7777781, 0, 1.666667), (3.8888893, 0, 1.666667), (5, 0, 1.666667), (-5, 0, 2.7777781), (-3.8888888, 0, 2.7777781), (-2.7777777, 0, 2.7777781), (-1.6666665, 0, 2.7777781), (-0.55555534, 0, 2.7777781), (0.5555558, 0, 2.7777781), (1.666667, 0, 2.7777781), (2.7777781, 0, 2.7777781), (3.8888893, 0, 2.7777781), (5, 0, 2.7777781), (-5, 0, 3.8888893), (-3.8888888, 0, 3.8888893), (-2.7777777, 0, 3.8888893), (-1.6666665, 0, 3.8888893), (-0.55555534, 0, 3.8888893), (0.5555558, 0, 3.8888893), (1.666667, 0, 3.8888893), (2.7777781, 0, 3.8888893), (3.8888893, 0, 3.8888893), (5, 0, 3.8888893), (-5, 0, 5), (-3.8888888, 0, 5), (-2.7777777, 0, 5), (-1.6666665, 0, 5), (-0.55555534, 0, 5), (0.5555558, 0, 5), (1.666667, 0, 5), (2.7777781, 0, 5), (3.8888893, 0, 5), (5, 0, 5)] ( + interpolation = "vertex" + ) + uniform token subdivisionScheme = "none" + } +} + +def Xform "cameras" +{ + def Camera "camera1" ( + prepend apiSchemas = ["HoudiniCameraPlateAPI", "HoudiniViewportGuideAPI"] + ) + { + float2 clippingRange = (0.005917296, 59172.957) + float exposure = 0 + float focalLength = 0.5 + float focusDistance = 5 + float fStop = 0 + float horizontalAperture = 0.5 + float horizontalApertureOffset = 0 + asset houdini:backgroundimage = @@ + asset houdini:foregroundimage = @@ + float houdini:guidescale = 1 + bool houdini:inviewermenu = 1 + token projection = "perspective" + double shutter:close = 0.25 + double shutter:open = -0.25 + float verticalAperture = 0.28125 + float verticalApertureOffset = 0 + matrix4d xformOp:transform = ( (0.7024829944633206, -4.996003610813205e-16, -0.711700528656433, 0), (-0.28975716994779555, 0.9133686354647658, -0.2860044024365294, 0), (0.6500449407184787, 0.40713356008714385, 0.6416259340901657, 0), (5.510104889018726, 3.762321756965287, 6.136757760306437, 1) ) + uniform token[] xformOpOrder = ["xformOp:transform"] + } +} + diff --git a/testsuite/test_1294/ref/reference.log b/testsuite/test_1294/ref/reference.log new file mode 100644 index 0000000000..963fdec35e --- /dev/null +++ b/testsuite/test_1294/ref/reference.log @@ -0,0 +1,222 @@ +00:00:00 92MB | log started Fri Sep 23 10:41:37 2022 +00:00:00 92MB | Arnold 7.1.4.0 [cbdd12d6] windows clang-10.0.1 oiio-2.4.1 osl-1.12.0 vdb-7.1.1 adlsdk-6.3.1.44 clmhub-2.0.0.235 rlm-14.1.3 optix-6.6.0 2022/08/29 23:41:24 +00:00:00 92MB | running on REMS4QL1726, pid=43300 +00:00:00 92MB | 2 x Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz (32 cores, 64 logical) with 65154MB +00:00:00 95MB | NVIDIA driver version 472.39 (Optix 60801) +00:00:00 95MB | GPU 0: Quadro RTX 4000 @ 1545MHz (compute 7.5) with 8192MB (6159MB available) (NVLink:0) +00:00:00 95MB | Windows 10 (version 10.0, build 19044) +00:00:00 95MB | soft limit for open files is set at 2048 +00:00:00 95MB | +00:00:00 113MB | [color_manager_ocio] default ocio.config found in C:\arnold\sdk\latest\bin\../ocio/configs/arnold/config.ocio +00:00:00 113MB | loading plugins from C:\arnold\arnold-usd\build\windows_x86_64\msvc_opt\usd-0.21.8_arnold-7.1.4.0\procedural ... +00:00:00 117MB | usd_proc.dll: usd uses Arnold 7.1.4.0 +00:00:00 117MB | loaded 1 plugins from 1 lib(s) in 0:00.09 +00:00:00 117MB | loading plugins from C:\arnold\sdk\latest\bin\..\plugins ... +00:00:00 117MB | alembic_proc.dll: alembic uses Arnold 7.1.4.0 +00:00:00 117MB | cryptomatte.dll: cryptomatte uses Arnold 7.1.4.0 +00:00:00 117MB | cryptomatte.dll: cryptomatte_filter uses Arnold 7.1.4.0 +00:00:00 117MB | cryptomatte.dll: cryptomatte_manifest_driver uses Arnold 7.1.4.0 +00:00:00 117MB | skipping already loaded plugin: C:\arnold\sdk\latest\bin\..\plugins\usd_proc.dll ... +00:00:00 117MB | loaded 4 plugins from 2 lib(s) in 0:00.01 +00:00:00 117MB | [color_manager_ocio] default ocio.config found in C:\arnold\sdk\latest\bin\../ocio/configs/arnold/config.ocio +00:00:00 133MB | [kick] command: C:\arnold\sdk\latest\bin\kick scene.usda -dw -r 160 120 -sm lambert -bs 16 -o testrender.tif -set driver_tiff.dither false -nocrashpopup -dp -v 6 +00:00:00 133MB | loading plugins from . ... +00:00:00 133MB | no plugins loaded +00:00:00 171MB WARNING | USD arnold attribute light not recognized in polymesh for /sphere1 +00:00:00 171MB WARNING | USD arnold attribute shaders not recognized in mesh_light for /sphere1/light +00:00:00 171MB | [kick] applying 2 attr value overrides +00:00:00 171MB | +00:00:00 171MB | authorizing with license manager: network ... +00:00:00 171MB WARNING | rendering with watermarks because of failed authorization: +00:00:00 171MB | [clm.v1] license server was not set (51) +00:00:00 171MB | environment variables: +00:00:00 171MB | ARNOLD_LICENSE_ORDER = (not set) +00:00:00 171MB | ARNOLD_LICENSE_MANAGER = (not set) +00:00:00 171MB | [rlm] solidangle_LICENSE = (not set) +00:00:00 171MB | [rlm] RLM_LICENSE = (not set) +00:00:00 171MB | [clm] ADSKFLEX_LICENSE_FILE = (not set) +00:00:00 171MB | [clm] LM_LICENSE_FILE = (not set) +00:00:00 171MB | +00:00:00 172MB | [color_manager] using color manager of type "color_manager_ocio" +00:00:00 172MB | [color_manager_ocio] using config file C:\arnold\sdk\latest\bin\../ocio/configs/arnold/config.ocio +00:00:00 173MB | [color_manager] rendering color space is "ACEScg" +00:00:00 186MB | +00:00:00 186MB | there are 1 light and 3 objects: +00:00:00 186MB | 1 persp_camera +00:00:00 186MB | 1 mesh_light +00:00:00 186MB | 2 utility +00:00:00 186MB | 1 flat +00:00:00 186MB | 1 standard_surface +00:00:00 186MB | 1 user_data_rgb +00:00:00 186MB | 1 driver_tiff +00:00:00 186MB | 1 gaussian_filter +00:00:00 186MB | 2 polymesh +00:00:00 186MB | 2 list_aggregate +00:00:00 186MB | 2 color_manager_ocio +00:00:00 186MB | +00:00:00 186MB | rendering image at 160 x 120, 1 AA sample +00:00:00 186MB | AA samples max +00:00:00 186MB | AA sample clamp +00:00:00 186MB | diffuse +00:00:00 186MB | specular +00:00:00 186MB | transmission samples 2 / depth 2 +00:00:00 186MB | volume indirect +00:00:00 186MB | total depth 10 +00:00:00 186MB | bssrdf samples 2 +00:00:00 186MB | transparency depth 10 +00:00:00 186MB | initializing 13 nodes +00:00:00 187MB | creating root object list ... +00:00:00 187MB | node initialization done in 0:00.00 (multithreaded) +00:00:00 187MB | updating 14 nodes +00:00:00 187MB | /sphere1/light: mesh_light using 1 sample, 2 volume samples +00:00:00 187MB | scene bounds: (-5 0 -5) -> (5 2.6804359 5) +00:00:00 187MB | node update done in 0:00.00 (multithreaded) +00:00:00 187MB | [aov] parsing 1 output statements ... +00:00:00 188MB | [aov] registered driver: "kick_driver" (driver_tiff) +00:00:00 188MB | [aov] * "RGBA" of type RGBA filtered by "kick_filter" (gaussian_filter) +00:00:00 188MB | [aov] done preparing 2 AOVs for 1 output to 1 driver (0 deep AOVs) +00:00:00 189MB | starting 64 bucket workers of size 16x16 ... +00:00:00 190MB | [accel] list_aggregate bvh4 done - 0:00.00 (wall time) - 2 prims, 1 key +00:00:00 192MB | [accel] polymesh bvh4 done - 0:00.00 (wall time) - 400 prims, 1 key +00:00:00 193MB | [accel] polymesh bvh4 done - 0:00.00 (wall time) - 81 prims, 1 key +00:00:00 197MB | 0% done - 6 rays/pixel +00:00:00 205MB | 5% done - 5 rays/pixel +00:00:00 208MB | 10% done - 1 rays/pixel +00:00:00 215MB | 15% done - 3 rays/pixel +00:00:00 226MB | 20% done - 5 rays/pixel +00:00:00 232MB | 25% done - 4 rays/pixel +00:00:00 233MB | 30% done - 6 rays/pixel +00:00:00 235MB | 35% done - 2 rays/pixel +00:00:00 235MB | 40% done - 1 rays/pixel +00:00:00 236MB | 45% done - 1 rays/pixel +00:00:00 236MB | 50% done - 2 rays/pixel +00:00:00 237MB | 55% done - 2 rays/pixel +00:00:00 237MB | 60% done - 2 rays/pixel +00:00:00 238MB | 65% done - 3 rays/pixel +00:00:00 238MB | 70% done - 1 rays/pixel +00:00:00 238MB | 75% done - 3 rays/pixel +00:00:00 239MB | 80% done - 3 rays/pixel +00:00:00 239MB | 85% done - 1 rays/pixel +00:00:00 239MB | 90% done - 2 rays/pixel +00:00:00 239MB | 95% done - 0 rays/pixel +00:00:00 239MB | 100% done - 0 rays/pixel +00:00:00 239MB | render done in 0:00.037 +00:00:00 239MB | [driver_tiff] writing file `testrender.tif' +00:00:00 240MB | render done +00:00:00 241MB | +00:00:00 241MB | ----------------------------------------------------------------------------------- +00:00:00 241MB | scene creation time 0:00.33 machine utilization (0.72%) +00:00:00 241MB | unaccounted 0:00.33 +00:00:00 241MB | ----------------------------------------------------------------------------------- +00:00:00 241MB | frame time 0:00.08 machine utilization (16.15%) +00:00:00 241MB | driver init/close 0:00.01 +00:00:00 241MB | rendering 0:00.03 +00:00:00 241MB | pixel rendering 0:00.03 +00:00:00 241MB | unaccounted 0:00.03 +00:00:00 241MB | ----------------------------------------------------------------------------------- +00:00:00 241MB | top session self-times by category +00:00:00 241MB | AiSceneLoad 0:00.00 (17.59%) +00:00:00 241MB | thread blocked 0:00.00 (13.53%) +00:00:00 241MB | TraceCameraRay 0:00.00 ( 9.47%) +00:00:00 241MB | surface closure (_default_arnold_shader) 0:00.00 ( 9.47%) +00:00:00 241MB | AiMalloc 0:00.00 ( 8.11%) +00:00:00 241MB | Plugin loader 0:00.00 ( 8.04%) +00:00:00 241MB | LightSampling (/sphere1/light) 0:00.00 ( 5.41%) +00:00:00 241MB | AiLightsTrace 0:00.00 ( 5.41%) +00:00:00 241MB | polymesh::intersect 0:00.00 ( 4.06%) +00:00:00 241MB | /grid1/mesh_0 0:00.00 ( 2.71%) +00:00:00 241MB | /sphere1 0:00.00 ( 1.35%) +00:00:00 241MB | standard_surface (_default_arnold_shader) 0:00.00 ( 4.06%) +00:00:00 241MB | sampleNextBatch 0:00.00 ( 2.71%) +00:00:00 241MB | RenderBucket 0:00.00 ( 2.71%) +00:00:00 241MB | accumulateBucketSamples 0:00.00 ( 2.71%) +00:00:00 241MB | ----------------------------------------------------------------------------------- +00:00:00 241MB | top session self-times by node +00:00:00 241MB | standard_surface:_default_arnold_shader 0:00.00 (24.35%) +00:00:00 241MB | surface closure 0:00.00 ( 9.47%) +00:00:00 241MB | AiLightsTrace 0:00.00 ( 5.41%) +00:00:00 241MB | AiMakeRay 0:00.00 ( 1.35%) +00:00:00 241MB | AiMalloc 0:00.00 ( 1.35%) +00:00:00 241MB | ray traversal+intersection 0:00.00 ( 1.35%) +00:00:00 241MB | AiShaderEvalParamFuncFlt 0:00.00 ( 1.35%) +00:00:00 241MB | AiSceneLoad 0:00.00 (17.59%) +00:00:00 241MB | thread blocked 0:00.00 (13.53%) +00:00:00 241MB | TraceCameraRay 0:00.00 ( 9.47%) +00:00:00 241MB | Plugin loader 0:00.00 ( 8.04%) +00:00:00 241MB | AiMalloc 0:00.00 ( 6.75%) +00:00:00 241MB | mesh_light:/sphere1/light (LightSampling) 0:00.00 ( 5.41%) +00:00:00 241MB | sampleNextBatch 0:00.00 ( 2.71%) +00:00:00 241MB | RenderBucket 0:00.00 ( 2.71%) +00:00:00 241MB | polymesh:/grid1/mesh_0 0:00.00 ( 2.71%) +00:00:00 241MB | polymesh::intersect 0:00.00 ( 2.71%) +00:00:00 241MB | accumulateBucketSamples 0:00.00 ( 2.71%) +00:00:00 241MB | ----------------------------------------------------------------------------------- +00:00:00 241MB | peak CPU memory used 241.34MB +00:00:00 241MB | at startup 96.00MB +00:00:00 241MB | AOV samples 0.44MB +00:00:00 241MB | output buffers 0.25MB +00:00:00 241MB | framebuffers 0.31MB +00:00:00 241MB | node overhead 0.01MB +00:00:00 241MB | message passing 0.08MB +00:00:00 241MB | memory pools 52.55MB +00:00:00 241MB | geometry 0.04MB +00:00:00 241MB | polymesh 0.04MB +00:00:00 241MB | accel structs 0.03MB +00:00:00 241MB | mesh importance map 0.09MB +00:00:00 241MB | strings 24.25MB +00:00:00 241MB | profiler 0.01MB +00:00:00 241MB | unaccounted 67.29MB +00:00:00 241MB | ----------------------------------------------------------------------------------- +00:00:00 241MB | ray counts ( /pixel, /sample) (% total) (avg. hits) (max hits) +00:00:00 241MB | camera 24160 ( 1.26, 1.00) ( 53.78%) ( 0.70) ( 1) +00:00:00 241MB | shadow 20765 ( 1.08, 0.86) ( 46.22%) ( 0.01) ( 1) +00:00:00 242MB | total 44925 ( 2.34, 1.86) (100.00%) ( 0.38) ( 1) +00:00:00 242MB | by ray depth: 0 +00:00:00 242MB | total 100.0% +00:00:00 242MB | ----------------------------------------------------------------------------------- +00:00:00 242MB | shader calls ( /pixel, /sample) (% total) +00:00:00 242MB | primary 34048 ( 1.77, 1.41) ( 97.82%) +00:00:00 242MB | importance 760 ( 2.18%) +00:00:00 242MB | total 34808 ( 1.81, 1.44) (100.00%) +00:00:00 242MB | by ray depth: 0 +00:00:00 242MB | total 100.0% +00:00:00 242MB | ----------------------------------------------------------------------------------- +00:00:00 242MB | geometry (% hit ) (instances) ( init mem, final mem) +00:00:00 242MB | lists 1 (100.0%) ( 0) ( 0.00, 0.00) +00:00:00 242MB | polymeshes 2 (100.0%) ( 0) ( 0.04, 0.04) +00:00:00 242MB | ----------------------------------------------------------------------------------- +00:00:00 242MB | geometric elements ( min) ( avg.) ( max) +00:00:00 242MB | polygons 481 ( 81) ( 240.5) ( 400) +00:00:00 242MB | ----------------------------------------------------------------------------------- +00:00:00 242MB | triangle tessellation ( min) ( avg.) ( max) (/ element) (% total) +00:00:00 242MB | polymeshes 922 ( 162) ( 461.0) ( 760) ( 1.92) (100.00%) +00:00:00 242MB | unique triangles 922 +00:00:00 242MB | CPU memory use 0.04MB +00:00:00 242MB | vertices 0.01MB +00:00:00 242MB | vertex indices 0.00MB +00:00:00 242MB | packed normals 0.00MB +00:00:00 242MB | normal indices 0.00MB +00:00:00 242MB | uniform indices 0.00MB +00:00:00 242MB | userdata 0.03MB +00:00:00 242MB | largest polymeshes by triangle count +00:00:00 242MB | 760 tris -- /sphere1 +00:00:00 242MB | 162 tris -- /grid1/mesh_0 +00:00:00 242MB | ----------------------------------------------------------------------------------- +00:00:00 242MB | acceleration structures: (% total) +00:00:00 242MB | bvh 3 (100.00%) +00:00:00 242MB | total 3 (100.00%) +00:00:00 242MB | ----------------------------------------------------------------------------------- +00:00:00 242MB | number of warnings, warning type: +00:00:00 242MB | 2: USD arnold attribute %s not recognized in %s for %s +00:00:00 242MB | 1: rendering with watermarks because of failed authorization: +00:00:00 242MB | ----------------------------------------------------------------------------------- +00:00:00 242MB | +00:00:00 242MB | releasing resources +00:00:00 192MB | +00:00:00 192MB | releasing resources +00:00:00 171MB | unloading 3 plugins +00:00:00 171MB | closing usd_proc.dll ... +00:00:00 171MB | closing alembic_proc.dll ... +00:00:00 171MB | closing cryptomatte.dll ... +00:00:00 171MB | unloading plugins done +00:00:00 171MB | Arnold shutdown diff --git a/testsuite/test_1294/ref/reference.tif b/testsuite/test_1294/ref/reference.tif new file mode 100644 index 0000000000..40202fc4f9 Binary files /dev/null and b/testsuite/test_1294/ref/reference.tif differ diff --git a/translator/reader/read_geometry.cpp b/translator/reader/read_geometry.cpp index 4a3eec4382..e36ff6626b 100644 --- a/translator/reader/read_geometry.cpp +++ b/translator/reader/read_geometry.cpp @@ -47,6 +47,12 @@ PXR_NAMESPACE_USING_DIRECTIVE +// clang-format off +TF_DEFINE_PRIVATE_TOKENS( + _tokens, + ((PrimvarsArnoldLightShaders, "primvars:arnold:light:shaders")) +); + namespace { /** @@ -376,6 +382,8 @@ void UsdArnoldReadMesh::Read(const UsdPrim &prim, UsdArnoldReaderContext &contex AiNodeSetPtr(meshLightNode, str::mesh, (void*)node); // Read the arnold parameters for this light ReadArnoldParameters(prim, context, meshLightNode, time, "primvars:arnold:light"); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldLightShaders), meshLightNode, context); + } } diff --git a/translator/reader/read_light.cpp b/translator/reader/read_light.cpp index 68724bd2ca..5cae0764ac 100644 --- a/translator/reader/read_light.cpp +++ b/translator/reader/read_light.cpp @@ -228,79 +228,7 @@ void _ReadLightColorLinks(const UsdPrim& prim, AtNode *node, UsdArnoldReaderCont } } } -void _ReadNodeGraphShaders(const UsdPrim& prim, AtNode *node, UsdArnoldReaderContext &context) -{ - UsdAttribute shadersAttr = prim.GetAttribute(_tokens->PrimvarsArnoldShaders); - if (!shadersAttr || !shadersAttr.HasAuthoredValue()) { - return; - } - auto readNodeGraphAttr = [&](const UsdPrim &prim, AtNode *node, const UsdAttribute &attr, - const std::string &attrName, UsdArnoldReaderContext &context, - UsdArnoldReader::ConnectionType cType) { - - bool success = false; - // Read eventual connections to a ArnoldNodeGraph primitive, that acts as a passthrough - const TimeSettings &time = context.GetTimeSettings(); - VtValue value; - if (attr && attr.Get(&value, time.frame)) { - // RenderSettings have a string attribute, referencing a prim in the stage - std::string valStr = VtValueGetString(value, &attr); - if (!valStr.empty()) { - SdfPath path(valStr); - // We check if there is a primitive at the path of this string - UsdPrim ngPrim = context.GetReader()->GetStage()->GetPrimAtPath(SdfPath(valStr)); - // We verify if the primitive is indeed a ArnoldNodeGraph - if (ngPrim && ngPrim.GetTypeName() == _tokens->ArnoldNodeGraph) { - // We can use a UsdShadeShader schema in order to read connections - UsdShadeShader ngShader(ngPrim); - - bool isArray = false; - if (cType == UsdArnoldReader::CONNECTION_ARRAY) { - isArray = true; - cType = UsdArnoldReader::CONNECTION_PTR; - } - int arrayIndex = 0; - while(true) { - - std::string outAttrName = attrName; - std::string connAttrName = attrName; - if (isArray) { - // usd format for arrays - std::string idStr = std::to_string(++arrayIndex); - outAttrName += std::string(":i") + idStr; - // format used internally in the reader to recognize arrays easily - connAttrName += std::string("[") + idStr + std::string("]"); - } - - // the output attribute must have the same name as the input one in the RenderSettings - UsdShadeOutput outputAttr = ngShader.GetOutput(TfToken(outAttrName)); - if (outputAttr) { - SdfPathVector sourcePaths; - // Check which shader is connected to this output - if (outputAttr.HasConnectedSource() && outputAttr.GetRawConnectedSourcePaths(&sourcePaths) && - !sourcePaths.empty()) { - SdfPath outPath(sourcePaths[0].GetPrimPath()); - UsdPrim outPrim = context.GetReader()->GetStage()->GetPrimAtPath(outPath); - if (outPrim) { - context.AddConnection(node, connAttrName, outPath.GetText(), cType); - } - } - success = true; - } else - break; - if (!isArray) - break; - } - } - } - } - return success; - }; - - readNodeGraphAttr(prim, node, shadersAttr, "color", context, UsdArnoldReader::CONNECTION_LINK); - readNodeGraphAttr(prim, node, shadersAttr, "filters", context, UsdArnoldReader::CONNECTION_ARRAY); -} AtNode *_ReadLightShaping(const UsdPrim &prim, UsdArnoldReaderContext &context) { @@ -380,7 +308,7 @@ void UsdArnoldReadDistantLight::Read(const UsdPrim &prim, UsdArnoldReaderContext AiNodeSetFlt(node, str::intensity, 0.f); _ReadLightLinks(prim, node, context); - _ReadNodeGraphShaders(prim, node, context); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldShaders), node, context); } void UsdArnoldReadDomeLight::Read(const UsdPrim &prim, UsdArnoldReaderContext &context) @@ -439,7 +367,7 @@ void UsdArnoldReadDomeLight::Read(const UsdPrim &prim, UsdArnoldReaderContext &c AiNodeSetFlt(node, str::intensity, 0.f); _ReadLightLinks(prim, node, context); - _ReadNodeGraphShaders(prim, node, context); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldShaders), node, context); } void UsdArnoldReadDiskLight::Read(const UsdPrim &prim, UsdArnoldReaderContext &context) @@ -470,7 +398,7 @@ void UsdArnoldReadDiskLight::Read(const UsdPrim &prim, UsdArnoldReaderContext &c AiNodeSetFlt(node, str::intensity, 0.f); _ReadLightLinks(prim, node, context); - _ReadNodeGraphShaders(prim, node, context); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldShaders), node, context); } // Sphere lights get exported to arnold as a point light with a radius @@ -509,7 +437,7 @@ void UsdArnoldReadSphereLight::Read(const UsdPrim &prim, UsdArnoldReaderContext AiNodeSetFlt(node, str::intensity, 0.f); _ReadLightLinks(prim, node, context); - _ReadNodeGraphShaders(prim, node, context); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldShaders), node, context); } void UsdArnoldReadRectLight::Read(const UsdPrim &prim, UsdArnoldReaderContext &context) @@ -579,7 +507,7 @@ void UsdArnoldReadRectLight::Read(const UsdPrim &prim, UsdArnoldReaderContext &c AiNodeSetFlt(node, str::intensity, 0.f); _ReadLightLinks(prim, node, context); - _ReadNodeGraphShaders(prim, node, context); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldShaders), node, context); } void UsdArnoldReadCylinderLight::Read(const UsdPrim &prim, UsdArnoldReaderContext &context) @@ -610,7 +538,7 @@ void UsdArnoldReadCylinderLight::Read(const UsdPrim &prim, UsdArnoldReaderContex } _ReadLightLinks(prim, node, context); - _ReadNodeGraphShaders(prim, node, context); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldShaders), node, context); } @@ -663,6 +591,6 @@ void UsdArnoldReadGeometryLight::Read(const UsdPrim &prim, UsdArnoldReaderContex AiNodeSetFlt(node, str::intensity, 0.f); _ReadLightLinks(prim, node, context); - _ReadNodeGraphShaders(prim, node, context); + ReadNodeGraphShaders(prim, prim.GetAttribute(_tokens->PrimvarsArnoldShaders), node, context); } } diff --git a/translator/reader/utils.cpp b/translator/reader/utils.cpp index 2c18f375ef..4e45ffe190 100644 --- a/translator/reader/utils.cpp +++ b/translator/reader/utils.cpp @@ -41,6 +41,13 @@ PXR_NAMESPACE_USING_DIRECTIVE +// clang-format off +TF_DEFINE_PRIVATE_TOKENS( + _tokens, + (ArnoldNodeGraph) +); + + static inline void getMatrix(const UsdPrim &prim, AtMatrix &matrix, float frame, UsdArnoldReaderContext &context, bool isXformable = true) { @@ -627,4 +634,77 @@ void ApplyParentMatrices(AtArray *matrices, const AtArray *parentMatrices) AiArraySetMtx(matrices, i, m); } } +} + +void ReadNodeGraphShaders(const UsdPrim& prim, const UsdAttribute &shadersAttr, AtNode *node, UsdArnoldReaderContext &context) +{ + if (!shadersAttr || !shadersAttr.HasAuthoredValue()) { + return; + } + auto readNodeGraphAttr = [&](const UsdPrim &prim, AtNode *node, const UsdAttribute &attr, + const std::string &attrName, UsdArnoldReaderContext &context, + UsdArnoldReader::ConnectionType cType) { + + bool success = false; + // Read eventual connections to a ArnoldNodeGraph primitive, that acts as a passthrough + const TimeSettings &time = context.GetTimeSettings(); + VtValue value; + if (attr && attr.Get(&value, time.frame)) { + // RenderSettings have a string attribute, referencing a prim in the stage + std::string valStr = VtValueGetString(value, &attr); + if (!valStr.empty()) { + SdfPath path(valStr); + // We check if there is a primitive at the path of this string + UsdPrim ngPrim = context.GetReader()->GetStage()->GetPrimAtPath(SdfPath(valStr)); + // We verify if the primitive is indeed a ArnoldNodeGraph + if (ngPrim && ngPrim.GetTypeName() == _tokens->ArnoldNodeGraph) { + // We can use a UsdShadeShader schema in order to read connections + UsdShadeShader ngShader(ngPrim); + + bool isArray = false; + if (cType == UsdArnoldReader::CONNECTION_ARRAY) { + isArray = true; + cType = UsdArnoldReader::CONNECTION_PTR; + } + int arrayIndex = 0; + while(true) { + + std::string outAttrName = attrName; + std::string connAttrName = attrName; + if (isArray) { + // usd format for arrays + std::string idStr = std::to_string(++arrayIndex); + outAttrName += std::string(":i") + idStr; + // format used internally in the reader to recognize arrays easily + connAttrName += std::string("[") + idStr + std::string("]"); + } + + // the output attribute must have the same name as the input one in the RenderSettings + UsdShadeOutput outputAttr = ngShader.GetOutput(TfToken(outAttrName)); + if (outputAttr) { + SdfPathVector sourcePaths; + // Check which shader is connected to this output + if (outputAttr.HasConnectedSource() && outputAttr.GetRawConnectedSourcePaths(&sourcePaths) && + !sourcePaths.empty()) { + SdfPath outPath(sourcePaths[0].GetPrimPath()); + UsdPrim outPrim = context.GetReader()->GetStage()->GetPrimAtPath(outPath); + if (outPrim) { + context.AddConnection(node, connAttrName, outPath.GetText(), cType); + } + } + success = true; + } else + break; + if (!isArray) + break; + } + } + } + } + return success; + }; + + readNodeGraphAttr(prim, node, shadersAttr, "color", context, UsdArnoldReader::CONNECTION_LINK); + readNodeGraphAttr(prim, node, shadersAttr, "filters", context, UsdArnoldReader::CONNECTION_ARRAY); + } \ No newline at end of file diff --git a/translator/reader/utils.h b/translator/reader/utils.h index 24d8a3908e..7cc0fb8b68 100644 --- a/translator/reader/utils.h +++ b/translator/reader/utils.h @@ -668,4 +668,6 @@ static inline bool VtValueGetMatrix(const VtValue& value, AtMatrix& matrix) bool IsPrimVisible(const UsdPrim &prim, UsdArnoldReader *reader, float frame); -void ApplyParentMatrices(AtArray *matrices, const AtArray *parentMatrices); \ No newline at end of file +void ApplyParentMatrices(AtArray *matrices, const AtArray *parentMatrices); + +void ReadNodeGraphShaders(const UsdPrim& prim, const UsdAttribute &attr, AtNode *node, UsdArnoldReaderContext &context);