@maptalks/transform-control 0.104.1 → 0.104.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-control.es.js","sources":["../src/common/models.js","../../gl/dist/transcoders.js","../src/common/Util.js","../src/helper/TranslateHelper.js","../src/helper/RotationHelper.js","../src/helper/ScalingHelper.js","../src/helper/PlaneHelper.js","../src/helper/XyzScaleHelper.js","../src/helper/TransformHelper.js","../src/TransformTarget.js","../src/TransformControl.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\r\nconst yuanhuan41 = {\r\n 'accessors': [\r\n {\r\n 'name': 'Բ��_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 39,\r\n 'min': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'max': [\r\n 5.489999771118164,\r\n 0,\r\n 5.488900184631348\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Բ��_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 39,\r\n 'min': [\r\n 0,\r\n -0.999939501285553,\r\n -1\r\n ],\r\n 'max': [\r\n 0.13969914615154266,\r\n 1,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Բ��_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 105,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 38\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'yh41',\r\n 'byteLength': 1148,\r\n 'uri': 'data:application/octet-stream;base64,8tKXQAAAAACoNU09FK6vQAAAAAB1Ako/FK6vQAAAAAAAAACATfOAQAAAAAACmkg+K4dWQAAAAAAIrNw+WvUtQAAAAABbsT8/X5gIQAAAAACMSpI/OUWbQAAAAAD0/VQ/LbKHQAAAAAD0/XQ/W0JqQAAAAAC6SZQ/dLXNPwAAAACfq80/H4VHQAAAAAB0JLc/ZognQAAAAAA1XuI/YVSSPwAAAAAukAhABaMKQAAAAAB4nApABcU/PwAAAACF6y1Aw2TiPwAAAACRfidASS63PwAAAABKe0dAJLncPgAAAACze1ZAj1OUPwAAAADjNmpAAppIPgAAAADu64BAnRF1PwAAAAD8qYdAqDVNPQAAAADBypdAgQRVPwAAAAAIPZtAAAAAAAAAAAASpa9AAwlKPwAAAAASpa9AJJd/PAAAAAASpa9AAwlKPwAAAAASpa9AAAAAAAAAAAASpa9Asp1vPQAAAAASpa9AJLn8PQAAAAASpa9AqoJRPgAAAAASpa9ARwOYPgAAAAASpa9AHhbKPgAAAAASpa9A2hv8PgAAAAASpa9A5q4VPwAAAAASpa9A+n4qPwAAAAASpa9AQxw7PwAAAAASpa9AwhdGPwAAAAASpa9AAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAJ5X/OwL+fz8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/Kzs0PAn8f78AAACApLK/PA7uf78AAACAeJkZPefRfz8AAACA+ZldPQSgf78AAACA6XSTPelVfz8AAACALLO3PdT3fr8AAACAfkjZPR2Ofr8AAACANf32Paohfj8AAACAeUYHPqDBfT8AAACASw0PPlt9fb8AAACAAAABAAIAAwABAAAABAABAAMABQABAAQABgAHAAUABwABAAUABgAIAAcABgAJAAgACgAJAAYACgALAAkACgAMAAsADQAMAAoADQAOAAwADwAOAA0ADwAQAA4ADwARABAAEgARAA8AEgATABEAFAATABIAFAAVABMAFgAVABQAFgAXABUAGAAXABYAGAAZABcAGgAbABwAHQAbABoAHgAbAB0AHwAbAB4AIAAbAB8AIQAbACAAIgAbACEAIwAbACIAJAAbACMAJQAbACQAJgAbACUAAAA='\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 468,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 468,\r\n 'byteOffset': 468,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 212,\r\n 'byteOffset': 936,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat_002',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.588,\r\n 0.588,\r\n 0.588,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.99\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Բ��_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Բ��',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst yuanpan = {\r\n 'accessors': [\r\n {\r\n 'name': 'Circle001_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n -1.9510999917984009,\r\n 0,\r\n -1.9510999917984009\r\n ],\r\n 'max': [\r\n 1.9510999917984009,\r\n 0,\r\n 1.9510999917984009\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Circle001_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n 0,\r\n 1,\r\n 0\r\n ],\r\n 'max': [\r\n 0,\r\n 1,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Circle001_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 78,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 27\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'yuanpan',\r\n 'byteLength': 828,\r\n 'uri': 'data:application/octet-stream;base64,S+rkvgAAAADRIvM/AAAAAAAAAAClvfk/S+rkPgAAAADRIvM/0SLzvwAAAABL6uQ+MlXgvwAAAACsi1s/c9fCvwAAAACvJZw/pb35vwAAAAAAAAAA0SLzvwAAAABL6uS+MlXgvwAAAACsi1u/c9fCvwAAAACvJZy/ryWcvwAAAABz18K/rItbvwAAAAAyVeC/S+rkvgAAAADRIvO/AAAAgAAAAAClvfm/S+rkPgAAAADRIvO/rItbPwAAAAAyVeC/ryWcPwAAAABz18K/c9fCPwAAAACvJZy/MlXgPwAAAACsi1u/0SLzPwAAAABL6uS+pb35PwAAAAAAAACA0SLzPwAAAABL6uQ+MlXgPwAAAACsi1s/c9fCPwAAAACvJZw/ryWcvwAAAABz18I/ryWcPwAAAABz18I/rItbvwAAAAAyVeA/rItbPwAAAAAyVeA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAABAAIAAwAEAAUABgADAAUABwAGAAUACAAHAAUACQAIAAUACgAJAAUACwAKAAUADAALAAUADQAMAAUADgANAAUADwAOAAUAEAAPAAUAEQAQAAUAEgARAAUAEwASAAUAFAATAAUAFQAUAAUAFgAVAAUAFwAWAAUAFwAFABgAGQAXABgAGQAYABoAGwAZABoAAgAbABoAAAACABoA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 336,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 156,\r\n 'byteOffset': 672,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'wire_008110135',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.0314,\r\n 0.4314,\r\n 0.5294,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.968\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Circle001_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Circle001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst zzhou = {\r\n 'accessors': [\r\n {\r\n 'name': 'Cube.001-Mesh_0_positions',\r\n 'componentType': 5126,\r\n 'count': 45,\r\n 'min': [\r\n -0.2711470127105713,\r\n -5.473427772521973,\r\n -0.2711470127105713\r\n ],\r\n 'max': [\r\n 0.2711470127105713,\r\n 0.46298399567604065,\r\n 0.2711470127105713\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Cube.001-Mesh_0_normals',\r\n 'componentType': 5126,\r\n 'count': 45,\r\n 'min': [\r\n -1,\r\n -1,\r\n -1\r\n ],\r\n 'max': [\r\n 1,\r\n 1,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Cube.001-Mesh_0_texcoords',\r\n 'componentType': 5126,\r\n 'count': 45,\r\n 'min': [\r\n 0.125,\r\n 0\r\n ],\r\n 'max': [\r\n 0.875,\r\n 1\r\n ],\r\n 'type': 'VEC2',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Cube.001-Mesh_0_indices',\r\n 'componentType': 5123,\r\n 'count': 72,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 44\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 3,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'Z',\r\n 'byteLength': 1584,\r\n 'uri': 'data:application/octet-stream;base64,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'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 540,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 540,\r\n 'byteOffset': 540,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 360,\r\n 'byteOffset': 1080,\r\n 'byteStride': 8,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_3',\r\n 'buffer': 0,\r\n 'byteLength': 144,\r\n 'byteOffset': 1440,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'Material.001',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.8,\r\n 0.8,\r\n 0.8,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.676000006\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Cube.001-Mesh',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1,\r\n 'TEXCOORD_0': 2\r\n },\r\n 'indices': 3,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Cube.001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst jiantou = {\r\n 'accessors': [\r\n {\r\n 'name': '��ͷ_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 7,\r\n 'min': [\r\n -0.47690001130104065,\r\n -0.8044000267982483,\r\n 0\r\n ],\r\n 'max': [\r\n 0.47780001163482666,\r\n 0,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ͷ_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 7,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ͷ_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 15,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 6\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'jiantou',\r\n 'byteLength': 200,\r\n 'uri': 'data:application/octet-stream;base64,bxIDOintTb8AAAAAH/RsvsKGp74AAAAAPSz0vsKGp74AAAAANs17PsKGp74AAAAANKL0PsKGp74AAAAANs17PgAAAAAAAAAAH/RsvgAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAADAAEAAAAEAAMAAQAFAAYAAQADAAUAAAA='\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 84,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 84,\r\n 'byteOffset': 84,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 32,\r\n 'byteOffset': 168,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat_003',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.588,\r\n 0.588,\r\n 0.588,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.99\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '��ͷ_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '��ͷ',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst xuanzhuan = {\r\n 'accessors': [\r\n {\r\n 'name': '��ת001_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 369,\r\n 'min': [\r\n -6.572299957275391,\r\n -7.298999786376953,\r\n 0\r\n ],\r\n 'max': [\r\n 6.5742998123168945,\r\n 7.298299789428711,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ת001_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 369,\r\n 'min': [\r\n 0,\r\n -1,\r\n 0\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ת001_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 1089,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 368\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': '旋转-新',\r\n 'byteLength': 11036,\r\n 'uri': 'data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAwABAAAAAwAEAAEAAwAFAAQAAwAGAAUAAwAHAAYAAwAIAAcAAwAJAAgAAwAKAAkAAwALAAoAAwAMAAsADQAMAAMADQAOAAwADQAPAA4ADQAQAA8ADQARABAADQASABEADQATABIADQAUABMADQAVABQADQAWABUADQAXABYADQAYABcADQAZABgADQAaABkADQAbABoAHAAbAA0AHAAdABsAHAAeAB0AHAAfAB4AHAAgAB8AHAAhACAAHAAiACEAHAAjACIAHAAkACMAHAAlACQAHAAmACUAHAAnACYAHAAoACcAHAApACgAHAAqACkAHAArACoAHAAsACsAHAAtACwAHAAuAC0AHAAvAC4AHAAwAC8AHAAxADAAHAAyADEAHAAzADIAHAA0ADMAHAA1ADQAHAA2ADUAHAA3ADYAHAA4ADcAHAA5ADgAHAA6ADkAHAA7ADoAHAA8ADsAHAA9ADwAHAA+AD0AHAA/AD4AHABAAD8AQABBAD8AQQBCAD8AQgBDAD8AHABAAEQAHABEAEUAHABGAEUARgBHAEUARgBIAEcARgBJAEgARgBKAEkARgBLAEoARgBMAEsAHABNAEYAHABOAE0AHABPAE4AHABQAE8AHABRAFAAHABSAFEAUgBTAFEAUgBUAFMAUgBVAFQAUgBWAFUAUgBXAFYAUgBYAFcAHABZAFIAHABaAFkAHABbAFoAHABcAFsAHABdAFwAHABeAF0AHABfAF4AHABgAF8AHABhAGAAHABiAGEAHABjAGIAHABjAGQAZABlAGMAZQBmAGMAHABnAGQAaABpAGoAawBpAGgAbABpAGsAbQBpAGwAbgBpAG0AbwBpAG4AcABpAG8AcQBpAHAAcgBpAHEAcwBpAHIAdABnABwAdAB1AGcAdAB2AHUAdwB4AHkAdwB5AHoAegB5AHsAegB7AHwAfAB7AH0AfAB9AH4AfgB9AH8AfgB/AIAAgQCCAIMAgQCDAIQAhACDAIUAhACFAIYAhgCFAIcAhgCHAIgAiACHAIkAiACJAIoAiwCMAI0AiwCNAI4AjwCKAJAAigCJAJAAkQCSAJMAkQCTAJQAlACTAJUAlACVAJYAlgCVAJcAlgCXAJgAgAB/AIIAgACCAIEAmACXAJkAmACZAJoAmgCZAJsAmgCbAJwAnACbAJ0AnACdAJ4AngCdAHYAngB2AHQAnwB4AHcAoAB4AJ8AoAChAHgAogChAKAAowCkAKUAowCmAKQAowCnAKYAowCoAKcAowCpAKgAowCqAKkAowCrAKoAowCsAKsAowCtAKwAowCuAK0AowCvAK4AowCiAK8AowChAKIAsAChAKMAsQChALAAsgChALEAswChALIAtAChALMAtQChALQAtgChALUAtwChALYAuAChALcAuQChALgAugChALkAuwChALoAvAChALsAvQChALwAvgChAL0AvwChAL4AwAChAL8AwQChAMAAwgChAMEAwwChAMIAxAChAMMAxQChAMQAxgChAMUAxwChAMYAyAChAMcAyQChAMgAygChAMkAywChAMoAzAChAMsAzQChAMwAzgChAM0AzwChAM4A0AChAM8A0QChANAA0gChANEA0wChANIA1AChANMA1QChANQA1gChANUA1wChANYA2AChANcA2QChANgA2gChANkA2wChANoA3AChANsA3QChANwA3gChAN0A3wChAN4A4AChAN8A4QChAOAA4gChAOEA4wChAOIA5AChAOMA5QChAOQA5gChAOUA5wChAOYA6AChAOcA6QChAOgA6gChAOkA6wChAOoA7AChAOsA7QChAOwA7gChAO0A7wChAO4A8AChAO8A8QChAO8A8gChAPEA8wChAPIA9AChAPMA9QChAPQA9gChAPUA9gD3AKEA+AD3APYA+QD3APgA+gD3APkA+wD3APoA/AD3APsA/QD3APwA/gD3AP0A/wD3AP4AAAH3AP8AAQH3AAABAgH3AAEBAwH3AAIBBAH3AAMBBQH3AAQBBgH3AAUBBgEHAfcACAEHAQYBCQEHAQgBCgEHAQkBCwEHAQoBDAEHAQsBDQEHAQwBDgEHAQ0BDwEHAQ4BEAEHAQ8BEQESARMBFAESAREBFAEVARIBFgEVARQBFgEXARUBGAEXARYBGAEZARcBGgEbARgBGwEcARgBHAEZARgBHAEdARkBHQEeARkBHwEeAR0BGgEgARsBIQEeAR8BGgEiASABIwEiARoBIQEkAR4BJQEkASEBIwEmASIBJwEkASUBIwEoASYBKQEoASMBJwEqASQBKwEqAScBKQEsASgBLQEsASkBKwEuASoBLwEuASsBLQEwASwBMQEuAS8BLQEyATABjgCNADMBjgAzATQBNQE2ATcBNQE3ATgBOAE3ATkBOAE5AToBOwE8AT0BOwE9AT4BPwFAAUEBPwFBAUIBPgE9AUMBPgFDAUQBRQFGAUABRQFAAT8BRwFIAZIARwGSAJEASQFKAUYBSQFGAUUBRAFDAUsBRAFLAUwBOgE5AUoBOgFKAUkBTAFLAU0BTAFNAU4BTgFNAU8BTgFPAVABQgFBAVEBQgFRAVIBUgFRAS4BUgEuATEBNAEzATwBNAE8ATsBUwFUATYBUwE2ATUBUAFPATIBUAEyAS0BiwBVAYwAVgFUAVMBiwBXAVUBWAFUAVYBWAFZAVQBWgFXAYsAWgFbAVcBXAFZAVgBXAFdAVkBXgFbAVoBXgFfAVsBYAFdAVwBXgFhAV8BYgFdAWABYgFjAV0BZAFhAV4BZAFlAWEBZgFjAWIBZAFnAWUBZwFjAWYBZAFjAWcBZAFoAWMBaQFoAWQBaQFqAWgBawFqAWkBawFsAWoBbQFsAWsBbQFuAWwBbwFwAUgBbwFIAUcBAAA='\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 4428,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 4428,\r\n 'byteOffset': 4428,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 2180,\r\n 'byteOffset': 8856,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.5,\r\n 0.5,\r\n 0.5,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 1\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '��ת001_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '��ת001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst yuanhuan411 = {\r\n 'accessors': [\r\n {\r\n 'name': '����СȦ_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n 0.026000000536441803,\r\n -4.6834001541137695,\r\n 0\r\n ],\r\n 'max': [\r\n 4.696700096130371,\r\n -0.014800000004470348,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����СȦ_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����СȦ_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 78,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 27\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'yuanhuan411',\r\n 'byteLength': 828,\r\n 'uri': 'data:application/octet-stream;base64,ufwXQLN7Mr8AAAAAObRAQLFQK78AAAAA1ediQMWP8b4AAAAAGQQ6QCv2174AAAAAqFdeQHUCWr4AAAAA7FGCQL6fmr0AAAAAHHyDQDLmrr4AAAAAXkuWQJf/kL4AAAAAXkuWQLN7crwAAAAAMCrxP2RdhL8AAAAA/BgDQJeQn78AAAAADeARQAg9i78AAAAAukkIQISeXb8AAAAAZaogQH/Zbb8AAAAA7Q3ePr4wOcAAAAAA5IMuP9/gP8AAAAAAJQZxPwrXH8AAAAAAPZs1P6UsF8AAAAAAdy2hP0VHAsAAAAAAb/CFP5eQ778AAAAA0ES4P32utr8AAAAAAprQPyL9zr8AAAAAi/1lPqqCXcAAAAAA9dv3PtcSYsAAAAAADi2yPZvmgcAAAAAAYTK1PssQg8AAAAAA9P3UPGrelcAAAAAA4liXPmrelcAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAwACAAQABQAGAAcABQAHAAgABAACAAYABAAGAAUACQAKAAsACQALAAwAAAANAAEADgAPABAADgAQABEAEQAQABIAEQASABMAFAAVAAoAFAAKAAkADAALAA0ADAANAAAAFgAXAA8AFgAPAA4AGAAZABcAGAAXABYAGgAZABgAGgAbABkAEwASABUAEwAVABQA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 336,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 156,\r\n 'byteOffset': 672,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.588,\r\n 0.588,\r\n 0.588,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.99\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '����СȦ_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '����СȦ',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst plane = {\r\n 'accessors': [\r\n {\r\n 'name': 'Rectangle001_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 4,\r\n 'min': [\r\n -5,\r\n -5,\r\n 0\r\n ],\r\n 'max': [\r\n 5,\r\n 5,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Rectangle001_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 4,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Rectangle001_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 6,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 3\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'plane',\r\n 'byteLength': 108,\r\n 'uri': 'data:application/octet-stream;base64,AACgQAAAoEAAAAAAAACgwAAAoEAAAAAAAACgwAAAoMAAAAAAAACgQAAAoMAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAgADAAAA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 48,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 48,\r\n 'byteOffset': 48,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 12,\r\n 'byteOffset': 96,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'wire_225198087',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.8824,\r\n 0.7765,\r\n 0.3412,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.968\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Rectangle001_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Rectangle001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst yuanhuan = {\r\n 'accessors': [\r\n {\r\n 'name': '����С��_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 104,\r\n 'min': [\r\n -5.407599925994873,\r\n -5.404099941253662,\r\n 0\r\n ],\r\n 'max': [\r\n 5.405200004577637,\r\n 5.406300067901611,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����С��_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 104,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����С��_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 288,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 103\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': '缩放圈-新',\r\n 'byteLength': 3072,\r\n 'uri': 'data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcAAwACAAgAAwAIAAkACgALAAwACgAMAA0ADQAMAA4ADQAOAA8ADwAOABAADwAQABEAEgATABQAEgAUABUAFgAXABgAFgAYABkAGgAbABwAGgAcAB0AHgALAAoAHwALAB4AHwAgAAsAIQAgAB8AIgAjACAAIgAgACEAJAAlACYAJAAmACcAJwAmACgAJwAoACkAKgArACwAKgAsAC0ALgAvADAALgAwADEAGQAYADIAGQAyADMANAA1ABsANAAbABoAFQAUADYAFQA2ADcAOAA5ADoAOAA6ADsAPAA9AD4APAA/AD0AQAA/ADwAQABBAD8AQgBBAEAAQgBAAEMARABFAEYARABGAEcARABHAEgARgBJAEcARgBKAEkASwBKAEYASwBMAEoASwBNAEwACQAIAC8ACQAvAC4ALQAsADkALQA5ADgAOwA6AE4AOwBOAE8ATwBOAE0ATwBNAEsAKQAoACsAKQArACoANwA2AFAANwBQAFEAUQBQAFIAUQBSAFMAUwBSAFQAUwBUAFUAVgBXAFgAVgBYAFkAVgBZAFoAWwBZAFgAXABZAFsAXABdAFkAXgBdAFwAXwBdAF4APAA+AGAAPABgAGEAMQAwABcAMQAXABYAYgBjADUAYgA1ADQAYQBgAGMAYQBjAGIAMwAyAF0AMwBdAF8AHQAcAGQAHQBkAGUAZQBkAAUAZQAFAAQAZgBnAAcAZgAHAAYAEQAQABMAEQATABIA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 1248,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 1248,\r\n 'byteOffset': 1248,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 576,\r\n 'byteOffset': 2496,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat_001',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.5,\r\n 0.5,\r\n 0.5,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 1\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '����С��_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '����С��',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst xyzScale = {\r\n \"asset\" : {\r\n \"generator\" : \"Khronos glTF Blender I/O v1.6.16\",\r\n \"version\" : \"2.0\"\r\n },\r\n \"scene\" : 0,\r\n \"scenes\" : [\r\n {\r\n \"name\" : \"Scene\",\r\n \"nodes\" : [\r\n 0,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6\r\n ]\r\n }\r\n ],\r\n \"nodes\" : [\r\n {\r\n \"mesh\" : 0,\r\n \"name\" : \"Cube\",\r\n \"scale\" : [\r\n 0.7008190751075745,\r\n 0.014999999664723873,\r\n 0.014999999664723873\r\n ]\r\n },\r\n {\r\n \"mesh\" : 1,\r\n \"name\" : \"Cube.001\",\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n {\r\n \"mesh\" : 2,\r\n \"name\" : \"Cube.004\",\r\n \"rotation\" : [\r\n 0,\r\n -0.7071068286895752,\r\n 0,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.7008190751075745,\r\n 0.014999999664723873,\r\n 0.014999999664723873\r\n ]\r\n },\r\n {\r\n \"mesh\" : 3,\r\n \"name\" : \"Cube.003\",\r\n \"rotation\" : [\r\n 0,\r\n -0.7071068286895752,\r\n 0,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n {\r\n \"mesh\" : 4,\r\n \"name\" : \"Cube.006\",\r\n \"rotation\" : [\r\n 0,\r\n 0,\r\n 0.7071068286895752,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.7008190751075745,\r\n 0.014999999664723873,\r\n 0.014999999664723873\r\n ]\r\n },\r\n {\r\n \"mesh\" : 5,\r\n \"name\" : \"Cube.005\",\r\n \"rotation\" : [\r\n 0,\r\n 0,\r\n 0.7071068286895752,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n {\r\n \"mesh\" : 6,\r\n \"name\" : \"Cube.002\",\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n ],\r\n \"materials\" : [\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.6938720345497131,\r\n 0.020288480445742607,\r\n 0.011612260714173317,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.001\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.6938720345497131,\r\n 0.020288480445742607,\r\n 0.011612260714173317,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.002\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.626582869887352,\r\n 0.626582869887352,\r\n 0.626582869887352,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.006\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.11193240433931351,\r\n 0.5583405494689941,\r\n 0.033104799687862396,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.005\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.11193240433931351,\r\n 0.5583405494689941,\r\n 0.033104799687862396,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.010\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.004391402006149292,\r\n 0.21223078668117523,\r\n 0.5209956169128418,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.009\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.004391402006149292,\r\n 0.21223078668117523,\r\n 0.5209956169128418,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n }\r\n ],\r\n \"meshes\" : [\r\n {\r\n \"name\" : \"Cube\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 0,\r\n \"NORMAL\" : 1,\r\n \"TEXCOORD_0\" : 2\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.001\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 4,\r\n \"NORMAL\" : 5,\r\n \"TEXCOORD_0\" : 6\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 1\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.006\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 10,\r\n \"NORMAL\" : 11,\r\n \"TEXCOORD_0\" : 12\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 3\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.005\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 13,\r\n \"NORMAL\" : 14,\r\n \"TEXCOORD_0\" : 15\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 4\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.010\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 16,\r\n \"NORMAL\" : 17,\r\n \"TEXCOORD_0\" : 18\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 5\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.009\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 19,\r\n \"NORMAL\" : 20,\r\n \"TEXCOORD_0\" : 21\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 6\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.002\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 7,\r\n \"NORMAL\" : 8,\r\n \"TEXCOORD_0\" : 9\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 2\r\n }\r\n ]\r\n }\r\n ],\r\n \"accessors\" : [\r\n {\r\n \"bufferView\" : 0,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 2.0003609657287598,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 0.0003610849380493164,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 1,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 2,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 3,\r\n \"componentType\" : 5123,\r\n \"count\" : 36,\r\n \"type\" : \"SCALAR\"\r\n },\r\n {\r\n \"bufferView\" : 4,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 14.549108505249023,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 12.549108505249023,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 5,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 6,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 7,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 1,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n -1,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 8,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 9,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 10,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 2.0003609657287598,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 0.0003610849380493164,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 11,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 12,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 13,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 14.549108505249023,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 12.549108505249023,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 14,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 15,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 16,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 2.0003609657287598,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 0.0003610849380493164,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 17,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 18,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 19,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 14.549108505249023,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 12.549108505249023,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 20,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 21,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n }\r\n ],\r\n \"bufferViews\" : [\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 0\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 288\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 576\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 72,\r\n \"byteOffset\" : 768\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 840\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 1128\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 1416\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 1608\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 1896\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 2184\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 2376\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 2664\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 2952\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 3144\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 3432\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 3720\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 3912\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 4200\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 4488\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 4680\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 4968\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 5256\r\n }\r\n ],\r\n \"buffers\" : [\r\n {\r\n \"byteLength\" : 5448,\r\n \"uri\" : \"data:application/octet-stream;base64,6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAQAOABQAAQAUAAcACgAGABMACgATABcAFQASAAwAFQAMAA8AEAADAAkAEAAJABYABQACAAgABQAIAAsAEQANAAAAEQAAAAQAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA\"\r\n }\r\n ]\r\n}\r\n\r\n\r\nconst partsModels = {\r\n yuanhuan,\r\n yuanhuan41,\r\n yuanhuan411,\r\n yuanpan,\r\n zzhou,\r\n jiantou,\r\n xuanzhuan,\r\n plane,\r\n xyzScale\r\n};\r\n\r\nexport default partsModels;\r\n","/*!\n * @maptalks/gl v0.104.1\n * LICENSE : UNLICENSED\n * (c) 2016-2024 maptalks.com\n */\nconst n = function() {\n if (\"undefined\" != typeof globalThis) return globalThis;\n if (\"undefined\" != typeof self) return self;\n if (\"undefined\" != typeof window) return window;\n if (\"undefined\" != typeof global) return global;\n throw new Error(\"unable to locate global object\");\n}, o = n(), e = o.gl_trans__coders = o.gl_trans__coders || {};\n\nfunction t(n) {\n return e[n];\n}\n\nfunction _(n, o) {\n e[n] = o;\n}\n\nfunction r() {\n return n().maptalks_gltf_loader;\n}\n\nfunction l(o) {\n n().maptalks_gltf_loader_bundle = o;\n}\n\ne.inject = function(e) {\n const t = e.toString(), _ = t.indexOf(\"{\") + 1, r = t.substring(0, _), l = o.gl_trans__coders = o.gl_trans__coders || {};\n let s = `${r}\\n const _____getGlobal = ${n.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;\n for (const n in l) \"inject\" !== n && \"getTranscoder\" !== n && \"registerTranscoder\" !== n && (s += 'tran_____scoders[\"' + n + '\"] =' + l[n].toString() + \"\\n;\");\n return s += \"\\n(\" + n().maptalks_gltf_loader_bundle.toString() + \")({});\\n\", s += \"\\n\" + t.substring(r.length), \n s;\n}, e.registerTranscoder = _, e.getTranscoder = t;\n\nexport { e as default, r as getGLTFLoaderBundle, t as getTranscoder, l as registerGLTFLoaderBundle, _ as registerTranscoder };\n","import { mat4, reshader, quat, vec3 } from '@maptalks/gl';\r\nimport partsModels from './models';\r\nimport * as maptalks from 'maptalks';\r\nimport { getGLTFLoaderBundle } from '@maptalks/gl/dist/transcoders';\r\n\r\nconst gltfloader = getGLTFLoaderBundle();\r\nconst point = [];\r\nfunction createGLTFMesh(modelName) {\r\n const loader = new gltfloader.GLTFLoader('', JSON.parse(JSON.stringify(partsModels[modelName])));//避免tc在移除后,再添加新的,内置的gltf受影响\r\n return loader.load().then(gltf => {\r\n return gltf;\r\n });\r\n}\r\n\r\nexport function prepareMesh(modelName, translate, rotation, scale, color, pickingId) {\r\n const meshes = [];\r\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\r\n const modelMatrix = mat4.fromRotationTranslationScale([], rotate, translate, scale);\r\n const promise = createGLTFMesh(modelName);\r\n promise.then(data => {\r\n const gltfPack = reshader.GLTFHelper.exportGLTFPack(data);\r\n const geometries = gltfPack.getMeshesInfo();\r\n geometries.forEach((g, i) => {\r\n const material = new reshader.Material({ color: color || g.materialInfo.baseColorFactor });\r\n const mesh = new reshader.Mesh(g.geometry, material);\r\n mesh.setUniform('uPickingId', pickingId + i);\r\n const defines = mesh.getDefines();\r\n defines.HAS_PICKING_ID = 2;\r\n mesh.setDefines(defines);\r\n mesh.translate = translate;\r\n mesh.rotation = rotation;\r\n mesh.scaling = scale;\r\n mat4.multiply(mesh.localTransform, modelMatrix, g.nodeMatrix);\r\n mesh.originTransform = mat4.copy([], mesh.localTransform);\r\n mesh.originColor = color || g.materialInfo.baseColorFactor;\r\n meshes.push(mesh);\r\n });\r\n if (pickingId > 100) {\r\n meshes[0].properties['relatedMeshes'] = meshes.slice(1, 2);\r\n meshes[1].properties['relatedMeshes'] = meshes.slice(0, 1);\r\n meshes[2].properties['relatedMeshes'] = meshes.slice(3, 4);\r\n meshes[3].properties['relatedMeshes'] = meshes.slice(2, 3);\r\n meshes[4].properties['relatedMeshes'] = meshes.slice(5, 6);\r\n meshes[5].properties['relatedMeshes'] = meshes.slice(4, 5);\r\n meshes[6].properties['relatedMeshes'] = meshes.slice(0, 6);\r\n }\r\n });\r\n return meshes;\r\n}\r\n\r\nfunction containerPointToPoint(map, containerPoint, targetRes, altitude) {\r\n if (altitude) {\r\n const res = targetRes / map['_getResolution']();\r\n const w2 = map.width / 2, h2 = map.height / 2;\r\n point[0] = (containerPoint.x - w2) / w2;\r\n point[1] = containerPoint.y / h2 - 1;\r\n point[3] = altitude * res;\r\n const inverseMat = mat4.invert([], map.projViewMatrix);\r\n vec3.transformMat4(point, point, inverseMat);\r\n const glScale = map.getGLScale();\r\n vec3.set(point, point[0] / glScale, point[1] / glScale, point[2] / glScale);\r\n vec3.scale(point, point, 1 / res);\r\n return new maptalks.Point(point[0], point[1]);\r\n } else {\r\n const coordExtend = map.containerPointToCoordinate(containerPoint);\r\n return map.coordinateToPointAtRes(coordExtend, targetRes);\r\n }\r\n}\r\n\r\nfunction pointToContainerPoint(map, point, res, altitude) {\r\n return map['_pointAtResToContainerPoint'](point, res, altitude);\r\n}\r\n\r\nfunction getAbsoluteValue(value, s) {\r\n return Math.abs(value) * Math.sign(s);\r\n}\r\n\r\nexport function calFixedScale(target, map) {\r\n const coordinate = target.getCoordinates();\r\n const coordPoint = map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n const trans = [coordPoint.x, coordPoint.y, 0];\r\n const currentTrans = getTranslationPoint(map, target.getTranslation());\r\n vec3.add(trans, trans, currentTrans);\r\n const containerPoint = pointToContainerPoint(map, new maptalks.Point(trans[0], trans[1]), map.getGLRes());\r\n containerPoint.x += 85;\r\n const worldCoordExtend = containerPointToPoint(map, containerPoint, map.getGLRes());\r\n const currentLength = Math.sqrt(Math.pow(worldCoordExtend.x - trans[0], 2) + Math.pow(worldCoordExtend.y - trans[1], 2));\r\n const fixedScale = currentLength / 5.272881136101205;\r\n return fixedScale;\r\n}\r\n\r\nexport function containerPointToWorldPoint(point, map) {\r\n const coordinate = map.containerPointToCoordinate(new maptalks.Point(point.x, point.y));\r\n return map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n}\r\n\r\nexport function getTranslationPoint(map, translation) {\r\n if (!map) {\r\n return translation;\r\n }\r\n const point = map.distanceToPointAtRes(translation[0], translation[1], map.getGLRes());\r\n const z = map.altitudeToPoint(translation[2], map.getGLRes());\r\n return vec3.set([], getAbsoluteValue(point.x, translation[0]), getAbsoluteValue(point.y, translation[1]), getAbsoluteValue(z, translation[2]));\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class TranslateHelper {\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const scale = 340 / 177;\r\n const right = prepareMesh('jiantou', [1.2 * scale, 0, 0], [0, 0, 90], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 7);\r\n const bottom = prepareMesh('jiantou', [0, 1.2 * scale, 0], [0, 0, 180], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 8);\r\n const left = prepareMesh('jiantou', [-1.2 * scale, 0, 0], [0, 0, 270], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 9);\r\n const up = prepareMesh('jiantou', [0, -1.2 * scale, 0], [0, 0, 0], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 10);\r\n meshes.push(right, bottom, left, up);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class RotationHelper {\r\n\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const scale = 340 / 177;\r\n const mesh = prepareMesh('xuanzhuan', [0, 0, 0], [180, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [50 / 255, 130 / 255, 184 / 255, 0.8], 11);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\nexport default class ScalingHelper {\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const scale = 340 / 177;\r\n const mesh = prepareMesh('yuanhuan', [0, 0, 0], [0, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [149 / 255, 179 / 255, 199 / 255, 0.5], 12);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class PlaneHelper {\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const mesh = prepareMesh('plane', [0, 0, 0], [0, 0, 0], [10, 10, 10], [1, 0, 0, 0.5], 16);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class XyzScaleHelper {\r\n\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const mesh = prepareMesh('xyzScale', [0, 0, 0], [0, 0, 0], [2, 2, 2], null, 113);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { mat4, vec3, quat } from '@maptalks/gl';\r\nimport TranslateHelper from './TranslateHelper';\r\nimport RotationHelper from './RotationHelper';\r\nimport ScalingHelper from './ScalingHelper';\r\nimport PlaneHelper from './PlaneHelper';\r\nimport { prepareMesh, calFixedScale, getTranslationPoint } from '../common/Util.js';\r\nimport XyzScaleHelper from './XyzScaleHelper';\r\n\r\nconst VEC3 = [], TRANS = [], MAT4 = [], QUAT = [], SCALE = [], ratio = [177 / 170, 177 / 170, 177 / 170], ROTATION = [];\r\nconst scaleChangePickingIds = [1, 2, 3, 4, 12];\r\n\r\nexport default class TransformHelper {\r\n constructor() {\r\n this.translate = new TranslateHelper();\r\n this.rotation = new RotationHelper();\r\n this.scaling = new ScalingHelper();\r\n this.planeHelper = new PlaneHelper();\r\n this.xyzScaleHelper = new XyzScaleHelper();\r\n this._meshes = this._prepareMeshes();\r\n this._rotateClockwise = true;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = {};\r\n meshes['translate'] = this.translate.getMeshes();\r\n meshes['rotation'] = this.rotation.getMeshes();\r\n meshes['scaling'] = this.scaling.getMeshes();\r\n meshes['planeHelper'] = this.planeHelper.getMeshes();\r\n meshes['xyzScale'] = this.xyzScaleHelper.getMeshes();\r\n const scale = 340 / 177;\r\n const wn = prepareMesh('yuanhuan41', [-2.745 * scale, 2.745 * scale, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 1);//缩放\r\n const en = prepareMesh('yuanhuan41', [2.745 * scale, 2.745 * scale, 0], [-90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 2);\r\n const es = prepareMesh('yuanhuan41', [2.745 * scale, -2.745 * scale, 0], [90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 3);//缩放\r\n const ws = prepareMesh('yuanhuan41', [-2.745 * scale, -2.745 * scale, 0], [-90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 4);\r\n const yuanpan = prepareMesh('yuanpan', [0, 0, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [89 / 255, 206 / 255, 147 / 255, 0.5], 5);\r\n const zzhou = prepareMesh('zzhou', [0, 0, 6.5], [90, 0, 0], [1, 1, 1], [14 / 255, 127 / 255, 191 / 255, 1], 6);\r\n meshes['translate'].push(wn, en, es, ws, yuanpan, zzhou);\r\n return meshes;\r\n }\r\n\r\n updateMatrix(map, target, angle, scalar, deltaTrans) {\r\n const coordinate = target.getCoordinates();\r\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n const z = target._getPointZ();\r\n vec3.set(TRANS, p.x, p.y, z);\r\n const deltaTranslate = vec3.copy(VEC3, deltaTrans);\r\n const currentTrans = getTranslationPoint(map, target.getTranslation()); //由于gltfmarker中translation单位改成了米,不能直接这样加,需要转换一下\r\n vec3.add(TRANS, TRANS, currentTrans);\r\n vec3.add(TRANS, TRANS, deltaTranslate);\r\n for (const name in this._meshes) {\r\n for (let i = 0; i < this._meshes[name].length; i++) {\r\n const m = this._meshes[name][i];\r\n for (let j = 0; j < m.length; j++) {\r\n const mesh = m[j];\r\n const pickingId = mesh.getUniform('uPickingId');\r\n const translate = vec3.copy(VEC3, mesh.translate);\r\n let rotation = vec3.copy(ROTATION, mesh.rotation);\r\n const scaling = mesh.scaling;\r\n if (pickingId === 11) {\r\n if (this._rotateClockwise) {\r\n rotation[2] += angle;\r\n mesh.rotation[2] += angle;\r\n } else if (!this._rotateClockwise) {\r\n rotation[2] += angle;\r\n mesh.rotation[2] += angle;\r\n rotation[0] = 360;\r\n rotation[2] -= 90;\r\n }\r\n }\r\n if (pickingId > 100 && target.getTargets().length === 1) {\r\n rotation = target.getTargets()[0].getRotation();\r\n }\r\n if (scaleChangePickingIds.indexOf(pickingId) > -1) {\r\n if (pickingId !== 12) {\r\n scaling[0] += scalar;\r\n scaling[1] += scalar;\r\n scaling[2] += scalar;\r\n } else {\r\n const translateMesh = this._meshes['translate'][4][0];\r\n scaling[0] = translateMesh.scaling[0] * 1.2;\r\n scaling[1] = translateMesh.scaling[0] * 1.2;\r\n scaling[2] = translateMesh.scaling[0] * 1.2;\r\n }\r\n }\r\n let fixedScale = calFixedScale(target, map);\r\n fixedScale = vec3.set(MAT4, fixedScale, fixedScale, fixedScale);\r\n vec3.multiply(translate, translate, fixedScale);\r\n vec3.multiply(fixedScale, fixedScale, scaling);\r\n if (pickingId === 1 || pickingId === 2 || pickingId === 3 || pickingId === 4) {\r\n const tmpScale = vec3.multiply(SCALE, scaling, ratio);\r\n vec3.multiply(translate, translate, tmpScale);\r\n }\r\n const rotate = quat.fromEuler(QUAT, rotation[0], rotation[1], rotation[2]);\r\n vec3.add(translate, translate, TRANS);\r\n if (name === 'xyzScale') {\r\n const sm = mat4.fromRotationTranslationScale([], rotate, translate, fixedScale);\r\n mat4.multiply(mesh.localTransform, sm, mesh.originTransform);\r\n } else {\r\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n getMeshes(mode) {\r\n const meshes = {};\r\n if (!mode) {\r\n return meshes;\r\n }\r\n if (mode === 'xyzScale') {\r\n meshes[mode] = this._meshes[mode];\r\n } else {\r\n meshes['translate'] = this._meshes.translate;\r\n if (mode !== 'translate') {\r\n meshes[mode] = this._meshes[mode];\r\n }\r\n }\r\n return meshes;\r\n }\r\n\r\n _setRotateClockwise(clockwise) {\r\n this._rotateClockwise = clockwise;\r\n }\r\n\r\n dispose() {\r\n for (const name in this._meshes) {\r\n for (let i = 0; i < this._meshes[name].length; i++) {\r\n const m = this._meshes[name][i];\r\n for (let j = 0; j < m.length; j++) {\r\n const mesh = m[j];\r\n mesh.geometry.dispose();\r\n mesh.dispose();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Coordinate, Point } from \"maptalks\";\r\nimport { vec3, mat4, quat } from '@maptalks/gl';\r\n\r\nconst EMPTY_VEC = [], EMPTY_QUAT = [], EMPTY_MAT = [], TEMP_POINT = new Point(0, 0), TEMP_VEC_1 = [], TEMP_VEC_2 = [], TEMP_SCALE = [], EMPTY_TRANS = [0, 0, 0];\r\nexport default class TransformTarget {\r\n constructor() {\r\n this._targetList = [];\r\n this._translating = [0, 0, 0];\r\n this._scaling = [1, 1, 1];\r\n this._rotation = [0, 0, 0];\r\n }\r\n\r\n _add(target) {\r\n if (Array.isArray(target)) {\r\n target.forEach(t => {\r\n this._add(t);\r\n });\r\n } else {\r\n target.on('remove', this._onRemoveTarget, this);\r\n target._originTRS = {\r\n coordinate: target.getCoordinates(),\r\n translation: target.getTranslation(),\r\n rotation: target.getRotation(),\r\n scale: target.getScale()\r\n };\r\n this._targetList.push(target);\r\n }\r\n }\r\n\r\n _clear() {\r\n this._targetList.forEach(t => {\r\n t.off('remove', this._onRemoveTarget, this);\r\n });\r\n this._targetList = [];\r\n }\r\n\r\n _updateTRS(task, deltaTranslate, deltaRotation, deltaScale, limitScale, map, transformcontrol) {\r\n for (let i = 0; i < this._targetList.length; i++) {\r\n const target = this._targetList[i];\r\n const currentRotation = target.getRotation();\r\n const currentScaling = target.getScale();\r\n const targetCoordinate = this._calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate);\r\n let tempScale = null;\r\n //放大时,拉伸的空间可无限大,但是缩小时,是向圈内缩放,空间有限,需要增加缩小的倍数\r\n if (deltaScale >= 0) {\r\n tempScale = deltaScale;\r\n } else {\r\n tempScale = deltaScale * (this.options && this.options.scaleStrength || 1.0);\r\n }\r\n const targetScale = vec3.add(TEMP_SCALE, vec3.set(EMPTY_VEC, tempScale * currentScaling[0], tempScale * currentScaling[1], tempScale * currentScaling[2]), currentScaling);\r\n const minScale = Math.min(...targetScale);\r\n //minScale可能会出现<=0的情况,所以minScale只作为判断是否要限定scale的依据,计算的逻辑则用当前target的scale去计算,当前target的scale可以保证>=0.01\r\n if (Math.abs(minScale) < limitScale) {//scale有可能是负,例如翻转的情况\r\n const currentMinScale = Math.abs(minScale);\r\n targetScale[0] = targetScale[0] * (limitScale / currentMinScale);\r\n targetScale[1] = targetScale[1] * (limitScale / currentMinScale);\r\n targetScale[2] = targetScale[2] * (limitScale / currentMinScale);\r\n }\r\n const targetRotation = vec3.add(currentRotation, deltaRotation, currentRotation);\r\n target.setCoordinates(targetCoordinate);\r\n this._scaleXYZ(task, targetScale, currentScaling);\r\n const currentTrans = target.getTranslation();\r\n target.setTRS(currentTrans, targetRotation, targetScale);\r\n }\r\n vec3.set(TEMP_SCALE, deltaScale, deltaScale, deltaScale);\r\n vec3.add(this._rotation, deltaRotation, this._rotation);\r\n vec3.add(this._scaling, TEMP_SCALE, this._scaling);\r\n vec3.add(this._translating, deltaTranslate, this._translating);\r\n if (task.indexOf('translate') > -1) {\r\n transformcontrol.fire('positionchange', { action: task, type: 'positionchange', target: this._targetList, center: this.getCoordinates(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\r\n } else {\r\n transformcontrol.fire('transforming', { action: task, type: 'transforming', target: this._targetList, center: this._targetList[0].getTransformOrigin(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\r\n }\r\n }\r\n\r\n _calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate) {\r\n const center = target.getCenter();\r\n const originCenter = target.getTransformOrigin();\r\n const glRes = map.getGLRes();\r\n const pCenter = map.coordinateToPointAtRes(center, glRes, TEMP_POINT);\r\n pCenter.z = map.altitudeToPoint(center.z, glRes);\r\n vec3.set(TEMP_VEC_1, pCenter.x, pCenter.y, pCenter.z || 0);\r\n const pOriginCenter = map.coordinateToPointAtRes(originCenter, glRes, TEMP_POINT);\r\n pOriginCenter.z = map.altitudeToPoint(originCenter.z, glRes);\r\n vec3.set(TEMP_VEC_2, pOriginCenter.x , pOriginCenter.y, pOriginCenter.z || 0);\r\n const point = vec3.sub(EMPTY_VEC, TEMP_VEC_1, TEMP_VEC_2);\r\n const rotation = quat.fromEuler(EMPTY_QUAT, 0, 0, deltaRotation[2]);\r\n vec3.set(TEMP_SCALE, deltaScale + 1, deltaScale + 1, deltaScale + 1);\r\n const trsMatrix = mat4.fromRotationTranslationScale(EMPTY_MAT, rotation, deltaTranslate, TEMP_SCALE);\r\n vec3.transformMat4(point, point, trsMatrix);\r\n vec3.add(point, point, TEMP_VEC_2);\r\n TEMP_POINT.set(point[0], point[1]);\r\n const newCenter = map.pointAtResToCoordinate(TEMP_POINT, glRes);\r\n newCenter.z = point[2] / map.altitudeToPoint(1, glRes);\r\n return newCenter;\r\n }\r\n\r\n _scaleXYZ(task, targetScale, currentScaling) {\r\n if (task === 'x-scale') {\r\n targetScale[1] = currentScaling[1];\r\n targetScale[2] = currentScaling[2];\r\n } if (task === 'y-scale') {\r\n targetScale[0] = currentScaling[0];\r\n targetScale[2] = currentScaling[2];\r\n } if (task === 'z-scale') {\r\n targetScale[0] = currentScaling[0];\r\n targetScale[1] = currentScaling[1];\r\n }\r\n return targetScale;\r\n }\r\n\r\n _reset() {\r\n this._targetList.forEach(target => {\r\n if (target._originTRS) {\r\n const { coordinate, translation, rotation, scale } = target._originTRS;\r\n target.setCoordinates(coordinate);\r\n target.setTRS(translation, rotation, scale);\r\n }\r\n });\r\n }\r\n\r\n getScale() {\r\n return this._scaling;\r\n }\r\n\r\n getTranslation() {\r\n if (this._targetList.length === 1) {\r\n return this._targetList[0].getTranslation() || EMPTY_TRANS;\r\n }\r\n return EMPTY_TRANS;\r\n }\r\n\r\n getRotation() {\r\n return this._rotation;\r\n }\r\n\r\n _getLayer() {\r\n if (this._targetList[0]) {\r\n return this._targetList[0].getLayer();\r\n }\r\n return null;\r\n }\r\n\r\n getCoordinates() {\r\n let cx = 0, cy = 0, cz = 0\r\n const len = this._targetList.length;\r\n if (!len) {\r\n return null;\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const center = this._targetList[i].getCenter();\r\n cx += center.x;\r\n cy += center.y;\r\n cz += center.z || 0;\r\n }\r\n cx = cx / len;\r\n cy = cy / len;\r\n cz = cz / len;\r\n const newCenter = new Coordinate(cx, cy, cz);\r\n for (let i = 0; i < len; i++) {\r\n this._targetList[i].setTransformOrigin(newCenter);\r\n }\r\n return newCenter;\r\n }\r\n\r\n _onRemoveTarget(e) {\r\n const target = e.target;\r\n const index = this._targetList.indexOf(target);\r\n if (index > -1) {\r\n delete target._originTRS;\r\n this._targetList.splice(index, 1);\r\n }\r\n }\r\n\r\n getTargets() {\r\n return this._targetList;\r\n }\r\n\r\n _getPointZ() {\r\n let pz = 0\r\n const len = this._targetList.length;\r\n for (let i = 0; i < len; i++) {\r\n const pointZ = this._targetList[i].getPointZ();\r\n pz += pointZ;\r\n }\r\n pz = pz / len;\r\n return pz;\r\n }\r\n\r\n _isVisible() {\r\n for (let i = 0; i < this._targetList.length; i++) {\r\n if (this._targetList[i].isVisible()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { mat4, quat, vec3, vec2, reshader } from '@maptalks/gl';\r\nimport { Handlerable, Eventable, Class, Point, Coordinate, INTERNAL_LAYER_PREFIX } from 'maptalks';\r\nimport TransformHelper from './helper/TransformHelper';\r\nimport { calFixedScale, getTranslationPoint } from './common/Util';\r\nimport vert from './common/helper.vert';\r\nimport frag from './common/helper.frag';\r\nimport TransformTarget from './TransformTarget';\r\nimport { GLTFLayer, GLTFMarker } from '@maptalks/gltf-layer';\r\n\r\nconst translatePickingIds = [5, 6, 7, 8, 9, 10];\r\nconst translatePickingIds0 = [5, 7, 8, 9, 10];\r\nconst rotatePickingIds = [2, 4, 11];\r\nconst scalePickingIds = [1, 3, 12];\r\nconst noChangeColorPickingIds = [12, 16];\r\nconst defaultHuanPickingIds = [1, 2, 3, 4];\r\nconst scaleChnagePickingIds = [1, 2, 3, 4, 12];\r\nconst limitScale = 0.01;\r\nconst QUAT = [], SCALE = [], TRANS = [], EMPTY_VEC = [], CENTER = [], START = [], END = [];\r\nconst options = {\r\n scaleStrength: 2.0\r\n};\r\n\r\nexport default class TransformControl extends Eventable(Handlerable(Class)) {\r\n constructor(options = {}) {\r\n super(options);\r\n this.options = options;\r\n this.mouseAction = 'moving';\r\n this._mode = this.options.mode || 'translate';\r\n this._enabled = true;\r\n this.TransformHelper = new TransformHelper();\r\n this._target = new TransformTarget();\r\n this.helperScene = new reshader.Scene([]);\r\n this.addToMapCount = 0;\r\n this._createHelperLayer();\r\n }\r\n\r\n setCoordinates(coordinate) {\r\n this._helper.setCoordinates(coordinate);\r\n this.transform(this._helper);\r\n }\r\n\r\n enable() {\r\n this._enabled = true;\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n return this;\r\n }\r\n\r\n disable() {\r\n this._enabled = false;\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n if (this.map) {\r\n this.map.resetCursor();\r\n }\r\n return this;\r\n }\r\n\r\n setMode(mode) {\r\n this._mode = mode;\r\n this._resetScale();\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n this.fire('modechange', { mode, type: 'modechange' });\r\n }\r\n\r\n getMode() {\r\n return this._mode;\r\n }\r\n\r\n isEnable() {\r\n return this._enabled;\r\n }\r\n\r\n _setMode(pickingId) {\r\n if (translatePickingIds.indexOf(pickingId) > -1) {\r\n this._mode = 'translate';\r\n } else if (rotatePickingIds.indexOf(pickingId) > -1) {\r\n this._mode = 'rotation';\r\n } else if (scalePickingIds.indexOf(pickingId) > -1) {\r\n this._mode = 'scaling';\r\n } else if (this._mode !== 'xyzScale') {\r\n this._mode = 'translate';\r\n }\r\n }\r\n\r\n _getMode() {\r\n return this._mode;\r\n }\r\n\r\n addTo(map) {\r\n if (this.map) {\r\n this._removeEvents();\r\n console.warn('transform control has been added to a map, it suggest remove from the map before');\r\n return;\r\n }\r\n this.addToMapCount++;\r\n this.map = map;\r\n this._helperlayer.addTo(this.map);\r\n this.container = map.getContainer();\r\n map.on('dom:mousemove', this._mouseMoveHandle, this);\r\n map.on('dom:mousedown', this._mousedownHandle, this);\r\n map.on('dom:mouseup', this._mouseupHandle, this);\r\n map.on('zooming moving dragrotating', this._viewchanging, this);\r\n this._initShader();\r\n }\r\n\r\n _createHelperLayer() {\r\n this._helperlayer = new GLTFLayer(`${INTERNAL_LAYER_PREFIX}_transformcontrol`);\r\n this._helper = new GLTFMarker([0, 0], {\r\n symbol: {\r\n url: 'cube',\r\n modelHeight: 1,\r\n uniforms: {\r\n polygonOpacity: 0.01\r\n }\r\n }\r\n }).addTo(this._helperlayer);\r\n }\r\n\r\n remove() {\r\n if (!this.map || !this.container || !this.layerRenderer) {\r\n return;\r\n }\r\n this._removeEvents();\r\n this.TransformHelper.dispose();\r\n this.layerRenderer.setToRedraw();\r\n this._helperlayer.remove();\r\n delete this._helper;\r\n delete this._helperlayer;\r\n delete this.map;\r\n delete this.layer;\r\n delete this.layerRenderer;\r\n delete this.container;\r\n delete this._target;\r\n }\r\n\r\n _removeEvents() {\r\n if (!this.container || !this.map) {\r\n return;\r\n }\r\n this.map.off('dom:mousemove', this._mouseMoveHandle, this);\r\n this.map.off('dom:mousedown', this._mousedownHandle, this);\r\n this.map.off('dom:mouseup', this._mouseupHandle, this);\r\n this.map.off('zooming moving dragrotating', this._viewchanging, this);\r\n if (this.layer) {\r\n this.layer.off('renderend', this.render, this);\r\n }\r\n }\r\n\r\n _mouseMoveHandle(e) {\r\n if (!this._isAvailable()) {\r\n return;\r\n }\r\n this.currentMousePosition = {\r\n x: e.containerPoint.x,\r\n y: e.containerPoint.y\r\n };\r\n if (this.mouseAction === 'moving') {\r\n //在moving的情况下,会激活translate或者rotate两种模式\r\n const meshes = this._getMeshes();\r\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\r\n if (this.currentPickingObject && this.currentPickingObject.pickingId != null) {\r\n this._setMode(this.currentPickingObject.pickingId);\r\n if (this.currentPickingObject.pickingId === 6) {\r\n this._transformPlaneHelper(true);\r\n } else {\r\n this._transformPlaneHelper(false);\r\n }\r\n } else {\r\n this._transformPlaneHelper(false);\r\n this._setMode();\r\n }\r\n this._meshAction();\r\n }\r\n this._transformAction(this.currentMousePosition);\r\n }\r\n\r\n _mousedownHandle(e) {\r\n if (!this._isAvailable() || e.domEvent.button !== 0) {\r\n return;\r\n }\r\n const meshes = this._getMeshes();\r\n this.currentMousePosition = {\r\n x: e.containerPoint.x,\r\n y: e.containerPoint.y\r\n };\r\n this._needRefreshPicking = true;\r\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\r\n this.firstDownPoint = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\r\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\r\n this.mouseAction = 'transform';\r\n this._setTask(this.currentPickingObject.pickingId);\r\n this.map.config('zoomable', false);\r\n this.map.config('draggable', false);\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n } else {\r\n this.mouseAction = 'pan';\r\n this.map.config('zoomable', true);\r\n this.map.config('draggable', true);\r\n this._resetScale();\r\n }\r\n this.lastMousePosition = this.currentMousePosition;\r\n this.lastPickingObject = this.currentPickingObject;\r\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\r\n }\r\n\r\n _mouseupHandle() {\r\n if (this.mouseAction === 'transform') {\r\n this.firstDownPoint = null;\r\n this._resetScale();\r\n this._needRefreshPicking = true;\r\n this.fire('transformend', { action: this._task, type: 'transformend' });\r\n }\r\n this.mouseAction = 'moving';\r\n if (this._mode !== 'xyzScale') {\r\n this._mode = 'translate';\r\n }\r\n this.map.config('zoomable', true);\r\n this.map.config('draggable', true);\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n }\r\n\r\n _viewchanging() {\r\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\r\n const bearing = this.map.getBearing();\r\n planeMesh.rotation[2] = -bearing;\r\n this._updateMatrix();\r\n }\r\n\r\n _updateMatrix() {\r\n if (!this._isAvailable()) {\r\n return;\r\n }\r\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\r\n this._needRefreshPicking = true;\r\n }\r\n\r\n picked(coordinate) {\r\n if (!this.layerRenderer) {\r\n return false;\r\n }\r\n const meshes = this._getMeshes();\r\n const map = this.map;\r\n let containerPoint = coordinate;\r\n if (!(coordinate instanceof Point)) {\r\n containerPoint = map.coordinateToContainerPoint(new Coordinate(coordinate));\r\n }\r\n const pickingObject = this._getPickingPoint(containerPoint, meshes, 'picked');\r\n if (pickingObject && pickingObject.meshId !== null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n _resetScale() {\r\n const scalingMesh = this.TransformHelper.getMeshes('scaling')['scaling'][0][0];\r\n const scale = 340 / 177;\r\n scalingMesh.scaling = [0.6 * scale, 0.6 * scale, 0.6 * scale];\r\n if (this.layerRenderer) {\r\n this._resetScaleControl(scalingMesh);\r\n this._resetDefaultColor();\r\n }\r\n }\r\n\r\n _resetDefaultColor() {\r\n const defaultMeshes = this.TransformHelper['_meshes'].translate;\r\n defaultMeshes.forEach(meshes => {\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n }\r\n });\r\n }\r\n\r\n _resetScaleControl(mesh) {\r\n const coordinate = this._target.getCoordinates();\r\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\r\n const trans = [p.x, p.y, 0];\r\n const originTrans = getTranslationPoint(this.map, this._target.getTranslation());\r\n vec3.add(trans, trans, originTrans);\r\n const translate = vec3.copy([], mesh.translate);\r\n const scaling = mesh.scaling;\r\n let fixedScale = calFixedScale(this._target, this.map);\r\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\r\n vec3.multiply(translate, translate, fixedScale);\r\n vec3.multiply(fixedScale, fixedScale, scaling);\r\n vec3.add(translate, translate, trans);\r\n mat4.fromRotationTranslationScale(mesh.localTransform, [0, 0, 0, 1], translate, fixedScale);\r\n const meshes = this._getMeshes();\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\r\n const translate = vec3.copy([], mesh.translate);\r\n const scale = 170 / 177;\r\n mesh.scaling = [scale, scale, scale];\r\n const scaling = mesh.scaling;\r\n const rotation = mesh.rotation;\r\n let fixedScale = calFixedScale(this._target, this.map);\r\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\r\n vec3.multiply(translate, translate, fixedScale);\r\n vec3.multiply(fixedScale, fixedScale, scaling);\r\n vec3.add(translate, translate, trans);\r\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\r\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\r\n }\r\n });\r\n }\r\n\r\n _getWorldPosition(containerPoint) {\r\n const coordinate = this.map.containerPointToCoordinate(containerPoint);\r\n const worldPosition = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\r\n return {\r\n point: [worldPosition.x, worldPosition.y]\r\n };\r\n }\r\n\r\n _transformAction(mousePosition) {\r\n if (this.mouseAction === 'transform') {\r\n const mode = this._getMode();\r\n const currentTrans = getTranslationPoint(this.map, this._target.getTranslation());\r\n const z = this._target._getPointZ();\r\n let planeInteract = null, lastPlaneInteract = null;\r\n if (currentTrans[2] + z < 0.01 && this._task !== 'z-translate') { //target不是贴着地面的情况下\r\n planeInteract = this._getWorldPosition(this.currentMousePosition);\r\n lastPlaneInteract = this._getWorldPosition(this.lastMousePosition);\r\n } else {\r\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0];\r\n planeInteract = this._getPickingPoint(this.currentMousePosition, planeMesh, 'plane');\r\n lastPlaneInteract = this._getPickingPoint(this.lastMousePosition, planeMesh, 'plane');\r\n if (!planeInteract || planeInteract.meshId === null || !lastPlaneInteract || lastPlaneInteract.meshId === null) {\r\n return;\r\n }\r\n }\r\n const deltaTranslate = [0, 0, 0];\r\n const deltaRotation = [0, 0, 0];\r\n let deltaScale = 0;\r\n let deltaAngle = 0;\r\n let helperDeltaScale = 0;\r\n if (mode === 'translate') {\r\n if (this._task === 'xy-translate') {\r\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\r\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\r\n deltaTranslate[0] = deltaTransX;\r\n deltaTranslate[1] = deltaTransY;\r\n } else if (this._task === 'x-translate') {\r\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\r\n deltaTranslate[0] = deltaTransX;\r\n } else if (this._task === 'y-translate') {\r\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\r\n deltaTranslate[1] = deltaTransY;\r\n } else if (this._task === 'z-translate') {\r\n let deltaTransZ = 0;\r\n if (!this._isInMapCenter()) {\r\n deltaTransZ = planeInteract.point[2] - lastPlaneInteract.point[2];\r\n } else {\r\n const glRes = this.map.getGLRes();\r\n const lastContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(lastPlaneInteract.point[0], lastPlaneInteract.point[1]), glRes);\r\n const currentContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(planeInteract.point[0], planeInteract.point[1]), glRes);\r\n const distance = vec2.length(vec2.set(EMPTY_VEC, planeInteract.point[0] - lastPlaneInteract.point[0], planeInteract.point[1] - lastPlaneInteract.point[1]));\r\n if (currentContainerPoint.y < lastContainerPoint.y) {\r\n deltaTransZ = distance;\r\n } else {\r\n deltaTransZ = -distance;\r\n }\r\n }\r\n deltaTranslate[2] = deltaTransZ;\r\n }\r\n } else if (mode === 'rotation') {\r\n deltaAngle = this._calAngle(planeInteract.point, lastPlaneInteract.point);\r\n if (deltaAngle >= 0) {\r\n this.TransformHelper._setRotateClockwise(true);\r\n } else {\r\n this.TransformHelper._setRotateClockwise(false);\r\n }\r\n deltaRotation[2] += deltaAngle;\r\n } else if (mode === 'scaling' || mode === 'xyzScale') {\r\n const center = this._getCurrentCenter();\r\n const firstDistance = vec2.length(vec2.set(EMPTY_VEC, this.firstDownPoint.point[0] - center[0], this.firstDownPoint.point[1] - center[1]));\r\n const scaleDistance = vec2.length(vec2.set(EMPTY_VEC, lastPlaneInteract.point[0] - center[0], lastPlaneInteract.point[1] - center[1]));\r\n deltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, scaleDistance);\r\n helperDeltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, firstDistance);\r\n }\r\n this.TransformHelper.updateMatrix(this.map, this._target, deltaAngle, helperDeltaScale, deltaTranslate);//TC自己转动\r\n this._target._updateTRS(this._task, deltaTranslate, deltaRotation, deltaScale, limitScale, this.map, this);\r\n }\r\n this.lastMousePosition = mousePosition;\r\n this.lastPickingObject = this.currentPickingObject;\r\n const meshes = this._getMeshes();\r\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\r\n }\r\n\r\n _calDirection(from, to, center, distance, currentScaling) {\r\n const distanceFrom = vec2.length(vec2.set(EMPTY_VEC, from[0] - center[0], from[1] - center[1]));\r\n const distanceTo = vec2.length(vec2.set(EMPTY_VEC, to[0] - center[0], to[1] - center[1]));\r\n const scalar = (distanceFrom - distanceTo) / distance;\r\n if (currentScaling) {\r\n return (currentScaling[0] - limitScale) * scalar;\r\n }\r\n return scalar;\r\n }\r\n\r\n _getCurrentCenter() {\r\n const map = this.map;\r\n const coordinate = this._target.getCoordinates();\r\n const center = map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n const trans = vec3.set(CENTER, center.x, center.y, 0);\r\n const currentTrans = getTranslationPoint(map, this._target.getTranslation());\r\n vec3.add(trans, trans, currentTrans);\r\n return trans;\r\n }\r\n\r\n _transformPlaneHelper(rotated) {\r\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\r\n const trans = mat4.getTranslation(TRANS, planeMesh.localTransform);\r\n const scaling = mat4.getScaling(SCALE, planeMesh.localTransform);\r\n let rotation = quat.fromEuler(QUAT, 0, 0, 0);\r\n const bearing = this.map.getBearing();\r\n if (rotated && !this._isInMapCenter()) {\r\n rotation = quat.fromEuler(QUAT, 90, 0, -bearing);\r\n if (planeMesh.rotation[0] === 0) {\r\n this._needRefreshPicking = true;\r\n }\r\n vec3.set(planeMesh.rotation, 90, 0, -bearing);\r\n } else {\r\n if (planeMesh.rotation[0] === 90) {\r\n this._needRefreshPicking = true;\r\n }\r\n vec3.set(planeMesh.rotation, 0, 0, -bearing);\r\n }\r\n mat4.fromRotationTranslationScale(planeMesh.localTransform, rotation, trans, scaling);\r\n }\r\n\r\n _isInMapCenter() {\r\n if (this.map.getPitch()) {\r\n return false;\r\n }\r\n const cameraPos = this.map.cameraPosition;\r\n const centerPos = this.map.coordinateToPointAtRes(this.map.getCenter(), this.map.getGLRes());\r\n vec3.set(centerPos, centerPos.x, centerPos.y, 0);\r\n const coordinate = this._target.getCoordinates();\r\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\r\n const trans = getTranslationPoint(this.map, this._target.getTranslation());\r\n const position = vec3.set(TRANS, p.x, p.y, 0);\r\n const worldPos = vec3.add(position, position, trans);\r\n const vTargetToCamera = vec3.subtract([], cameraPos, worldPos);\r\n const vCenterToCamera = vec3.subtract([], cameraPos, centerPos);\r\n const angle = vec3.angle(vTargetToCamera, vCenterToCamera);\r\n const theta = (1 / 180) * Math.PI;\r\n if (angle < theta) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n _meshAction() {\r\n const meshes = this._getMeshes();\r\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\r\n this._setCursor();\r\n if (this.lastPickingObject && this.lastPickingObject.meshId != null && this.lastPickingObject.meshId !== this.currentPickingObject.meshId) {\r\n this._resetColor();\r\n }\r\n const pickedMesh = meshes[this.currentPickingObject.meshId];\r\n if (pickedMesh && noChangeColorPickingIds.indexOf(this.currentPickingObject.pickingId) < 0) {\r\n if (this.currentPickingObject.pickingId > 100) {\r\n this._changeXYZScaleColor(pickedMesh);\r\n } else {\r\n const color = [pickedMesh.originColor[0], pickedMesh.originColor[1], pickedMesh.originColor[2], 0.8];\r\n pickedMesh.material.set('color', color);\r\n this._setTranslateMeshesColor(pickedMesh, 0.5);\r\n }\r\n }\r\n this.layerRenderer.setToRedraw();\r\n } else if (this.lastPickingObject && this.lastPickingObject.meshId != null) {\r\n this.map.resetCursor();\r\n this._resetColor();\r\n this.layerRenderer.setToRedraw();\r\n }\r\n }\r\n\r\n _changeXYZScaleColor(pickedMesh) {\r\n const color = [255 / 255, 179 / 255, 2 / 255, 1];\r\n pickedMesh.material.set('color', color);\r\n if(pickedMesh.properties['relatedMeshes']) {\r\n pickedMesh.properties['relatedMeshes'].forEach(mesh => {\r\n mesh.material.set('color', color)\r\n });\r\n }\r\n }\r\n\r\n _setCursor() {\r\n if (this.currentPickingObject.pickingId === 6) {\r\n this.map.setCursor('ns-resize');\r\n } else if (translatePickingIds0.indexOf(this.currentPickingObject.pickingId) > -1) {\r\n this.map.setCursor('move');\r\n } else {\r\n this.map.setCursor('pointer');\r\n }\r\n }\r\n\r\n _resetColor() {\r\n const lastMesh = this.lastPickingMesh;\r\n if (!lastMesh) {\r\n return;\r\n }\r\n const pickedId = lastMesh.getUniform('uPickingId');\r\n const meshes = this._getMeshes();\r\n if (translatePickingIds0.indexOf(pickedId) > -1) {\r\n meshes.forEach(mesh => {\r\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n });\r\n } else if (scaleChnagePickingIds.indexOf(pickedId) > -1) {\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (defaultHuanPickingIds.indexOf(meshid) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n });\r\n } else if (pickedId === 11) {\r\n meshes.forEach(mesh => {\r\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n });\r\n }\r\n lastMesh.material.set('color', lastMesh.originColor);\r\n if(lastMesh.properties['relatedMeshes']) {\r\n lastMesh.properties['relatedMeshes'].forEach(mesh => {\r\n mesh.material.set('color', mesh.originColor)\r\n });\r\n }\r\n }\r\n\r\n _setTranslateMeshesColor(pickedMesh, opacity) {\r\n const pickedId = pickedMesh.getUniform('uPickingId');\r\n const meshes = this._getMeshes();\r\n if (translatePickingIds0.indexOf(pickedId) > -1) {\r\n meshes.forEach(mesh => {\r\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n if (mesh.getUniform('uPickingId') !== pickedMesh.getUniform('uPickingId')) {\r\n const color = [mesh.originColor[0], mesh.originColor[1], mesh.originColor[2], opacity];\r\n mesh.material.set('color', color);\r\n }\r\n }\r\n });\r\n } else if (this._mode === 'scaling') {\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\r\n const color = [149 / 255, 179 / 255, 199 / 255, 0.8];\r\n mesh.material.set('color', color);\r\n }\r\n });\r\n } else if (this._mode === 'rotation') {\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\r\n const color = mesh.originColor;\r\n mesh.material.set('color', [color[0], color[1], color[2], 0]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n reset() {\r\n if (!this.map || !this._target) {\r\n return;\r\n }\r\n this._target._reset();\r\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\r\n }\r\n\r\n _calAngle(to, from) {\r\n const center = this._getCurrentCenter();\r\n const startDirection = vec2.set(START, from[0] - center[0], from[1] - center[1]);\r\n const endDirection = vec2.set(END, to[0] - center[0], to[1] - center[1]);\r\n const startAngle = Math.atan2(startDirection[1], startDirection[0]);\r\n const endAngle = Math.atan2(endDirection[1], endDirection[0]);\r\n return ((endAngle - startAngle) / Math.PI) * 180;\r\n }\r\n\r\n _setTask(pickingId) {\r\n //根据pickingId来判断被鼠标命中的是哪个辅助部件,从而判定当前执行的操作\r\n if (pickingId === 113 || pickingId === 114) {\r\n this._task = 'x-scale';\r\n } else if (pickingId === 115 || pickingId === 116) {\r\n this._task = 'z-scale';\r\n } else if (pickingId === 117 || pickingId === 118) {\r\n this._task = 'y-scale';\r\n } else if (pickingId === 119) {\r\n this._task = 'xyz-scale';\r\n } else if (pickingId === 5) {\r\n this._task = 'xy-translate';\r\n } else if (pickingId === 6) {\r\n this._task = 'z-translate';\r\n } else if (pickingId === 7 || pickingId === 9) {\r\n this._task = 'x-translate';\r\n } else if (pickingId === 8 || pickingId === 10) {\r\n this._task = 'y-translate';\r\n } else if (pickingId === 11) {\r\n this._task = 'z-rotate';\r\n } else {\r\n this._task = 'scale';\r\n }\r\n return this._task;\r\n }\r\n\r\n transform(targets) {\r\n if (!targets) {\r\n return;\r\n }\r\n if (this.layerRenderer && this.layerRenderer.layer) {\r\n this.layerRenderer.layer.off('renderend', this.render);\r\n this.layerRenderer.layer.off('resizeCanvas', this._resize);\r\n }\r\n if (!this.map) {\r\n console.error('should add to a target first');\r\n return;\r\n }\r\n if (this._target) {\r\n this._target._clear();\r\n this._target._add(targets);\r\n }\r\n if (!this._target.getTargets().length) {\r\n return;\r\n }\r\n const map = this.map;\r\n this.TransformHelper.updateMatrix(map, this._target, 0, 0, [0, 0, 0]);\r\n this._prepareContext();\r\n this._needRefreshPicking = true;\r\n }\r\n\r\n getTransformTarget() {\r\n return this._target;\r\n }\r\n\r\n _onRemoveTarget() {\r\n delete this._target;\r\n }\r\n\r\n _prepareContext() {\r\n const layer = this._target._getLayer();\r\n if (layer) {\r\n layer.off('renderend', this.render);\r\n layer.off('resizeCanvas', this._resize);\r\n }\r\n const map = this.map;\r\n const layerRenderer = layer.getRenderer();\r\n this.layerRenderer = layerRenderer;\r\n this.regl = layerRenderer.regl;\r\n this.renderer = layerRenderer.renderer;\r\n this._picking = this.layerRenderer.getFBORayPicking();\r\n this._uniforms = {\r\n 'projViewMatrix' : map.projViewMatrix,\r\n 'projMatrix': map.projMatrix,\r\n 'viewMatrix': map.viewMatrix,\r\n 'pointSize': 1.0\r\n };\r\n layer.on('renderend', this.render, this);\r\n layer.on('resizeCanvas', this._resize, this);\r\n layerRenderer.setToRedraw();\r\n }\r\n\r\n _resize() {\r\n this._picking.clear();\r\n this._needRefreshPicking = true;\r\n }\r\n\r\n _getPickingPoint(containerPoint, meshes, task) {\r\n const map = this.map;\r\n if (!map || !this._picking || !this.layerRenderer || !this.layerRenderer.canvas) {\r\n return null;\r\n }\r\n const dpr = map.getDevicePixelRatio();\r\n const x = containerPoint.x * dpr, y = containerPoint.y * dpr;\r\n const uniforms = this._uniforms;\r\n const inGroup = this.layerRenderer.canvas.gl && this.layerRenderer.canvas.gl.wrap;\r\n if (this._needRefreshPicking || inGroup || !this._pickTask || this._pickTask !== task) {\r\n this._picking.render(meshes, uniforms, true);\r\n this._pickTask = task;\r\n this._needRefreshPicking = false;\r\n }\r\n const picked = this._picking.pick(\r\n x, // 屏幕坐标 x轴的值\r\n y, // 屏幕坐标 y轴的值\r\n 10,\r\n uniforms,\r\n {\r\n viewMatrix : this.map.viewMatrix, //viewMatrix和projMatrix用于计算点的世界坐标值\r\n projMatrix : this.map.projMatrix,\r\n returnPoint : true\r\n }\r\n );\r\n return picked;\r\n }\r\n\r\n _initShader() {\r\n const dpr = this.map.getDevicePixelRatio();\r\n const viewport = {\r\n x : 0,\r\n y : 0,\r\n width : () => {\r\n return this.map ? this.map.width * dpr : 1;\r\n },\r\n height : () => {\r\n return this.map ? this.map.height * dpr : 1;\r\n }\r\n };\r\n this._shader = new reshader.MeshShader({\r\n vert,\r\n frag,\r\n uniforms : [\r\n 'color',\r\n {\r\n name : 'projViewModelMatrix',\r\n type : 'function',\r\n fn : function (context, props) {\r\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\r\n }\r\n }\r\n ],\r\n extraCommandProps: {\r\n viewport,\r\n depth: {\r\n enable: true,\r\n func: 'always',\r\n mask: true,\r\n range: [0, 0]\r\n },\r\n blend: {\r\n enable: true,\r\n func: {\r\n src: 'src alpha',\r\n dst: 'one minus src alpha'\r\n },\r\n equation: 'add'\r\n }\r\n },\r\n defines : {\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n if (!this._isAvailable()) {\r\n return;\r\n }\r\n const meshes = this._getMeshes();\r\n this.helperScene.setMeshes(meshes);\r\n const drawContext = this.layerRenderer.getFrameContext();\r\n //避免tc的mesh多次绘制\r\n if (drawContext && drawContext.renderTarget && this.layerRenderer.getFrameTimestamp() !== drawContext.timestamp) {\r\n return;\r\n }\r\n this._updateMatrix();\r\n this._shader.filter = drawContext && drawContext.sceneFilter;\r\n const targetFBO = drawContext && drawContext.renderTarget && drawContext.renderTarget.fbo;\r\n this.renderer.render(this._shader, this._uniforms, this.helperScene, targetFBO);\r\n }\r\n\r\n _getMeshes() {\r\n let meshes = [];\r\n const meshMap = this.TransformHelper.getMeshes(this._mode);\r\n for (const p in meshMap) {\r\n if (p === 'translate') {\r\n continue;\r\n }\r\n const meshList = meshMap[p];\r\n for (let i = 0; i < meshList.length; i++) {\r\n meshes = meshes.concat(meshList[i]);\r\n }\r\n }\r\n //为避免z轴被其他mesh覆盖,最后绘制z轴的mesh\r\n const translateMeshes = meshMap['translate'];\r\n if (translateMeshes) {\r\n for (let i = 0; i < translateMeshes.length; i++) {\r\n meshes = meshes.concat(translateMeshes[i]);\r\n }\r\n }\r\n return meshes;\r\n }\r\n\r\n _isAvailable() {\r\n const renderer = this.layerRenderer;\r\n const layer = renderer && renderer.layer;\r\n return renderer && this._target && layer && layer.isVisible() && this._target._isVisible() && this.regl && this._enabled;\r\n }\r\n}\r\n\r\nTransformControl.mergeOptions(options);\r\n"],"names":["partsModels","yuanhuan","accessors","name","componentType","count","min","max","type","bufferView","byteOffset","asset","generator","version","buffers","byteLength","uri","bufferViews","buffer","byteStride","target","materials","pbrMetallicRoughness","baseColorFactor","metallicFactor","roughnessFactor","emissiveFactor","alphaMode","doubleSided","meshes","primitives","attributes","POSITION","NORMAL","indices","material","mode","nodes","mesh","scene","scenes","yuanhuan41","yuanhuan411","yuanpan","zzhou","TEXCOORD_0","jiantou","xuanzhuan","plane","xyzScale","scale","rotation","n","globalThis","self","window","global","Error","o","e","gl_trans__coders","inject","t","toString","_","indexOf","r","substring","l","s","maptalks_gltf_loader_bundle","length","registerTranscoder","getTranscoder","gltfloader","maptalks_gltf_loader","prepareMesh","modelName","translate","color","pickingId","rotate","quat","fromEuler","modelMatrix","mat4","fromRotationTranslationScale","promise","GLTFLoader","JSON","parse","stringify","load","then","gltf","createGLTFMesh","data","reshader","GLTFHelper","exportGLTFPack","getMeshesInfo","forEach","g","i","Material","materialInfo","Mesh","geometry","setUniform","defines","getDefines","HAS_PICKING_ID","setDefines","scaling","multiply","localTransform","nodeMatrix","originTransform","copy","originColor","push","properties","slice","getAbsoluteValue","value","Math","abs","sign","calFixedScale","map","coordinate","getCoordinates","coordPoint","coordinateToPointAtRes","getGLRes","trans","x","y","currentTrans","getTranslationPoint","getTranslation","vec3","add","containerPoint","point","res","altitude","pointToContainerPoint","maptalks","Point","worldCoordExtend","targetRes","coordExtend","containerPointToCoordinate","containerPointToPoint","sqrt","pow","translation","distanceToPointAtRes","z","altitudeToPoint","set","TranslateHelper","constructor","this","_coordinate","_meshes","_prepareMeshes","setCoordinate","right","bottom","left","up","getMeshes","RotationHelper","ScalingHelper","PlaneHelper","XyzScaleHelper","VEC3","TRANS","MAT4","QUAT","SCALE","ratio","ROTATION","scaleChangePickingIds","TransformHelper","planeHelper","xyzScaleHelper","_rotateClockwise","wn","en","es","ws","updateMatrix","angle","scalar","deltaTrans","p","_getPointZ","deltaTranslate","m","j","getUniform","getTargets","getRotation","translateMesh","fixedScale","tmpScale","sm","_setRotateClockwise","clockwise","dispose","EMPTY_VEC","EMPTY_QUAT","EMPTY_MAT","TEMP_POINT","TEMP_VEC_1","TEMP_VEC_2","TEMP_SCALE","EMPTY_TRANS","TransformTarget","_targetList","_translating","_scaling","_rotation","_add","Array","isArray","on","_onRemoveTarget","_originTRS","getScale","_clear","off","_updateTRS","task","deltaRotation","deltaScale","limitScale","transformcontrol","currentRotation","currentScaling","targetCoordinate","_calNewCenter","tempScale","options","scaleStrength","targetScale","minScale","currentMinScale","targetRotation","setCoordinates","_scaleXYZ","setTRS","fire","action","center","getTransformOrigin","getCenter","originCenter","glRes","pCenter","pOriginCenter","sub","trsMatrix","transformMat4","newCenter","pointAtResToCoordinate","_reset","_getLayer","getLayer","cx","cy","cz","len","Coordinate","setTransformOrigin","index","splice","pz","getPointZ","_isVisible","isVisible","translatePickingIds","translatePickingIds0","rotatePickingIds","scalePickingIds","noChangeColorPickingIds","defaultHuanPickingIds","scaleChnagePickingIds","CENTER","START","END","TransformControl","Eventable","Handlerable","Class","super","mouseAction","_mode","_enabled","_target","helperScene","Scene","addToMapCount","_createHelperLayer","_helper","transform","enable","layerRenderer","setToRedraw","disable","resetCursor","setMode","_resetScale","getMode","isEnable","_setMode","_getMode","addTo","_removeEvents","console","warn","_helperlayer","container","getContainer","_mouseMoveHandle","_mousedownHandle","_mouseupHandle","_viewchanging","_initShader","GLTFLayer","INTERNAL_LAYER_PREFIX","GLTFMarker","symbol","url","modelHeight","uniforms","polygonOpacity","remove","layer","render","_isAvailable","currentMousePosition","_getMeshes","currentPickingObject","_getPickingPoint","_transformPlaneHelper","_meshAction","_transformAction","domEvent","button","_needRefreshPicking","firstDownPoint","meshId","_setTask","config","lastMousePosition","lastPickingObject","lastPickingMesh","_task","planeMesh","bearing","getBearing","_updateMatrix","picked","coordinateToContainerPoint","pickingObject","scalingMesh","_resetScaleControl","_resetDefaultColor","originTrans","meshid","_getWorldPosition","worldPosition","mousePosition","planeInteract","lastPlaneInteract","deltaAngle","helperDeltaScale","deltaTransX","deltaTransY","deltaTransZ","_isInMapCenter","lastContainerPoint","currentContainerPoint","distance","vec2","_calAngle","_getCurrentCenter","firstDistance","scaleDistance","_calDirection","from","to","rotated","getScaling","getPitch","cameraPos","cameraPosition","centerPos","position","worldPos","vTargetToCamera","subtract","vCenterToCamera","PI","_setCursor","_resetColor","pickedMesh","_changeXYZScaleColor","_setTranslateMeshesColor","setCursor","lastMesh","pickedId","opacity","reset","startDirection","endDirection","startAngle","atan2","targets","_resize","error","_prepareContext","getTransformTarget","getRenderer","regl","renderer","_picking","getFBORayPicking","_uniforms","projViewMatrix","projMatrix","viewMatrix","pointSize","clear","canvas","dpr","getDevicePixelRatio","inGroup","gl","wrap","_pickTask","pick","returnPoint","viewport","width","height","_shader","MeshShader","vert","frag","fn","context","props","extraCommandProps","depth","func","mask","range","blend","src","dst","equation","setMeshes","drawContext","getFrameContext","renderTarget","getFrameTimestamp","timestamp","filter","sceneFilter","targetFBO","fbo","meshMap","meshList","concat","translateMeshes","mergeOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform-control.es.js","sources":["../src/common/models.js","../../gl/dist/transcoders.js","../src/common/Util.js","../src/helper/TranslateHelper.js","../src/helper/RotationHelper.js","../src/helper/ScalingHelper.js","../src/helper/PlaneHelper.js","../src/helper/XyzScaleHelper.js","../src/helper/TransformHelper.js","../src/TransformTarget.js","../src/TransformControl.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\r\nconst yuanhuan41 = {\r\n 'accessors': [\r\n {\r\n 'name': 'Բ��_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 39,\r\n 'min': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'max': [\r\n 5.489999771118164,\r\n 0,\r\n 5.488900184631348\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Բ��_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 39,\r\n 'min': [\r\n 0,\r\n -0.999939501285553,\r\n -1\r\n ],\r\n 'max': [\r\n 0.13969914615154266,\r\n 1,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Բ��_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 105,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 38\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'yh41',\r\n 'byteLength': 1148,\r\n 'uri': 'data:application/octet-stream;base64,8tKXQAAAAACoNU09FK6vQAAAAAB1Ako/FK6vQAAAAAAAAACATfOAQAAAAAACmkg+K4dWQAAAAAAIrNw+WvUtQAAAAABbsT8/X5gIQAAAAACMSpI/OUWbQAAAAAD0/VQ/LbKHQAAAAAD0/XQ/W0JqQAAAAAC6SZQ/dLXNPwAAAACfq80/H4VHQAAAAAB0JLc/ZognQAAAAAA1XuI/YVSSPwAAAAAukAhABaMKQAAAAAB4nApABcU/PwAAAACF6y1Aw2TiPwAAAACRfidASS63PwAAAABKe0dAJLncPgAAAACze1ZAj1OUPwAAAADjNmpAAppIPgAAAADu64BAnRF1PwAAAAD8qYdAqDVNPQAAAADBypdAgQRVPwAAAAAIPZtAAAAAAAAAAAASpa9AAwlKPwAAAAASpa9AJJd/PAAAAAASpa9AAwlKPwAAAAASpa9AAAAAAAAAAAASpa9Asp1vPQAAAAASpa9AJLn8PQAAAAASpa9AqoJRPgAAAAASpa9ARwOYPgAAAAASpa9AHhbKPgAAAAASpa9A2hv8PgAAAAASpa9A5q4VPwAAAAASpa9A+n4qPwAAAAASpa9AQxw7PwAAAAASpa9AwhdGPwAAAAASpa9AAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAJ5X/OwL+fz8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/Kzs0PAn8f78AAACApLK/PA7uf78AAACAeJkZPefRfz8AAACA+ZldPQSgf78AAACA6XSTPelVfz8AAACALLO3PdT3fr8AAACAfkjZPR2Ofr8AAACANf32Paohfj8AAACAeUYHPqDBfT8AAACASw0PPlt9fb8AAACAAAABAAIAAwABAAAABAABAAMABQABAAQABgAHAAUABwABAAUABgAIAAcABgAJAAgACgAJAAYACgALAAkACgAMAAsADQAMAAoADQAOAAwADwAOAA0ADwAQAA4ADwARABAAEgARAA8AEgATABEAFAATABIAFAAVABMAFgAVABQAFgAXABUAGAAXABYAGAAZABcAGgAbABwAHQAbABoAHgAbAB0AHwAbAB4AIAAbAB8AIQAbACAAIgAbACEAIwAbACIAJAAbACMAJQAbACQAJgAbACUAAAA='\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 468,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 468,\r\n 'byteOffset': 468,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 212,\r\n 'byteOffset': 936,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat_002',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.588,\r\n 0.588,\r\n 0.588,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.99\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Բ��_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Բ��',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst yuanpan = {\r\n 'accessors': [\r\n {\r\n 'name': 'Circle001_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n -1.9510999917984009,\r\n 0,\r\n -1.9510999917984009\r\n ],\r\n 'max': [\r\n 1.9510999917984009,\r\n 0,\r\n 1.9510999917984009\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Circle001_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n 0,\r\n 1,\r\n 0\r\n ],\r\n 'max': [\r\n 0,\r\n 1,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Circle001_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 78,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 27\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'yuanpan',\r\n 'byteLength': 828,\r\n 'uri': 'data:application/octet-stream;base64,S+rkvgAAAADRIvM/AAAAAAAAAAClvfk/S+rkPgAAAADRIvM/0SLzvwAAAABL6uQ+MlXgvwAAAACsi1s/c9fCvwAAAACvJZw/pb35vwAAAAAAAAAA0SLzvwAAAABL6uS+MlXgvwAAAACsi1u/c9fCvwAAAACvJZy/ryWcvwAAAABz18K/rItbvwAAAAAyVeC/S+rkvgAAAADRIvO/AAAAgAAAAAClvfm/S+rkPgAAAADRIvO/rItbPwAAAAAyVeC/ryWcPwAAAABz18K/c9fCPwAAAACvJZy/MlXgPwAAAACsi1u/0SLzPwAAAABL6uS+pb35PwAAAAAAAACA0SLzPwAAAABL6uQ+MlXgPwAAAACsi1s/c9fCPwAAAACvJZw/ryWcvwAAAABz18I/ryWcPwAAAABz18I/rItbvwAAAAAyVeA/rItbPwAAAAAyVeA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAABAAIAAwAEAAUABgADAAUABwAGAAUACAAHAAUACQAIAAUACgAJAAUACwAKAAUADAALAAUADQAMAAUADgANAAUADwAOAAUAEAAPAAUAEQAQAAUAEgARAAUAEwASAAUAFAATAAUAFQAUAAUAFgAVAAUAFwAWAAUAFwAFABgAGQAXABgAGQAYABoAGwAZABoAAgAbABoAAAACABoA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 336,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 156,\r\n 'byteOffset': 672,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'wire_008110135',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.0314,\r\n 0.4314,\r\n 0.5294,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.968\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Circle001_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Circle001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst zzhou = {\r\n 'accessors': [\r\n {\r\n 'name': 'Cube.001-Mesh_0_positions',\r\n 'componentType': 5126,\r\n 'count': 45,\r\n 'min': [\r\n -0.2711470127105713,\r\n -5.473427772521973,\r\n -0.2711470127105713\r\n ],\r\n 'max': [\r\n 0.2711470127105713,\r\n 0.46298399567604065,\r\n 0.2711470127105713\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Cube.001-Mesh_0_normals',\r\n 'componentType': 5126,\r\n 'count': 45,\r\n 'min': [\r\n -1,\r\n -1,\r\n -1\r\n ],\r\n 'max': [\r\n 1,\r\n 1,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Cube.001-Mesh_0_texcoords',\r\n 'componentType': 5126,\r\n 'count': 45,\r\n 'min': [\r\n 0.125,\r\n 0\r\n ],\r\n 'max': [\r\n 0.875,\r\n 1\r\n ],\r\n 'type': 'VEC2',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Cube.001-Mesh_0_indices',\r\n 'componentType': 5123,\r\n 'count': 72,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 44\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 3,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'Z',\r\n 'byteLength': 1584,\r\n 'uri': 'data:application/octet-stream;base64,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'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 540,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 540,\r\n 'byteOffset': 540,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 360,\r\n 'byteOffset': 1080,\r\n 'byteStride': 8,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_3',\r\n 'buffer': 0,\r\n 'byteLength': 144,\r\n 'byteOffset': 1440,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'Material.001',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.8,\r\n 0.8,\r\n 0.8,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.676000006\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Cube.001-Mesh',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1,\r\n 'TEXCOORD_0': 2\r\n },\r\n 'indices': 3,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Cube.001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst jiantou = {\r\n 'accessors': [\r\n {\r\n 'name': '��ͷ_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 7,\r\n 'min': [\r\n -0.47690001130104065,\r\n -0.8044000267982483,\r\n 0\r\n ],\r\n 'max': [\r\n 0.47780001163482666,\r\n 0,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ͷ_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 7,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ͷ_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 15,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 6\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'jiantou',\r\n 'byteLength': 200,\r\n 'uri': 'data:application/octet-stream;base64,bxIDOintTb8AAAAAH/RsvsKGp74AAAAAPSz0vsKGp74AAAAANs17PsKGp74AAAAANKL0PsKGp74AAAAANs17PgAAAAAAAAAAH/RsvgAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAADAAEAAAAEAAMAAQAFAAYAAQADAAUAAAA='\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 84,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 84,\r\n 'byteOffset': 84,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 32,\r\n 'byteOffset': 168,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat_003',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.588,\r\n 0.588,\r\n 0.588,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.99\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '��ͷ_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '��ͷ',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst xuanzhuan = {\r\n 'accessors': [\r\n {\r\n 'name': '��ת001_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 369,\r\n 'min': [\r\n -6.572299957275391,\r\n -7.298999786376953,\r\n 0\r\n ],\r\n 'max': [\r\n 6.5742998123168945,\r\n 7.298299789428711,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ת001_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 369,\r\n 'min': [\r\n 0,\r\n -1,\r\n 0\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '��ת001_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 1089,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 368\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': '旋转-新',\r\n 'byteLength': 11036,\r\n 'uri': 'data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAwABAAAAAwAEAAEAAwAFAAQAAwAGAAUAAwAHAAYAAwAIAAcAAwAJAAgAAwAKAAkAAwALAAoAAwAMAAsADQAMAAMADQAOAAwADQAPAA4ADQAQAA8ADQARABAADQASABEADQATABIADQAUABMADQAVABQADQAWABUADQAXABYADQAYABcADQAZABgADQAaABkADQAbABoAHAAbAA0AHAAdABsAHAAeAB0AHAAfAB4AHAAgAB8AHAAhACAAHAAiACEAHAAjACIAHAAkACMAHAAlACQAHAAmACUAHAAnACYAHAAoACcAHAApACgAHAAqACkAHAArACoAHAAsACsAHAAtACwAHAAuAC0AHAAvAC4AHAAwAC8AHAAxADAAHAAyADEAHAAzADIAHAA0ADMAHAA1ADQAHAA2ADUAHAA3ADYAHAA4ADcAHAA5ADgAHAA6ADkAHAA7ADoAHAA8ADsAHAA9ADwAHAA+AD0AHAA/AD4AHABAAD8AQABBAD8AQQBCAD8AQgBDAD8AHABAAEQAHABEAEUAHABGAEUARgBHAEUARgBIAEcARgBJAEgARgBKAEkARgBLAEoARgBMAEsAHABNAEYAHABOAE0AHABPAE4AHABQAE8AHABRAFAAHABSAFEAUgBTAFEAUgBUAFMAUgBVAFQAUgBWAFUAUgBXAFYAUgBYAFcAHABZAFIAHABaAFkAHABbAFoAHABcAFsAHABdAFwAHABeAF0AHABfAF4AHABgAF8AHABhAGAAHABiAGEAHABjAGIAHABjAGQAZABlAGMAZQBmAGMAHABnAGQAaABpAGoAawBpAGgAbABpAGsAbQBpAGwAbgBpAG0AbwBpAG4AcABpAG8AcQBpAHAAcgBpAHEAcwBpAHIAdABnABwAdAB1AGcAdAB2AHUAdwB4AHkAdwB5AHoAegB5AHsAegB7AHwAfAB7AH0AfAB9AH4AfgB9AH8AfgB/AIAAgQCCAIMAgQCDAIQAhACDAIUAhACFAIYAhgCFAIcAhgCHAIgAiACHAIkAiACJAIoAiwCMAI0AiwCNAI4AjwCKAJAAigCJAJAAkQCSAJMAkQCTAJQAlACTAJUAlACVAJYAlgCVAJcAlgCXAJgAgAB/AIIAgACCAIEAmACXAJkAmACZAJoAmgCZAJsAmgCbAJwAnACbAJ0AnACdAJ4AngCdAHYAngB2AHQAnwB4AHcAoAB4AJ8AoAChAHgAogChAKAAowCkAKUAowCmAKQAowCnAKYAowCoAKcAowCpAKgAowCqAKkAowCrAKoAowCsAKsAowCtAKwAowCuAK0AowCvAK4AowCiAK8AowChAKIAsAChAKMAsQChALAAsgChALEAswChALIAtAChALMAtQChALQAtgChALUAtwChALYAuAChALcAuQChALgAugChALkAuwChALoAvAChALsAvQChALwAvgChAL0AvwChAL4AwAChAL8AwQChAMAAwgChAMEAwwChAMIAxAChAMMAxQChAMQAxgChAMUAxwChAMYAyAChAMcAyQChAMgAygChAMkAywChAMoAzAChAMsAzQChAMwAzgChAM0AzwChAM4A0AChAM8A0QChANAA0gChANEA0wChANIA1AChANMA1QChANQA1gChANUA1wChANYA2AChANcA2QChANgA2gChANkA2wChANoA3AChANsA3QChANwA3gChAN0A3wChAN4A4AChAN8A4QChAOAA4gChAOEA4wChAOIA5AChAOMA5QChAOQA5gChAOUA5wChAOYA6AChAOcA6QChAOgA6gChAOkA6wChAOoA7AChAOsA7QChAOwA7gChAO0A7wChAO4A8AChAO8A8QChAO8A8gChAPEA8wChAPIA9AChAPMA9QChAPQA9gChAPUA9gD3AKEA+AD3APYA+QD3APgA+gD3APkA+wD3APoA/AD3APsA/QD3APwA/gD3AP0A/wD3AP4AAAH3AP8AAQH3AAABAgH3AAEBAwH3AAIBBAH3AAMBBQH3AAQBBgH3AAUBBgEHAfcACAEHAQYBCQEHAQgBCgEHAQkBCwEHAQoBDAEHAQsBDQEHAQwBDgEHAQ0BDwEHAQ4BEAEHAQ8BEQESARMBFAESAREBFAEVARIBFgEVARQBFgEXARUBGAEXARYBGAEZARcBGgEbARgBGwEcARgBHAEZARgBHAEdARkBHQEeARkBHwEeAR0BGgEgARsBIQEeAR8BGgEiASABIwEiARoBIQEkAR4BJQEkASEBIwEmASIBJwEkASUBIwEoASYBKQEoASMBJwEqASQBKwEqAScBKQEsASgBLQEsASkBKwEuASoBLwEuASsBLQEwASwBMQEuAS8BLQEyATABjgCNADMBjgAzATQBNQE2ATcBNQE3ATgBOAE3ATkBOAE5AToBOwE8AT0BOwE9AT4BPwFAAUEBPwFBAUIBPgE9AUMBPgFDAUQBRQFGAUABRQFAAT8BRwFIAZIARwGSAJEASQFKAUYBSQFGAUUBRAFDAUsBRAFLAUwBOgE5AUoBOgFKAUkBTAFLAU0BTAFNAU4BTgFNAU8BTgFPAVABQgFBAVEBQgFRAVIBUgFRAS4BUgEuATEBNAEzATwBNAE8ATsBUwFUATYBUwE2ATUBUAFPATIBUAEyAS0BiwBVAYwAVgFUAVMBiwBXAVUBWAFUAVYBWAFZAVQBWgFXAYsAWgFbAVcBXAFZAVgBXAFdAVkBXgFbAVoBXgFfAVsBYAFdAVwBXgFhAV8BYgFdAWABYgFjAV0BZAFhAV4BZAFlAWEBZgFjAWIBZAFnAWUBZwFjAWYBZAFjAWcBZAFoAWMBaQFoAWQBaQFqAWgBawFqAWkBawFsAWoBbQFsAWsBbQFuAWwBbwFwAUgBbwFIAUcBAAA='\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 4428,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 4428,\r\n 'byteOffset': 4428,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 2180,\r\n 'byteOffset': 8856,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.5,\r\n 0.5,\r\n 0.5,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 1\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '��ת001_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '��ת001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst yuanhuan411 = {\r\n 'accessors': [\r\n {\r\n 'name': '����СȦ_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n 0.026000000536441803,\r\n -4.6834001541137695,\r\n 0\r\n ],\r\n 'max': [\r\n 4.696700096130371,\r\n -0.014800000004470348,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����СȦ_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 28,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����СȦ_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 78,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 27\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'yuanhuan411',\r\n 'byteLength': 828,\r\n 'uri': 'data:application/octet-stream;base64,ufwXQLN7Mr8AAAAAObRAQLFQK78AAAAA1ediQMWP8b4AAAAAGQQ6QCv2174AAAAAqFdeQHUCWr4AAAAA7FGCQL6fmr0AAAAAHHyDQDLmrr4AAAAAXkuWQJf/kL4AAAAAXkuWQLN7crwAAAAAMCrxP2RdhL8AAAAA/BgDQJeQn78AAAAADeARQAg9i78AAAAAukkIQISeXb8AAAAAZaogQH/Zbb8AAAAA7Q3ePr4wOcAAAAAA5IMuP9/gP8AAAAAAJQZxPwrXH8AAAAAAPZs1P6UsF8AAAAAAdy2hP0VHAsAAAAAAb/CFP5eQ778AAAAA0ES4P32utr8AAAAAAprQPyL9zr8AAAAAi/1lPqqCXcAAAAAA9dv3PtcSYsAAAAAADi2yPZvmgcAAAAAAYTK1PssQg8AAAAAA9P3UPGrelcAAAAAA4liXPmrelcAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAwACAAQABQAGAAcABQAHAAgABAACAAYABAAGAAUACQAKAAsACQALAAwAAAANAAEADgAPABAADgAQABEAEQAQABIAEQASABMAFAAVAAoAFAAKAAkADAALAA0ADAANAAAAFgAXAA8AFgAPAA4AGAAZABcAGAAXABYAGgAZABgAGgAbABkAEwASABUAEwAVABQA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 336,\r\n 'byteOffset': 336,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 156,\r\n 'byteOffset': 672,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.588,\r\n 0.588,\r\n 0.588,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.99\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '����СȦ_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '����СȦ',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst plane = {\r\n 'accessors': [\r\n {\r\n 'name': 'Rectangle001_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 4,\r\n 'min': [\r\n -5,\r\n -5,\r\n 0\r\n ],\r\n 'max': [\r\n 5,\r\n 5,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Rectangle001_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 4,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': 'Rectangle001_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 6,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 3\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': 'plane',\r\n 'byteLength': 108,\r\n 'uri': 'data:application/octet-stream;base64,AACgQAAAoEAAAAAAAACgwAAAoEAAAAAAAACgwAAAoMAAAAAAAACgQAAAoMAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAgADAAAA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 48,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 48,\r\n 'byteOffset': 48,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 12,\r\n 'byteOffset': 96,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'wire_225198087',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.8824,\r\n 0.7765,\r\n 0.3412,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 0.968\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': 'Rectangle001_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': 'Rectangle001',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst yuanhuan = {\r\n 'accessors': [\r\n {\r\n 'name': '����С��_1_0_positions',\r\n 'componentType': 5126,\r\n 'count': 104,\r\n 'min': [\r\n -5.407599925994873,\r\n -5.404099941253662,\r\n 0\r\n ],\r\n 'max': [\r\n 5.405200004577637,\r\n 5.406300067901611,\r\n 0\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 0,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����С��_1_0_normals',\r\n 'componentType': 5126,\r\n 'count': 104,\r\n 'min': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'max': [\r\n 0,\r\n 0,\r\n 1\r\n ],\r\n 'type': 'VEC3',\r\n 'bufferView': 1,\r\n 'byteOffset': 0\r\n },\r\n {\r\n 'name': '����С��_1_0_indices',\r\n 'componentType': 5123,\r\n 'count': 288,\r\n 'min': [\r\n 0\r\n ],\r\n 'max': [\r\n 103\r\n ],\r\n 'type': 'SCALAR',\r\n 'bufferView': 2,\r\n 'byteOffset': 0\r\n }\r\n ],\r\n 'asset': {\r\n 'generator': 'obj2gltf',\r\n 'version': '2.0'\r\n },\r\n 'buffers': [\r\n {\r\n 'name': '缩放圈-新',\r\n 'byteLength': 3072,\r\n 'uri': 'data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcAAwACAAgAAwAIAAkACgALAAwACgAMAA0ADQAMAA4ADQAOAA8ADwAOABAADwAQABEAEgATABQAEgAUABUAFgAXABgAFgAYABkAGgAbABwAGgAcAB0AHgALAAoAHwALAB4AHwAgAAsAIQAgAB8AIgAjACAAIgAgACEAJAAlACYAJAAmACcAJwAmACgAJwAoACkAKgArACwAKgAsAC0ALgAvADAALgAwADEAGQAYADIAGQAyADMANAA1ABsANAAbABoAFQAUADYAFQA2ADcAOAA5ADoAOAA6ADsAPAA9AD4APAA/AD0AQAA/ADwAQABBAD8AQgBBAEAAQgBAAEMARABFAEYARABGAEcARABHAEgARgBJAEcARgBKAEkASwBKAEYASwBMAEoASwBNAEwACQAIAC8ACQAvAC4ALQAsADkALQA5ADgAOwA6AE4AOwBOAE8ATwBOAE0ATwBNAEsAKQAoACsAKQArACoANwA2AFAANwBQAFEAUQBQAFIAUQBSAFMAUwBSAFQAUwBUAFUAVgBXAFgAVgBYAFkAVgBZAFoAWwBZAFgAXABZAFsAXABdAFkAXgBdAFwAXwBdAF4APAA+AGAAPABgAGEAMQAwABcAMQAXABYAYgBjADUAYgA1ADQAYQBgAGMAYQBjAGIAMwAyAF0AMwBdAF8AHQAcAGQAHQBkAGUAZQBkAAUAZQAFAAQAZgBnAAcAZgAHAAYAEQAQABMAEQATABIA'\r\n }\r\n ],\r\n 'bufferViews': [\r\n {\r\n 'name': 'bufferView_0',\r\n 'buffer': 0,\r\n 'byteLength': 1248,\r\n 'byteOffset': 0,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_1',\r\n 'buffer': 0,\r\n 'byteLength': 1248,\r\n 'byteOffset': 1248,\r\n 'byteStride': 12,\r\n 'target': 34962\r\n },\r\n {\r\n 'name': 'bufferView_2',\r\n 'buffer': 0,\r\n 'byteLength': 576,\r\n 'byteOffset': 2496,\r\n 'target': 34963\r\n }\r\n ],\r\n 'materials': [\r\n {\r\n 'name': 'SVGMat_001',\r\n 'pbrMetallicRoughness': {\r\n 'baseColorFactor': [\r\n 0.5,\r\n 0.5,\r\n 0.5,\r\n 1\r\n ],\r\n 'metallicFactor': 0,\r\n 'roughnessFactor': 1\r\n },\r\n 'emissiveFactor': [\r\n 0,\r\n 0,\r\n 0\r\n ],\r\n 'alphaMode': 'OPAQUE',\r\n 'doubleSided': false\r\n }\r\n ],\r\n 'meshes': [\r\n {\r\n 'name': '����С��_1',\r\n 'primitives': [\r\n {\r\n 'attributes': {\r\n 'POSITION': 0,\r\n 'NORMAL': 1\r\n },\r\n 'indices': 2,\r\n 'material': 0,\r\n 'mode': 4\r\n }\r\n ]\r\n }\r\n ],\r\n 'nodes': [\r\n {\r\n 'name': '����С��',\r\n 'mesh': 0\r\n }\r\n ],\r\n 'scene': 0,\r\n 'scenes': [\r\n {\r\n 'nodes': [\r\n 0\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst xyzScale = {\r\n \"asset\" : {\r\n \"generator\" : \"Khronos glTF Blender I/O v1.6.16\",\r\n \"version\" : \"2.0\"\r\n },\r\n \"scene\" : 0,\r\n \"scenes\" : [\r\n {\r\n \"name\" : \"Scene\",\r\n \"nodes\" : [\r\n 0,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6\r\n ]\r\n }\r\n ],\r\n \"nodes\" : [\r\n {\r\n \"mesh\" : 0,\r\n \"name\" : \"Cube\",\r\n \"scale\" : [\r\n 0.7008190751075745,\r\n 0.014999999664723873,\r\n 0.014999999664723873\r\n ]\r\n },\r\n {\r\n \"mesh\" : 1,\r\n \"name\" : \"Cube.001\",\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n {\r\n \"mesh\" : 2,\r\n \"name\" : \"Cube.004\",\r\n \"rotation\" : [\r\n 0,\r\n -0.7071068286895752,\r\n 0,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.7008190751075745,\r\n 0.014999999664723873,\r\n 0.014999999664723873\r\n ]\r\n },\r\n {\r\n \"mesh\" : 3,\r\n \"name\" : \"Cube.003\",\r\n \"rotation\" : [\r\n 0,\r\n -0.7071068286895752,\r\n 0,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n {\r\n \"mesh\" : 4,\r\n \"name\" : \"Cube.006\",\r\n \"rotation\" : [\r\n 0,\r\n 0,\r\n 0.7071068286895752,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.7008190751075745,\r\n 0.014999999664723873,\r\n 0.014999999664723873\r\n ]\r\n },\r\n {\r\n \"mesh\" : 5,\r\n \"name\" : \"Cube.005\",\r\n \"rotation\" : [\r\n 0,\r\n 0,\r\n 0.7071068286895752,\r\n 0.7071068286895752\r\n ],\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n {\r\n \"mesh\" : 6,\r\n \"name\" : \"Cube.002\",\r\n \"scale\" : [\r\n 0.10000000149011612,\r\n 0.10000000149011612,\r\n 0.10000000149011612\r\n ]\r\n },\r\n ],\r\n \"materials\" : [\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.6938720345497131,\r\n 0.020288480445742607,\r\n 0.011612260714173317,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.001\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.6938720345497131,\r\n 0.020288480445742607,\r\n 0.011612260714173317,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.002\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.626582869887352,\r\n 0.626582869887352,\r\n 0.626582869887352,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.006\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.11193240433931351,\r\n 0.5583405494689941,\r\n 0.033104799687862396,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.005\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.11193240433931351,\r\n 0.5583405494689941,\r\n 0.033104799687862396,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.010\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.004391402006149292,\r\n 0.21223078668117523,\r\n 0.5209956169128418,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n },\r\n {\r\n \"doubleSided\" : true,\r\n \"name\" : \"Material.009\",\r\n \"pbrMetallicRoughness\" : {\r\n \"baseColorFactor\" : [\r\n 0.004391402006149292,\r\n 0.21223078668117523,\r\n 0.5209956169128418,\r\n 1\r\n ],\r\n \"metallicFactor\" : 0,\r\n \"roughnessFactor\" : 0.4000000059604645\r\n }\r\n }\r\n ],\r\n \"meshes\" : [\r\n {\r\n \"name\" : \"Cube\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 0,\r\n \"NORMAL\" : 1,\r\n \"TEXCOORD_0\" : 2\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.001\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 4,\r\n \"NORMAL\" : 5,\r\n \"TEXCOORD_0\" : 6\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 1\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.006\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 10,\r\n \"NORMAL\" : 11,\r\n \"TEXCOORD_0\" : 12\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 3\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.005\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 13,\r\n \"NORMAL\" : 14,\r\n \"TEXCOORD_0\" : 15\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 4\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.010\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 16,\r\n \"NORMAL\" : 17,\r\n \"TEXCOORD_0\" : 18\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 5\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.009\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 19,\r\n \"NORMAL\" : 20,\r\n \"TEXCOORD_0\" : 21\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 6\r\n }\r\n ]\r\n },\r\n {\r\n \"name\" : \"Cube.002\",\r\n \"primitives\" : [\r\n {\r\n \"attributes\" : {\r\n \"POSITION\" : 7,\r\n \"NORMAL\" : 8,\r\n \"TEXCOORD_0\" : 9\r\n },\r\n \"indices\" : 3,\r\n \"material\" : 2\r\n }\r\n ]\r\n }\r\n ],\r\n \"accessors\" : [\r\n {\r\n \"bufferView\" : 0,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 2.0003609657287598,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 0.0003610849380493164,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 1,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 2,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 3,\r\n \"componentType\" : 5123,\r\n \"count\" : 36,\r\n \"type\" : \"SCALAR\"\r\n },\r\n {\r\n \"bufferView\" : 4,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 14.549108505249023,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 12.549108505249023,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 5,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 6,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 7,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 1,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n -1,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 8,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 9,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 10,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 2.0003609657287598,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 0.0003610849380493164,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 11,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 12,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 13,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 14.549108505249023,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 12.549108505249023,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 14,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 15,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 16,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 2.0003609657287598,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 0.0003610849380493164,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 17,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 18,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n },\r\n {\r\n \"bufferView\" : 19,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"max\" : [\r\n 14.549108505249023,\r\n 1,\r\n 1\r\n ],\r\n \"min\" : [\r\n 12.549108505249023,\r\n -1,\r\n -1\r\n ],\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 20,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC3\"\r\n },\r\n {\r\n \"bufferView\" : 21,\r\n \"componentType\" : 5126,\r\n \"count\" : 24,\r\n \"type\" : \"VEC2\"\r\n }\r\n ],\r\n \"bufferViews\" : [\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 0\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 288\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 576\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 72,\r\n \"byteOffset\" : 768\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 840\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 1128\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 1416\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 1608\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 1896\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 2184\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 2376\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 2664\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 2952\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 3144\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 3432\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 3720\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 3912\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 4200\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 4488\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 4680\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 288,\r\n \"byteOffset\" : 4968\r\n },\r\n {\r\n \"buffer\" : 0,\r\n \"byteLength\" : 192,\r\n \"byteOffset\" : 5256\r\n }\r\n ],\r\n \"buffers\" : [\r\n {\r\n \"byteLength\" : 5448,\r\n \"uri\" : \"data:application/octet-stream;base64,6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAQAOABQAAQAUAAcACgAGABMACgATABcAFQASAAwAFQAMAA8AEAADAAkAEAAJABYABQACAAgABQAIAAsAEQANAAAAEQAAAAQAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA\"\r\n }\r\n ]\r\n}\r\n\r\n\r\nconst partsModels = {\r\n yuanhuan,\r\n yuanhuan41,\r\n yuanhuan411,\r\n yuanpan,\r\n zzhou,\r\n jiantou,\r\n xuanzhuan,\r\n plane,\r\n xyzScale\r\n};\r\n\r\nexport default partsModels;\r\n","/*!\n * @maptalks/gl v0.104.2\n * LICENSE : UNLICENSED\n * (c) 2016-2025 maptalks.com\n */\nconst n = function() {\n if (\"undefined\" != typeof globalThis) return globalThis;\n if (\"undefined\" != typeof self) return self;\n if (\"undefined\" != typeof window) return window;\n if (\"undefined\" != typeof global) return global;\n throw new Error(\"unable to locate global object\");\n}, o = n(), e = o.gl_trans__coders = o.gl_trans__coders || {};\n\nfunction t(n) {\n return e[n];\n}\n\nfunction _(n, o) {\n e[n] = o;\n}\n\nfunction r() {\n return n().maptalks_gltf_loader;\n}\n\nfunction l(o) {\n n().maptalks_gltf_loader_bundle = o;\n}\n\ne.inject = function(e) {\n const t = e.toString(), _ = t.indexOf(\"{\") + 1, r = t.substring(0, _), l = o.gl_trans__coders = o.gl_trans__coders || {};\n let s = `${r}\\n const _____getGlobal = ${n.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;\n for (const n in l) \"inject\" !== n && \"getTranscoder\" !== n && \"registerTranscoder\" !== n && (s += 'tran_____scoders[\"' + n + '\"] =' + l[n].toString() + \"\\n;\");\n return s += \"\\n(\" + n().maptalks_gltf_loader_bundle.toString() + \")({});\\n\", s += \"\\n\" + t.substring(r.length), \n s;\n}, e.registerTranscoder = _, e.getTranscoder = t;\n\nexport { e as default, r as getGLTFLoaderBundle, t as getTranscoder, l as registerGLTFLoaderBundle, _ as registerTranscoder };\n","import { mat4, reshader, quat, vec3 } from '@maptalks/gl';\r\nimport partsModels from './models';\r\nimport * as maptalks from 'maptalks';\r\nimport { getGLTFLoaderBundle } from '@maptalks/gl/dist/transcoders';\r\n\r\nconst gltfloader = getGLTFLoaderBundle();\r\nconst point = [];\r\nfunction createGLTFMesh(modelName) {\r\n const loader = new gltfloader.GLTFLoader('', JSON.parse(JSON.stringify(partsModels[modelName])));//避免tc在移除后,再添加新的,内置的gltf受影响\r\n return loader.load().then(gltf => {\r\n return gltf;\r\n });\r\n}\r\n\r\nexport function prepareMesh(modelName, translate, rotation, scale, color, pickingId) {\r\n const meshes = [];\r\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\r\n const modelMatrix = mat4.fromRotationTranslationScale([], rotate, translate, scale);\r\n const promise = createGLTFMesh(modelName);\r\n promise.then(data => {\r\n const gltfPack = reshader.GLTFHelper.exportGLTFPack(data);\r\n const geometries = gltfPack.getMeshesInfo();\r\n geometries.forEach((g, i) => {\r\n const material = new reshader.Material({ color: color || g.materialInfo.baseColorFactor });\r\n const mesh = new reshader.Mesh(g.geometry, material);\r\n mesh.setUniform('uPickingId', pickingId + i);\r\n const defines = mesh.getDefines();\r\n defines.HAS_PICKING_ID = 2;\r\n mesh.setDefines(defines);\r\n mesh.translate = translate;\r\n mesh.rotation = rotation;\r\n mesh.scaling = scale;\r\n mat4.multiply(mesh.localTransform, modelMatrix, g.nodeMatrix);\r\n mesh.originTransform = mat4.copy([], mesh.localTransform);\r\n mesh.originColor = color || g.materialInfo.baseColorFactor;\r\n meshes.push(mesh);\r\n });\r\n if (pickingId > 100) {\r\n meshes[0].properties['relatedMeshes'] = meshes.slice(1, 2);\r\n meshes[1].properties['relatedMeshes'] = meshes.slice(0, 1);\r\n meshes[2].properties['relatedMeshes'] = meshes.slice(3, 4);\r\n meshes[3].properties['relatedMeshes'] = meshes.slice(2, 3);\r\n meshes[4].properties['relatedMeshes'] = meshes.slice(5, 6);\r\n meshes[5].properties['relatedMeshes'] = meshes.slice(4, 5);\r\n meshes[6].properties['relatedMeshes'] = meshes.slice(0, 6);\r\n }\r\n });\r\n return meshes;\r\n}\r\n\r\nfunction containerPointToPoint(map, containerPoint, targetRes, altitude) {\r\n if (altitude) {\r\n const res = targetRes / map['_getResolution']();\r\n const w2 = map.width / 2, h2 = map.height / 2;\r\n point[0] = (containerPoint.x - w2) / w2;\r\n point[1] = containerPoint.y / h2 - 1;\r\n point[3] = altitude * res;\r\n const inverseMat = mat4.invert([], map.projViewMatrix);\r\n vec3.transformMat4(point, point, inverseMat);\r\n const glScale = map.getGLScale();\r\n vec3.set(point, point[0] / glScale, point[1] / glScale, point[2] / glScale);\r\n vec3.scale(point, point, 1 / res);\r\n return new maptalks.Point(point[0], point[1]);\r\n } else {\r\n const coordExtend = map.containerPointToCoordinate(containerPoint);\r\n return map.coordinateToPointAtRes(coordExtend, targetRes);\r\n }\r\n}\r\n\r\nfunction pointToContainerPoint(map, point, res, altitude) {\r\n return map['_pointAtResToContainerPoint'](point, res, altitude);\r\n}\r\n\r\nfunction getAbsoluteValue(value, s) {\r\n return Math.abs(value) * Math.sign(s);\r\n}\r\n\r\nexport function calFixedScale(target, map) {\r\n const coordinate = target.getCoordinates();\r\n const coordPoint = map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n const trans = [coordPoint.x, coordPoint.y, 0];\r\n const currentTrans = getTranslationPoint(map, target.getTranslation());\r\n vec3.add(trans, trans, currentTrans);\r\n const containerPoint = pointToContainerPoint(map, new maptalks.Point(trans[0], trans[1]), map.getGLRes());\r\n containerPoint.x += 85;\r\n const worldCoordExtend = containerPointToPoint(map, containerPoint, map.getGLRes());\r\n const currentLength = Math.sqrt(Math.pow(worldCoordExtend.x - trans[0], 2) + Math.pow(worldCoordExtend.y - trans[1], 2));\r\n const fixedScale = currentLength / 5.272881136101205;\r\n return fixedScale;\r\n}\r\n\r\nexport function containerPointToWorldPoint(point, map) {\r\n const coordinate = map.containerPointToCoordinate(new maptalks.Point(point.x, point.y));\r\n return map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n}\r\n\r\nexport function getTranslationPoint(map, translation) {\r\n if (!map) {\r\n return translation;\r\n }\r\n const point = map.distanceToPointAtRes(translation[0], translation[1], map.getGLRes());\r\n const z = map.altitudeToPoint(translation[2], map.getGLRes());\r\n return vec3.set([], getAbsoluteValue(point.x, translation[0]), getAbsoluteValue(point.y, translation[1]), getAbsoluteValue(z, translation[2]));\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class TranslateHelper {\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const scale = 340 / 177;\r\n const right = prepareMesh('jiantou', [1.2 * scale, 0, 0], [0, 0, 90], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 7);\r\n const bottom = prepareMesh('jiantou', [0, 1.2 * scale, 0], [0, 0, 180], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 8);\r\n const left = prepareMesh('jiantou', [-1.2 * scale, 0, 0], [0, 0, 270], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 9);\r\n const up = prepareMesh('jiantou', [0, -1.2 * scale, 0], [0, 0, 0], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 10);\r\n meshes.push(right, bottom, left, up);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class RotationHelper {\r\n\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const scale = 340 / 177;\r\n const mesh = prepareMesh('xuanzhuan', [0, 0, 0], [180, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [50 / 255, 130 / 255, 184 / 255, 0.8], 11);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\nexport default class ScalingHelper {\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const scale = 340 / 177;\r\n const mesh = prepareMesh('yuanhuan', [0, 0, 0], [0, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [149 / 255, 179 / 255, 199 / 255, 0.5], 12);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class PlaneHelper {\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const mesh = prepareMesh('plane', [0, 0, 0], [0, 0, 0], [10, 10, 10], [1, 0, 0, 0.5], 16);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { prepareMesh } from '../common/Util.js';\r\n\r\nexport default class XyzScaleHelper {\r\n\r\n constructor(coordinate) {\r\n this._coordinate = coordinate;\r\n this._meshes = this._prepareMeshes();\r\n }\r\n\r\n setCoordinate(coordinate) {\r\n this._coordinate = coordinate;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = [];\r\n const mesh = prepareMesh('xyzScale', [0, 0, 0], [0, 0, 0], [2, 2, 2], null, 113);\r\n meshes.push(mesh);\r\n return meshes;\r\n }\r\n\r\n getMeshes() {\r\n return this._meshes;\r\n }\r\n}\r\n","import { mat4, vec3, quat } from '@maptalks/gl';\r\nimport TranslateHelper from './TranslateHelper';\r\nimport RotationHelper from './RotationHelper';\r\nimport ScalingHelper from './ScalingHelper';\r\nimport PlaneHelper from './PlaneHelper';\r\nimport { prepareMesh, calFixedScale, getTranslationPoint } from '../common/Util.js';\r\nimport XyzScaleHelper from './XyzScaleHelper';\r\n\r\nconst VEC3 = [], TRANS = [], MAT4 = [], QUAT = [], SCALE = [], ratio = [177 / 170, 177 / 170, 177 / 170], ROTATION = [];\r\nconst scaleChangePickingIds = [1, 2, 3, 4, 12];\r\n\r\nexport default class TransformHelper {\r\n constructor() {\r\n this.translate = new TranslateHelper();\r\n this.rotation = new RotationHelper();\r\n this.scaling = new ScalingHelper();\r\n this.planeHelper = new PlaneHelper();\r\n this.xyzScaleHelper = new XyzScaleHelper();\r\n this._meshes = this._prepareMeshes();\r\n this._rotateClockwise = true;\r\n }\r\n\r\n _prepareMeshes() {\r\n const meshes = {};\r\n meshes['translate'] = this.translate.getMeshes();\r\n meshes['rotation'] = this.rotation.getMeshes();\r\n meshes['scaling'] = this.scaling.getMeshes();\r\n meshes['planeHelper'] = this.planeHelper.getMeshes();\r\n meshes['xyzScale'] = this.xyzScaleHelper.getMeshes();\r\n const scale = 340 / 177;\r\n const wn = prepareMesh('yuanhuan41', [-2.745 * scale, 2.745 * scale, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 1);//缩放\r\n const en = prepareMesh('yuanhuan41', [2.745 * scale, 2.745 * scale, 0], [-90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 2);\r\n const es = prepareMesh('yuanhuan41', [2.745 * scale, -2.745 * scale, 0], [90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 3);//缩放\r\n const ws = prepareMesh('yuanhuan41', [-2.745 * scale, -2.745 * scale, 0], [-90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 4);\r\n const yuanpan = prepareMesh('yuanpan', [0, 0, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [89 / 255, 206 / 255, 147 / 255, 0.5], 5);\r\n const zzhou = prepareMesh('zzhou', [0, 0, 6.5], [90, 0, 0], [1, 1, 1], [14 / 255, 127 / 255, 191 / 255, 1], 6);\r\n meshes['translate'].push(wn, en, es, ws, yuanpan, zzhou);\r\n return meshes;\r\n }\r\n\r\n updateMatrix(map, target, angle, scalar, deltaTrans) {\r\n const coordinate = target.getCoordinates();\r\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n const z = target._getPointZ();\r\n vec3.set(TRANS, p.x, p.y, z);\r\n const deltaTranslate = vec3.copy(VEC3, deltaTrans);\r\n const currentTrans = getTranslationPoint(map, target.getTranslation()); //由于gltfmarker中translation单位改成了米,不能直接这样加,需要转换一下\r\n vec3.add(TRANS, TRANS, currentTrans);\r\n vec3.add(TRANS, TRANS, deltaTranslate);\r\n for (const name in this._meshes) {\r\n for (let i = 0; i < this._meshes[name].length; i++) {\r\n const m = this._meshes[name][i];\r\n for (let j = 0; j < m.length; j++) {\r\n const mesh = m[j];\r\n const pickingId = mesh.getUniform('uPickingId');\r\n const translate = vec3.copy(VEC3, mesh.translate);\r\n let rotation = vec3.copy(ROTATION, mesh.rotation);\r\n const scaling = mesh.scaling;\r\n if (pickingId === 11) {\r\n if (this._rotateClockwise) {\r\n rotation[2] += angle;\r\n mesh.rotation[2] += angle;\r\n } else if (!this._rotateClockwise) {\r\n rotation[2] += angle;\r\n mesh.rotation[2] += angle;\r\n rotation[0] = 360;\r\n rotation[2] -= 90;\r\n }\r\n }\r\n if (pickingId > 100 && target.getTargets().length === 1) {\r\n rotation = target.getTargets()[0].getRotation();\r\n }\r\n if (scaleChangePickingIds.indexOf(pickingId) > -1) {\r\n if (pickingId !== 12) {\r\n scaling[0] += scalar;\r\n scaling[1] += scalar;\r\n scaling[2] += scalar;\r\n } else {\r\n const translateMesh = this._meshes['translate'][4][0];\r\n scaling[0] = translateMesh.scaling[0] * 1.2;\r\n scaling[1] = translateMesh.scaling[0] * 1.2;\r\n scaling[2] = translateMesh.scaling[0] * 1.2;\r\n }\r\n }\r\n let fixedScale = calFixedScale(target, map);\r\n fixedScale = vec3.set(MAT4, fixedScale, fixedScale, fixedScale);\r\n vec3.multiply(translate, translate, fixedScale);\r\n vec3.multiply(fixedScale, fixedScale, scaling);\r\n if (pickingId === 1 || pickingId === 2 || pickingId === 3 || pickingId === 4) {\r\n const tmpScale = vec3.multiply(SCALE, scaling, ratio);\r\n vec3.multiply(translate, translate, tmpScale);\r\n }\r\n const rotate = quat.fromEuler(QUAT, rotation[0], rotation[1], rotation[2]);\r\n vec3.add(translate, translate, TRANS);\r\n if (name === 'xyzScale') {\r\n const sm = mat4.fromRotationTranslationScale([], rotate, translate, fixedScale);\r\n mat4.multiply(mesh.localTransform, sm, mesh.originTransform);\r\n } else {\r\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n getMeshes(mode) {\r\n const meshes = {};\r\n if (!mode) {\r\n return meshes;\r\n }\r\n if (mode === 'xyzScale') {\r\n meshes[mode] = this._meshes[mode];\r\n } else {\r\n meshes['translate'] = this._meshes.translate;\r\n if (mode !== 'translate') {\r\n meshes[mode] = this._meshes[mode];\r\n }\r\n }\r\n return meshes;\r\n }\r\n\r\n _setRotateClockwise(clockwise) {\r\n this._rotateClockwise = clockwise;\r\n }\r\n\r\n dispose() {\r\n for (const name in this._meshes) {\r\n for (let i = 0; i < this._meshes[name].length; i++) {\r\n const m = this._meshes[name][i];\r\n for (let j = 0; j < m.length; j++) {\r\n const mesh = m[j];\r\n mesh.geometry.dispose();\r\n mesh.dispose();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Coordinate, Point } from \"maptalks\";\r\nimport { vec3, mat4, quat } from '@maptalks/gl';\r\n\r\nconst EMPTY_VEC = [], EMPTY_QUAT = [], EMPTY_MAT = [], TEMP_POINT = new Point(0, 0), TEMP_VEC_1 = [], TEMP_VEC_2 = [], TEMP_SCALE = [], EMPTY_TRANS = [0, 0, 0];\r\nexport default class TransformTarget {\r\n constructor() {\r\n this._targetList = [];\r\n this._translating = [0, 0, 0];\r\n this._scaling = [1, 1, 1];\r\n this._rotation = [0, 0, 0];\r\n }\r\n\r\n _add(target) {\r\n if (Array.isArray(target)) {\r\n target.forEach(t => {\r\n this._add(t);\r\n });\r\n } else {\r\n target.on('remove', this._onRemoveTarget, this);\r\n target._originTRS = {\r\n coordinate: target.getCoordinates(),\r\n translation: target.getTranslation(),\r\n rotation: target.getRotation(),\r\n scale: target.getScale()\r\n };\r\n this._targetList.push(target);\r\n }\r\n }\r\n\r\n _clear() {\r\n this._targetList.forEach(t => {\r\n t.off('remove', this._onRemoveTarget, this);\r\n });\r\n this._targetList = [];\r\n }\r\n\r\n _updateTRS(task, deltaTranslate, deltaRotation, deltaScale, limitScale, map, transformcontrol) {\r\n for (let i = 0; i < this._targetList.length; i++) {\r\n const target = this._targetList[i];\r\n const currentRotation = target.getRotation();\r\n const currentScaling = target.getScale();\r\n const targetCoordinate = this._calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate);\r\n let tempScale = null;\r\n //放大时,拉伸的空间可无限大,但是缩小时,是向圈内缩放,空间有限,需要增加缩小的倍数\r\n if (deltaScale >= 0) {\r\n tempScale = deltaScale;\r\n } else {\r\n tempScale = deltaScale * (this.options && this.options.scaleStrength || 1.0);\r\n }\r\n const targetScale = vec3.add(TEMP_SCALE, vec3.set(EMPTY_VEC, tempScale * currentScaling[0], tempScale * currentScaling[1], tempScale * currentScaling[2]), currentScaling);\r\n const minScale = Math.min(...targetScale);\r\n //minScale可能会出现<=0的情况,所以minScale只作为判断是否要限定scale的依据,计算的逻辑则用当前target的scale去计算,当前target的scale可以保证>=0.01\r\n if (Math.abs(minScale) < limitScale) {//scale有可能是负,例如翻转的情况\r\n const currentMinScale = Math.abs(minScale);\r\n targetScale[0] = targetScale[0] * (limitScale / currentMinScale);\r\n targetScale[1] = targetScale[1] * (limitScale / currentMinScale);\r\n targetScale[2] = targetScale[2] * (limitScale / currentMinScale);\r\n }\r\n const targetRotation = vec3.add(currentRotation, deltaRotation, currentRotation);\r\n target.setCoordinates(targetCoordinate);\r\n this._scaleXYZ(task, targetScale, currentScaling);\r\n const currentTrans = target.getTranslation();\r\n target.setTRS(currentTrans, targetRotation, targetScale);\r\n }\r\n vec3.set(TEMP_SCALE, deltaScale, deltaScale, deltaScale);\r\n vec3.add(this._rotation, deltaRotation, this._rotation);\r\n vec3.add(this._scaling, TEMP_SCALE, this._scaling);\r\n vec3.add(this._translating, deltaTranslate, this._translating);\r\n if (task.indexOf('translate') > -1) {\r\n transformcontrol.fire('positionchange', { action: task, type: 'positionchange', target: this._targetList, center: this.getCoordinates(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\r\n } else {\r\n transformcontrol.fire('transforming', { action: task, type: 'transforming', target: this._targetList, center: this._targetList[0].getTransformOrigin(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\r\n }\r\n }\r\n\r\n _calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate) {\r\n const center = target.getCenter();\r\n const originCenter = target.getTransformOrigin();\r\n const glRes = map.getGLRes();\r\n const pCenter = map.coordinateToPointAtRes(center, glRes, TEMP_POINT);\r\n pCenter.z = map.altitudeToPoint(center.z, glRes);\r\n vec3.set(TEMP_VEC_1, pCenter.x, pCenter.y, pCenter.z || 0);\r\n const pOriginCenter = map.coordinateToPointAtRes(originCenter, glRes, TEMP_POINT);\r\n pOriginCenter.z = map.altitudeToPoint(originCenter.z, glRes);\r\n vec3.set(TEMP_VEC_2, pOriginCenter.x , pOriginCenter.y, pOriginCenter.z || 0);\r\n const point = vec3.sub(EMPTY_VEC, TEMP_VEC_1, TEMP_VEC_2);\r\n const rotation = quat.fromEuler(EMPTY_QUAT, 0, 0, deltaRotation[2]);\r\n vec3.set(TEMP_SCALE, deltaScale + 1, deltaScale + 1, deltaScale + 1);\r\n const trsMatrix = mat4.fromRotationTranslationScale(EMPTY_MAT, rotation, deltaTranslate, TEMP_SCALE);\r\n vec3.transformMat4(point, point, trsMatrix);\r\n vec3.add(point, point, TEMP_VEC_2);\r\n TEMP_POINT.set(point[0], point[1]);\r\n const newCenter = map.pointAtResToCoordinate(TEMP_POINT, glRes);\r\n newCenter.z = point[2] / map.altitudeToPoint(1, glRes);\r\n return newCenter;\r\n }\r\n\r\n _scaleXYZ(task, targetScale, currentScaling) {\r\n if (task === 'x-scale') {\r\n targetScale[1] = currentScaling[1];\r\n targetScale[2] = currentScaling[2];\r\n } if (task === 'y-scale') {\r\n targetScale[0] = currentScaling[0];\r\n targetScale[2] = currentScaling[2];\r\n } if (task === 'z-scale') {\r\n targetScale[0] = currentScaling[0];\r\n targetScale[1] = currentScaling[1];\r\n }\r\n return targetScale;\r\n }\r\n\r\n _reset() {\r\n this._targetList.forEach(target => {\r\n if (target._originTRS) {\r\n const { coordinate, translation, rotation, scale } = target._originTRS;\r\n target.setCoordinates(coordinate);\r\n target.setTRS(translation, rotation, scale);\r\n }\r\n });\r\n }\r\n\r\n getScale() {\r\n return this._scaling;\r\n }\r\n\r\n getTranslation() {\r\n if (this._targetList.length === 1) {\r\n return this._targetList[0].getTranslation() || EMPTY_TRANS;\r\n }\r\n return EMPTY_TRANS;\r\n }\r\n\r\n getRotation() {\r\n return this._rotation;\r\n }\r\n\r\n _getLayer() {\r\n if (this._targetList[0]) {\r\n return this._targetList[0].getLayer();\r\n }\r\n return null;\r\n }\r\n\r\n getCoordinates() {\r\n let cx = 0, cy = 0, cz = 0\r\n const len = this._targetList.length;\r\n if (!len) {\r\n return null;\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const center = this._targetList[i].getCenter();\r\n cx += center.x;\r\n cy += center.y;\r\n cz += center.z || 0;\r\n }\r\n cx = cx / len;\r\n cy = cy / len;\r\n cz = cz / len;\r\n const newCenter = new Coordinate(cx, cy, cz);\r\n for (let i = 0; i < len; i++) {\r\n this._targetList[i].setTransformOrigin(newCenter);\r\n }\r\n return newCenter;\r\n }\r\n\r\n _onRemoveTarget(e) {\r\n const target = e.target;\r\n const index = this._targetList.indexOf(target);\r\n if (index > -1) {\r\n delete target._originTRS;\r\n this._targetList.splice(index, 1);\r\n }\r\n }\r\n\r\n getTargets() {\r\n return this._targetList;\r\n }\r\n\r\n _getPointZ() {\r\n let pz = 0\r\n const len = this._targetList.length;\r\n for (let i = 0; i < len; i++) {\r\n const pointZ = this._targetList[i].getPointZ();\r\n pz += pointZ;\r\n }\r\n pz = pz / len;\r\n return pz;\r\n }\r\n\r\n _isVisible() {\r\n for (let i = 0; i < this._targetList.length; i++) {\r\n if (this._targetList[i].isVisible()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { mat4, quat, vec3, vec2, reshader } from '@maptalks/gl';\r\nimport { Handlerable, Eventable, Class, Point, Coordinate, INTERNAL_LAYER_PREFIX } from 'maptalks';\r\nimport TransformHelper from './helper/TransformHelper';\r\nimport { calFixedScale, getTranslationPoint } from './common/Util';\r\nimport vert from './common/helper.vert';\r\nimport frag from './common/helper.frag';\r\nimport TransformTarget from './TransformTarget';\r\nimport { GLTFLayer, GLTFMarker } from '@maptalks/gltf-layer';\r\n\r\nconst translatePickingIds = [5, 6, 7, 8, 9, 10];\r\nconst translatePickingIds0 = [5, 7, 8, 9, 10];\r\nconst rotatePickingIds = [2, 4, 11];\r\nconst scalePickingIds = [1, 3, 12];\r\nconst noChangeColorPickingIds = [12, 16];\r\nconst defaultHuanPickingIds = [1, 2, 3, 4];\r\nconst scaleChnagePickingIds = [1, 2, 3, 4, 12];\r\nconst limitScale = 0.01;\r\nconst QUAT = [], SCALE = [], TRANS = [], EMPTY_VEC = [], CENTER = [], START = [], END = [];\r\nconst options = {\r\n scaleStrength: 2.0\r\n};\r\n\r\nexport default class TransformControl extends Eventable(Handlerable(Class)) {\r\n constructor(options = {}) {\r\n super(options);\r\n this.options = options;\r\n this.mouseAction = 'moving';\r\n this._mode = this.options.mode || 'translate';\r\n this._enabled = true;\r\n this.TransformHelper = new TransformHelper();\r\n this._target = new TransformTarget();\r\n this.helperScene = new reshader.Scene([]);\r\n this.addToMapCount = 0;\r\n this._createHelperLayer();\r\n }\r\n\r\n setCoordinates(coordinate) {\r\n this._helper.setCoordinates(coordinate);\r\n this.transform(this._helper);\r\n }\r\n\r\n enable() {\r\n this._enabled = true;\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n return this;\r\n }\r\n\r\n disable() {\r\n this._enabled = false;\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n if (this.map) {\r\n this.map.resetCursor();\r\n }\r\n return this;\r\n }\r\n\r\n setMode(mode) {\r\n this._mode = mode;\r\n this._resetScale();\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n this.fire('modechange', { mode, type: 'modechange' });\r\n }\r\n\r\n getMode() {\r\n return this._mode;\r\n }\r\n\r\n isEnable() {\r\n return this._enabled;\r\n }\r\n\r\n _setMode(pickingId) {\r\n if (translatePickingIds.indexOf(pickingId) > -1) {\r\n this._mode = 'translate';\r\n } else if (rotatePickingIds.indexOf(pickingId) > -1) {\r\n this._mode = 'rotation';\r\n } else if (scalePickingIds.indexOf(pickingId) > -1) {\r\n this._mode = 'scaling';\r\n } else if (this._mode !== 'xyzScale') {\r\n this._mode = 'translate';\r\n }\r\n }\r\n\r\n _getMode() {\r\n return this._mode;\r\n }\r\n\r\n addTo(map) {\r\n if (this.map) {\r\n this._removeEvents();\r\n console.warn('transform control has been added to a map, it suggest remove from the map before');\r\n return;\r\n }\r\n this.addToMapCount++;\r\n this.map = map;\r\n this._helperlayer.addTo(this.map);\r\n this.container = map.getContainer();\r\n map.on('dom:mousemove', this._mouseMoveHandle, this);\r\n map.on('dom:mousedown', this._mousedownHandle, this);\r\n map.on('dom:mouseup', this._mouseupHandle, this);\r\n map.on('zooming moving dragrotating', this._viewchanging, this);\r\n this._initShader();\r\n }\r\n\r\n _createHelperLayer() {\r\n this._helperlayer = new GLTFLayer(`${INTERNAL_LAYER_PREFIX}_transformcontrol`);\r\n this._helper = new GLTFMarker([0, 0], {\r\n symbol: {\r\n url: 'cube',\r\n modelHeight: 1,\r\n uniforms: {\r\n polygonOpacity: 0.01\r\n }\r\n }\r\n }).addTo(this._helperlayer);\r\n }\r\n\r\n remove() {\r\n if (!this.map || !this.container || !this.layerRenderer) {\r\n return;\r\n }\r\n this._removeEvents();\r\n this.TransformHelper.dispose();\r\n this.layerRenderer.setToRedraw();\r\n this._helperlayer.remove();\r\n delete this._helper;\r\n delete this._helperlayer;\r\n delete this.map;\r\n delete this.layer;\r\n delete this.layerRenderer;\r\n delete this.container;\r\n delete this._target;\r\n }\r\n\r\n _removeEvents() {\r\n if (!this.container || !this.map) {\r\n return;\r\n }\r\n this.map.off('dom:mousemove', this._mouseMoveHandle, this);\r\n this.map.off('dom:mousedown', this._mousedownHandle, this);\r\n this.map.off('dom:mouseup', this._mouseupHandle, this);\r\n this.map.off('zooming moving dragrotating', this._viewchanging, this);\r\n if (this.layer) {\r\n this.layer.off('renderend', this.render, this);\r\n }\r\n }\r\n\r\n _mouseMoveHandle(e) {\r\n if (!this._isAvailable()) {\r\n return;\r\n }\r\n this.currentMousePosition = {\r\n x: e.containerPoint.x,\r\n y: e.containerPoint.y\r\n };\r\n if (this.mouseAction === 'moving') {\r\n //在moving的情况下,会激活translate或者rotate两种模式\r\n const meshes = this._getMeshes();\r\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\r\n if (this.currentPickingObject && this.currentPickingObject.pickingId != null) {\r\n this._setMode(this.currentPickingObject.pickingId);\r\n if (this.currentPickingObject.pickingId === 6) {\r\n this._transformPlaneHelper(true);\r\n } else {\r\n this._transformPlaneHelper(false);\r\n }\r\n } else {\r\n this._transformPlaneHelper(false);\r\n this._setMode();\r\n }\r\n this._meshAction();\r\n }\r\n this._transformAction(this.currentMousePosition);\r\n }\r\n\r\n _mousedownHandle(e) {\r\n if (!this._isAvailable() || e.domEvent.button !== 0) {\r\n return;\r\n }\r\n const meshes = this._getMeshes();\r\n this.currentMousePosition = {\r\n x: e.containerPoint.x,\r\n y: e.containerPoint.y\r\n };\r\n this._needRefreshPicking = true;\r\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\r\n this.firstDownPoint = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\r\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\r\n this.mouseAction = 'transform';\r\n this._setTask(this.currentPickingObject.pickingId);\r\n this.map.config('zoomable', false);\r\n this.map.config('draggable', false);\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n } else {\r\n this.mouseAction = 'pan';\r\n this.map.config('zoomable', true);\r\n this.map.config('draggable', true);\r\n this._resetScale();\r\n }\r\n this.lastMousePosition = this.currentMousePosition;\r\n this.lastPickingObject = this.currentPickingObject;\r\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\r\n }\r\n\r\n _mouseupHandle() {\r\n if (this.mouseAction === 'transform') {\r\n this.firstDownPoint = null;\r\n this._resetScale();\r\n this._needRefreshPicking = true;\r\n this.fire('transformend', { action: this._task, type: 'transformend' });\r\n }\r\n this.mouseAction = 'moving';\r\n if (this._mode !== 'xyzScale') {\r\n this._mode = 'translate';\r\n }\r\n this.map.config('zoomable', true);\r\n this.map.config('draggable', true);\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\r\n }\r\n\r\n _viewchanging() {\r\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\r\n const bearing = this.map.getBearing();\r\n planeMesh.rotation[2] = -bearing;\r\n this._updateMatrix();\r\n }\r\n\r\n _updateMatrix() {\r\n if (!this._isAvailable()) {\r\n return;\r\n }\r\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\r\n this._needRefreshPicking = true;\r\n }\r\n\r\n picked(coordinate) {\r\n if (!this.layerRenderer) {\r\n return false;\r\n }\r\n const meshes = this._getMeshes();\r\n const map = this.map;\r\n let containerPoint = coordinate;\r\n if (!(coordinate instanceof Point)) {\r\n containerPoint = map.coordinateToContainerPoint(new Coordinate(coordinate));\r\n }\r\n const pickingObject = this._getPickingPoint(containerPoint, meshes, 'picked');\r\n if (pickingObject && pickingObject.meshId !== null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n _resetScale() {\r\n const scalingMesh = this.TransformHelper.getMeshes('scaling')['scaling'][0][0];\r\n const scale = 340 / 177;\r\n scalingMesh.scaling = [0.6 * scale, 0.6 * scale, 0.6 * scale];\r\n if (this.layerRenderer) {\r\n this._resetScaleControl(scalingMesh);\r\n this._resetDefaultColor();\r\n }\r\n }\r\n\r\n _resetDefaultColor() {\r\n const defaultMeshes = this.TransformHelper['_meshes'].translate;\r\n defaultMeshes.forEach(meshes => {\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n }\r\n });\r\n }\r\n\r\n _resetScaleControl(mesh) {\r\n const coordinate = this._target.getCoordinates();\r\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\r\n const trans = [p.x, p.y, 0];\r\n const originTrans = getTranslationPoint(this.map, this._target.getTranslation());\r\n vec3.add(trans, trans, originTrans);\r\n const translate = vec3.copy([], mesh.translate);\r\n const scaling = mesh.scaling;\r\n let fixedScale = calFixedScale(this._target, this.map);\r\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\r\n vec3.multiply(translate, translate, fixedScale);\r\n vec3.multiply(fixedScale, fixedScale, scaling);\r\n vec3.add(translate, translate, trans);\r\n mat4.fromRotationTranslationScale(mesh.localTransform, [0, 0, 0, 1], translate, fixedScale);\r\n const meshes = this._getMeshes();\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\r\n const translate = vec3.copy([], mesh.translate);\r\n const scale = 170 / 177;\r\n mesh.scaling = [scale, scale, scale];\r\n const scaling = mesh.scaling;\r\n const rotation = mesh.rotation;\r\n let fixedScale = calFixedScale(this._target, this.map);\r\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\r\n vec3.multiply(translate, translate, fixedScale);\r\n vec3.multiply(fixedScale, fixedScale, scaling);\r\n vec3.add(translate, translate, trans);\r\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\r\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\r\n }\r\n });\r\n }\r\n\r\n _getWorldPosition(containerPoint) {\r\n const coordinate = this.map.containerPointToCoordinate(containerPoint);\r\n const worldPosition = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\r\n return {\r\n point: [worldPosition.x, worldPosition.y]\r\n };\r\n }\r\n\r\n _transformAction(mousePosition) {\r\n if (this.mouseAction === 'transform') {\r\n const mode = this._getMode();\r\n const currentTrans = getTranslationPoint(this.map, this._target.getTranslation());\r\n const z = this._target._getPointZ();\r\n let planeInteract = null, lastPlaneInteract = null;\r\n if (currentTrans[2] + z < 0.01 && this._task !== 'z-translate') { //target不是贴着地面的情况下\r\n planeInteract = this._getWorldPosition(this.currentMousePosition);\r\n lastPlaneInteract = this._getWorldPosition(this.lastMousePosition);\r\n } else {\r\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0];\r\n planeInteract = this._getPickingPoint(this.currentMousePosition, planeMesh, 'plane');\r\n lastPlaneInteract = this._getPickingPoint(this.lastMousePosition, planeMesh, 'plane');\r\n if (!planeInteract || planeInteract.meshId === null || !lastPlaneInteract || lastPlaneInteract.meshId === null) {\r\n return;\r\n }\r\n }\r\n const deltaTranslate = [0, 0, 0];\r\n const deltaRotation = [0, 0, 0];\r\n let deltaScale = 0;\r\n let deltaAngle = 0;\r\n let helperDeltaScale = 0;\r\n if (mode === 'translate') {\r\n if (this._task === 'xy-translate') {\r\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\r\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\r\n deltaTranslate[0] = deltaTransX;\r\n deltaTranslate[1] = deltaTransY;\r\n } else if (this._task === 'x-translate') {\r\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\r\n deltaTranslate[0] = deltaTransX;\r\n } else if (this._task === 'y-translate') {\r\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\r\n deltaTranslate[1] = deltaTransY;\r\n } else if (this._task === 'z-translate') {\r\n let deltaTransZ = 0;\r\n if (!this._isInMapCenter()) {\r\n deltaTransZ = planeInteract.point[2] - lastPlaneInteract.point[2];\r\n } else {\r\n const glRes = this.map.getGLRes();\r\n const lastContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(lastPlaneInteract.point[0], lastPlaneInteract.point[1]), glRes);\r\n const currentContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(planeInteract.point[0], planeInteract.point[1]), glRes);\r\n const distance = vec2.length(vec2.set(EMPTY_VEC, planeInteract.point[0] - lastPlaneInteract.point[0], planeInteract.point[1] - lastPlaneInteract.point[1]));\r\n if (currentContainerPoint.y < lastContainerPoint.y) {\r\n deltaTransZ = distance;\r\n } else {\r\n deltaTransZ = -distance;\r\n }\r\n }\r\n deltaTranslate[2] = deltaTransZ;\r\n }\r\n } else if (mode === 'rotation') {\r\n deltaAngle = this._calAngle(planeInteract.point, lastPlaneInteract.point);\r\n if (deltaAngle >= 0) {\r\n this.TransformHelper._setRotateClockwise(true);\r\n } else {\r\n this.TransformHelper._setRotateClockwise(false);\r\n }\r\n deltaRotation[2] += deltaAngle;\r\n } else if (mode === 'scaling' || mode === 'xyzScale') {\r\n const center = this._getCurrentCenter();\r\n const firstDistance = vec2.length(vec2.set(EMPTY_VEC, this.firstDownPoint.point[0] - center[0], this.firstDownPoint.point[1] - center[1]));\r\n const scaleDistance = vec2.length(vec2.set(EMPTY_VEC, lastPlaneInteract.point[0] - center[0], lastPlaneInteract.point[1] - center[1]));\r\n deltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, scaleDistance);\r\n helperDeltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, firstDistance);\r\n }\r\n this.TransformHelper.updateMatrix(this.map, this._target, deltaAngle, helperDeltaScale, deltaTranslate);//TC自己转动\r\n this._target._updateTRS(this._task, deltaTranslate, deltaRotation, deltaScale, limitScale, this.map, this);\r\n }\r\n this.lastMousePosition = mousePosition;\r\n this.lastPickingObject = this.currentPickingObject;\r\n const meshes = this._getMeshes();\r\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\r\n }\r\n\r\n _calDirection(from, to, center, distance, currentScaling) {\r\n const distanceFrom = vec2.length(vec2.set(EMPTY_VEC, from[0] - center[0], from[1] - center[1]));\r\n const distanceTo = vec2.length(vec2.set(EMPTY_VEC, to[0] - center[0], to[1] - center[1]));\r\n const scalar = (distanceFrom - distanceTo) / distance;\r\n if (currentScaling) {\r\n return (currentScaling[0] - limitScale) * scalar;\r\n }\r\n return scalar;\r\n }\r\n\r\n _getCurrentCenter() {\r\n const map = this.map;\r\n const coordinate = this._target.getCoordinates();\r\n const center = map.coordinateToPointAtRes(coordinate, map.getGLRes());\r\n const trans = vec3.set(CENTER, center.x, center.y, 0);\r\n const currentTrans = getTranslationPoint(map, this._target.getTranslation());\r\n vec3.add(trans, trans, currentTrans);\r\n return trans;\r\n }\r\n\r\n _transformPlaneHelper(rotated) {\r\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\r\n const trans = mat4.getTranslation(TRANS, planeMesh.localTransform);\r\n const scaling = mat4.getScaling(SCALE, planeMesh.localTransform);\r\n let rotation = quat.fromEuler(QUAT, 0, 0, 0);\r\n const bearing = this.map.getBearing();\r\n if (rotated && !this._isInMapCenter()) {\r\n rotation = quat.fromEuler(QUAT, 90, 0, -bearing);\r\n if (planeMesh.rotation[0] === 0) {\r\n this._needRefreshPicking = true;\r\n }\r\n vec3.set(planeMesh.rotation, 90, 0, -bearing);\r\n } else {\r\n if (planeMesh.rotation[0] === 90) {\r\n this._needRefreshPicking = true;\r\n }\r\n vec3.set(planeMesh.rotation, 0, 0, -bearing);\r\n }\r\n mat4.fromRotationTranslationScale(planeMesh.localTransform, rotation, trans, scaling);\r\n }\r\n\r\n _isInMapCenter() {\r\n if (this.map.getPitch()) {\r\n return false;\r\n }\r\n const cameraPos = this.map.cameraPosition;\r\n const centerPos = this.map.coordinateToPointAtRes(this.map.getCenter(), this.map.getGLRes());\r\n vec3.set(centerPos, centerPos.x, centerPos.y, 0);\r\n const coordinate = this._target.getCoordinates();\r\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\r\n const trans = getTranslationPoint(this.map, this._target.getTranslation());\r\n const position = vec3.set(TRANS, p.x, p.y, 0);\r\n const worldPos = vec3.add(position, position, trans);\r\n const vTargetToCamera = vec3.subtract([], cameraPos, worldPos);\r\n const vCenterToCamera = vec3.subtract([], cameraPos, centerPos);\r\n const angle = vec3.angle(vTargetToCamera, vCenterToCamera);\r\n const theta = (1 / 180) * Math.PI;\r\n if (angle < theta) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n _meshAction() {\r\n const meshes = this._getMeshes();\r\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\r\n this._setCursor();\r\n if (this.lastPickingObject && this.lastPickingObject.meshId != null && this.lastPickingObject.meshId !== this.currentPickingObject.meshId) {\r\n this._resetColor();\r\n }\r\n const pickedMesh = meshes[this.currentPickingObject.meshId];\r\n if (pickedMesh && noChangeColorPickingIds.indexOf(this.currentPickingObject.pickingId) < 0) {\r\n if (this.currentPickingObject.pickingId > 100) {\r\n this._changeXYZScaleColor(pickedMesh);\r\n } else {\r\n const color = [pickedMesh.originColor[0], pickedMesh.originColor[1], pickedMesh.originColor[2], 0.8];\r\n pickedMesh.material.set('color', color);\r\n this._setTranslateMeshesColor(pickedMesh, 0.5);\r\n }\r\n }\r\n this.layerRenderer.setToRedraw();\r\n } else if (this.lastPickingObject && this.lastPickingObject.meshId != null) {\r\n this.map.resetCursor();\r\n this._resetColor();\r\n this.layerRenderer.setToRedraw();\r\n }\r\n }\r\n\r\n _changeXYZScaleColor(pickedMesh) {\r\n const color = [255 / 255, 179 / 255, 2 / 255, 1];\r\n pickedMesh.material.set('color', color);\r\n if(pickedMesh.properties['relatedMeshes']) {\r\n pickedMesh.properties['relatedMeshes'].forEach(mesh => {\r\n mesh.material.set('color', color)\r\n });\r\n }\r\n }\r\n\r\n _setCursor() {\r\n if (this.currentPickingObject.pickingId === 6) {\r\n this.map.setCursor('ns-resize');\r\n } else if (translatePickingIds0.indexOf(this.currentPickingObject.pickingId) > -1) {\r\n this.map.setCursor('move');\r\n } else {\r\n this.map.setCursor('pointer');\r\n }\r\n }\r\n\r\n _resetColor() {\r\n const lastMesh = this.lastPickingMesh;\r\n if (!lastMesh) {\r\n return;\r\n }\r\n const pickedId = lastMesh.getUniform('uPickingId');\r\n const meshes = this._getMeshes();\r\n if (translatePickingIds0.indexOf(pickedId) > -1) {\r\n meshes.forEach(mesh => {\r\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n });\r\n } else if (scaleChnagePickingIds.indexOf(pickedId) > -1) {\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (defaultHuanPickingIds.indexOf(meshid) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n });\r\n } else if (pickedId === 11) {\r\n meshes.forEach(mesh => {\r\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n mesh.material.set('color', mesh.originColor);\r\n }\r\n });\r\n }\r\n lastMesh.material.set('color', lastMesh.originColor);\r\n if(lastMesh.properties['relatedMeshes']) {\r\n lastMesh.properties['relatedMeshes'].forEach(mesh => {\r\n mesh.material.set('color', mesh.originColor)\r\n });\r\n }\r\n }\r\n\r\n _setTranslateMeshesColor(pickedMesh, opacity) {\r\n const pickedId = pickedMesh.getUniform('uPickingId');\r\n const meshes = this._getMeshes();\r\n if (translatePickingIds0.indexOf(pickedId) > -1) {\r\n meshes.forEach(mesh => {\r\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\r\n if (mesh.getUniform('uPickingId') !== pickedMesh.getUniform('uPickingId')) {\r\n const color = [mesh.originColor[0], mesh.originColor[1], mesh.originColor[2], opacity];\r\n mesh.material.set('color', color);\r\n }\r\n }\r\n });\r\n } else if (this._mode === 'scaling') {\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\r\n const color = [149 / 255, 179 / 255, 199 / 255, 0.8];\r\n mesh.material.set('color', color);\r\n }\r\n });\r\n } else if (this._mode === 'rotation') {\r\n meshes.forEach(mesh => {\r\n const meshid = mesh.getUniform('uPickingId');\r\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\r\n const color = mesh.originColor;\r\n mesh.material.set('color', [color[0], color[1], color[2], 0]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n reset() {\r\n if (!this.map || !this._target) {\r\n return;\r\n }\r\n this._target._reset();\r\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\r\n }\r\n\r\n _calAngle(to, from) {\r\n const center = this._getCurrentCenter();\r\n const startDirection = vec2.set(START, from[0] - center[0], from[1] - center[1]);\r\n const endDirection = vec2.set(END, to[0] - center[0], to[1] - center[1]);\r\n const startAngle = Math.atan2(startDirection[1], startDirection[0]);\r\n const endAngle = Math.atan2(endDirection[1], endDirection[0]);\r\n return ((endAngle - startAngle) / Math.PI) * 180;\r\n }\r\n\r\n _setTask(pickingId) {\r\n //根据pickingId来判断被鼠标命中的是哪个辅助部件,从而判定当前执行的操作\r\n if (pickingId === 113 || pickingId === 114) {\r\n this._task = 'x-scale';\r\n } else if (pickingId === 115 || pickingId === 116) {\r\n this._task = 'z-scale';\r\n } else if (pickingId === 117 || pickingId === 118) {\r\n this._task = 'y-scale';\r\n } else if (pickingId === 119) {\r\n this._task = 'xyz-scale';\r\n } else if (pickingId === 5) {\r\n this._task = 'xy-translate';\r\n } else if (pickingId === 6) {\r\n this._task = 'z-translate';\r\n } else if (pickingId === 7 || pickingId === 9) {\r\n this._task = 'x-translate';\r\n } else if (pickingId === 8 || pickingId === 10) {\r\n this._task = 'y-translate';\r\n } else if (pickingId === 11) {\r\n this._task = 'z-rotate';\r\n } else {\r\n this._task = 'scale';\r\n }\r\n return this._task;\r\n }\r\n\r\n transform(targets) {\r\n if (!targets) {\r\n return;\r\n }\r\n if (this.layerRenderer && this.layerRenderer.layer) {\r\n this.layerRenderer.layer.off('renderend', this.render);\r\n this.layerRenderer.layer.off('resizeCanvas', this._resize);\r\n }\r\n if (!this.map) {\r\n console.error('should add to a target first');\r\n return;\r\n }\r\n if (this._target) {\r\n this._target._clear();\r\n this._target._add(targets);\r\n }\r\n if (!this._target.getTargets().length) {\r\n return;\r\n }\r\n const map = this.map;\r\n this.TransformHelper.updateMatrix(map, this._target, 0, 0, [0, 0, 0]);\r\n this._prepareContext();\r\n this._needRefreshPicking = true;\r\n }\r\n\r\n getTransformTarget() {\r\n return this._target;\r\n }\r\n\r\n _onRemoveTarget() {\r\n delete this._target;\r\n }\r\n\r\n _prepareContext() {\r\n const layer = this._target._getLayer();\r\n if (layer) {\r\n layer.off('renderend', this.render);\r\n layer.off('resizeCanvas', this._resize);\r\n }\r\n const map = this.map;\r\n const layerRenderer = layer.getRenderer();\r\n this.layerRenderer = layerRenderer;\r\n this.regl = layerRenderer.regl;\r\n this.renderer = layerRenderer.renderer;\r\n this._picking = this.layerRenderer.getFBORayPicking();\r\n this._uniforms = {\r\n 'projViewMatrix' : map.projViewMatrix,\r\n 'projMatrix': map.projMatrix,\r\n 'viewMatrix': map.viewMatrix,\r\n 'pointSize': 1.0\r\n };\r\n layer.on('renderend', this.render, this);\r\n layer.on('resizeCanvas', this._resize, this);\r\n layerRenderer.setToRedraw();\r\n }\r\n\r\n _resize() {\r\n this._picking.clear();\r\n this._needRefreshPicking = true;\r\n }\r\n\r\n _getPickingPoint(containerPoint, meshes, task) {\r\n const map = this.map;\r\n if (!map || !this._picking || !this.layerRenderer || !this.layerRenderer.canvas) {\r\n return null;\r\n }\r\n const dpr = map.getDevicePixelRatio();\r\n const x = containerPoint.x * dpr, y = containerPoint.y * dpr;\r\n const uniforms = this._uniforms;\r\n const inGroup = this.layerRenderer.canvas.gl && this.layerRenderer.canvas.gl.wrap;\r\n if (this._needRefreshPicking || inGroup || !this._pickTask || this._pickTask !== task) {\r\n this._picking.render(meshes, uniforms, true);\r\n this._pickTask = task;\r\n this._needRefreshPicking = false;\r\n }\r\n const picked = this._picking.pick(\r\n x, // 屏幕坐标 x轴的值\r\n y, // 屏幕坐标 y轴的值\r\n 10,\r\n uniforms,\r\n {\r\n viewMatrix : this.map.viewMatrix, //viewMatrix和projMatrix用于计算点的世界坐标值\r\n projMatrix : this.map.projMatrix,\r\n returnPoint : true\r\n }\r\n );\r\n return picked;\r\n }\r\n\r\n _initShader() {\r\n const dpr = this.map.getDevicePixelRatio();\r\n const viewport = {\r\n x : 0,\r\n y : 0,\r\n width : () => {\r\n return this.map ? this.map.width * dpr : 1;\r\n },\r\n height : () => {\r\n return this.map ? this.map.height * dpr : 1;\r\n }\r\n };\r\n this._shader = new reshader.MeshShader({\r\n vert,\r\n frag,\r\n uniforms : [\r\n 'color',\r\n {\r\n name : 'projViewModelMatrix',\r\n type : 'function',\r\n fn : function (context, props) {\r\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\r\n }\r\n }\r\n ],\r\n extraCommandProps: {\r\n viewport,\r\n depth: {\r\n enable: true,\r\n func: 'always',\r\n mask: true,\r\n range: [0, 0]\r\n },\r\n blend: {\r\n enable: true,\r\n func: {\r\n src: 'src alpha',\r\n dst: 'one minus src alpha'\r\n },\r\n equation: 'add'\r\n }\r\n },\r\n defines : {\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n if (!this._isAvailable()) {\r\n return;\r\n }\r\n const meshes = this._getMeshes();\r\n this.helperScene.setMeshes(meshes);\r\n const drawContext = this.layerRenderer.getFrameContext();\r\n //避免tc的mesh多次绘制\r\n if (drawContext && drawContext.renderTarget && this.layerRenderer.getFrameTimestamp() !== drawContext.timestamp) {\r\n return;\r\n }\r\n this._updateMatrix();\r\n this._shader.filter = drawContext && drawContext.sceneFilter;\r\n const targetFBO = drawContext && drawContext.renderTarget && drawContext.renderTarget.fbo;\r\n this.renderer.render(this._shader, this._uniforms, this.helperScene, targetFBO);\r\n }\r\n\r\n _getMeshes() {\r\n let meshes = [];\r\n const meshMap = this.TransformHelper.getMeshes(this._mode);\r\n for (const p in meshMap) {\r\n if (p === 'translate') {\r\n continue;\r\n }\r\n const meshList = meshMap[p];\r\n for (let i = 0; i < meshList.length; i++) {\r\n meshes = meshes.concat(meshList[i]);\r\n }\r\n }\r\n //为避免z轴被其他mesh覆盖,最后绘制z轴的mesh\r\n const translateMeshes = meshMap['translate'];\r\n if (translateMeshes) {\r\n for (let i = 0; i < translateMeshes.length; i++) {\r\n meshes = meshes.concat(translateMeshes[i]);\r\n }\r\n }\r\n return meshes;\r\n }\r\n\r\n _isAvailable() {\r\n const renderer = this.layerRenderer;\r\n const layer = renderer && renderer.layer;\r\n return renderer && this._target && layer && layer.isVisible() && this._target._isVisible() && this.regl && this._enabled;\r\n }\r\n}\r\n\r\nTransformControl.mergeOptions(options);\r\n"],"names":["partsModels","yuanhuan","accessors","name","componentType","count","min","max","type","bufferView","byteOffset","asset","generator","version","buffers","byteLength","uri","bufferViews","buffer","byteStride","target","materials","pbrMetallicRoughness","baseColorFactor","metallicFactor","roughnessFactor","emissiveFactor","alphaMode","doubleSided","meshes","primitives","attributes","POSITION","NORMAL","indices","material","mode","nodes","mesh","scene","scenes","yuanhuan41","yuanhuan411","yuanpan","zzhou","TEXCOORD_0","jiantou","xuanzhuan","plane","xyzScale","scale","rotation","n","globalThis","self","window","global","Error","o","e","gl_trans__coders","inject","t","toString","_","indexOf","r","substring","l","s","maptalks_gltf_loader_bundle","length","registerTranscoder","getTranscoder","gltfloader","maptalks_gltf_loader","prepareMesh","modelName","translate","color","pickingId","rotate","quat","fromEuler","modelMatrix","mat4","fromRotationTranslationScale","promise","GLTFLoader","JSON","parse","stringify","load","then","gltf","createGLTFMesh","data","reshader","GLTFHelper","exportGLTFPack","getMeshesInfo","forEach","g","i","Material","materialInfo","Mesh","geometry","setUniform","defines","getDefines","HAS_PICKING_ID","setDefines","scaling","multiply","localTransform","nodeMatrix","originTransform","copy","originColor","push","properties","slice","getAbsoluteValue","value","Math","abs","sign","calFixedScale","map","coordinate","getCoordinates","coordPoint","coordinateToPointAtRes","getGLRes","trans","x","y","currentTrans","getTranslationPoint","getTranslation","vec3","add","containerPoint","point","res","altitude","pointToContainerPoint","maptalks","Point","worldCoordExtend","targetRes","coordExtend","containerPointToCoordinate","containerPointToPoint","sqrt","pow","translation","distanceToPointAtRes","z","altitudeToPoint","set","TranslateHelper","constructor","this","_coordinate","_meshes","_prepareMeshes","setCoordinate","right","bottom","left","up","getMeshes","RotationHelper","ScalingHelper","PlaneHelper","XyzScaleHelper","VEC3","TRANS","MAT4","QUAT","SCALE","ratio","ROTATION","scaleChangePickingIds","TransformHelper","planeHelper","xyzScaleHelper","_rotateClockwise","wn","en","es","ws","updateMatrix","angle","scalar","deltaTrans","p","_getPointZ","deltaTranslate","m","j","getUniform","getTargets","getRotation","translateMesh","fixedScale","tmpScale","sm","_setRotateClockwise","clockwise","dispose","EMPTY_VEC","EMPTY_QUAT","EMPTY_MAT","TEMP_POINT","TEMP_VEC_1","TEMP_VEC_2","TEMP_SCALE","EMPTY_TRANS","TransformTarget","_targetList","_translating","_scaling","_rotation","_add","Array","isArray","on","_onRemoveTarget","_originTRS","getScale","_clear","off","_updateTRS","task","deltaRotation","deltaScale","limitScale","transformcontrol","currentRotation","currentScaling","targetCoordinate","_calNewCenter","tempScale","options","scaleStrength","targetScale","minScale","currentMinScale","targetRotation","setCoordinates","_scaleXYZ","setTRS","fire","action","center","getTransformOrigin","getCenter","originCenter","glRes","pCenter","pOriginCenter","sub","trsMatrix","transformMat4","newCenter","pointAtResToCoordinate","_reset","_getLayer","getLayer","cx","cy","cz","len","Coordinate","setTransformOrigin","index","splice","pz","getPointZ","_isVisible","isVisible","translatePickingIds","translatePickingIds0","rotatePickingIds","scalePickingIds","noChangeColorPickingIds","defaultHuanPickingIds","scaleChnagePickingIds","CENTER","START","END","TransformControl","Eventable","Handlerable","Class","super","mouseAction","_mode","_enabled","_target","helperScene","Scene","addToMapCount","_createHelperLayer","_helper","transform","enable","layerRenderer","setToRedraw","disable","resetCursor","setMode","_resetScale","getMode","isEnable","_setMode","_getMode","addTo","_removeEvents","console","warn","_helperlayer","container","getContainer","_mouseMoveHandle","_mousedownHandle","_mouseupHandle","_viewchanging","_initShader","GLTFLayer","INTERNAL_LAYER_PREFIX","GLTFMarker","symbol","url","modelHeight","uniforms","polygonOpacity","remove","layer","render","_isAvailable","currentMousePosition","_getMeshes","currentPickingObject","_getPickingPoint","_transformPlaneHelper","_meshAction","_transformAction","domEvent","button","_needRefreshPicking","firstDownPoint","meshId","_setTask","config","lastMousePosition","lastPickingObject","lastPickingMesh","_task","planeMesh","bearing","getBearing","_updateMatrix","picked","coordinateToContainerPoint","pickingObject","scalingMesh","_resetScaleControl","_resetDefaultColor","originTrans","meshid","_getWorldPosition","worldPosition","mousePosition","planeInteract","lastPlaneInteract","deltaAngle","helperDeltaScale","deltaTransX","deltaTransY","deltaTransZ","_isInMapCenter","lastContainerPoint","currentContainerPoint","distance","vec2","_calAngle","_getCurrentCenter","firstDistance","scaleDistance","_calDirection","from","to","rotated","getScaling","getPitch","cameraPos","cameraPosition","centerPos","position","worldPos","vTargetToCamera","subtract","vCenterToCamera","PI","_setCursor","_resetColor","pickedMesh","_changeXYZScaleColor","_setTranslateMeshesColor","setCursor","lastMesh","pickedId","opacity","reset","startDirection","endDirection","startAngle","atan2","targets","_resize","error","_prepareContext","getTransformTarget","getRenderer","regl","renderer","_picking","getFBORayPicking","_uniforms","projViewMatrix","projMatrix","viewMatrix","pointSize","clear","canvas","dpr","getDevicePixelRatio","inGroup","gl","wrap","_pickTask","pick","returnPoint","viewport","width","height","_shader","MeshShader","vert","frag","fn","context","props","extraCommandProps","depth","func","mask","range","blend","src","dst","equation","setMeshes","drawContext","getFrameContext","renderTarget","getFrameTimestamp","timestamp","filter","sceneFilter","targetFBO","fbo","meshMap","meshList","concat","translateMeshes","mergeOptions"],"mappings":"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"}
|