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