@maptalks/transform-control 0.106.0 → 0.106.1

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,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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,KVyjQLbzPT4AAAAAZvesQLbzPT4AAAAAhsmqQC7/YT8AAAAAZ0ShQDC7Vz8AAAAA+u2lwGKhxr8AAAAArK2cwLpJvL8AAAAAEFihwB04V78AAAAAXdyqwE7RYb8AAAAAat6lQEaUxj8AAAAAApqcQG+BvD8AAAAAB18EQFOWlcAAAAAA+u0LQLBynsAAAAAARPoxQNSalMAAAAAAJzEoQIxKjMAAAAAAQBNVQFyPiMAAAAAAIEFJQMDsgMAAAAAA0950QK36dMAAAAAAejZnQFRSZ8AAAAAAXdyAQBBYScAAAAAA+n6IQI0oVcAAAAAAcoqUQAMJMsAAAAAAKjqMQIlBKMAAAAAAXdyAQFdbSUAAAAAA+n6IQDsBVUAAAAAA0950QBTQdEAAAAAAejZnQA5PZ0AAAAAA+n6IwI0oVcAAAAAAwOyAwBBYScAAAAAAXkuMwIlBKMAAAAAA0ZGUwAMJMsAAAAAA5j+8P9ejnMAAAAAAkDFXP65HocAAAAAA1JrGPz7opcAAAAAA/7I7PvhTo8AAAAAA/7I7PmPurMAAAAAAM8RhP/vLqsAAAAAADwutwLbzPT4AAAAA0m+jwLbzPT4AAAAAEFihwDC7Vz8AAAAAXdyqwC7/YT8AAAAArK2cwG+BvD8AAAAA+u2lwEaUxj8AAAAADXGewN/gC0AAAAAAa5qVwIV8BEAAAAAAXkuMwAFNKEAAAAAA0ZGUwD7oMUAAAAAAlIeVQIV8BEAAAAAAlWWeQN/gC0AAAAAAcoqUQD7oMUAAAAAAKjqMQAFNKEAAAAAAQBNVQBB6iEAAAAAAIEFJQKfogEAAAAAAW9N0wK36dMAAAAAAsVBnwFRSZ8AAAAAAlWWeQM/3C8AAAAAAlIeVQNxoBMAAAAAA+n6IwDsBVUAAAAAAwOyAwFdbSUAAAAAAsVBnwA5PZ0AAAAAAW9N0wBTQdEAAAAAAd74LwLBynsAAAAAAkxi8v9ejnMAAAAAAwFsEwFOWlcAAAAAARpRWv65HocAAAAAAayvGvz7opcAAAAAA2c43vvhTo8AAAAAA2c43vmPurMAAAAAAt9Fgv/vLqsAAAAAAt9Fgv7fRqkAAAAAAayvGvybkpUAAAAAAd74LwAponkAAAAAA2c43vv5lo0AAAAAA2c43vmkArUAAAAAARpRWvzxOoUAAAAAAkxi8v9ejnEAAAAAAOdYxwHKKlEAAAAAAwFsEwDqSlUAAAAAA+zoowNBEjEAAAAAAJlNJwKfogEAAAAAAUPxUwBB6iEAAAAAAat6lQGKhxr8AAAAAApqcQLpJvL8AAAAAhsmqQE7RYb8AAAAAZ0ShQB04V78AAAAAZvesQP+yO74AAAAAKVyjQP+yO74AAAAAM8RhP7fRqkAAAAAA/7I7PmkArUAAAAAA/7I7Pv5lo0AAAAAA+u0LQAponkAAAAAA1JrGPybkpUAAAAAAkDFXPzxOoUAAAAAA5j+8P9ejnEAAAAAARPoxQHKKlEAAAAAAB18EQDqSlUAAAAAAJzEoQNBEjEAAAAAA+zoowIxKjMAAAAAAOdYxwNSalMAAAAAAUPxUwFyPiMAAAAAAJlNJwMDsgMAAAAAAa5qVwNxoBMAAAAAADXGewM/3C8AAAAAA0m+jwP+yO74AAAAADwutwP+yO74AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/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.109.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\";\nimport { vec3, mat4, quat } from '@maptalks/gl';\n\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];\nexport default class TransformTarget {\n constructor() {\n this._targetList = [];\n this._translating = [0, 0, 0];\n this._scaling = [1, 1, 1];\n this._rotation = [0, 0, 0];\n }\n\n _add(target) {\n if (Array.isArray(target)) {\n target.forEach(t => {\n this._add(t);\n });\n } else {\n target.on('remove', this._onRemoveTarget, this);\n target._originTRS = {\n coordinate: target.getCoordinates(),\n translation: target.getTranslation(),\n rotation: target.getRotation(),\n scale: target.getScale()\n };\n this._targetList.push(target);\n }\n }\n\n _clear() {\n this._targetList.forEach(t => {\n t.off('remove', this._onRemoveTarget, this);\n });\n this._targetList = [];\n }\n\n _updateTRS(task, deltaTranslate, deltaRotation, deltaScale, limitScale, map, transformcontrol) {\n for (let i = 0; i < this._targetList.length; i++) {\n const target = this._targetList[i];\n const currentRotation = target.getRotation();\n const currentScaling = target.getScale();\n const targetCoordinate = this._calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate);\n let tempScale = null;\n //放大时,拉伸的空间可无限大,但是缩小时,是向圈内缩放,空间有限,需要增加缩小的倍数\n if (deltaScale >= 0) {\n tempScale = deltaScale;\n } else {\n tempScale = deltaScale * (this.options && this.options.scaleStrength || 1.0);\n }\n const targetScale = vec3.add(TEMP_SCALE, vec3.set(EMPTY_VEC, tempScale * currentScaling[0], tempScale * currentScaling[1], tempScale * currentScaling[2]), currentScaling);\n const minScale = Math.min(...targetScale);\n //minScale可能会出现<=0的情况,所以minScale只作为判断是否要限定scale的依据,计算的逻辑则用当前target的scale去计算,当前target的scale可以保证>=0.01\n if (Math.abs(minScale) < limitScale) {//scale有可能是负,例如翻转的情况\n const currentMinScale = Math.abs(minScale);\n targetScale[0] = targetScale[0] * (limitScale / currentMinScale);\n targetScale[1] = targetScale[1] * (limitScale / currentMinScale);\n targetScale[2] = targetScale[2] * (limitScale / currentMinScale);\n }\n const targetRotation = vec3.add(currentRotation, deltaRotation, currentRotation);\n target.setCoordinates(targetCoordinate);\n this._scaleXYZ(task, targetScale, currentScaling);\n const currentTrans = target.getTranslation();\n target.setTRS(currentTrans, targetRotation, targetScale);\n }\n vec3.set(TEMP_SCALE, deltaScale, deltaScale, deltaScale);\n vec3.add(this._rotation, deltaRotation, this._rotation);\n vec3.add(this._scaling, TEMP_SCALE, this._scaling);\n vec3.add(this._translating, deltaTranslate, this._translating);\n if (task.indexOf('translate') > -1) {\n transformcontrol.fire('positionchange', { action: task, type: 'positionchange', transformtarget: this._targetList, center: this.getCoordinates(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n } else {\n transformcontrol.fire('transforming', { action: task, type: 'transforming', transformtarget: this._targetList, center: this._targetList[0].getTransformOrigin(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n }\n }\n\n _calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate) {\n const center = target.getCenter();\n const originCenter = target.getTransformOrigin();\n const glRes = map.getGLRes();\n const pCenter = map.coordinateToPointAtRes(center, glRes, TEMP_POINT);\n pCenter.z = map.altitudeToPoint(center.z, glRes);\n vec3.set(TEMP_VEC_1, pCenter.x, pCenter.y, pCenter.z || 0);\n const pOriginCenter = map.coordinateToPointAtRes(originCenter, glRes, TEMP_POINT);\n pOriginCenter.z = map.altitudeToPoint(originCenter.z, glRes);\n vec3.set(TEMP_VEC_2, pOriginCenter.x , pOriginCenter.y, pOriginCenter.z || 0);\n const point = vec3.sub(EMPTY_VEC, TEMP_VEC_1, TEMP_VEC_2);\n const rotation = quat.fromEuler(EMPTY_QUAT, 0, 0, deltaRotation[2]);\n vec3.set(TEMP_SCALE, deltaScale + 1, deltaScale + 1, deltaScale + 1);\n const trsMatrix = mat4.fromRotationTranslationScale(EMPTY_MAT, rotation, deltaTranslate, TEMP_SCALE);\n vec3.transformMat4(point, point, trsMatrix);\n vec3.add(point, point, TEMP_VEC_2);\n TEMP_POINT.set(point[0], point[1]);\n const newCenter = map.pointAtResToCoordinate(TEMP_POINT, glRes);\n newCenter.z = point[2] / map.altitudeToPoint(1, glRes);\n return newCenter;\n }\n\n _scaleXYZ(task, targetScale, currentScaling) {\n if (task === 'x-scale') {\n targetScale[1] = currentScaling[1];\n targetScale[2] = currentScaling[2];\n } if (task === 'y-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[2] = currentScaling[2];\n } if (task === 'z-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[1] = currentScaling[1];\n }\n return targetScale;\n }\n\n _reset() {\n this._targetList.forEach(target => {\n if (target._originTRS) {\n const { coordinate, translation, rotation, scale } = target._originTRS;\n target.setCoordinates(coordinate);\n target.setTRS(translation, rotation, scale);\n }\n });\n }\n\n getScale() {\n return this._scaling;\n }\n\n getTranslation() {\n if (this._targetList.length === 1) {\n return this._targetList[0].getTranslation() || EMPTY_TRANS;\n }\n return EMPTY_TRANS;\n }\n\n getRotation() {\n return this._rotation;\n }\n\n _getLayer() {\n if (this._targetList[0]) {\n return this._targetList[0].getLayer();\n }\n return null;\n }\n\n getCoordinates() {\n let cx = 0, cy = 0, cz = 0\n const len = this._targetList.length;\n if (!len) {\n return null;\n }\n for (let i = 0; i < len; i++) {\n const center = this._targetList[i].getCenter();\n cx += center.x;\n cy += center.y;\n cz += center.z || 0;\n }\n cx = cx / len;\n cy = cy / len;\n cz = cz / len;\n const newCenter = new Coordinate(cx, cy, cz);\n for (let i = 0; i < len; i++) {\n this._targetList[i].setTransformOrigin(newCenter);\n }\n return newCenter;\n }\n\n _onRemoveTarget(e) {\n const target = e.target;\n const index = this._targetList.indexOf(target);\n if (index > -1) {\n delete target._originTRS;\n this._targetList.splice(index, 1);\n }\n }\n\n getTargets() {\n return this._targetList;\n }\n\n _getPointZ() {\n let pz = 0\n const len = this._targetList.length;\n for (let i = 0; i < len; i++) {\n const pointZ = this._targetList[i].getPointZ();\n pz += pointZ;\n }\n pz = pz / len;\n return pz;\n }\n\n _isVisible() {\n for (let i = 0; i < this._targetList.length; i++) {\n if (this._targetList[i].isVisible()) {\n return true;\n }\n }\n return false;\n }\n}\n","import { mat4, quat, vec3, vec2, reshader, GroupGLLayer } 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 const gllayer = map.getLayers(layer => layer instanceof GroupGLLayer)[0];\r\n if (gllayer) {\r\n this._helperlayer.addTo(gllayer);\r\n } else {\r\n this._helperlayer.addTo(this.map);\r\n }\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) {\r\n return;\r\n }\r\n this._removeEvents();\r\n this.TransformHelper.dispose();\r\n this._helperlayer.remove();\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\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', transformtarget: this._target.getTargets() });\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","transformtarget","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","gllayer","getLayers","layer","GroupGLLayer","_helperlayer","container","getContainer","_mouseMoveHandle","_mousedownHandle","_mouseupHandle","_viewchanging","_initShader","GLTFLayer","INTERNAL_LAYER_PREFIX","GLTFMarker","symbol","url","modelHeight","uniforms","polygonOpacity","remove","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.109.1\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\";\nimport { vec3, mat4, quat } from '@maptalks/gl';\n\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];\nexport default class TransformTarget {\n constructor() {\n this._targetList = [];\n this._translating = [0, 0, 0];\n this._scaling = [1, 1, 1];\n this._rotation = [0, 0, 0];\n }\n\n _add(target) {\n if (Array.isArray(target)) {\n target.forEach(t => {\n this._add(t);\n });\n } else {\n target.on('remove', this._onRemoveTarget, this);\n target._originTRS = {\n coordinate: target.getCoordinates(),\n translation: target.getTranslation(),\n rotation: target.getRotation(),\n scale: target.getScale()\n };\n this._targetList.push(target);\n }\n }\n\n _clear() {\n this._targetList.forEach(t => {\n t.off('remove', this._onRemoveTarget, this);\n });\n this._targetList = [];\n }\n\n _updateTRS(task, deltaTranslate, deltaRotation, deltaScale, limitScale, map, transformcontrol) {\n for (let i = 0; i < this._targetList.length; i++) {\n const target = this._targetList[i];\n const currentRotation = target.getRotation();\n const currentScaling = target.getScale();\n const targetCoordinate = this._calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate);\n let tempScale = null;\n //放大时,拉伸的空间可无限大,但是缩小时,是向圈内缩放,空间有限,需要增加缩小的倍数\n if (deltaScale >= 0) {\n tempScale = deltaScale;\n } else {\n tempScale = deltaScale * (this.options && this.options.scaleStrength || 1.0);\n }\n const targetScale = vec3.add(TEMP_SCALE, vec3.set(EMPTY_VEC, tempScale * currentScaling[0], tempScale * currentScaling[1], tempScale * currentScaling[2]), currentScaling);\n const minScale = Math.min(...targetScale);\n //minScale可能会出现<=0的情况,所以minScale只作为判断是否要限定scale的依据,计算的逻辑则用当前target的scale去计算,当前target的scale可以保证>=0.01\n if (Math.abs(minScale) < limitScale) {//scale有可能是负,例如翻转的情况\n const currentMinScale = Math.abs(minScale);\n targetScale[0] = targetScale[0] * (limitScale / currentMinScale);\n targetScale[1] = targetScale[1] * (limitScale / currentMinScale);\n targetScale[2] = targetScale[2] * (limitScale / currentMinScale);\n }\n const targetRotation = vec3.add(currentRotation, deltaRotation, currentRotation);\n target.setCoordinates(targetCoordinate);\n this._scaleXYZ(task, targetScale, currentScaling);\n const currentTrans = target.getTranslation();\n target.setTRS(currentTrans, targetRotation, targetScale);\n }\n vec3.set(TEMP_SCALE, deltaScale, deltaScale, deltaScale);\n vec3.add(this._rotation, deltaRotation, this._rotation);\n vec3.add(this._scaling, TEMP_SCALE, this._scaling);\n vec3.add(this._translating, deltaTranslate, this._translating);\n if (task.indexOf('translate') > -1) {\n transformcontrol.fire('positionchange', { action: task, type: 'positionchange', transformtarget: this._targetList, center: this.getCoordinates(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n } else {\n transformcontrol.fire('transforming', { action: task, type: 'transforming', transformtarget: this._targetList, center: this._targetList[0].getTransformOrigin(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n }\n }\n\n _calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate) {\n const center = target.getCenter();\n const originCenter = target.getTransformOrigin();\n const glRes = map.getGLRes();\n const pCenter = map.coordinateToPointAtRes(center, glRes, TEMP_POINT);\n pCenter.z = map.altitudeToPoint(center.z, glRes);\n vec3.set(TEMP_VEC_1, pCenter.x, pCenter.y, pCenter.z || 0);\n const pOriginCenter = map.coordinateToPointAtRes(originCenter, glRes, TEMP_POINT);\n pOriginCenter.z = map.altitudeToPoint(originCenter.z, glRes);\n vec3.set(TEMP_VEC_2, pOriginCenter.x , pOriginCenter.y, pOriginCenter.z || 0);\n const point = vec3.sub(EMPTY_VEC, TEMP_VEC_1, TEMP_VEC_2);\n const rotation = quat.fromEuler(EMPTY_QUAT, 0, 0, deltaRotation[2]);\n vec3.set(TEMP_SCALE, deltaScale + 1, deltaScale + 1, deltaScale + 1);\n const trsMatrix = mat4.fromRotationTranslationScale(EMPTY_MAT, rotation, deltaTranslate, TEMP_SCALE);\n vec3.transformMat4(point, point, trsMatrix);\n vec3.add(point, point, TEMP_VEC_2);\n TEMP_POINT.set(point[0], point[1]);\n const newCenter = map.pointAtResToCoordinate(TEMP_POINT, glRes);\n newCenter.z = point[2] / map.altitudeToPoint(1, glRes);\n return newCenter;\n }\n\n _scaleXYZ(task, targetScale, currentScaling) {\n if (task === 'x-scale') {\n targetScale[1] = currentScaling[1];\n targetScale[2] = currentScaling[2];\n } if (task === 'y-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[2] = currentScaling[2];\n } if (task === 'z-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[1] = currentScaling[1];\n }\n return targetScale;\n }\n\n _reset() {\n this._targetList.forEach(target => {\n if (target._originTRS) {\n const { coordinate, translation, rotation, scale } = target._originTRS;\n target.setCoordinates(coordinate);\n target.setTRS(translation, rotation, scale);\n }\n });\n }\n\n getScale() {\n return this._scaling;\n }\n\n getTranslation() {\n if (this._targetList.length === 1) {\n return this._targetList[0].getTranslation() || EMPTY_TRANS;\n }\n return EMPTY_TRANS;\n }\n\n getRotation() {\n return this._rotation;\n }\n\n _getLayer() {\n if (this._targetList[0]) {\n return this._targetList[0].getLayer();\n }\n return null;\n }\n\n getCoordinates() {\n let cx = 0, cy = 0, cz = 0\n const len = this._targetList.length;\n if (!len) {\n return null;\n }\n for (let i = 0; i < len; i++) {\n const center = this._targetList[i].getCenter();\n cx += center.x;\n cy += center.y;\n cz += center.z || 0;\n }\n cx = cx / len;\n cy = cy / len;\n cz = cz / len;\n const newCenter = new Coordinate(cx, cy, cz);\n for (let i = 0; i < len; i++) {\n this._targetList[i].setTransformOrigin(newCenter);\n }\n return newCenter;\n }\n\n _onRemoveTarget(e) {\n const target = e.target;\n const index = this._targetList.indexOf(target);\n if (index > -1) {\n delete target._originTRS;\n this._targetList.splice(index, 1);\n }\n }\n\n getTargets() {\n return this._targetList;\n }\n\n _getPointZ() {\n let pz = 0\n const len = this._targetList.length;\n for (let i = 0; i < len; i++) {\n const pointZ = this._targetList[i].getPointZ();\n pz += pointZ;\n }\n pz = pz / len;\n return pz;\n }\n\n _isVisible() {\n for (let i = 0; i < this._targetList.length; i++) {\n if (this._targetList[i].isVisible()) {\n return true;\n }\n }\n return false;\n }\n}\n","import { mat4, quat, vec3, vec2, reshader, GroupGLLayer } 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 const gllayer = map.getLayers(layer => layer instanceof GroupGLLayer)[0];\r\n if (gllayer) {\r\n this._helperlayer.addTo(gllayer);\r\n } else {\r\n this._helperlayer.addTo(this.map);\r\n }\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) {\r\n return;\r\n }\r\n this._removeEvents();\r\n this.TransformHelper.dispose();\r\n this._helperlayer.remove();\r\n if (this.layerRenderer) {\r\n this.layerRenderer.setToRedraw();\r\n }\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', transformtarget: this._target.getTargets() });\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","transformtarget","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","gllayer","getLayers","layer","GroupGLLayer","_helperlayer","container","getContainer","_mouseMoveHandle","_mousedownHandle","_mouseupHandle","_viewchanging","_initShader","GLTFLayer","INTERNAL_LAYER_PREFIX","GLTFMarker","symbol","url","modelHeight","uniforms","polygonOpacity","remove","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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"}