1 line
43 KiB
Plaintext
1 line
43 KiB
Plaintext
{"version":3,"file":"EllipsoidGeometry-c1dcbb8c.js","sources":["../../../../Source/Core/EllipsoidGeometry.js"],"sourcesContent":["import arrayFill from \"./arrayFill.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryOffsetAttribute from \"./GeometryOffsetAttribute.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport VertexFormat from \"./VertexFormat.js\";\n\nconst scratchPosition = new Cartesian3();\nconst scratchNormal = new Cartesian3();\nconst scratchTangent = new Cartesian3();\nconst scratchBitangent = new Cartesian3();\nconst scratchNormalST = new Cartesian3();\nconst defaultRadii = new Cartesian3(1.0, 1.0, 1.0);\n\nconst cos = Math.cos;\nconst sin = Math.sin;\n\n/**\n * A description of an ellipsoid centered at the origin.\n *\n * @alias EllipsoidGeometry\n * @constructor\n *\n * @param {Object} [options] Object with the following properties:\n * @param {Cartesian3} [options.radii=Cartesian3(1.0, 1.0, 1.0)] The radii of the ellipsoid in the x, y, and z directions.\n * @param {Cartesian3} [options.innerRadii=options.radii] The inner radii of the ellipsoid in the x, y, and z directions.\n * @param {Number} [options.minimumClock=0.0] The minimum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.\n * @param {Number} [options.maximumClock=2*PI] The maximum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.\n * @param {Number} [options.minimumCone=0.0] The minimum angle measured from the positive z-axis and toward the negative z-axis.\n * @param {Number} [options.maximumCone=PI] The maximum angle measured from the positive z-axis and toward the negative z-axis.\n * @param {Number} [options.stackPartitions=64] The number of times to partition the ellipsoid into stacks.\n * @param {Number} [options.slicePartitions=64] The number of times to partition the ellipsoid into radial slices.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n *\n * @exception {DeveloperError} options.slicePartitions cannot be less than three.\n * @exception {DeveloperError} options.stackPartitions cannot be less than three.\n *\n * @see EllipsoidGeometry#createGeometry\n *\n * @example\n * const ellipsoid = new Cesium.EllipsoidGeometry({\n * vertexFormat : Cesium.VertexFormat.POSITION_ONLY,\n * radii : new Cesium.Cartesian3(1000000.0, 500000.0, 500000.0)\n * });\n * const geometry = Cesium.EllipsoidGeometry.createGeometry(ellipsoid);\n */\nfunction EllipsoidGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const radii = defaultValue(options.radii, defaultRadii);\n const innerRadii = defaultValue(options.innerRadii, radii);\n const minimumClock = defaultValue(options.minimumClock, 0.0);\n const maximumClock = defaultValue(options.maximumClock, CesiumMath.TWO_PI);\n const minimumCone = defaultValue(options.minimumCone, 0.0);\n const maximumCone = defaultValue(options.maximumCone, CesiumMath.PI);\n const stackPartitions = Math.round(defaultValue(options.stackPartitions, 64));\n const slicePartitions = Math.round(defaultValue(options.slicePartitions, 64));\n const vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);\n\n //>>includeStart('debug', pragmas.debug);\n if (slicePartitions < 3) {\n throw new DeveloperError(\n \"options.slicePartitions cannot be less than three.\"\n );\n }\n if (stackPartitions < 3) {\n throw new DeveloperError(\n \"options.stackPartitions cannot be less than three.\"\n );\n }\n //>>includeEnd('debug');\n\n this._radii = Cartesian3.clone(radii);\n this._innerRadii = Cartesian3.clone(innerRadii);\n this._minimumClock = minimumClock;\n this._maximumClock = maximumClock;\n this._minimumCone = minimumCone;\n this._maximumCone = maximumCone;\n this._stackPartitions = stackPartitions;\n this._slicePartitions = slicePartitions;\n this._vertexFormat = VertexFormat.clone(vertexFormat);\n this._offsetAttribute = options.offsetAttribute;\n this._workerName = \"createEllipsoidGeometry\";\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nEllipsoidGeometry.packedLength =\n 2 * Cartesian3.packedLength + VertexFormat.packedLength + 7;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {EllipsoidGeometry} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nEllipsoidGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required\");\n }\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n Cartesian3.pack(value._radii, array, startingIndex);\n startingIndex += Cartesian3.packedLength;\n\n Cartesian3.pack(value._innerRadii, array, startingIndex);\n startingIndex += Cartesian3.packedLength;\n\n VertexFormat.pack(value._vertexFormat, array, startingIndex);\n startingIndex += VertexFormat.packedLength;\n\n array[startingIndex++] = value._minimumClock;\n array[startingIndex++] = value._maximumClock;\n array[startingIndex++] = value._minimumCone;\n array[startingIndex++] = value._maximumCone;\n array[startingIndex++] = value._stackPartitions;\n array[startingIndex++] = value._slicePartitions;\n array[startingIndex] = defaultValue(value._offsetAttribute, -1);\n\n return array;\n};\n\nconst scratchRadii = new Cartesian3();\nconst scratchInnerRadii = new Cartesian3();\nconst scratchVertexFormat = new VertexFormat();\nconst scratchOptions = {\n radii: scratchRadii,\n innerRadii: scratchInnerRadii,\n vertexFormat: scratchVertexFormat,\n minimumClock: undefined,\n maximumClock: undefined,\n minimumCone: undefined,\n maximumCone: undefined,\n stackPartitions: undefined,\n slicePartitions: undefined,\n offsetAttribute: undefined,\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {EllipsoidGeometry} [result] The object into which to store the result.\n * @returns {EllipsoidGeometry} The modified result parameter or a new EllipsoidGeometry instance if one was not provided.\n */\nEllipsoidGeometry.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n const radii = Cartesian3.unpack(array, startingIndex, scratchRadii);\n startingIndex += Cartesian3.packedLength;\n\n const innerRadii = Cartesian3.unpack(array, startingIndex, scratchInnerRadii);\n startingIndex += Cartesian3.packedLength;\n\n const vertexFormat = VertexFormat.unpack(\n array,\n startingIndex,\n scratchVertexFormat\n );\n startingIndex += VertexFormat.packedLength;\n\n const minimumClock = array[startingIndex++];\n const maximumClock = array[startingIndex++];\n const minimumCone = array[startingIndex++];\n const maximumCone = array[startingIndex++];\n const stackPartitions = array[startingIndex++];\n const slicePartitions = array[startingIndex++];\n const offsetAttribute = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.minimumClock = minimumClock;\n scratchOptions.maximumClock = maximumClock;\n scratchOptions.minimumCone = minimumCone;\n scratchOptions.maximumCone = maximumCone;\n scratchOptions.stackPartitions = stackPartitions;\n scratchOptions.slicePartitions = slicePartitions;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n return new EllipsoidGeometry(scratchOptions);\n }\n\n result._radii = Cartesian3.clone(radii, result._radii);\n result._innerRadii = Cartesian3.clone(innerRadii, result._innerRadii);\n result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._minimumClock = minimumClock;\n result._maximumClock = maximumClock;\n result._minimumCone = minimumCone;\n result._maximumCone = maximumCone;\n result._stackPartitions = stackPartitions;\n result._slicePartitions = slicePartitions;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return result;\n};\n\n/**\n * Computes the geometric representation of an ellipsoid, including its vertices, indices, and a bounding sphere.\n *\n * @param {EllipsoidGeometry} ellipsoidGeometry A description of the ellipsoid.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nEllipsoidGeometry.createGeometry = function (ellipsoidGeometry) {\n const radii = ellipsoidGeometry._radii;\n if (radii.x <= 0 || radii.y <= 0 || radii.z <= 0) {\n return;\n }\n\n const innerRadii = ellipsoidGeometry._innerRadii;\n if (innerRadii.x <= 0 || innerRadii.y <= 0 || innerRadii.z <= 0) {\n return;\n }\n\n const minimumClock = ellipsoidGeometry._minimumClock;\n const maximumClock = ellipsoidGeometry._maximumClock;\n const minimumCone = ellipsoidGeometry._minimumCone;\n const maximumCone = ellipsoidGeometry._maximumCone;\n const vertexFormat = ellipsoidGeometry._vertexFormat;\n\n // Add an extra slice and stack so that the number of partitions is the\n // number of surfaces rather than the number of joints\n let slicePartitions = ellipsoidGeometry._slicePartitions + 1;\n let stackPartitions = ellipsoidGeometry._stackPartitions + 1;\n\n slicePartitions = Math.round(\n (slicePartitions * Math.abs(maximumClock - minimumClock)) /\n CesiumMath.TWO_PI\n );\n stackPartitions = Math.round(\n (stackPartitions * Math.abs(maximumCone - minimumCone)) / CesiumMath.PI\n );\n\n if (slicePartitions < 2) {\n slicePartitions = 2;\n }\n if (stackPartitions < 2) {\n stackPartitions = 2;\n }\n\n let i;\n let j;\n let index = 0;\n\n // Create arrays for theta and phi. Duplicate first and last angle to\n // allow different normals at the intersections.\n const phis = [minimumCone];\n const thetas = [minimumClock];\n for (i = 0; i < stackPartitions; i++) {\n phis.push(\n minimumCone + (i * (maximumCone - minimumCone)) / (stackPartitions - 1)\n );\n }\n phis.push(maximumCone);\n for (j = 0; j < slicePartitions; j++) {\n thetas.push(\n minimumClock + (j * (maximumClock - minimumClock)) / (slicePartitions - 1)\n );\n }\n thetas.push(maximumClock);\n const numPhis = phis.length;\n const numThetas = thetas.length;\n\n // Allow for extra indices if there is an inner surface and if we need\n // to close the sides if the clock range is not a full circle\n let extraIndices = 0;\n let vertexMultiplier = 1.0;\n const hasInnerSurface =\n innerRadii.x !== radii.x ||\n innerRadii.y !== radii.y ||\n innerRadii.z !== radii.z;\n let isTopOpen = false;\n let isBotOpen = false;\n let isClockOpen = false;\n if (hasInnerSurface) {\n vertexMultiplier = 2.0;\n if (minimumCone > 0.0) {\n isTopOpen = true;\n extraIndices += slicePartitions - 1;\n }\n if (maximumCone < Math.PI) {\n isBotOpen = true;\n extraIndices += slicePartitions - 1;\n }\n if ((maximumClock - minimumClock) % CesiumMath.TWO_PI) {\n isClockOpen = true;\n extraIndices += (stackPartitions - 1) * 2 + 1;\n } else {\n extraIndices += 1;\n }\n }\n\n const vertexCount = numThetas * numPhis * vertexMultiplier;\n const positions = new Float64Array(vertexCount * 3);\n const isInner = arrayFill(new Array(vertexCount), false);\n const negateNormal = arrayFill(new Array(vertexCount), false);\n\n // Multiply by 6 because there are two triangles per sector\n const indexCount = slicePartitions * stackPartitions * vertexMultiplier;\n const numIndices =\n 6 *\n (indexCount +\n extraIndices +\n 1 -\n (slicePartitions + stackPartitions) * vertexMultiplier);\n const indices = IndexDatatype.createTypedArray(indexCount, numIndices);\n\n const normals = vertexFormat.normal\n ? new Float32Array(vertexCount * 3)\n : undefined;\n const tangents = vertexFormat.tangent\n ? new Float32Array(vertexCount * 3)\n : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(vertexCount * 3)\n : undefined;\n const st = vertexFormat.st ? new Float32Array(vertexCount * 2) : undefined;\n\n // Calculate sin/cos phi\n const sinPhi = new Array(numPhis);\n const cosPhi = new Array(numPhis);\n for (i = 0; i < numPhis; i++) {\n sinPhi[i] = sin(phis[i]);\n cosPhi[i] = cos(phis[i]);\n }\n\n // Calculate sin/cos theta\n const sinTheta = new Array(numThetas);\n const cosTheta = new Array(numThetas);\n for (j = 0; j < numThetas; j++) {\n cosTheta[j] = cos(thetas[j]);\n sinTheta[j] = sin(thetas[j]);\n }\n\n // Create outer surface\n for (i = 0; i < numPhis; i++) {\n for (j = 0; j < numThetas; j++) {\n positions[index++] = radii.x * sinPhi[i] * cosTheta[j];\n positions[index++] = radii.y * sinPhi[i] * sinTheta[j];\n positions[index++] = radii.z * cosPhi[i];\n }\n }\n\n // Create inner surface\n let vertexIndex = vertexCount / 2.0;\n if (hasInnerSurface) {\n for (i = 0; i < numPhis; i++) {\n for (j = 0; j < numThetas; j++) {\n positions[index++] = innerRadii.x * sinPhi[i] * cosTheta[j];\n positions[index++] = innerRadii.y * sinPhi[i] * sinTheta[j];\n positions[index++] = innerRadii.z * cosPhi[i];\n\n // Keep track of which vertices are the inner and which ones\n // need the normal to be negated\n isInner[vertexIndex] = true;\n if (i > 0 && i !== numPhis - 1 && j !== 0 && j !== numThetas - 1) {\n negateNormal[vertexIndex] = true;\n }\n vertexIndex++;\n }\n }\n }\n\n // Create indices for outer surface\n index = 0;\n let topOffset;\n let bottomOffset;\n for (i = 1; i < numPhis - 2; i++) {\n topOffset = i * numThetas;\n bottomOffset = (i + 1) * numThetas;\n\n for (j = 1; j < numThetas - 2; j++) {\n indices[index++] = bottomOffset + j;\n indices[index++] = bottomOffset + j + 1;\n indices[index++] = topOffset + j + 1;\n\n indices[index++] = bottomOffset + j;\n indices[index++] = topOffset + j + 1;\n indices[index++] = topOffset + j;\n }\n }\n\n // Create indices for inner surface\n if (hasInnerSurface) {\n const offset = numPhis * numThetas;\n for (i = 1; i < numPhis - 2; i++) {\n topOffset = offset + i * numThetas;\n bottomOffset = offset + (i + 1) * numThetas;\n\n for (j = 1; j < numThetas - 2; j++) {\n indices[index++] = bottomOffset + j;\n indices[index++] = topOffset + j;\n indices[index++] = topOffset + j + 1;\n\n indices[index++] = bottomOffset + j;\n indices[index++] = topOffset + j + 1;\n indices[index++] = bottomOffset + j + 1;\n }\n }\n }\n\n let outerOffset;\n let innerOffset;\n if (hasInnerSurface) {\n if (isTopOpen) {\n // Connect the top of the inner surface to the top of the outer surface\n innerOffset = numPhis * numThetas;\n for (i = 1; i < numThetas - 2; i++) {\n indices[index++] = i;\n indices[index++] = i + 1;\n indices[index++] = innerOffset + i + 1;\n\n indices[index++] = i;\n indices[index++] = innerOffset + i + 1;\n indices[index++] = innerOffset + i;\n }\n }\n\n if (isBotOpen) {\n // Connect the bottom of the inner surface to the bottom of the outer surface\n outerOffset = numPhis * numThetas - numThetas;\n innerOffset = numPhis * numThetas * vertexMultiplier - numThetas;\n for (i = 1; i < numThetas - 2; i++) {\n indices[index++] = outerOffset + i + 1;\n indices[index++] = outerOffset + i;\n indices[index++] = innerOffset + i;\n\n indices[index++] = outerOffset + i + 1;\n indices[index++] = innerOffset + i;\n indices[index++] = innerOffset + i + 1;\n }\n }\n }\n\n // Connect the edges if clock is not closed\n if (isClockOpen) {\n for (i = 1; i < numPhis - 2; i++) {\n innerOffset = numThetas * numPhis + numThetas * i;\n outerOffset = numThetas * i;\n indices[index++] = innerOffset;\n indices[index++] = outerOffset + numThetas;\n indices[index++] = outerOffset;\n\n indices[index++] = innerOffset;\n indices[index++] = innerOffset + numThetas;\n indices[index++] = outerOffset + numThetas;\n }\n\n for (i = 1; i < numPhis - 2; i++) {\n innerOffset = numThetas * numPhis + numThetas * (i + 1) - 1;\n outerOffset = numThetas * (i + 1) - 1;\n indices[index++] = outerOffset + numThetas;\n indices[index++] = innerOffset;\n indices[index++] = outerOffset;\n\n indices[index++] = outerOffset + numThetas;\n indices[index++] = innerOffset + numThetas;\n indices[index++] = innerOffset;\n }\n }\n\n const attributes = new GeometryAttributes();\n\n if (vertexFormat.position) {\n attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: positions,\n });\n }\n\n let stIndex = 0;\n let normalIndex = 0;\n let tangentIndex = 0;\n let bitangentIndex = 0;\n const vertexCountHalf = vertexCount / 2.0;\n\n let ellipsoid;\n const ellipsoidOuter = Ellipsoid.fromCartesian3(radii);\n const ellipsoidInner = Ellipsoid.fromCartesian3(innerRadii);\n\n if (\n vertexFormat.st ||\n vertexFormat.normal ||\n vertexFormat.tangent ||\n vertexFormat.bitangent\n ) {\n for (i = 0; i < vertexCount; i++) {\n ellipsoid = isInner[i] ? ellipsoidInner : ellipsoidOuter;\n const position = Cartesian3.fromArray(positions, i * 3, scratchPosition);\n const normal = ellipsoid.geodeticSurfaceNormal(position, scratchNormal);\n if (negateNormal[i]) {\n Cartesian3.negate(normal, normal);\n }\n\n if (vertexFormat.st) {\n const normalST = Cartesian2.negate(normal, scratchNormalST);\n st[stIndex++] =\n Math.atan2(normalST.y, normalST.x) / CesiumMath.TWO_PI + 0.5;\n st[stIndex++] = Math.asin(normal.z) / Math.PI + 0.5;\n }\n\n if (vertexFormat.normal) {\n normals[normalIndex++] = normal.x;\n normals[normalIndex++] = normal.y;\n normals[normalIndex++] = normal.z;\n }\n\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n const tangent = scratchTangent;\n\n // Use UNIT_X for the poles\n let tangetOffset = 0;\n let unit;\n if (isInner[i]) {\n tangetOffset = vertexCountHalf;\n }\n if (\n !isTopOpen &&\n i >= tangetOffset &&\n i < tangetOffset + numThetas * 2\n ) {\n unit = Cartesian3.UNIT_X;\n } else {\n unit = Cartesian3.UNIT_Z;\n }\n Cartesian3.cross(unit, normal, tangent);\n Cartesian3.normalize(tangent, tangent);\n\n if (vertexFormat.tangent) {\n tangents[tangentIndex++] = tangent.x;\n tangents[tangentIndex++] = tangent.y;\n tangents[tangentIndex++] = tangent.z;\n }\n\n if (vertexFormat.bitangent) {\n const bitangent = Cartesian3.cross(normal, tangent, scratchBitangent);\n Cartesian3.normalize(bitangent, bitangent);\n\n bitangents[bitangentIndex++] = bitangent.x;\n bitangents[bitangentIndex++] = bitangent.y;\n bitangents[bitangentIndex++] = bitangent.z;\n }\n }\n }\n\n if (vertexFormat.st) {\n attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: st,\n });\n }\n\n if (vertexFormat.normal) {\n attributes.normal = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: normals,\n });\n }\n\n if (vertexFormat.tangent) {\n attributes.tangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: tangents,\n });\n }\n\n if (vertexFormat.bitangent) {\n attributes.bitangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: bitangents,\n });\n }\n }\n\n if (defined(ellipsoidGeometry._offsetAttribute)) {\n const length = positions.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n ellipsoidGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n arrayFill(applyOffset, offsetValue);\n attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n });\n }\n\n return new Geometry({\n attributes: attributes,\n indices: indices,\n primitiveType: PrimitiveType.TRIANGLES,\n boundingSphere: BoundingSphere.fromEllipsoid(ellipsoidOuter),\n offsetAttribute: ellipsoidGeometry._offsetAttribute,\n });\n};\n\nlet unitEllipsoidGeometry;\n\n/**\n * Returns the geometric representation of a unit ellipsoid, including its vertices, indices, and a bounding sphere.\n * @returns {Geometry} The computed vertices and indices.\n *\n * @private\n */\nEllipsoidGeometry.getUnitEllipsoid = function () {\n if (!defined(unitEllipsoidGeometry)) {\n unitEllipsoidGeometry = EllipsoidGeometry.createGeometry(\n new EllipsoidGeometry({\n radii: new Cartesian3(1.0, 1.0, 1.0),\n vertexFormat: VertexFormat.POSITION_ONLY,\n })\n );\n }\n return unitEllipsoidGeometry;\n};\nexport default EllipsoidGeometry;\n"],"names":["Cartesian3","defaultValue","CesiumMath","VertexFormat","DeveloperError","defined","arrayFill","IndexDatatype","GeometryAttributes","GeometryAttribute","ComponentDatatype","Ellipsoid","Cartesian2","GeometryOffsetAttribute","Geometry","PrimitiveType","BoundingSphere"],"mappings":"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"} |