From f863e2f4dc75ac369fa61fa25e051d81d24403b0 Mon Sep 17 00:00:00 2001 From: Sebastien Blaineau-Ortega Date: Sun, 2 Oct 2022 20:23:52 +0200 Subject: [PATCH] Support shader connections to mesh lights (#1295) * Support shader connections to mesh lights in the delegate #1294 * Add shader connections to mesh lights in the procedural #1294 --- render_delegate/light.cpp | 66 ++++---- render_delegate/light.h | 2 + render_delegate/mesh.cpp | 14 +- testsuite/test_1294/README | 7 + testsuite/test_1294/data/scene.usda | 115 +++++++++++++ testsuite/test_1294/ref/reference.log | 222 ++++++++++++++++++++++++++ testsuite/test_1294/ref/reference.tif | Bin 0 -> 18054 bytes translator/reader/read_geometry.cpp | 8 + translator/reader/read_light.cpp | 86 +--------- translator/reader/utils.cpp | 80 ++++++++++ translator/reader/utils.h | 4 +- 11 files changed, 492 insertions(+), 112 deletions(-) create mode 100644 testsuite/test_1294/README create mode 100644 testsuite/test_1294/data/scene.usda create mode 100644 testsuite/test_1294/ref/reference.log create mode 100644 testsuite/test_1294/ref/reference.tif 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 0000000000000000000000000000000000000000..40202fc4f927c0bcad6004327574319300e5cc0c GIT binary patch literal 18054 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 WGZds`y_l<{RIE67rn+3F7$6`hM2%no literal 0 HcmV?d00001 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);