@maptalks/transform-control 0.100.0 → 0.102.0
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","../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","import { mat4, reshader, quat, vec3 } from '@maptalks/gl';\r\nimport partsModels from './models';\r\nimport * as gltf from '@maptalks/gltf-loader';\r\nimport * as maptalks from 'maptalks';\r\n\r\nconst point = [];\r\nfunction createGLTFMesh(modelName) {\r\n const loader = new gltf.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, GroupGLLayer } from '@maptalks/gl';\r\nimport { Handlerable, Eventable, Class, Point, Coordinate } 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\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 }\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 }\r\n this.addToMapCount++;\r\n this.map = 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 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 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 layers = this.map.getLayers();\r\n let gllayer = null;\r\n for (let i = 0; i < layers.length; i++) {\r\n if (layers[i] instanceof GroupGLLayer) {\r\n gllayer = layers[i];\r\n break;\r\n }\r\n }\r\n if (!gllayer) {\r\n return;\r\n }\r\n const gllayers = gllayer.getLayers();\r\n const layerIndex = gllayers.indexOf(layer);\r\n if (layerIndex < 0) {\r\n return;\r\n }\r\n gllayers.splice(layerIndex, 1);\r\n gllayers.push(layer);\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","prepareMesh","modelName","translate","color","pickingId","rotate","quat","fromEuler","modelMatrix","mat4","fromRotationTranslationScale","promise","gltf","GLTFLoader","JSON","parse","stringify","load","then","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","s","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","length","m","j","getUniform","getTargets","getRotation","indexOf","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","t","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","e","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","enable","layerRenderer","setToRedraw","disable","resetCursor","setMode","_resetScale","getMode","isEnable","_setMode","_getMode","addTo","_removeEvents","console","warn","container","getContainer","_mouseMoveHandle","_mousedownHandle","_mouseupHandle","_viewchanging","_initShader","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","transform","targets","_resize","error","_prepareContext","getTransformTarget","layers","getLayers","gllayer","GroupGLLayer","gllayers","layerIndex","getRenderer","regl","renderer","_picking","getFBORayPicking","_uniforms","projViewMatrix","projMatrix","viewMatrix","pointSize","clear","canvas","dpr","getDevicePixelRatio","uniforms","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","../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","import { mat4, reshader, quat, vec3, gltf } from '@maptalks/gl';\r\nimport partsModels from './models';\r\nimport * as maptalks from 'maptalks';\r\n\r\nconst point = [];\r\nfunction createGLTFMesh(modelName) {\r\n const loader = new gltf.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","prepareMesh","modelName","translate","color","pickingId","rotate","quat","fromEuler","modelMatrix","mat4","fromRotationTranslationScale","promise","gltf","GLTFLoader","JSON","parse","stringify","load","then","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","s","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","length","m","j","getUniform","getTargets","getRotation","indexOf","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","t","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","e","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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"}
|