8e6c98934f1c372a38ca43ae092b33d53a6bcabf42bf3344927902d201f4dbe5.json 21 KB

1
  1. {"ast":null,"code":"import { Vector3, Matrix } from \"../../Maths/math.vector.js\";\nimport { Mesh } from \"../mesh.js\";\nimport { VertexData } from \"../mesh.vertexData.js\";\nimport { useOpenGLOrientationForUV } from \"../../Compat/compatibilityOptions.js\";\n/**\n * Creates the VertexData for an ellipsoid, defaults to a sphere\n * @param options an object used to set the following optional parameters for the box, required but can be empty\n * * segments sets the number of horizontal strips optional, default 32\n * * diameter sets the axes dimensions, diameterX, diameterY and diameterZ to the value of diameter, optional default 1\n * * diameterX sets the diameterX (x direction) of the ellipsoid, overwrites the diameterX set by diameter, optional, default diameter\n * * diameterY sets the diameterY (y direction) of the ellipsoid, overwrites the diameterY set by diameter, optional, default diameter\n * * diameterZ sets the diameterZ (z direction) of the ellipsoid, overwrites the diameterZ set by diameter, optional, default diameter\n * * arc a number from 0 to 1, to create an unclosed ellipsoid based on the fraction of the circumference (latitude) given by the arc value, optional, default 1\n * * slice a number from 0 to 1, to create an unclosed ellipsoid based on the fraction of the height (latitude) given by the arc value, optional, default 1\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\n * @returns the VertexData of the ellipsoid\n */\nexport function CreateSphereVertexData(options) {\n const segments = (options.segments || 32) | 0;\n const diameterX = options.diameterX || options.diameter || 1;\n const diameterY = options.diameterY || options.diameter || 1;\n const diameterZ = options.diameterZ || options.diameter || 1;\n const arc = options.arc && (options.arc <= 0 || options.arc > 1) ? 1.0 : options.arc || 1.0;\n const slice = options.slice && options.slice <= 0 ? 1.0 : options.slice || 1.0;\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\n const dedupTopBottomIndices = !!options.dedupTopBottomIndices;\n const radius = new Vector3(diameterX / 2, diameterY / 2, diameterZ / 2);\n const totalZRotationSteps = 2 + segments;\n const totalYRotationSteps = 2 * totalZRotationSteps;\n const indices = [];\n const positions = [];\n const normals = [];\n const uvs = [];\n for (let zRotationStep = 0; zRotationStep <= totalZRotationSteps; zRotationStep++) {\n const normalizedZ = zRotationStep / totalZRotationSteps;\n const angleZ = normalizedZ * Math.PI * slice;\n for (let yRotationStep = 0; yRotationStep <= totalYRotationSteps; yRotationStep++) {\n const normalizedY = yRotationStep / totalYRotationSteps;\n const angleY = normalizedY * Math.PI * 2 * arc;\n const rotationZ = Matrix.RotationZ(-angleZ);\n const rotationY = Matrix.RotationY(angleY);\n const afterRotZ = Vector3.TransformCoordinates(Vector3.Up(), rotationZ);\n const complete = Vector3.TransformCoordinates(afterRotZ, rotationY);\n const vertex = complete.multiply(radius);\n const normal = complete.divide(radius).normalize();\n positions.push(vertex.x, vertex.y, vertex.z);\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(normalizedY, useOpenGLOrientationForUV ? 1.0 - normalizedZ : normalizedZ);\n }\n if (zRotationStep > 0) {\n const verticesCount = positions.length / 3;\n for (let firstIndex = verticesCount - 2 * (totalYRotationSteps + 1); firstIndex + totalYRotationSteps + 2 < verticesCount; firstIndex++) {\n if (dedupTopBottomIndices) {\n if (zRotationStep > 1) {\n indices.push(firstIndex);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 1);\n }\n if (zRotationStep < totalZRotationSteps || slice < 1.0) {\n indices.push(firstIndex + totalYRotationSteps + 1);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 2);\n }\n } else {\n indices.push(firstIndex);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 1);\n indices.push(firstIndex + totalYRotationSteps + 1);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 2);\n }\n }\n }\n }\n // Sides\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\n // Result\n const vertexData = new VertexData();\n vertexData.indices = indices;\n vertexData.positions = positions;\n vertexData.normals = normals;\n vertexData.uvs = uvs;\n return vertexData;\n}\n/**\n * Creates a sphere mesh\n * * The parameter `diameter` sets the diameter size (float) of the sphere (default 1)\n * * You can set some different sphere dimensions, for instance to build an ellipsoid, by using the parameters `diameterX`, `diameterY` and `diameterZ` (all by default have the same value of `diameter`)\n * * The parameter `segments` sets the sphere number of horizontal stripes (positive integer, default 32)\n * * You can create an unclosed sphere with the parameter `arc` (positive float, default 1), valued between 0 and 1, what is the ratio of the circumference (latitude) : 2 x PI x ratio\n * * You can create an unclosed sphere on its height with the parameter `slice` (positive float, default1), valued between 0 and 1, what is the height ratio (longitude)\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created\n * @param name defines the name of the mesh\n * @param options defines the options used to create the mesh\n * @param scene defines the hosting scene\n * @returns the sphere mesh\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#sphere\n */\nexport function CreateSphere(name, options = {}, scene = null) {\n const sphere = new Mesh(name, scene);\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\n sphere._originalBuilderSideOrientation = options.sideOrientation;\n const vertexData = CreateSphereVertexData(options);\n vertexData.applyToMesh(sphere, options.updatable);\n return sphere;\n}\n/**\n * Class containing static functions to help procedurally build meshes\n * @deprecated use CreateSphere directly\n */\nexport const SphereBuilder = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n CreateSphere\n};\nVertexData.CreateSphere = CreateSphereVertexData;\nMesh.CreateSphere = (name, segments, diameter, scene, updatable, sideOrientation) => {\n const options = {\n segments: segments,\n diameterX: diameter,\n diameterY: diameter,\n diameterZ: diameter,\n sideOrientation: sideOrientation,\n updatable: updatable\n };\n return CreateSphere(name, options, scene);\n};","map":{"version":3,"names":["Vector3","Matrix","Mesh","VertexData","useOpenGLOrientationForUV","CreateSphereVertexData","options","segments","diameterX","diameter","diameterY","diameterZ","arc","slice","sideOrientation","DEFAULTSIDE","dedupTopBottomIndices","radius","totalZRotationSteps","totalYRotationSteps","indices","positions","normals","uvs","zRotationStep","normalizedZ","angleZ","Math","PI","yRotationStep","normalizedY","angleY","rotationZ","RotationZ","rotationY","RotationY","afterRotZ","TransformCoordinates","Up","complete","vertex","multiply","normal","divide","normalize","push","x","y","z","verticesCount","length","firstIndex","_ComputeSides","frontUVs","backUVs","vertexData","CreateSphere","name","scene","sphere","_GetDefaultSideOrientation","_originalBuilderSideOrientation","applyToMesh","updatable","SphereBuilder"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Meshes/Builders/sphereBuilder.js"],"sourcesContent":["import { Vector3, Matrix } from \"../../Maths/math.vector.js\";\nimport { Mesh } from \"../mesh.js\";\nimport { VertexData } from \"../mesh.vertexData.js\";\nimport { useOpenGLOrientationForUV } from \"../../Compat/compatibilityOptions.js\";\n/**\n * Creates the VertexData for an ellipsoid, defaults to a sphere\n * @param options an object used to set the following optional parameters for the box, required but can be empty\n * * segments sets the number of horizontal strips optional, default 32\n * * diameter sets the axes dimensions, diameterX, diameterY and diameterZ to the value of diameter, optional default 1\n * * diameterX sets the diameterX (x direction) of the ellipsoid, overwrites the diameterX set by diameter, optional, default diameter\n * * diameterY sets the diameterY (y direction) of the ellipsoid, overwrites the diameterY set by diameter, optional, default diameter\n * * diameterZ sets the diameterZ (z direction) of the ellipsoid, overwrites the diameterZ set by diameter, optional, default diameter\n * * arc a number from 0 to 1, to create an unclosed ellipsoid based on the fraction of the circumference (latitude) given by the arc value, optional, default 1\n * * slice a number from 0 to 1, to create an unclosed ellipsoid based on the fraction of the height (latitude) given by the arc value, optional, default 1\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\n * @returns the VertexData of the ellipsoid\n */\nexport function CreateSphereVertexData(options) {\n const segments = (options.segments || 32) | 0;\n const diameterX = options.diameterX || options.diameter || 1;\n const diameterY = options.diameterY || options.diameter || 1;\n const diameterZ = options.diameterZ || options.diameter || 1;\n const arc = options.arc && (options.arc <= 0 || options.arc > 1) ? 1.0 : options.arc || 1.0;\n const slice = options.slice && options.slice <= 0 ? 1.0 : options.slice || 1.0;\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\n const dedupTopBottomIndices = !!options.dedupTopBottomIndices;\n const radius = new Vector3(diameterX / 2, diameterY / 2, diameterZ / 2);\n const totalZRotationSteps = 2 + segments;\n const totalYRotationSteps = 2 * totalZRotationSteps;\n const indices = [];\n const positions = [];\n const normals = [];\n const uvs = [];\n for (let zRotationStep = 0; zRotationStep <= totalZRotationSteps; zRotationStep++) {\n const normalizedZ = zRotationStep / totalZRotationSteps;\n const angleZ = normalizedZ * Math.PI * slice;\n for (let yRotationStep = 0; yRotationStep <= totalYRotationSteps; yRotationStep++) {\n const normalizedY = yRotationStep / totalYRotationSteps;\n const angleY = normalizedY * Math.PI * 2 * arc;\n const rotationZ = Matrix.RotationZ(-angleZ);\n const rotationY = Matrix.RotationY(angleY);\n const afterRotZ = Vector3.TransformCoordinates(Vector3.Up(), rotationZ);\n const complete = Vector3.TransformCoordinates(afterRotZ, rotationY);\n const vertex = complete.multiply(radius);\n const normal = complete.divide(radius).normalize();\n positions.push(vertex.x, vertex.y, vertex.z);\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(normalizedY, useOpenGLOrientationForUV ? 1.0 - normalizedZ : normalizedZ);\n }\n if (zRotationStep > 0) {\n const verticesCount = positions.length / 3;\n for (let firstIndex = verticesCount - 2 * (totalYRotationSteps + 1); firstIndex + totalYRotationSteps + 2 < verticesCount; firstIndex++) {\n if (dedupTopBottomIndices) {\n if (zRotationStep > 1) {\n indices.push(firstIndex);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 1);\n }\n if (zRotationStep < totalZRotationSteps || slice < 1.0) {\n indices.push(firstIndex + totalYRotationSteps + 1);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 2);\n }\n }\n else {\n indices.push(firstIndex);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 1);\n indices.push(firstIndex + totalYRotationSteps + 1);\n indices.push(firstIndex + 1);\n indices.push(firstIndex + totalYRotationSteps + 2);\n }\n }\n }\n }\n // Sides\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\n // Result\n const vertexData = new VertexData();\n vertexData.indices = indices;\n vertexData.positions = positions;\n vertexData.normals = normals;\n vertexData.uvs = uvs;\n return vertexData;\n}\n/**\n * Creates a sphere mesh\n * * The parameter `diameter` sets the diameter size (float) of the sphere (default 1)\n * * You can set some different sphere dimensions, for instance to build an ellipsoid, by using the parameters `diameterX`, `diameterY` and `diameterZ` (all by default have the same value of `diameter`)\n * * The parameter `segments` sets the sphere number of horizontal stripes (positive integer, default 32)\n * * You can create an unclosed sphere with the parameter `arc` (positive float, default 1), valued between 0 and 1, what is the ratio of the circumference (latitude) : 2 x PI x ratio\n * * You can create an unclosed sphere on its height with the parameter `slice` (positive float, default1), valued between 0 and 1, what is the height ratio (longitude)\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created\n * @param name defines the name of the mesh\n * @param options defines the options used to create the mesh\n * @param scene defines the hosting scene\n * @returns the sphere mesh\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#sphere\n */\nexport function CreateSphere(name, options = {}, scene = null) {\n const sphere = new Mesh(name, scene);\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\n sphere._originalBuilderSideOrientation = options.sideOrientation;\n const vertexData = CreateSphereVertexData(options);\n vertexData.applyToMesh(sphere, options.updatable);\n return sphere;\n}\n/**\n * Class containing static functions to help procedurally build meshes\n * @deprecated use CreateSphere directly\n */\nexport const SphereBuilder = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n CreateSphere,\n};\nVertexData.CreateSphere = CreateSphereVertexData;\nMesh.CreateSphere = (name, segments, diameter, scene, updatable, sideOrientation) => {\n const options = {\n segments: segments,\n diameterX: diameter,\n diameterY: diameter,\n diameterZ: diameter,\n sideOrientation: sideOrientation,\n updatable: updatable,\n };\n return CreateSphere(name, options, scene);\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}