46c21b56e9ea4c7219ab8163f15eb1d691730f2b5b7a5c502314d5111a0a2d5b.json 37 KB

1
  1. {"ast":null,"code":"import { Logger } from \"../Misc/logger.js\";\nimport { Vector3, Vector2 } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { VertexData } from \"../Meshes/mesh.vertexData.js\";\nimport { Path2 } from \"../Maths/math.path.js\";\nimport { Epsilon } from \"../Maths/math.constants.js\";\nimport { EngineStore } from \"../Engines/engineStore.js\";\n/**\n * Vector2 wth index property\n */\nclass IndexedVector2 extends Vector2 {\n constructor(original, /** Index of the vector2 */\n index) {\n super(original.x, original.y);\n this.index = index;\n }\n}\n/**\n * Defines points to create a polygon\n */\nclass PolygonPoints {\n constructor() {\n this.elements = [];\n }\n add(originalPoints) {\n const result = [];\n originalPoints.forEach(point => {\n const newPoint = new IndexedVector2(point, this.elements.length);\n result.push(newPoint);\n this.elements.push(newPoint);\n });\n return result;\n }\n computeBounds() {\n const lmin = new Vector2(this.elements[0].x, this.elements[0].y);\n const lmax = new Vector2(this.elements[0].x, this.elements[0].y);\n this.elements.forEach(point => {\n // x\n if (point.x < lmin.x) {\n lmin.x = point.x;\n } else if (point.x > lmax.x) {\n lmax.x = point.x;\n }\n // y\n if (point.y < lmin.y) {\n lmin.y = point.y;\n } else if (point.y > lmax.y) {\n lmax.y = point.y;\n }\n });\n return {\n min: lmin,\n max: lmax,\n width: lmax.x - lmin.x,\n height: lmax.y - lmin.y\n };\n }\n}\n/**\n * Polygon\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#non-regular-polygon\n */\nexport class Polygon {\n /**\n * Creates a rectangle\n * @param xmin bottom X coord\n * @param ymin bottom Y coord\n * @param xmax top X coord\n * @param ymax top Y coord\n * @returns points that make the resulting rectangle\n */\n static Rectangle(xmin, ymin, xmax, ymax) {\n return [new Vector2(xmin, ymin), new Vector2(xmax, ymin), new Vector2(xmax, ymax), new Vector2(xmin, ymax)];\n }\n /**\n * Creates a circle\n * @param radius radius of circle\n * @param cx scale in x\n * @param cy scale in y\n * @param numberOfSides number of sides that make up the circle\n * @returns points that make the resulting circle\n */\n static Circle(radius, cx = 0, cy = 0, numberOfSides = 32) {\n const result = [];\n let angle = 0;\n const increment = Math.PI * 2 / numberOfSides;\n for (let i = 0; i < numberOfSides; i++) {\n result.push(new Vector2(cx + Math.cos(angle) * radius, cy + Math.sin(angle) * radius));\n angle -= increment;\n }\n return result;\n }\n /**\n * Creates a polygon from input string\n * @param input Input polygon data\n * @returns the parsed points\n */\n static Parse(input) {\n const floats = input.split(/[^-+eE.\\d]+/).map(parseFloat).filter(val => !isNaN(val));\n let i;\n const result = [];\n for (i = 0; i < (floats.length & 0x7ffffffe); i += 2) {\n result.push(new Vector2(floats[i], floats[i + 1]));\n }\n return result;\n }\n /**\n * Starts building a polygon from x and y coordinates\n * @param x x coordinate\n * @param y y coordinate\n * @returns the started path2\n */\n static StartingAt(x, y) {\n return Path2.StartingAt(x, y);\n }\n}\n/**\n * Builds a polygon\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/polyMeshBuilder\n */\nexport class PolygonMeshBuilder {\n _addToepoint(points) {\n for (const p of points) {\n this._epoints.push(p.x, p.y);\n }\n }\n /**\n * Creates a PolygonMeshBuilder\n * @param name name of the builder\n * @param contours Path of the polygon\n * @param scene scene to add to when creating the mesh\n * @param earcutInjection can be used to inject your own earcut reference\n */\n constructor(name, contours, scene, earcutInjection = earcut) {\n this._points = new PolygonPoints();\n this._outlinepoints = new PolygonPoints();\n this._holes = new Array();\n this._epoints = new Array();\n this._eholes = new Array();\n this.bjsEarcut = earcutInjection;\n this._name = name;\n this._scene = scene || EngineStore.LastCreatedScene;\n let points;\n if (contours instanceof Path2) {\n points = contours.getPoints();\n } else {\n points = contours;\n }\n this._addToepoint(points);\n this._points.add(points);\n this._outlinepoints.add(points);\n if (typeof this.bjsEarcut === \"undefined\") {\n Logger.Warn(\"Earcut was not found, the polygon will not be built.\");\n }\n }\n /**\n * Adds a hole within the polygon\n * @param hole Array of points defining the hole\n * @returns this\n */\n addHole(hole) {\n this._points.add(hole);\n const holepoints = new PolygonPoints();\n holepoints.add(hole);\n this._holes.push(holepoints);\n this._eholes.push(this._epoints.length / 2);\n this._addToepoint(hole);\n return this;\n }\n /**\n * Creates the polygon\n * @param updatable If the mesh should be updatable\n * @param depth The depth of the mesh created\n * @param smoothingThreshold Dot product threshold for smoothed normals\n * @returns the created mesh\n */\n build(updatable = false, depth = 0, smoothingThreshold = 2) {\n const result = new Mesh(this._name, this._scene);\n const vertexData = this.buildVertexData(depth, smoothingThreshold);\n result.setVerticesData(VertexBuffer.PositionKind, vertexData.positions, updatable);\n result.setVerticesData(VertexBuffer.NormalKind, vertexData.normals, updatable);\n result.setVerticesData(VertexBuffer.UVKind, vertexData.uvs, updatable);\n result.setIndices(vertexData.indices);\n return result;\n }\n /**\n * Creates the polygon\n * @param depth The depth of the mesh created\n * @param smoothingThreshold Dot product threshold for smoothed normals\n * @returns the created VertexData\n */\n buildVertexData(depth = 0, smoothingThreshold = 2) {\n const result = new VertexData();\n const normals = [];\n const positions = [];\n const uvs = [];\n const bounds = this._points.computeBounds();\n this._points.elements.forEach(p => {\n normals.push(0, 1.0, 0);\n positions.push(p.x, 0, p.y);\n uvs.push((p.x - bounds.min.x) / bounds.width, (p.y - bounds.min.y) / bounds.height);\n });\n const indices = [];\n const res = this.bjsEarcut(this._epoints, this._eholes, 2);\n for (let i = 0; i < res.length; i++) {\n indices.push(res[i]);\n }\n if (depth > 0) {\n const positionscount = positions.length / 3; //get the current pointcount\n this._points.elements.forEach(p => {\n //add the elements at the depth\n normals.push(0, -1.0, 0);\n positions.push(p.x, -depth, p.y);\n uvs.push(1 - (p.x - bounds.min.x) / bounds.width, 1 - (p.y - bounds.min.y) / bounds.height);\n });\n const totalCount = indices.length;\n for (let i = 0; i < totalCount; i += 3) {\n const i0 = indices[i + 0];\n const i1 = indices[i + 1];\n const i2 = indices[i + 2];\n indices.push(i2 + positionscount);\n indices.push(i1 + positionscount);\n indices.push(i0 + positionscount);\n }\n //Add the sides\n this._addSide(positions, normals, uvs, indices, bounds, this._outlinepoints, depth, false, smoothingThreshold);\n this._holes.forEach(hole => {\n this._addSide(positions, normals, uvs, indices, bounds, hole, depth, true, smoothingThreshold);\n });\n }\n result.indices = indices;\n result.positions = positions;\n result.normals = normals;\n result.uvs = uvs;\n return result;\n }\n /**\n * Adds a side to the polygon\n * @param positions points that make the polygon\n * @param normals normals of the polygon\n * @param uvs uvs of the polygon\n * @param indices indices of the polygon\n * @param bounds bounds of the polygon\n * @param points points of the polygon\n * @param depth depth of the polygon\n * @param flip flip of the polygon\n * @param smoothingThreshold\n */\n _addSide(positions, normals, uvs, indices, bounds, points, depth, flip, smoothingThreshold) {\n let startIndex = positions.length / 3;\n let ulength = 0;\n for (let i = 0; i < points.elements.length; i++) {\n const p = points.elements[i];\n const p1 = points.elements[(i + 1) % points.elements.length];\n positions.push(p.x, 0, p.y);\n positions.push(p.x, -depth, p.y);\n positions.push(p1.x, 0, p1.y);\n positions.push(p1.x, -depth, p1.y);\n const p0 = points.elements[(i + points.elements.length - 1) % points.elements.length];\n const p2 = points.elements[(i + 2) % points.elements.length];\n let vc = new Vector3(-(p1.y - p.y), 0, p1.x - p.x);\n let vp = new Vector3(-(p.y - p0.y), 0, p.x - p0.x);\n let vn = new Vector3(-(p2.y - p1.y), 0, p2.x - p1.x);\n if (!flip) {\n vc = vc.scale(-1);\n vp = vp.scale(-1);\n vn = vn.scale(-1);\n }\n const vc_norm = vc.normalizeToNew();\n let vp_norm = vp.normalizeToNew();\n let vn_norm = vn.normalizeToNew();\n const dotp = Vector3.Dot(vp_norm, vc_norm);\n if (dotp > smoothingThreshold) {\n if (dotp < Epsilon - 1) {\n vp_norm = new Vector3(p.x, 0, p.y).subtract(new Vector3(p1.x, 0, p1.y)).normalize();\n } else {\n // cheap average weighed by side length\n vp_norm = vp.add(vc).normalize();\n }\n } else {\n vp_norm = vc_norm;\n }\n const dotn = Vector3.Dot(vn, vc);\n if (dotn > smoothingThreshold) {\n if (dotn < Epsilon - 1) {\n // back to back\n vn_norm = new Vector3(p1.x, 0, p1.y).subtract(new Vector3(p.x, 0, p.y)).normalize();\n } else {\n // cheap average weighed by side length\n vn_norm = vn.add(vc).normalize();\n }\n } else {\n vn_norm = vc_norm;\n }\n uvs.push(ulength / bounds.width, 0);\n uvs.push(ulength / bounds.width, 1);\n ulength += vc.length();\n uvs.push(ulength / bounds.width, 0);\n uvs.push(ulength / bounds.width, 1);\n normals.push(vp_norm.x, vp_norm.y, vp_norm.z);\n normals.push(vp_norm.x, vp_norm.y, vp_norm.z);\n normals.push(vn_norm.x, vn_norm.y, vn_norm.z);\n normals.push(vn_norm.x, vn_norm.y, vn_norm.z);\n if (!flip) {\n indices.push(startIndex);\n indices.push(startIndex + 1);\n indices.push(startIndex + 2);\n indices.push(startIndex + 1);\n indices.push(startIndex + 3);\n indices.push(startIndex + 2);\n } else {\n indices.push(startIndex);\n indices.push(startIndex + 2);\n indices.push(startIndex + 1);\n indices.push(startIndex + 1);\n indices.push(startIndex + 2);\n indices.push(startIndex + 3);\n }\n startIndex += 4;\n }\n }\n}","map":{"version":3,"names":["Logger","Vector3","Vector2","VertexBuffer","Mesh","VertexData","Path2","Epsilon","EngineStore","IndexedVector2","constructor","original","index","x","y","PolygonPoints","elements","add","originalPoints","result","forEach","point","newPoint","length","push","computeBounds","lmin","lmax","min","max","width","height","Polygon","Rectangle","xmin","ymin","xmax","ymax","Circle","radius","cx","cy","numberOfSides","angle","increment","Math","PI","i","cos","sin","Parse","input","floats","split","map","parseFloat","filter","val","isNaN","StartingAt","PolygonMeshBuilder","_addToepoint","points","p","_epoints","name","contours","scene","earcutInjection","earcut","_points","_outlinepoints","_holes","Array","_eholes","bjsEarcut","_name","_scene","LastCreatedScene","getPoints","Warn","addHole","hole","holepoints","build","updatable","depth","smoothingThreshold","vertexData","buildVertexData","setVerticesData","PositionKind","positions","NormalKind","normals","UVKind","uvs","setIndices","indices","bounds","res","positionscount","totalCount","i0","i1","i2","_addSide","flip","startIndex","ulength","p1","p0","p2","vc","vp","vn","scale","vc_norm","normalizeToNew","vp_norm","vn_norm","dotp","Dot","subtract","normalize","dotn","z"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Meshes/polygonMesh.js"],"sourcesContent":["import { Logger } from \"../Misc/logger.js\";\nimport { Vector3, Vector2 } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { VertexData } from \"../Meshes/mesh.vertexData.js\";\nimport { Path2 } from \"../Maths/math.path.js\";\nimport { Epsilon } from \"../Maths/math.constants.js\";\nimport { EngineStore } from \"../Engines/engineStore.js\";\n/**\n * Vector2 wth index property\n */\nclass IndexedVector2 extends Vector2 {\n constructor(original, \n /** Index of the vector2 */\n index) {\n super(original.x, original.y);\n this.index = index;\n }\n}\n/**\n * Defines points to create a polygon\n */\nclass PolygonPoints {\n constructor() {\n this.elements = [];\n }\n add(originalPoints) {\n const result = [];\n originalPoints.forEach((point) => {\n const newPoint = new IndexedVector2(point, this.elements.length);\n result.push(newPoint);\n this.elements.push(newPoint);\n });\n return result;\n }\n computeBounds() {\n const lmin = new Vector2(this.elements[0].x, this.elements[0].y);\n const lmax = new Vector2(this.elements[0].x, this.elements[0].y);\n this.elements.forEach((point) => {\n // x\n if (point.x < lmin.x) {\n lmin.x = point.x;\n }\n else if (point.x > lmax.x) {\n lmax.x = point.x;\n }\n // y\n if (point.y < lmin.y) {\n lmin.y = point.y;\n }\n else if (point.y > lmax.y) {\n lmax.y = point.y;\n }\n });\n return {\n min: lmin,\n max: lmax,\n width: lmax.x - lmin.x,\n height: lmax.y - lmin.y,\n };\n }\n}\n/**\n * Polygon\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#non-regular-polygon\n */\nexport class Polygon {\n /**\n * Creates a rectangle\n * @param xmin bottom X coord\n * @param ymin bottom Y coord\n * @param xmax top X coord\n * @param ymax top Y coord\n * @returns points that make the resulting rectangle\n */\n static Rectangle(xmin, ymin, xmax, ymax) {\n return [new Vector2(xmin, ymin), new Vector2(xmax, ymin), new Vector2(xmax, ymax), new Vector2(xmin, ymax)];\n }\n /**\n * Creates a circle\n * @param radius radius of circle\n * @param cx scale in x\n * @param cy scale in y\n * @param numberOfSides number of sides that make up the circle\n * @returns points that make the resulting circle\n */\n static Circle(radius, cx = 0, cy = 0, numberOfSides = 32) {\n const result = [];\n let angle = 0;\n const increment = (Math.PI * 2) / numberOfSides;\n for (let i = 0; i < numberOfSides; i++) {\n result.push(new Vector2(cx + Math.cos(angle) * radius, cy + Math.sin(angle) * radius));\n angle -= increment;\n }\n return result;\n }\n /**\n * Creates a polygon from input string\n * @param input Input polygon data\n * @returns the parsed points\n */\n static Parse(input) {\n const floats = input\n .split(/[^-+eE.\\d]+/)\n .map(parseFloat)\n .filter((val) => !isNaN(val));\n let i;\n const result = [];\n for (i = 0; i < (floats.length & 0x7ffffffe); i += 2) {\n result.push(new Vector2(floats[i], floats[i + 1]));\n }\n return result;\n }\n /**\n * Starts building a polygon from x and y coordinates\n * @param x x coordinate\n * @param y y coordinate\n * @returns the started path2\n */\n static StartingAt(x, y) {\n return Path2.StartingAt(x, y);\n }\n}\n/**\n * Builds a polygon\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/polyMeshBuilder\n */\nexport class PolygonMeshBuilder {\n _addToepoint(points) {\n for (const p of points) {\n this._epoints.push(p.x, p.y);\n }\n }\n /**\n * Creates a PolygonMeshBuilder\n * @param name name of the builder\n * @param contours Path of the polygon\n * @param scene scene to add to when creating the mesh\n * @param earcutInjection can be used to inject your own earcut reference\n */\n constructor(name, contours, scene, earcutInjection = earcut) {\n this._points = new PolygonPoints();\n this._outlinepoints = new PolygonPoints();\n this._holes = new Array();\n this._epoints = new Array();\n this._eholes = new Array();\n this.bjsEarcut = earcutInjection;\n this._name = name;\n this._scene = scene || EngineStore.LastCreatedScene;\n let points;\n if (contours instanceof Path2) {\n points = contours.getPoints();\n }\n else {\n points = contours;\n }\n this._addToepoint(points);\n this._points.add(points);\n this._outlinepoints.add(points);\n if (typeof this.bjsEarcut === \"undefined\") {\n Logger.Warn(\"Earcut was not found, the polygon will not be built.\");\n }\n }\n /**\n * Adds a hole within the polygon\n * @param hole Array of points defining the hole\n * @returns this\n */\n addHole(hole) {\n this._points.add(hole);\n const holepoints = new PolygonPoints();\n holepoints.add(hole);\n this._holes.push(holepoints);\n this._eholes.push(this._epoints.length / 2);\n this._addToepoint(hole);\n return this;\n }\n /**\n * Creates the polygon\n * @param updatable If the mesh should be updatable\n * @param depth The depth of the mesh created\n * @param smoothingThreshold Dot product threshold for smoothed normals\n * @returns the created mesh\n */\n build(updatable = false, depth = 0, smoothingThreshold = 2) {\n const result = new Mesh(this._name, this._scene);\n const vertexData = this.buildVertexData(depth, smoothingThreshold);\n result.setVerticesData(VertexBuffer.PositionKind, vertexData.positions, updatable);\n result.setVerticesData(VertexBuffer.NormalKind, vertexData.normals, updatable);\n result.setVerticesData(VertexBuffer.UVKind, vertexData.uvs, updatable);\n result.setIndices(vertexData.indices);\n return result;\n }\n /**\n * Creates the polygon\n * @param depth The depth of the mesh created\n * @param smoothingThreshold Dot product threshold for smoothed normals\n * @returns the created VertexData\n */\n buildVertexData(depth = 0, smoothingThreshold = 2) {\n const result = new VertexData();\n const normals = [];\n const positions = [];\n const uvs = [];\n const bounds = this._points.computeBounds();\n this._points.elements.forEach((p) => {\n normals.push(0, 1.0, 0);\n positions.push(p.x, 0, p.y);\n uvs.push((p.x - bounds.min.x) / bounds.width, (p.y - bounds.min.y) / bounds.height);\n });\n const indices = [];\n const res = this.bjsEarcut(this._epoints, this._eholes, 2);\n for (let i = 0; i < res.length; i++) {\n indices.push(res[i]);\n }\n if (depth > 0) {\n const positionscount = positions.length / 3; //get the current pointcount\n this._points.elements.forEach((p) => {\n //add the elements at the depth\n normals.push(0, -1.0, 0);\n positions.push(p.x, -depth, p.y);\n uvs.push(1 - (p.x - bounds.min.x) / bounds.width, 1 - (p.y - bounds.min.y) / bounds.height);\n });\n const totalCount = indices.length;\n for (let i = 0; i < totalCount; i += 3) {\n const i0 = indices[i + 0];\n const i1 = indices[i + 1];\n const i2 = indices[i + 2];\n indices.push(i2 + positionscount);\n indices.push(i1 + positionscount);\n indices.push(i0 + positionscount);\n }\n //Add the sides\n this._addSide(positions, normals, uvs, indices, bounds, this._outlinepoints, depth, false, smoothingThreshold);\n this._holes.forEach((hole) => {\n this._addSide(positions, normals, uvs, indices, bounds, hole, depth, true, smoothingThreshold);\n });\n }\n result.indices = indices;\n result.positions = positions;\n result.normals = normals;\n result.uvs = uvs;\n return result;\n }\n /**\n * Adds a side to the polygon\n * @param positions points that make the polygon\n * @param normals normals of the polygon\n * @param uvs uvs of the polygon\n * @param indices indices of the polygon\n * @param bounds bounds of the polygon\n * @param points points of the polygon\n * @param depth depth of the polygon\n * @param flip flip of the polygon\n * @param smoothingThreshold\n */\n _addSide(positions, normals, uvs, indices, bounds, points, depth, flip, smoothingThreshold) {\n let startIndex = positions.length / 3;\n let ulength = 0;\n for (let i = 0; i < points.elements.length; i++) {\n const p = points.elements[i];\n const p1 = points.elements[(i + 1) % points.elements.length];\n positions.push(p.x, 0, p.y);\n positions.push(p.x, -depth, p.y);\n positions.push(p1.x, 0, p1.y);\n positions.push(p1.x, -depth, p1.y);\n const p0 = points.elements[(i + points.elements.length - 1) % points.elements.length];\n const p2 = points.elements[(i + 2) % points.elements.length];\n let vc = new Vector3(-(p1.y - p.y), 0, p1.x - p.x);\n let vp = new Vector3(-(p.y - p0.y), 0, p.x - p0.x);\n let vn = new Vector3(-(p2.y - p1.y), 0, p2.x - p1.x);\n if (!flip) {\n vc = vc.scale(-1);\n vp = vp.scale(-1);\n vn = vn.scale(-1);\n }\n const vc_norm = vc.normalizeToNew();\n let vp_norm = vp.normalizeToNew();\n let vn_norm = vn.normalizeToNew();\n const dotp = Vector3.Dot(vp_norm, vc_norm);\n if (dotp > smoothingThreshold) {\n if (dotp < Epsilon - 1) {\n vp_norm = new Vector3(p.x, 0, p.y).subtract(new Vector3(p1.x, 0, p1.y)).normalize();\n }\n else {\n // cheap average weighed by side length\n vp_norm = vp.add(vc).normalize();\n }\n }\n else {\n vp_norm = vc_norm;\n }\n const dotn = Vector3.Dot(vn, vc);\n if (dotn > smoothingThreshold) {\n if (dotn < Epsilon - 1) {\n // back to back\n vn_norm = new Vector3(p1.x, 0, p1.y).subtract(new Vector3(p.x, 0, p.y)).normalize();\n }\n else {\n // cheap average weighed by side length\n vn_norm = vn.add(vc).normalize();\n }\n }\n else {\n vn_norm = vc_norm;\n }\n uvs.push(ulength / bounds.width, 0);\n uvs.push(ulength / bounds.width, 1);\n ulength += vc.length();\n uvs.push(ulength / bounds.width, 0);\n uvs.push(ulength / bounds.width, 1);\n normals.push(vp_norm.x, vp_norm.y, vp_norm.z);\n normals.push(vp_norm.x, vp_norm.y, vp_norm.z);\n normals.push(vn_norm.x, vn_norm.y, vn_norm.z);\n normals.push(vn_norm.x, vn_norm.y, vn_norm.z);\n if (!flip) {\n indices.push(startIndex);\n indices.push(startIndex + 1);\n indices.push(startIndex + 2);\n indices.push(startIndex + 1);\n indices.push(startIndex + 3);\n indices.push(startIndex + 2);\n }\n else {\n indices.push(startIndex);\n indices.push(startIndex + 2);\n indices.push(startIndex + 1);\n indices.push(startIndex + 1);\n indices.push(startIndex + 2);\n indices.push(startIndex + 3);\n }\n startIndex += 4;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}