@babylonjs/core 6.40.0 → 6.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/Animations/runtimeAnimation.js +2 -2
  2. package/Animations/runtimeAnimation.js.map +1 -1
  3. package/Debug/physicsViewer.js +2 -2
  4. package/Debug/physicsViewer.js.map +1 -1
  5. package/Engines/thinEngine.js +2 -3
  6. package/Engines/thinEngine.js.map +1 -1
  7. package/Materials/Background/backgroundMaterial.js +8 -7
  8. package/Materials/Background/backgroundMaterial.js.map +1 -1
  9. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +7 -6
  10. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  11. package/Materials/Node/nodeMaterial.js +9 -12
  12. package/Materials/Node/nodeMaterial.js.map +1 -1
  13. package/Materials/PBR/pbrBaseMaterial.js +8 -7
  14. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  15. package/Materials/drawWrapper.d.ts +15 -0
  16. package/Materials/drawWrapper.js +15 -0
  17. package/Materials/drawWrapper.js.map +1 -1
  18. package/Materials/effect.d.ts +0 -16
  19. package/Materials/effect.js +0 -16
  20. package/Materials/effect.js.map +1 -1
  21. package/Materials/effectRenderer.js +0 -1
  22. package/Materials/effectRenderer.js.map +1 -1
  23. package/Materials/material.d.ts +3 -2
  24. package/Materials/material.js +14 -12
  25. package/Materials/material.js.map +1 -1
  26. package/Materials/pushMaterial.d.ts +2 -2
  27. package/Materials/pushMaterial.js +9 -6
  28. package/Materials/pushMaterial.js.map +1 -1
  29. package/Materials/shaderMaterial.js +10 -16
  30. package/Materials/shaderMaterial.js.map +1 -1
  31. package/Materials/standardMaterial.js +8 -7
  32. package/Materials/standardMaterial.js.map +1 -1
  33. package/Meshes/Builders/boxBuilder.d.ts +0 -33
  34. package/Meshes/Builders/boxBuilder.js +0 -33
  35. package/Meshes/Builders/boxBuilder.js.map +1 -1
  36. package/Meshes/Builders/cylinderBuilder.d.ts +0 -31
  37. package/Meshes/Builders/cylinderBuilder.js +0 -31
  38. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  39. package/Meshes/Builders/decalBuilder.d.ts +0 -7
  40. package/Meshes/Builders/decalBuilder.js +0 -7
  41. package/Meshes/Builders/decalBuilder.js.map +1 -1
  42. package/Meshes/Builders/discBuilder.d.ts +0 -13
  43. package/Meshes/Builders/discBuilder.js +0 -13
  44. package/Meshes/Builders/discBuilder.js.map +1 -1
  45. package/Meshes/Builders/geodesicBuilder.d.ts +0 -13
  46. package/Meshes/Builders/geodesicBuilder.js +0 -13
  47. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  48. package/Meshes/Builders/hemisphereBuilder.d.ts +0 -3
  49. package/Meshes/Builders/hemisphereBuilder.js +0 -3
  50. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  51. package/Meshes/Builders/icoSphereBuilder.d.ts +0 -19
  52. package/Meshes/Builders/icoSphereBuilder.js +0 -19
  53. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  54. package/Meshes/Builders/latheBuilder.d.ts +0 -12
  55. package/Meshes/Builders/latheBuilder.js +0 -12
  56. package/Meshes/Builders/latheBuilder.js.map +1 -1
  57. package/Meshes/Builders/linesBuilder.d.ts +0 -26
  58. package/Meshes/Builders/linesBuilder.js +0 -26
  59. package/Meshes/Builders/linesBuilder.js.map +1 -1
  60. package/Meshes/Builders/planeBuilder.d.ts +0 -14
  61. package/Meshes/Builders/planeBuilder.js +0 -14
  62. package/Meshes/Builders/planeBuilder.js.map +1 -1
  63. package/Meshes/Builders/polygonBuilder.d.ts +0 -21
  64. package/Meshes/Builders/polygonBuilder.js +0 -21
  65. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  66. package/Meshes/Builders/polyhedronBuilder.d.ts +0 -25
  67. package/Meshes/Builders/polyhedronBuilder.js +0 -25
  68. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  69. package/Meshes/Builders/ribbonBuilder.d.ts +0 -22
  70. package/Meshes/Builders/ribbonBuilder.js +0 -22
  71. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  72. package/Meshes/Builders/shapeBuilder.d.ts +0 -32
  73. package/Meshes/Builders/shapeBuilder.js +0 -32
  74. package/Meshes/Builders/shapeBuilder.js.map +1 -1
  75. package/Meshes/Builders/sphereBuilder.d.ts +0 -22
  76. package/Meshes/Builders/sphereBuilder.js +0 -22
  77. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  78. package/Meshes/Node/Blocks/geometryDesaturateBlock.d.ts +30 -0
  79. package/Meshes/Node/Blocks/geometryDesaturateBlock.js +62 -0
  80. package/Meshes/Node/Blocks/geometryDesaturateBlock.js.map +1 -0
  81. package/Meshes/Node/index.d.ts +1 -0
  82. package/Meshes/Node/index.js +1 -0
  83. package/Meshes/Node/index.js.map +1 -1
  84. package/Meshes/abstractMesh.js +1 -0
  85. package/Meshes/abstractMesh.js.map +1 -1
  86. package/Meshes/mesh.js +4 -4
  87. package/Meshes/mesh.js.map +1 -1
  88. package/Physics/castingResult.d.ts +66 -0
  89. package/Physics/castingResult.js +61 -0
  90. package/Physics/castingResult.js.map +1 -0
  91. package/Physics/index.d.ts +4 -0
  92. package/Physics/index.js +4 -0
  93. package/Physics/index.js.map +1 -1
  94. package/Physics/physicsPointProximityQuery.d.ts +28 -0
  95. package/Physics/physicsPointProximityQuery.js +2 -0
  96. package/Physics/physicsPointProximityQuery.js.map +1 -0
  97. package/Physics/physicsRaycastResult.d.ts +2 -44
  98. package/Physics/physicsRaycastResult.js +7 -38
  99. package/Physics/physicsRaycastResult.js.map +1 -1
  100. package/Physics/physicsShapeCastQuery.d.ts +32 -0
  101. package/Physics/physicsShapeCastQuery.js +2 -0
  102. package/Physics/physicsShapeCastQuery.js.map +1 -0
  103. package/Physics/physicsShapeProximityCastQuery.d.ts +32 -0
  104. package/Physics/physicsShapeProximityCastQuery.js +2 -0
  105. package/Physics/physicsShapeProximityCastQuery.js.map +1 -0
  106. package/Physics/proximityCastResult.d.ts +20 -0
  107. package/Physics/proximityCastResult.js +31 -0
  108. package/Physics/proximityCastResult.js.map +1 -0
  109. package/Physics/shapeCastResult.d.ts +16 -0
  110. package/Physics/shapeCastResult.js +24 -0
  111. package/Physics/shapeCastResult.js.map +1 -0
  112. package/Physics/v2/Plugins/havokPlugin.d.ts +28 -0
  113. package/Physics/v2/Plugins/havokPlugin.js +80 -11
  114. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  115. package/XR/features/WebXRHandTracking.d.ts +2 -2
  116. package/XR/features/WebXRHandTracking.js +4 -5
  117. package/XR/features/WebXRHandTracking.js.map +1 -1
  118. package/XR/features/WebXRNearInteraction.js +25 -15
  119. package/XR/features/WebXRNearInteraction.js.map +1 -1
  120. package/XR/webXRCamera.d.ts +1 -0
  121. package/XR/webXRCamera.js +19 -8
  122. package/XR/webXRCamera.js.map +1 -1
  123. package/package.json +1 -1
@@ -28,17 +28,6 @@ export declare function CreatePolygonVertexData(polygon: Mesh, sideOrientation:
28
28
  * * Remember you can only change the shape positions, not their number when updating a polygon
29
29
  * @param name defines the name of the mesh
30
30
  * @param options defines the options used to create the mesh
31
- * @param options.shape
32
- * @param options.holes
33
- * @param options.depth
34
- * @param options.smoothingThreshold
35
- * @param options.faceUV
36
- * @param options.faceColors
37
- * @param options.updatable
38
- * @param options.sideOrientation
39
- * @param options.frontUVs
40
- * @param options.backUVs
41
- * @param options.wrap
42
31
  * @param scene defines the hosting scene
43
32
  * @param earcutInjection can be used to inject your own earcut reference
44
33
  * @returns the polygon mesh
@@ -62,16 +51,6 @@ export declare function CreatePolygon(name: string, options: {
62
51
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace
63
52
  * @param name defines the name of the mesh
64
53
  * @param options defines the options used to create the mesh
65
- * @param options.shape
66
- * @param options.holes
67
- * @param options.depth
68
- * @param options.faceUV
69
- * @param options.faceColors
70
- * @param options.updatable
71
- * @param options.sideOrientation
72
- * @param options.frontUVs
73
- * @param options.backUVs
74
- * @param options.wrap
75
54
  * @param scene defines the hosting scene
76
55
  * @param earcutInjection can be used to inject your own earcut reference
77
56
  * @returns the polygon mesh
@@ -129,17 +129,6 @@ export function CreatePolygonVertexData(polygon, sideOrientation, fUV, fColors,
129
129
  * * Remember you can only change the shape positions, not their number when updating a polygon
130
130
  * @param name defines the name of the mesh
131
131
  * @param options defines the options used to create the mesh
132
- * @param options.shape
133
- * @param options.holes
134
- * @param options.depth
135
- * @param options.smoothingThreshold
136
- * @param options.faceUV
137
- * @param options.faceColors
138
- * @param options.updatable
139
- * @param options.sideOrientation
140
- * @param options.frontUVs
141
- * @param options.backUVs
142
- * @param options.wrap
143
132
  * @param scene defines the hosting scene
144
133
  * @param earcutInjection can be used to inject your own earcut reference
145
134
  * @returns the polygon mesh
@@ -180,16 +169,6 @@ export function CreatePolygon(name, options, scene = null, earcutInjection = ear
180
169
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace
181
170
  * @param name defines the name of the mesh
182
171
  * @param options defines the options used to create the mesh
183
- * @param options.shape
184
- * @param options.holes
185
- * @param options.depth
186
- * @param options.faceUV
187
- * @param options.faceColors
188
- * @param options.updatable
189
- * @param options.sideOrientation
190
- * @param options.frontUVs
191
- * @param options.backUVs
192
- * @param options.wrap
193
172
  * @param scene defines the hosting scene
194
173
  * @param earcutInjection can be used to inject your own earcut reference
195
174
  * @returns the polygon mesh
@@ -1 +1 @@
1
- {"version":3,"file":"polygonBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/polygonBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Vector3 } from \"../../Maths/math.vector\";\r\nimport { Vector2, Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { PolygonMeshBuilder } from \"../polygonMesh\";\r\nimport type { FloatArray, IndicesArray, Nullable } from \"../../types\";\r\nimport { VertexBuffer } from \"../../Buffers/buffer\";\r\nimport { EngineStore } from \"../../Engines/engineStore\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\ndeclare let earcut: any;\r\n\r\n/**\r\n * Creates the VertexData for an irregular Polygon in the XoZ plane using a mesh built by polygonTriangulation.build()\r\n * All parameters are provided by CreatePolygon as needed\r\n * @param polygon a mesh built from polygonTriangulation.build()\r\n * @param sideOrientation takes the values Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * @param fUV an array of Vector4 elements used to set different images to the top, rings and bottom respectively\r\n * @param fColors an array of Color3 elements used to set different colors to the top, rings and bottom respectively\r\n * @param 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)\r\n * @param 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)\r\n * @param wrp a boolean, default false, when true and fUVs used texture is wrapped around all sides, when false texture is applied side\r\n * @returns the VertexData of the Polygon\r\n */\r\nexport function CreatePolygonVertexData(polygon: Mesh, sideOrientation: number, fUV?: Vector4[], fColors?: Color4[], frontUVs?: Vector4, backUVs?: Vector4, wrp?: boolean) {\r\n const faceUV: Vector4[] = fUV || new Array<Vector4>(3);\r\n const faceColors = fColors;\r\n const colors = [];\r\n const wrap: boolean = wrp || false;\r\n\r\n // default face colors and UV if undefined\r\n for (let f = 0; f < 3; f++) {\r\n if (faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n\r\n const positions = <FloatArray>polygon.getVerticesData(VertexBuffer.PositionKind);\r\n const normals = <FloatArray>polygon.getVerticesData(VertexBuffer.NormalKind);\r\n const uvs = <FloatArray>polygon.getVerticesData(VertexBuffer.UVKind);\r\n const indices = <IndicesArray>polygon.getIndices();\r\n const startIndex = positions.length / 9;\r\n let disp = 0;\r\n let distX = 0;\r\n let distZ = 0;\r\n let dist = 0;\r\n let totalLen = 0;\r\n const cumulate = [0];\r\n if (wrap) {\r\n for (let idx = startIndex; idx < positions.length / 3; idx += 4) {\r\n distX = positions[3 * (idx + 2)] - positions[3 * idx];\r\n distZ = positions[3 * (idx + 2) + 2] - positions[3 * idx + 2];\r\n dist = Math.sqrt(distX * distX + distZ * distZ);\r\n totalLen += dist;\r\n cumulate.push(totalLen);\r\n }\r\n }\r\n // set face colours and textures\r\n let idx: number = 0;\r\n let face: number = 0;\r\n for (let index = 0; index < normals.length; index += 3) {\r\n //Edge Face no. 1\r\n if (Math.abs(normals[index + 1]) < 0.001) {\r\n face = 1;\r\n }\r\n //Top Face no. 0\r\n if (Math.abs(normals[index + 1] - 1) < 0.001) {\r\n face = 0;\r\n }\r\n //Bottom Face no. 2\r\n if (Math.abs(normals[index + 1] + 1) < 0.001) {\r\n face = 2;\r\n }\r\n idx = index / 3;\r\n if (face === 1) {\r\n disp = idx - startIndex;\r\n if (disp % 4 < 1.5) {\r\n if (wrap) {\r\n uvs[2 * idx] = faceUV[face].x + ((faceUV[face].z - faceUV[face].x) * cumulate[Math.floor(disp / 4)]) / totalLen;\r\n } else {\r\n uvs[2 * idx] = faceUV[face].x;\r\n }\r\n } else {\r\n if (wrap) {\r\n uvs[2 * idx] = faceUV[face].x + ((faceUV[face].z - faceUV[face].x) * cumulate[Math.floor(disp / 4) + 1]) / totalLen;\r\n } else {\r\n uvs[2 * idx] = faceUV[face].z;\r\n }\r\n }\r\n if (disp % 2 === 0) {\r\n uvs[2 * idx + 1] = CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[face].w : faceUV[face].w;\r\n } else {\r\n uvs[2 * idx + 1] = CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[face].y : faceUV[face].y;\r\n }\r\n } else {\r\n uvs[2 * idx] = (1 - uvs[2 * idx]) * faceUV[face].x + uvs[2 * idx] * faceUV[face].z;\r\n uvs[2 * idx + 1] = (1 - uvs[2 * idx + 1]) * faceUV[face].y + uvs[2 * idx + 1] * faceUV[face].w;\r\n\r\n if (CompatibilityOptions.UseOpenGLOrientationForUV) {\r\n uvs[2 * idx + 1] = 1.0 - uvs[2 * idx + 1];\r\n }\r\n }\r\n if (faceColors) {\r\n colors.push(faceColors[face].r, faceColors[face].g, faceColors[face].b, faceColors[face].a);\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, frontUVs, backUVs);\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n\r\n if (faceColors) {\r\n const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;\r\n vertexData.colors = totalColors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a polygon mesh\r\n * The polygon's shape will depend on the input parameters and is constructed parallel to a ground mesh\r\n * * The parameter `shape` is a required array of successive Vector3 representing the corners of the polygon in th XoZ plane, that is y = 0 for all vectors\r\n * * You can set the mesh side orientation with the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\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\r\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)\r\n * * Remember you can only change the shape positions, not their number when updating a polygon\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.shape\r\n * @param options.holes\r\n * @param options.depth\r\n * @param options.smoothingThreshold\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.updatable\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param scene defines the hosting scene\r\n * @param earcutInjection can be used to inject your own earcut reference\r\n * @returns the polygon mesh\r\n */\r\nexport function CreatePolygon(\r\n name: string,\r\n options: {\r\n shape: Vector3[];\r\n holes?: Vector3[][];\r\n depth?: number;\r\n smoothingThreshold?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n },\r\n scene: Nullable<Scene> = null,\r\n earcutInjection = earcut\r\n): Mesh {\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n const shape = options.shape;\r\n const holes = options.holes || [];\r\n const depth = options.depth || 0;\r\n const smoothingThreshold = options.smoothingThreshold || 2;\r\n const contours: Array<Vector2> = [];\r\n let hole: Array<Vector2> = [];\r\n\r\n for (let i = 0; i < shape.length; i++) {\r\n contours[i] = new Vector2(shape[i].x, shape[i].z);\r\n }\r\n const epsilon = 0.00000001;\r\n if (contours[0].equalsWithEpsilon(contours[contours.length - 1], epsilon)) {\r\n contours.pop();\r\n }\r\n\r\n const polygonTriangulation = new PolygonMeshBuilder(name, contours, scene || EngineStore.LastCreatedScene!, earcutInjection);\r\n for (let hNb = 0; hNb < holes.length; hNb++) {\r\n hole = [];\r\n for (let hPoint = 0; hPoint < holes[hNb].length; hPoint++) {\r\n hole.push(new Vector2(holes[hNb][hPoint].x, holes[hNb][hPoint].z));\r\n }\r\n polygonTriangulation.addHole(hole);\r\n }\r\n //updatability is set during applyToMesh; setting to true in triangulation build produces errors\r\n const polygon = polygonTriangulation.build(false, depth, smoothingThreshold);\r\n polygon._originalBuilderSideOrientation = options.sideOrientation;\r\n const vertexData = CreatePolygonVertexData(polygon, options.sideOrientation, options.faceUV, options.faceColors, options.frontUVs, options.backUVs, options.wrap);\r\n vertexData.applyToMesh(polygon, options.updatable);\r\n\r\n return polygon;\r\n}\r\n\r\n/**\r\n * Creates an extruded polygon mesh, with depth in the Y direction.\r\n * * You can set different colors and different images to the top, bottom and extruded side by using the parameters `faceColors` (an array of 3 Color3 elements) and `faceUV` (an array of 3 Vector4 elements)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.shape\r\n * @param options.holes\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.updatable\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param scene defines the hosting scene\r\n * @param earcutInjection can be used to inject your own earcut reference\r\n * @returns the polygon mesh\r\n */\r\nexport function ExtrudePolygon(\r\n name: string,\r\n options: {\r\n shape: Vector3[];\r\n holes?: Vector3[][];\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n },\r\n scene: Nullable<Scene> = null,\r\n earcutInjection = earcut\r\n): Mesh {\r\n return CreatePolygon(name, options, scene, earcutInjection);\r\n}\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated use the functions directly from the module\r\n */\r\nexport const PolygonBuilder = {\r\n ExtrudePolygon,\r\n CreatePolygon,\r\n};\r\n\r\nVertexData.CreatePolygon = CreatePolygonVertexData;\r\nMesh.CreatePolygon = (name: string, shape: Vector3[], scene: Scene, holes?: Vector3[][], updatable?: boolean, sideOrientation?: number, earcutInjection = earcut): Mesh => {\r\n const options = {\r\n shape: shape,\r\n holes: holes,\r\n updatable: updatable,\r\n sideOrientation: sideOrientation,\r\n };\r\n return CreatePolygon(name, options, scene, earcutInjection);\r\n};\r\n\r\nMesh.ExtrudePolygon = (\r\n name: string,\r\n shape: Vector3[],\r\n depth: number,\r\n scene: Scene,\r\n holes?: Vector3[][],\r\n updatable?: boolean,\r\n sideOrientation?: number,\r\n earcutInjection = earcut\r\n): Mesh => {\r\n const options = {\r\n shape: shape,\r\n holes: holes,\r\n depth: depth,\r\n updatable: updatable,\r\n sideOrientation: sideOrientation,\r\n };\r\n return ExtrudePolygon(name, options, scene, earcutInjection);\r\n};\r\n"]}
1
+ {"version":3,"file":"polygonBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/polygonBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Vector3 } from \"../../Maths/math.vector\";\r\nimport { Vector2, Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { PolygonMeshBuilder } from \"../polygonMesh\";\r\nimport type { FloatArray, IndicesArray, Nullable } from \"../../types\";\r\nimport { VertexBuffer } from \"../../Buffers/buffer\";\r\nimport { EngineStore } from \"../../Engines/engineStore\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\ndeclare let earcut: any;\r\n\r\n/**\r\n * Creates the VertexData for an irregular Polygon in the XoZ plane using a mesh built by polygonTriangulation.build()\r\n * All parameters are provided by CreatePolygon as needed\r\n * @param polygon a mesh built from polygonTriangulation.build()\r\n * @param sideOrientation takes the values Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * @param fUV an array of Vector4 elements used to set different images to the top, rings and bottom respectively\r\n * @param fColors an array of Color3 elements used to set different colors to the top, rings and bottom respectively\r\n * @param 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)\r\n * @param 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)\r\n * @param wrp a boolean, default false, when true and fUVs used texture is wrapped around all sides, when false texture is applied side\r\n * @returns the VertexData of the Polygon\r\n */\r\nexport function CreatePolygonVertexData(polygon: Mesh, sideOrientation: number, fUV?: Vector4[], fColors?: Color4[], frontUVs?: Vector4, backUVs?: Vector4, wrp?: boolean) {\r\n const faceUV: Vector4[] = fUV || new Array<Vector4>(3);\r\n const faceColors = fColors;\r\n const colors = [];\r\n const wrap: boolean = wrp || false;\r\n\r\n // default face colors and UV if undefined\r\n for (let f = 0; f < 3; f++) {\r\n if (faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n\r\n const positions = <FloatArray>polygon.getVerticesData(VertexBuffer.PositionKind);\r\n const normals = <FloatArray>polygon.getVerticesData(VertexBuffer.NormalKind);\r\n const uvs = <FloatArray>polygon.getVerticesData(VertexBuffer.UVKind);\r\n const indices = <IndicesArray>polygon.getIndices();\r\n const startIndex = positions.length / 9;\r\n let disp = 0;\r\n let distX = 0;\r\n let distZ = 0;\r\n let dist = 0;\r\n let totalLen = 0;\r\n const cumulate = [0];\r\n if (wrap) {\r\n for (let idx = startIndex; idx < positions.length / 3; idx += 4) {\r\n distX = positions[3 * (idx + 2)] - positions[3 * idx];\r\n distZ = positions[3 * (idx + 2) + 2] - positions[3 * idx + 2];\r\n dist = Math.sqrt(distX * distX + distZ * distZ);\r\n totalLen += dist;\r\n cumulate.push(totalLen);\r\n }\r\n }\r\n // set face colours and textures\r\n let idx: number = 0;\r\n let face: number = 0;\r\n for (let index = 0; index < normals.length; index += 3) {\r\n //Edge Face no. 1\r\n if (Math.abs(normals[index + 1]) < 0.001) {\r\n face = 1;\r\n }\r\n //Top Face no. 0\r\n if (Math.abs(normals[index + 1] - 1) < 0.001) {\r\n face = 0;\r\n }\r\n //Bottom Face no. 2\r\n if (Math.abs(normals[index + 1] + 1) < 0.001) {\r\n face = 2;\r\n }\r\n idx = index / 3;\r\n if (face === 1) {\r\n disp = idx - startIndex;\r\n if (disp % 4 < 1.5) {\r\n if (wrap) {\r\n uvs[2 * idx] = faceUV[face].x + ((faceUV[face].z - faceUV[face].x) * cumulate[Math.floor(disp / 4)]) / totalLen;\r\n } else {\r\n uvs[2 * idx] = faceUV[face].x;\r\n }\r\n } else {\r\n if (wrap) {\r\n uvs[2 * idx] = faceUV[face].x + ((faceUV[face].z - faceUV[face].x) * cumulate[Math.floor(disp / 4) + 1]) / totalLen;\r\n } else {\r\n uvs[2 * idx] = faceUV[face].z;\r\n }\r\n }\r\n if (disp % 2 === 0) {\r\n uvs[2 * idx + 1] = CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[face].w : faceUV[face].w;\r\n } else {\r\n uvs[2 * idx + 1] = CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[face].y : faceUV[face].y;\r\n }\r\n } else {\r\n uvs[2 * idx] = (1 - uvs[2 * idx]) * faceUV[face].x + uvs[2 * idx] * faceUV[face].z;\r\n uvs[2 * idx + 1] = (1 - uvs[2 * idx + 1]) * faceUV[face].y + uvs[2 * idx + 1] * faceUV[face].w;\r\n\r\n if (CompatibilityOptions.UseOpenGLOrientationForUV) {\r\n uvs[2 * idx + 1] = 1.0 - uvs[2 * idx + 1];\r\n }\r\n }\r\n if (faceColors) {\r\n colors.push(faceColors[face].r, faceColors[face].g, faceColors[face].b, faceColors[face].a);\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, frontUVs, backUVs);\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n\r\n if (faceColors) {\r\n const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;\r\n vertexData.colors = totalColors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a polygon mesh\r\n * The polygon's shape will depend on the input parameters and is constructed parallel to a ground mesh\r\n * * The parameter `shape` is a required array of successive Vector3 representing the corners of the polygon in th XoZ plane, that is y = 0 for all vectors\r\n * * You can set the mesh side orientation with the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\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\r\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)\r\n * * Remember you can only change the shape positions, not their number when updating a polygon\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param scene defines the hosting scene\r\n * @param earcutInjection can be used to inject your own earcut reference\r\n * @returns the polygon mesh\r\n */\r\nexport function CreatePolygon(\r\n name: string,\r\n options: {\r\n shape: Vector3[];\r\n holes?: Vector3[][];\r\n depth?: number;\r\n smoothingThreshold?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n },\r\n scene: Nullable<Scene> = null,\r\n earcutInjection = earcut\r\n): Mesh {\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n const shape = options.shape;\r\n const holes = options.holes || [];\r\n const depth = options.depth || 0;\r\n const smoothingThreshold = options.smoothingThreshold || 2;\r\n const contours: Array<Vector2> = [];\r\n let hole: Array<Vector2> = [];\r\n\r\n for (let i = 0; i < shape.length; i++) {\r\n contours[i] = new Vector2(shape[i].x, shape[i].z);\r\n }\r\n const epsilon = 0.00000001;\r\n if (contours[0].equalsWithEpsilon(contours[contours.length - 1], epsilon)) {\r\n contours.pop();\r\n }\r\n\r\n const polygonTriangulation = new PolygonMeshBuilder(name, contours, scene || EngineStore.LastCreatedScene!, earcutInjection);\r\n for (let hNb = 0; hNb < holes.length; hNb++) {\r\n hole = [];\r\n for (let hPoint = 0; hPoint < holes[hNb].length; hPoint++) {\r\n hole.push(new Vector2(holes[hNb][hPoint].x, holes[hNb][hPoint].z));\r\n }\r\n polygonTriangulation.addHole(hole);\r\n }\r\n //updatability is set during applyToMesh; setting to true in triangulation build produces errors\r\n const polygon = polygonTriangulation.build(false, depth, smoothingThreshold);\r\n polygon._originalBuilderSideOrientation = options.sideOrientation;\r\n const vertexData = CreatePolygonVertexData(polygon, options.sideOrientation, options.faceUV, options.faceColors, options.frontUVs, options.backUVs, options.wrap);\r\n vertexData.applyToMesh(polygon, options.updatable);\r\n\r\n return polygon;\r\n}\r\n\r\n/**\r\n * Creates an extruded polygon mesh, with depth in the Y direction.\r\n * * You can set different colors and different images to the top, bottom and extruded side by using the parameters `faceColors` (an array of 3 Color3 elements) and `faceUV` (an array of 3 Vector4 elements)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param scene defines the hosting scene\r\n * @param earcutInjection can be used to inject your own earcut reference\r\n * @returns the polygon mesh\r\n */\r\nexport function ExtrudePolygon(\r\n name: string,\r\n options: {\r\n shape: Vector3[];\r\n holes?: Vector3[][];\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n },\r\n scene: Nullable<Scene> = null,\r\n earcutInjection = earcut\r\n): Mesh {\r\n return CreatePolygon(name, options, scene, earcutInjection);\r\n}\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated use the functions directly from the module\r\n */\r\nexport const PolygonBuilder = {\r\n ExtrudePolygon,\r\n CreatePolygon,\r\n};\r\n\r\nVertexData.CreatePolygon = CreatePolygonVertexData;\r\nMesh.CreatePolygon = (name: string, shape: Vector3[], scene: Scene, holes?: Vector3[][], updatable?: boolean, sideOrientation?: number, earcutInjection = earcut): Mesh => {\r\n const options = {\r\n shape: shape,\r\n holes: holes,\r\n updatable: updatable,\r\n sideOrientation: sideOrientation,\r\n };\r\n return CreatePolygon(name, options, scene, earcutInjection);\r\n};\r\n\r\nMesh.ExtrudePolygon = (\r\n name: string,\r\n shape: Vector3[],\r\n depth: number,\r\n scene: Scene,\r\n holes?: Vector3[][],\r\n updatable?: boolean,\r\n sideOrientation?: number,\r\n earcutInjection = earcut\r\n): Mesh => {\r\n const options = {\r\n shape: shape,\r\n holes: holes,\r\n depth: depth,\r\n updatable: updatable,\r\n sideOrientation: sideOrientation,\r\n };\r\n return ExtrudePolygon(name, options, scene, earcutInjection);\r\n};\r\n"]}
@@ -22,18 +22,6 @@ import type { Nullable } from "../../types";
22
22
  * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE
23
23
  * * 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)
24
24
  * * 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)
25
- * @param options.type
26
- * @param options.size
27
- * @param options.sizeX
28
- * @param options.sizeY
29
- * @param options.sizeZ
30
- * @param options.custom
31
- * @param options.faceUV
32
- * @param options.faceColors
33
- * @param options.flat
34
- * @param options.sideOrientation
35
- * @param options.frontUVs
36
- * @param options.backUVs
37
25
  * @returns the VertexData of the Polyhedron
38
26
  */
39
27
  export declare function CreatePolyhedronVertexData(options: {
@@ -65,19 +53,6 @@ export declare function CreatePolyhedronVertexData(options: {
65
53
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created
66
54
  * @param name defines the name of the mesh
67
55
  * @param options defines the options used to create the mesh
68
- * @param options.type
69
- * @param options.size
70
- * @param options.sizeX
71
- * @param options.sizeY
72
- * @param options.sizeZ
73
- * @param options.custom
74
- * @param options.faceUV
75
- * @param options.faceColors
76
- * @param options.flat
77
- * @param options.updatable
78
- * @param options.sideOrientation
79
- * @param options.frontUVs
80
- * @param options.backUVs
81
56
  * @param scene defines the hosting scene
82
57
  * @returns the polyhedron mesh
83
58
  * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/polyhedra
@@ -22,18 +22,6 @@ import { CompatibilityOptions } from "../../Compat/compatibilityOptions.js";
22
22
  * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE
23
23
  * * 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)
24
24
  * * 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)
25
- * @param options.type
26
- * @param options.size
27
- * @param options.sizeX
28
- * @param options.sizeY
29
- * @param options.sizeZ
30
- * @param options.custom
31
- * @param options.faceUV
32
- * @param options.faceColors
33
- * @param options.flat
34
- * @param options.sideOrientation
35
- * @param options.frontUVs
36
- * @param options.backUVs
37
25
  * @returns the VertexData of the Polyhedron
38
26
  */
39
27
  export function CreatePolyhedronVertexData(options) {
@@ -563,19 +551,6 @@ export function CreatePolyhedronVertexData(options) {
563
551
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created
564
552
  * @param name defines the name of the mesh
565
553
  * @param options defines the options used to create the mesh
566
- * @param options.type
567
- * @param options.size
568
- * @param options.sizeX
569
- * @param options.sizeY
570
- * @param options.sizeZ
571
- * @param options.custom
572
- * @param options.faceUV
573
- * @param options.faceColors
574
- * @param options.flat
575
- * @param options.updatable
576
- * @param options.sideOrientation
577
- * @param options.frontUVs
578
- * @param options.backUVs
579
554
  * @param scene defines the hosting scene
580
555
  * @returns the polyhedron mesh
581
556
  * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/polyhedra
@@ -1 +1 @@
1
- {"version":3,"file":"polyhedronBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/polyhedronBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n// inspired from // http://stemkoski.github.io/Three.js/Polyhedra.html\r\n/**\r\n * Creates the VertexData for a Polyhedron\r\n * @param options an object used to set the following optional parameters for the polyhedron, required but can be empty\r\n * * type provided types are:\r\n * * 0 : Tetrahedron, 1 : Octahedron, 2 : Dodecahedron, 3 : Icosahedron, 4 : Rhombicuboctahedron, 5 : Triangular Prism, 6 : Pentagonal Prism, 7 : Hexagonal Prism, 8 : Square Pyramid (J1)\r\n * * 9 : Pentagonal Pyramid (J2), 10 : Triangular Dipyramid (J12), 11 : Pentagonal Dipyramid (J13), 12 : Elongated Square Dipyramid (J15), 13 : Elongated Pentagonal Dipyramid (J16), 14 : Elongated Pentagonal Cupola (J20)\r\n * * size the size of the IcoSphere, optional default 1\r\n * * sizeX allows stretching in the x direction, optional, default size\r\n * * sizeY allows stretching in the y direction, optional, default size\r\n * * sizeZ allows stretching in the z direction, optional, default size\r\n * * custom a number that overwrites the type to create from an extended set of polyhedron from https://www.babylonjs-playground.com/#21QRSK#15 with minimised editor\r\n * * faceUV an array of Vector4 elements used to set different images to the top, rings and bottom respectively\r\n * * faceColors an array of Color3 elements used to set different colors to the top, rings and bottom respectively\r\n * * flat when true creates a flat shaded mesh, optional, default true\r\n * * subdivisions increasing the subdivisions increases the number of faces, optional, default 4\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\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)\r\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)\r\n * @param options.type\r\n * @param options.size\r\n * @param options.sizeX\r\n * @param options.sizeY\r\n * @param options.sizeZ\r\n * @param options.custom\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.flat\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @returns the VertexData of the Polyhedron\r\n */\r\nexport function CreatePolyhedronVertexData(options: {\r\n type?: number;\r\n size?: number;\r\n sizeX?: number;\r\n sizeY?: number;\r\n sizeZ?: number;\r\n custom?: any;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n flat?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n}): VertexData {\r\n // provided polyhedron types :\r\n // 0 : Tetrahedron, 1 : Octahedron, 2 : Dodecahedron, 3 : Icosahedron, 4 : Rhombicuboctahedron, 5 : Triangular Prism, 6 : Pentagonal Prism, 7 : Hexagonal Prism, 8 : Square Pyramid (J1)\r\n // 9 : Pentagonal Pyramid (J2), 10 : Triangular Dipyramid (J12), 11 : Pentagonal Dipyramid (J13), 12 : Elongated Square Dipyramid (J15), 13 : Elongated Pentagonal Dipyramid (J16), 14 : Elongated Pentagonal Cupola (J20)\r\n const polyhedra: { vertex: number[][]; face: number[][] }[] = [];\r\n polyhedra[0] = {\r\n vertex: [\r\n [0, 0, 1.732051],\r\n [1.632993, 0, -0.5773503],\r\n [-0.8164966, 1.414214, -0.5773503],\r\n [-0.8164966, -1.414214, -0.5773503],\r\n ],\r\n face: [\r\n [0, 1, 2],\r\n [0, 2, 3],\r\n [0, 3, 1],\r\n [1, 3, 2],\r\n ],\r\n };\r\n polyhedra[1] = {\r\n vertex: [\r\n [0, 0, 1.414214],\r\n [1.414214, 0, 0],\r\n [0, 1.414214, 0],\r\n [-1.414214, 0, 0],\r\n [0, -1.414214, 0],\r\n [0, 0, -1.414214],\r\n ],\r\n face: [\r\n [0, 1, 2],\r\n [0, 2, 3],\r\n [0, 3, 4],\r\n [0, 4, 1],\r\n [1, 4, 5],\r\n [1, 5, 2],\r\n [2, 5, 3],\r\n [3, 5, 4],\r\n ],\r\n };\r\n polyhedra[2] = {\r\n vertex: [\r\n [0, 0, 1.070466],\r\n [0.7136442, 0, 0.7978784],\r\n [-0.3568221, 0.618034, 0.7978784],\r\n [-0.3568221, -0.618034, 0.7978784],\r\n [0.7978784, 0.618034, 0.3568221],\r\n [0.7978784, -0.618034, 0.3568221],\r\n [-0.9341724, 0.381966, 0.3568221],\r\n [0.1362939, 1, 0.3568221],\r\n [0.1362939, -1, 0.3568221],\r\n [-0.9341724, -0.381966, 0.3568221],\r\n [0.9341724, 0.381966, -0.3568221],\r\n [0.9341724, -0.381966, -0.3568221],\r\n [-0.7978784, 0.618034, -0.3568221],\r\n [-0.1362939, 1, -0.3568221],\r\n [-0.1362939, -1, -0.3568221],\r\n [-0.7978784, -0.618034, -0.3568221],\r\n [0.3568221, 0.618034, -0.7978784],\r\n [0.3568221, -0.618034, -0.7978784],\r\n [-0.7136442, 0, -0.7978784],\r\n [0, 0, -1.070466],\r\n ],\r\n face: [\r\n [0, 1, 4, 7, 2],\r\n [0, 2, 6, 9, 3],\r\n [0, 3, 8, 5, 1],\r\n [1, 5, 11, 10, 4],\r\n [2, 7, 13, 12, 6],\r\n [3, 9, 15, 14, 8],\r\n [4, 10, 16, 13, 7],\r\n [5, 8, 14, 17, 11],\r\n [6, 12, 18, 15, 9],\r\n [10, 11, 17, 19, 16],\r\n [12, 13, 16, 19, 18],\r\n [14, 15, 18, 19, 17],\r\n ],\r\n };\r\n polyhedra[3] = {\r\n vertex: [\r\n [0, 0, 1.175571],\r\n [1.051462, 0, 0.5257311],\r\n [0.3249197, 1, 0.5257311],\r\n [-0.8506508, 0.618034, 0.5257311],\r\n [-0.8506508, -0.618034, 0.5257311],\r\n [0.3249197, -1, 0.5257311],\r\n [0.8506508, 0.618034, -0.5257311],\r\n [0.8506508, -0.618034, -0.5257311],\r\n [-0.3249197, 1, -0.5257311],\r\n [-1.051462, 0, -0.5257311],\r\n [-0.3249197, -1, -0.5257311],\r\n [0, 0, -1.175571],\r\n ],\r\n face: [\r\n [0, 1, 2],\r\n [0, 2, 3],\r\n [0, 3, 4],\r\n [0, 4, 5],\r\n [0, 5, 1],\r\n [1, 5, 7],\r\n [1, 7, 6],\r\n [1, 6, 2],\r\n [2, 6, 8],\r\n [2, 8, 3],\r\n [3, 8, 9],\r\n [3, 9, 4],\r\n [4, 9, 10],\r\n [4, 10, 5],\r\n [5, 10, 7],\r\n [6, 7, 11],\r\n [6, 11, 8],\r\n [7, 10, 11],\r\n [8, 11, 9],\r\n [9, 11, 10],\r\n ],\r\n };\r\n polyhedra[4] = {\r\n vertex: [\r\n [0, 0, 1.070722],\r\n [0.7148135, 0, 0.7971752],\r\n [-0.104682, 0.7071068, 0.7971752],\r\n [-0.6841528, 0.2071068, 0.7971752],\r\n [-0.104682, -0.7071068, 0.7971752],\r\n [0.6101315, 0.7071068, 0.5236279],\r\n [1.04156, 0.2071068, 0.1367736],\r\n [0.6101315, -0.7071068, 0.5236279],\r\n [-0.3574067, 1, 0.1367736],\r\n [-0.7888348, -0.5, 0.5236279],\r\n [-0.9368776, 0.5, 0.1367736],\r\n [-0.3574067, -1, 0.1367736],\r\n [0.3574067, 1, -0.1367736],\r\n [0.9368776, -0.5, -0.1367736],\r\n [0.7888348, 0.5, -0.5236279],\r\n [0.3574067, -1, -0.1367736],\r\n [-0.6101315, 0.7071068, -0.5236279],\r\n [-1.04156, -0.2071068, -0.1367736],\r\n [-0.6101315, -0.7071068, -0.5236279],\r\n [0.104682, 0.7071068, -0.7971752],\r\n [0.6841528, -0.2071068, -0.7971752],\r\n [0.104682, -0.7071068, -0.7971752],\r\n [-0.7148135, 0, -0.7971752],\r\n [0, 0, -1.070722],\r\n ],\r\n face: [\r\n [0, 2, 3],\r\n [1, 6, 5],\r\n [4, 9, 11],\r\n [7, 15, 13],\r\n [8, 16, 10],\r\n [12, 14, 19],\r\n [17, 22, 18],\r\n [20, 21, 23],\r\n [0, 1, 5, 2],\r\n [0, 3, 9, 4],\r\n [0, 4, 7, 1],\r\n [1, 7, 13, 6],\r\n [2, 5, 12, 8],\r\n [2, 8, 10, 3],\r\n [3, 10, 17, 9],\r\n [4, 11, 15, 7],\r\n [5, 6, 14, 12],\r\n [6, 13, 20, 14],\r\n [8, 12, 19, 16],\r\n [9, 17, 18, 11],\r\n [10, 16, 22, 17],\r\n [11, 18, 21, 15],\r\n [13, 15, 21, 20],\r\n [14, 20, 23, 19],\r\n [16, 19, 23, 22],\r\n [18, 22, 23, 21],\r\n ],\r\n };\r\n polyhedra[5] = {\r\n vertex: [\r\n [0, 0, 1.322876],\r\n [1.309307, 0, 0.1889822],\r\n [-0.9819805, 0.8660254, 0.1889822],\r\n [0.1636634, -1.299038, 0.1889822],\r\n [0.3273268, 0.8660254, -0.9449112],\r\n [-0.8183171, -0.4330127, -0.9449112],\r\n ],\r\n face: [\r\n [0, 3, 1],\r\n [2, 4, 5],\r\n [0, 1, 4, 2],\r\n [0, 2, 5, 3],\r\n [1, 3, 5, 4],\r\n ],\r\n };\r\n polyhedra[6] = {\r\n vertex: [\r\n [0, 0, 1.159953],\r\n [1.013464, 0, 0.5642542],\r\n [-0.3501431, 0.9510565, 0.5642542],\r\n [-0.7715208, -0.6571639, 0.5642542],\r\n [0.6633206, 0.9510565, -0.03144481],\r\n [0.8682979, -0.6571639, -0.3996071],\r\n [-1.121664, 0.2938926, -0.03144481],\r\n [-0.2348831, -1.063314, -0.3996071],\r\n [0.5181548, 0.2938926, -0.9953061],\r\n [-0.5850262, -0.112257, -0.9953061],\r\n ],\r\n face: [\r\n [0, 1, 4, 2],\r\n [0, 2, 6, 3],\r\n [1, 5, 8, 4],\r\n [3, 6, 9, 7],\r\n [5, 7, 9, 8],\r\n [0, 3, 7, 5, 1],\r\n [2, 4, 8, 9, 6],\r\n ],\r\n };\r\n polyhedra[7] = {\r\n vertex: [\r\n [0, 0, 1.118034],\r\n [0.8944272, 0, 0.6708204],\r\n [-0.2236068, 0.8660254, 0.6708204],\r\n [-0.7826238, -0.4330127, 0.6708204],\r\n [0.6708204, 0.8660254, 0.2236068],\r\n [1.006231, -0.4330127, -0.2236068],\r\n [-1.006231, 0.4330127, 0.2236068],\r\n [-0.6708204, -0.8660254, -0.2236068],\r\n [0.7826238, 0.4330127, -0.6708204],\r\n [0.2236068, -0.8660254, -0.6708204],\r\n [-0.8944272, 0, -0.6708204],\r\n [0, 0, -1.118034],\r\n ],\r\n face: [\r\n [0, 1, 4, 2],\r\n [0, 2, 6, 3],\r\n [1, 5, 8, 4],\r\n [3, 6, 10, 7],\r\n [5, 9, 11, 8],\r\n [7, 10, 11, 9],\r\n [0, 3, 7, 9, 5, 1],\r\n [2, 4, 8, 11, 10, 6],\r\n ],\r\n };\r\n polyhedra[8] = {\r\n vertex: [\r\n [-0.729665, 0.670121, 0.319155],\r\n [-0.655235, -0.29213, -0.754096],\r\n [-0.093922, -0.607123, 0.537818],\r\n [0.702196, 0.595691, 0.485187],\r\n [0.776626, -0.36656, -0.588064],\r\n ],\r\n face: [\r\n [1, 4, 2],\r\n [0, 1, 2],\r\n [3, 0, 2],\r\n [4, 3, 2],\r\n [4, 1, 0, 3],\r\n ],\r\n };\r\n polyhedra[9] = {\r\n vertex: [\r\n [-0.868849, -0.100041, 0.61257],\r\n [-0.329458, 0.976099, 0.28078],\r\n [-0.26629, -0.013796, -0.477654],\r\n [-0.13392, -1.034115, 0.229829],\r\n [0.738834, 0.707117, -0.307018],\r\n [0.859683, -0.535264, -0.338508],\r\n ],\r\n face: [\r\n [3, 0, 2],\r\n [5, 3, 2],\r\n [4, 5, 2],\r\n [1, 4, 2],\r\n [0, 1, 2],\r\n [0, 3, 5, 4, 1],\r\n ],\r\n };\r\n polyhedra[10] = {\r\n vertex: [\r\n [-0.610389, 0.243975, 0.531213],\r\n [-0.187812, -0.48795, -0.664016],\r\n [-0.187812, 0.9759, -0.664016],\r\n [0.187812, -0.9759, 0.664016],\r\n [0.798201, 0.243975, 0.132803],\r\n ],\r\n face: [\r\n [1, 3, 0],\r\n [3, 4, 0],\r\n [3, 1, 4],\r\n [0, 2, 1],\r\n [0, 4, 2],\r\n [2, 4, 1],\r\n ],\r\n };\r\n polyhedra[11] = {\r\n vertex: [\r\n [-1.028778, 0.392027, -0.048786],\r\n [-0.640503, -0.646161, 0.621837],\r\n [-0.125162, -0.395663, -0.540059],\r\n [0.004683, 0.888447, -0.651988],\r\n [0.125161, 0.395663, 0.540059],\r\n [0.632925, -0.791376, 0.433102],\r\n [1.031672, 0.157063, -0.354165],\r\n ],\r\n face: [\r\n [3, 2, 0],\r\n [2, 1, 0],\r\n [2, 5, 1],\r\n [0, 4, 3],\r\n [0, 1, 4],\r\n [4, 1, 5],\r\n [2, 3, 6],\r\n [3, 4, 6],\r\n [5, 2, 6],\r\n [4, 5, 6],\r\n ],\r\n };\r\n polyhedra[12] = {\r\n vertex: [\r\n [-0.669867, 0.334933, -0.529576],\r\n [-0.669867, 0.334933, 0.529577],\r\n [-0.4043, 1.212901, 0],\r\n [-0.334933, -0.669867, -0.529576],\r\n [-0.334933, -0.669867, 0.529577],\r\n [0.334933, 0.669867, -0.529576],\r\n [0.334933, 0.669867, 0.529577],\r\n [0.4043, -1.212901, 0],\r\n [0.669867, -0.334933, -0.529576],\r\n [0.669867, -0.334933, 0.529577],\r\n ],\r\n face: [\r\n [8, 9, 7],\r\n [6, 5, 2],\r\n [3, 8, 7],\r\n [5, 0, 2],\r\n [4, 3, 7],\r\n [0, 1, 2],\r\n [9, 4, 7],\r\n [1, 6, 2],\r\n [9, 8, 5, 6],\r\n [8, 3, 0, 5],\r\n [3, 4, 1, 0],\r\n [4, 9, 6, 1],\r\n ],\r\n };\r\n polyhedra[13] = {\r\n vertex: [\r\n [-0.931836, 0.219976, -0.264632],\r\n [-0.636706, 0.318353, 0.692816],\r\n [-0.613483, -0.735083, -0.264632],\r\n [-0.326545, 0.979634, 0],\r\n [-0.318353, -0.636706, 0.692816],\r\n [-0.159176, 0.477529, -0.856368],\r\n [0.159176, -0.477529, -0.856368],\r\n [0.318353, 0.636706, 0.692816],\r\n [0.326545, -0.979634, 0],\r\n [0.613482, 0.735082, -0.264632],\r\n [0.636706, -0.318353, 0.692816],\r\n [0.931835, -0.219977, -0.264632],\r\n ],\r\n face: [\r\n [11, 10, 8],\r\n [7, 9, 3],\r\n [6, 11, 8],\r\n [9, 5, 3],\r\n [2, 6, 8],\r\n [5, 0, 3],\r\n [4, 2, 8],\r\n [0, 1, 3],\r\n [10, 4, 8],\r\n [1, 7, 3],\r\n [10, 11, 9, 7],\r\n [11, 6, 5, 9],\r\n [6, 2, 0, 5],\r\n [2, 4, 1, 0],\r\n [4, 10, 7, 1],\r\n ],\r\n };\r\n polyhedra[14] = {\r\n vertex: [\r\n [-0.93465, 0.300459, -0.271185],\r\n [-0.838689, -0.260219, -0.516017],\r\n [-0.711319, 0.717591, 0.128359],\r\n [-0.710334, -0.156922, 0.080946],\r\n [-0.599799, 0.556003, -0.725148],\r\n [-0.503838, -0.004675, -0.969981],\r\n [-0.487004, 0.26021, 0.48049],\r\n [-0.460089, -0.750282, -0.512622],\r\n [-0.376468, 0.973135, -0.325605],\r\n [-0.331735, -0.646985, 0.084342],\r\n [-0.254001, 0.831847, 0.530001],\r\n [-0.125239, -0.494738, -0.966586],\r\n [0.029622, 0.027949, 0.730817],\r\n [0.056536, -0.982543, -0.262295],\r\n [0.08085, 1.087391, 0.076037],\r\n [0.125583, -0.532729, 0.485984],\r\n [0.262625, 0.599586, 0.780328],\r\n [0.391387, -0.726999, -0.716259],\r\n [0.513854, -0.868287, 0.139347],\r\n [0.597475, 0.85513, 0.326364],\r\n [0.641224, 0.109523, 0.783723],\r\n [0.737185, -0.451155, 0.538891],\r\n [0.848705, -0.612742, -0.314616],\r\n [0.976075, 0.365067, 0.32976],\r\n [1.072036, -0.19561, 0.084927],\r\n ],\r\n face: [\r\n [15, 18, 21],\r\n [12, 20, 16],\r\n [6, 10, 2],\r\n [3, 0, 1],\r\n [9, 7, 13],\r\n [2, 8, 4, 0],\r\n [0, 4, 5, 1],\r\n [1, 5, 11, 7],\r\n [7, 11, 17, 13],\r\n [13, 17, 22, 18],\r\n [18, 22, 24, 21],\r\n [21, 24, 23, 20],\r\n [20, 23, 19, 16],\r\n [16, 19, 14, 10],\r\n [10, 14, 8, 2],\r\n [15, 9, 13, 18],\r\n [12, 15, 21, 20],\r\n [6, 12, 16, 10],\r\n [3, 6, 2, 0],\r\n [9, 3, 1, 7],\r\n [9, 15, 12, 6, 3],\r\n [22, 17, 11, 5, 4, 8, 14, 19, 23, 24],\r\n ],\r\n };\r\n\r\n const type: number = options.type && (options.type < 0 || options.type >= polyhedra.length) ? 0 : options.type || 0;\r\n const size = options.size;\r\n const sizeX: number = options.sizeX || size || 1;\r\n const sizeY: number = options.sizeY || size || 1;\r\n const sizeZ: number = options.sizeZ || size || 1;\r\n const data: { vertex: number[][]; face: number[][]; name?: string; category?: string } = options.custom || polyhedra[type];\r\n const nbfaces = data.face.length;\r\n const faceUV = options.faceUV || new Array(nbfaces);\r\n const faceColors = options.faceColors;\r\n const flat = options.flat === undefined ? true : options.flat;\r\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n\r\n const positions: number[] = [];\r\n const indices: number[] = [];\r\n const normals: number[] = [];\r\n const uvs: number[] = [];\r\n const colors: number[] = [];\r\n let index = 0;\r\n let faceIdx = 0; // face cursor in the array \"indexes\"\r\n const indexes: number[] = [];\r\n let i = 0;\r\n let f = 0;\r\n let u: number, v: number, ang: number, x: number, y: number, tmp: number;\r\n\r\n // default face colors and UV if undefined\r\n if (flat) {\r\n for (f = 0; f < nbfaces; f++) {\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n if (faceUV && faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n }\r\n }\r\n\r\n if (!flat) {\r\n for (i = 0; i < data.vertex.length; i++) {\r\n positions.push(data.vertex[i][0] * sizeX, data.vertex[i][1] * sizeY, data.vertex[i][2] * sizeZ);\r\n uvs.push(0, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 : 0);\r\n }\r\n for (f = 0; f < nbfaces; f++) {\r\n for (i = 0; i < data.face[f].length - 2; i++) {\r\n indices.push(data.face[f][0], data.face[f][i + 2], data.face[f][i + 1]);\r\n }\r\n }\r\n } else {\r\n for (f = 0; f < nbfaces; f++) {\r\n const fl = data.face[f].length; // number of vertices of the current face\r\n ang = (2 * Math.PI) / fl;\r\n x = 0.5 * Math.tan(ang / 2);\r\n y = 0.5;\r\n\r\n // positions, uvs, colors\r\n for (i = 0; i < fl; i++) {\r\n // positions\r\n positions.push(data.vertex[data.face[f][i]][0] * sizeX, data.vertex[data.face[f][i]][1] * sizeY, data.vertex[data.face[f][i]][2] * sizeZ);\r\n indexes.push(index);\r\n index++;\r\n // uvs\r\n u = faceUV[f].x + (faceUV[f].z - faceUV[f].x) * (0.5 + x);\r\n v = faceUV[f].y + (faceUV[f].w - faceUV[f].y) * (y - 0.5);\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - v : v);\r\n tmp = x * Math.cos(ang) - y * Math.sin(ang);\r\n y = x * Math.sin(ang) + y * Math.cos(ang);\r\n x = tmp;\r\n // colors\r\n if (faceColors) {\r\n colors.push(faceColors[f].r, faceColors[f].g, faceColors[f].b, faceColors[f].a);\r\n }\r\n }\r\n\r\n // indices from indexes\r\n for (i = 0; i < fl - 2; i++) {\r\n indices.push(indexes[0 + faceIdx], indexes[i + 2 + faceIdx], indexes[i + 1 + faceIdx]);\r\n }\r\n faceIdx += fl;\r\n }\r\n }\r\n\r\n VertexData.ComputeNormals(positions, indices, normals);\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n const vertexData = new VertexData();\r\n vertexData.positions = positions;\r\n vertexData.indices = indices;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n if (faceColors && flat) {\r\n vertexData.colors = colors;\r\n }\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a polyhedron mesh\r\n * * The parameter `type` (positive integer, max 14, default 0) sets the polyhedron type to build among the 15 embbeded types. Please refer to the type sheet in the tutorial to choose the wanted type\r\n * * The parameter `size` (positive float, default 1) sets the polygon size\r\n * * You can overwrite the `size` on each dimension bu using the parameters `sizeX`, `sizeY` or `sizeZ` (positive floats, default to `size` value)\r\n * * You can build other polyhedron types than the 15 embbeded ones by setting the parameter `custom` (`polyhedronObject`, default null). If you set the parameter `custom`, this overrides the parameter `type`\r\n * * A `polyhedronObject` is a formatted javascript object. You'll find a full file with pre-set polyhedra here : https://github.com/BabylonJS/Extensions/tree/master/Polyhedron\r\n * * You can set the color and the UV of each side of the polyhedron with the parameters `faceColors` (Color4, default `(1, 1, 1, 1)`) and faceUV (Vector4, default `(0, 0, 1, 1)`)\r\n * * To understand how to set `faceUV` or `faceColors`, please read this by considering the right number of faces of your polyhedron, instead of only 6 for the box : https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * * The parameter `flat` (boolean, default true). If set to false, it gives the polyhedron a single global face, so less vertices and shared normals. In this case, `faceColors` and `faceUV` are ignored\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\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\r\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\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.type\r\n * @param options.size\r\n * @param options.sizeX\r\n * @param options.sizeY\r\n * @param options.sizeZ\r\n * @param options.custom\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.flat\r\n * @param options.updatable\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param scene defines the hosting scene\r\n * @returns the polyhedron mesh\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/polyhedra\r\n */\r\nexport function CreatePolyhedron(\r\n name: string,\r\n options: {\r\n type?: number;\r\n size?: number;\r\n sizeX?: number;\r\n sizeY?: number;\r\n sizeZ?: number;\r\n custom?: any;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n flat?: boolean;\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n } = {},\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const polyhedron = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n polyhedron._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreatePolyhedronVertexData(options);\r\n\r\n vertexData.applyToMesh(polyhedron, options.updatable);\r\n\r\n return polyhedron;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated use the function directly from the module\r\n */\r\nexport const PolyhedronBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreatePolyhedron,\r\n};\r\n\r\nVertexData.CreatePolyhedron = CreatePolyhedronVertexData;\r\n\r\nMesh.CreatePolyhedron = (\r\n name: string,\r\n options: {\r\n type?: number;\r\n size?: number;\r\n sizeX?: number;\r\n sizeY?: number;\r\n sizeZ?: number;\r\n custom?: any;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n },\r\n scene: Scene\r\n): Mesh => {\r\n return CreatePolyhedron(name, options, scene);\r\n};\r\n"]}
1
+ {"version":3,"file":"polyhedronBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/polyhedronBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n// inspired from // http://stemkoski.github.io/Three.js/Polyhedra.html\r\n/**\r\n * Creates the VertexData for a Polyhedron\r\n * @param options an object used to set the following optional parameters for the polyhedron, required but can be empty\r\n * * type provided types are:\r\n * * 0 : Tetrahedron, 1 : Octahedron, 2 : Dodecahedron, 3 : Icosahedron, 4 : Rhombicuboctahedron, 5 : Triangular Prism, 6 : Pentagonal Prism, 7 : Hexagonal Prism, 8 : Square Pyramid (J1)\r\n * * 9 : Pentagonal Pyramid (J2), 10 : Triangular Dipyramid (J12), 11 : Pentagonal Dipyramid (J13), 12 : Elongated Square Dipyramid (J15), 13 : Elongated Pentagonal Dipyramid (J16), 14 : Elongated Pentagonal Cupola (J20)\r\n * * size the size of the IcoSphere, optional default 1\r\n * * sizeX allows stretching in the x direction, optional, default size\r\n * * sizeY allows stretching in the y direction, optional, default size\r\n * * sizeZ allows stretching in the z direction, optional, default size\r\n * * custom a number that overwrites the type to create from an extended set of polyhedron from https://www.babylonjs-playground.com/#21QRSK#15 with minimised editor\r\n * * faceUV an array of Vector4 elements used to set different images to the top, rings and bottom respectively\r\n * * faceColors an array of Color3 elements used to set different colors to the top, rings and bottom respectively\r\n * * flat when true creates a flat shaded mesh, optional, default true\r\n * * subdivisions increasing the subdivisions increases the number of faces, optional, default 4\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\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)\r\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)\r\n * @returns the VertexData of the Polyhedron\r\n */\r\nexport function CreatePolyhedronVertexData(options: {\r\n type?: number;\r\n size?: number;\r\n sizeX?: number;\r\n sizeY?: number;\r\n sizeZ?: number;\r\n custom?: any;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n flat?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n}): VertexData {\r\n // provided polyhedron types :\r\n // 0 : Tetrahedron, 1 : Octahedron, 2 : Dodecahedron, 3 : Icosahedron, 4 : Rhombicuboctahedron, 5 : Triangular Prism, 6 : Pentagonal Prism, 7 : Hexagonal Prism, 8 : Square Pyramid (J1)\r\n // 9 : Pentagonal Pyramid (J2), 10 : Triangular Dipyramid (J12), 11 : Pentagonal Dipyramid (J13), 12 : Elongated Square Dipyramid (J15), 13 : Elongated Pentagonal Dipyramid (J16), 14 : Elongated Pentagonal Cupola (J20)\r\n const polyhedra: { vertex: number[][]; face: number[][] }[] = [];\r\n polyhedra[0] = {\r\n vertex: [\r\n [0, 0, 1.732051],\r\n [1.632993, 0, -0.5773503],\r\n [-0.8164966, 1.414214, -0.5773503],\r\n [-0.8164966, -1.414214, -0.5773503],\r\n ],\r\n face: [\r\n [0, 1, 2],\r\n [0, 2, 3],\r\n [0, 3, 1],\r\n [1, 3, 2],\r\n ],\r\n };\r\n polyhedra[1] = {\r\n vertex: [\r\n [0, 0, 1.414214],\r\n [1.414214, 0, 0],\r\n [0, 1.414214, 0],\r\n [-1.414214, 0, 0],\r\n [0, -1.414214, 0],\r\n [0, 0, -1.414214],\r\n ],\r\n face: [\r\n [0, 1, 2],\r\n [0, 2, 3],\r\n [0, 3, 4],\r\n [0, 4, 1],\r\n [1, 4, 5],\r\n [1, 5, 2],\r\n [2, 5, 3],\r\n [3, 5, 4],\r\n ],\r\n };\r\n polyhedra[2] = {\r\n vertex: [\r\n [0, 0, 1.070466],\r\n [0.7136442, 0, 0.7978784],\r\n [-0.3568221, 0.618034, 0.7978784],\r\n [-0.3568221, -0.618034, 0.7978784],\r\n [0.7978784, 0.618034, 0.3568221],\r\n [0.7978784, -0.618034, 0.3568221],\r\n [-0.9341724, 0.381966, 0.3568221],\r\n [0.1362939, 1, 0.3568221],\r\n [0.1362939, -1, 0.3568221],\r\n [-0.9341724, -0.381966, 0.3568221],\r\n [0.9341724, 0.381966, -0.3568221],\r\n [0.9341724, -0.381966, -0.3568221],\r\n [-0.7978784, 0.618034, -0.3568221],\r\n [-0.1362939, 1, -0.3568221],\r\n [-0.1362939, -1, -0.3568221],\r\n [-0.7978784, -0.618034, -0.3568221],\r\n [0.3568221, 0.618034, -0.7978784],\r\n [0.3568221, -0.618034, -0.7978784],\r\n [-0.7136442, 0, -0.7978784],\r\n [0, 0, -1.070466],\r\n ],\r\n face: [\r\n [0, 1, 4, 7, 2],\r\n [0, 2, 6, 9, 3],\r\n [0, 3, 8, 5, 1],\r\n [1, 5, 11, 10, 4],\r\n [2, 7, 13, 12, 6],\r\n [3, 9, 15, 14, 8],\r\n [4, 10, 16, 13, 7],\r\n [5, 8, 14, 17, 11],\r\n [6, 12, 18, 15, 9],\r\n [10, 11, 17, 19, 16],\r\n [12, 13, 16, 19, 18],\r\n [14, 15, 18, 19, 17],\r\n ],\r\n };\r\n polyhedra[3] = {\r\n vertex: [\r\n [0, 0, 1.175571],\r\n [1.051462, 0, 0.5257311],\r\n [0.3249197, 1, 0.5257311],\r\n [-0.8506508, 0.618034, 0.5257311],\r\n [-0.8506508, -0.618034, 0.5257311],\r\n [0.3249197, -1, 0.5257311],\r\n [0.8506508, 0.618034, -0.5257311],\r\n [0.8506508, -0.618034, -0.5257311],\r\n [-0.3249197, 1, -0.5257311],\r\n [-1.051462, 0, -0.5257311],\r\n [-0.3249197, -1, -0.5257311],\r\n [0, 0, -1.175571],\r\n ],\r\n face: [\r\n [0, 1, 2],\r\n [0, 2, 3],\r\n [0, 3, 4],\r\n [0, 4, 5],\r\n [0, 5, 1],\r\n [1, 5, 7],\r\n [1, 7, 6],\r\n [1, 6, 2],\r\n [2, 6, 8],\r\n [2, 8, 3],\r\n [3, 8, 9],\r\n [3, 9, 4],\r\n [4, 9, 10],\r\n [4, 10, 5],\r\n [5, 10, 7],\r\n [6, 7, 11],\r\n [6, 11, 8],\r\n [7, 10, 11],\r\n [8, 11, 9],\r\n [9, 11, 10],\r\n ],\r\n };\r\n polyhedra[4] = {\r\n vertex: [\r\n [0, 0, 1.070722],\r\n [0.7148135, 0, 0.7971752],\r\n [-0.104682, 0.7071068, 0.7971752],\r\n [-0.6841528, 0.2071068, 0.7971752],\r\n [-0.104682, -0.7071068, 0.7971752],\r\n [0.6101315, 0.7071068, 0.5236279],\r\n [1.04156, 0.2071068, 0.1367736],\r\n [0.6101315, -0.7071068, 0.5236279],\r\n [-0.3574067, 1, 0.1367736],\r\n [-0.7888348, -0.5, 0.5236279],\r\n [-0.9368776, 0.5, 0.1367736],\r\n [-0.3574067, -1, 0.1367736],\r\n [0.3574067, 1, -0.1367736],\r\n [0.9368776, -0.5, -0.1367736],\r\n [0.7888348, 0.5, -0.5236279],\r\n [0.3574067, -1, -0.1367736],\r\n [-0.6101315, 0.7071068, -0.5236279],\r\n [-1.04156, -0.2071068, -0.1367736],\r\n [-0.6101315, -0.7071068, -0.5236279],\r\n [0.104682, 0.7071068, -0.7971752],\r\n [0.6841528, -0.2071068, -0.7971752],\r\n [0.104682, -0.7071068, -0.7971752],\r\n [-0.7148135, 0, -0.7971752],\r\n [0, 0, -1.070722],\r\n ],\r\n face: [\r\n [0, 2, 3],\r\n [1, 6, 5],\r\n [4, 9, 11],\r\n [7, 15, 13],\r\n [8, 16, 10],\r\n [12, 14, 19],\r\n [17, 22, 18],\r\n [20, 21, 23],\r\n [0, 1, 5, 2],\r\n [0, 3, 9, 4],\r\n [0, 4, 7, 1],\r\n [1, 7, 13, 6],\r\n [2, 5, 12, 8],\r\n [2, 8, 10, 3],\r\n [3, 10, 17, 9],\r\n [4, 11, 15, 7],\r\n [5, 6, 14, 12],\r\n [6, 13, 20, 14],\r\n [8, 12, 19, 16],\r\n [9, 17, 18, 11],\r\n [10, 16, 22, 17],\r\n [11, 18, 21, 15],\r\n [13, 15, 21, 20],\r\n [14, 20, 23, 19],\r\n [16, 19, 23, 22],\r\n [18, 22, 23, 21],\r\n ],\r\n };\r\n polyhedra[5] = {\r\n vertex: [\r\n [0, 0, 1.322876],\r\n [1.309307, 0, 0.1889822],\r\n [-0.9819805, 0.8660254, 0.1889822],\r\n [0.1636634, -1.299038, 0.1889822],\r\n [0.3273268, 0.8660254, -0.9449112],\r\n [-0.8183171, -0.4330127, -0.9449112],\r\n ],\r\n face: [\r\n [0, 3, 1],\r\n [2, 4, 5],\r\n [0, 1, 4, 2],\r\n [0, 2, 5, 3],\r\n [1, 3, 5, 4],\r\n ],\r\n };\r\n polyhedra[6] = {\r\n vertex: [\r\n [0, 0, 1.159953],\r\n [1.013464, 0, 0.5642542],\r\n [-0.3501431, 0.9510565, 0.5642542],\r\n [-0.7715208, -0.6571639, 0.5642542],\r\n [0.6633206, 0.9510565, -0.03144481],\r\n [0.8682979, -0.6571639, -0.3996071],\r\n [-1.121664, 0.2938926, -0.03144481],\r\n [-0.2348831, -1.063314, -0.3996071],\r\n [0.5181548, 0.2938926, -0.9953061],\r\n [-0.5850262, -0.112257, -0.9953061],\r\n ],\r\n face: [\r\n [0, 1, 4, 2],\r\n [0, 2, 6, 3],\r\n [1, 5, 8, 4],\r\n [3, 6, 9, 7],\r\n [5, 7, 9, 8],\r\n [0, 3, 7, 5, 1],\r\n [2, 4, 8, 9, 6],\r\n ],\r\n };\r\n polyhedra[7] = {\r\n vertex: [\r\n [0, 0, 1.118034],\r\n [0.8944272, 0, 0.6708204],\r\n [-0.2236068, 0.8660254, 0.6708204],\r\n [-0.7826238, -0.4330127, 0.6708204],\r\n [0.6708204, 0.8660254, 0.2236068],\r\n [1.006231, -0.4330127, -0.2236068],\r\n [-1.006231, 0.4330127, 0.2236068],\r\n [-0.6708204, -0.8660254, -0.2236068],\r\n [0.7826238, 0.4330127, -0.6708204],\r\n [0.2236068, -0.8660254, -0.6708204],\r\n [-0.8944272, 0, -0.6708204],\r\n [0, 0, -1.118034],\r\n ],\r\n face: [\r\n [0, 1, 4, 2],\r\n [0, 2, 6, 3],\r\n [1, 5, 8, 4],\r\n [3, 6, 10, 7],\r\n [5, 9, 11, 8],\r\n [7, 10, 11, 9],\r\n [0, 3, 7, 9, 5, 1],\r\n [2, 4, 8, 11, 10, 6],\r\n ],\r\n };\r\n polyhedra[8] = {\r\n vertex: [\r\n [-0.729665, 0.670121, 0.319155],\r\n [-0.655235, -0.29213, -0.754096],\r\n [-0.093922, -0.607123, 0.537818],\r\n [0.702196, 0.595691, 0.485187],\r\n [0.776626, -0.36656, -0.588064],\r\n ],\r\n face: [\r\n [1, 4, 2],\r\n [0, 1, 2],\r\n [3, 0, 2],\r\n [4, 3, 2],\r\n [4, 1, 0, 3],\r\n ],\r\n };\r\n polyhedra[9] = {\r\n vertex: [\r\n [-0.868849, -0.100041, 0.61257],\r\n [-0.329458, 0.976099, 0.28078],\r\n [-0.26629, -0.013796, -0.477654],\r\n [-0.13392, -1.034115, 0.229829],\r\n [0.738834, 0.707117, -0.307018],\r\n [0.859683, -0.535264, -0.338508],\r\n ],\r\n face: [\r\n [3, 0, 2],\r\n [5, 3, 2],\r\n [4, 5, 2],\r\n [1, 4, 2],\r\n [0, 1, 2],\r\n [0, 3, 5, 4, 1],\r\n ],\r\n };\r\n polyhedra[10] = {\r\n vertex: [\r\n [-0.610389, 0.243975, 0.531213],\r\n [-0.187812, -0.48795, -0.664016],\r\n [-0.187812, 0.9759, -0.664016],\r\n [0.187812, -0.9759, 0.664016],\r\n [0.798201, 0.243975, 0.132803],\r\n ],\r\n face: [\r\n [1, 3, 0],\r\n [3, 4, 0],\r\n [3, 1, 4],\r\n [0, 2, 1],\r\n [0, 4, 2],\r\n [2, 4, 1],\r\n ],\r\n };\r\n polyhedra[11] = {\r\n vertex: [\r\n [-1.028778, 0.392027, -0.048786],\r\n [-0.640503, -0.646161, 0.621837],\r\n [-0.125162, -0.395663, -0.540059],\r\n [0.004683, 0.888447, -0.651988],\r\n [0.125161, 0.395663, 0.540059],\r\n [0.632925, -0.791376, 0.433102],\r\n [1.031672, 0.157063, -0.354165],\r\n ],\r\n face: [\r\n [3, 2, 0],\r\n [2, 1, 0],\r\n [2, 5, 1],\r\n [0, 4, 3],\r\n [0, 1, 4],\r\n [4, 1, 5],\r\n [2, 3, 6],\r\n [3, 4, 6],\r\n [5, 2, 6],\r\n [4, 5, 6],\r\n ],\r\n };\r\n polyhedra[12] = {\r\n vertex: [\r\n [-0.669867, 0.334933, -0.529576],\r\n [-0.669867, 0.334933, 0.529577],\r\n [-0.4043, 1.212901, 0],\r\n [-0.334933, -0.669867, -0.529576],\r\n [-0.334933, -0.669867, 0.529577],\r\n [0.334933, 0.669867, -0.529576],\r\n [0.334933, 0.669867, 0.529577],\r\n [0.4043, -1.212901, 0],\r\n [0.669867, -0.334933, -0.529576],\r\n [0.669867, -0.334933, 0.529577],\r\n ],\r\n face: [\r\n [8, 9, 7],\r\n [6, 5, 2],\r\n [3, 8, 7],\r\n [5, 0, 2],\r\n [4, 3, 7],\r\n [0, 1, 2],\r\n [9, 4, 7],\r\n [1, 6, 2],\r\n [9, 8, 5, 6],\r\n [8, 3, 0, 5],\r\n [3, 4, 1, 0],\r\n [4, 9, 6, 1],\r\n ],\r\n };\r\n polyhedra[13] = {\r\n vertex: [\r\n [-0.931836, 0.219976, -0.264632],\r\n [-0.636706, 0.318353, 0.692816],\r\n [-0.613483, -0.735083, -0.264632],\r\n [-0.326545, 0.979634, 0],\r\n [-0.318353, -0.636706, 0.692816],\r\n [-0.159176, 0.477529, -0.856368],\r\n [0.159176, -0.477529, -0.856368],\r\n [0.318353, 0.636706, 0.692816],\r\n [0.326545, -0.979634, 0],\r\n [0.613482, 0.735082, -0.264632],\r\n [0.636706, -0.318353, 0.692816],\r\n [0.931835, -0.219977, -0.264632],\r\n ],\r\n face: [\r\n [11, 10, 8],\r\n [7, 9, 3],\r\n [6, 11, 8],\r\n [9, 5, 3],\r\n [2, 6, 8],\r\n [5, 0, 3],\r\n [4, 2, 8],\r\n [0, 1, 3],\r\n [10, 4, 8],\r\n [1, 7, 3],\r\n [10, 11, 9, 7],\r\n [11, 6, 5, 9],\r\n [6, 2, 0, 5],\r\n [2, 4, 1, 0],\r\n [4, 10, 7, 1],\r\n ],\r\n };\r\n polyhedra[14] = {\r\n vertex: [\r\n [-0.93465, 0.300459, -0.271185],\r\n [-0.838689, -0.260219, -0.516017],\r\n [-0.711319, 0.717591, 0.128359],\r\n [-0.710334, -0.156922, 0.080946],\r\n [-0.599799, 0.556003, -0.725148],\r\n [-0.503838, -0.004675, -0.969981],\r\n [-0.487004, 0.26021, 0.48049],\r\n [-0.460089, -0.750282, -0.512622],\r\n [-0.376468, 0.973135, -0.325605],\r\n [-0.331735, -0.646985, 0.084342],\r\n [-0.254001, 0.831847, 0.530001],\r\n [-0.125239, -0.494738, -0.966586],\r\n [0.029622, 0.027949, 0.730817],\r\n [0.056536, -0.982543, -0.262295],\r\n [0.08085, 1.087391, 0.076037],\r\n [0.125583, -0.532729, 0.485984],\r\n [0.262625, 0.599586, 0.780328],\r\n [0.391387, -0.726999, -0.716259],\r\n [0.513854, -0.868287, 0.139347],\r\n [0.597475, 0.85513, 0.326364],\r\n [0.641224, 0.109523, 0.783723],\r\n [0.737185, -0.451155, 0.538891],\r\n [0.848705, -0.612742, -0.314616],\r\n [0.976075, 0.365067, 0.32976],\r\n [1.072036, -0.19561, 0.084927],\r\n ],\r\n face: [\r\n [15, 18, 21],\r\n [12, 20, 16],\r\n [6, 10, 2],\r\n [3, 0, 1],\r\n [9, 7, 13],\r\n [2, 8, 4, 0],\r\n [0, 4, 5, 1],\r\n [1, 5, 11, 7],\r\n [7, 11, 17, 13],\r\n [13, 17, 22, 18],\r\n [18, 22, 24, 21],\r\n [21, 24, 23, 20],\r\n [20, 23, 19, 16],\r\n [16, 19, 14, 10],\r\n [10, 14, 8, 2],\r\n [15, 9, 13, 18],\r\n [12, 15, 21, 20],\r\n [6, 12, 16, 10],\r\n [3, 6, 2, 0],\r\n [9, 3, 1, 7],\r\n [9, 15, 12, 6, 3],\r\n [22, 17, 11, 5, 4, 8, 14, 19, 23, 24],\r\n ],\r\n };\r\n\r\n const type: number = options.type && (options.type < 0 || options.type >= polyhedra.length) ? 0 : options.type || 0;\r\n const size = options.size;\r\n const sizeX: number = options.sizeX || size || 1;\r\n const sizeY: number = options.sizeY || size || 1;\r\n const sizeZ: number = options.sizeZ || size || 1;\r\n const data: { vertex: number[][]; face: number[][]; name?: string; category?: string } = options.custom || polyhedra[type];\r\n const nbfaces = data.face.length;\r\n const faceUV = options.faceUV || new Array(nbfaces);\r\n const faceColors = options.faceColors;\r\n const flat = options.flat === undefined ? true : options.flat;\r\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n\r\n const positions: number[] = [];\r\n const indices: number[] = [];\r\n const normals: number[] = [];\r\n const uvs: number[] = [];\r\n const colors: number[] = [];\r\n let index = 0;\r\n let faceIdx = 0; // face cursor in the array \"indexes\"\r\n const indexes: number[] = [];\r\n let i = 0;\r\n let f = 0;\r\n let u: number, v: number, ang: number, x: number, y: number, tmp: number;\r\n\r\n // default face colors and UV if undefined\r\n if (flat) {\r\n for (f = 0; f < nbfaces; f++) {\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n if (faceUV && faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n }\r\n }\r\n\r\n if (!flat) {\r\n for (i = 0; i < data.vertex.length; i++) {\r\n positions.push(data.vertex[i][0] * sizeX, data.vertex[i][1] * sizeY, data.vertex[i][2] * sizeZ);\r\n uvs.push(0, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 : 0);\r\n }\r\n for (f = 0; f < nbfaces; f++) {\r\n for (i = 0; i < data.face[f].length - 2; i++) {\r\n indices.push(data.face[f][0], data.face[f][i + 2], data.face[f][i + 1]);\r\n }\r\n }\r\n } else {\r\n for (f = 0; f < nbfaces; f++) {\r\n const fl = data.face[f].length; // number of vertices of the current face\r\n ang = (2 * Math.PI) / fl;\r\n x = 0.5 * Math.tan(ang / 2);\r\n y = 0.5;\r\n\r\n // positions, uvs, colors\r\n for (i = 0; i < fl; i++) {\r\n // positions\r\n positions.push(data.vertex[data.face[f][i]][0] * sizeX, data.vertex[data.face[f][i]][1] * sizeY, data.vertex[data.face[f][i]][2] * sizeZ);\r\n indexes.push(index);\r\n index++;\r\n // uvs\r\n u = faceUV[f].x + (faceUV[f].z - faceUV[f].x) * (0.5 + x);\r\n v = faceUV[f].y + (faceUV[f].w - faceUV[f].y) * (y - 0.5);\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - v : v);\r\n tmp = x * Math.cos(ang) - y * Math.sin(ang);\r\n y = x * Math.sin(ang) + y * Math.cos(ang);\r\n x = tmp;\r\n // colors\r\n if (faceColors) {\r\n colors.push(faceColors[f].r, faceColors[f].g, faceColors[f].b, faceColors[f].a);\r\n }\r\n }\r\n\r\n // indices from indexes\r\n for (i = 0; i < fl - 2; i++) {\r\n indices.push(indexes[0 + faceIdx], indexes[i + 2 + faceIdx], indexes[i + 1 + faceIdx]);\r\n }\r\n faceIdx += fl;\r\n }\r\n }\r\n\r\n VertexData.ComputeNormals(positions, indices, normals);\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n const vertexData = new VertexData();\r\n vertexData.positions = positions;\r\n vertexData.indices = indices;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n if (faceColors && flat) {\r\n vertexData.colors = colors;\r\n }\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a polyhedron mesh\r\n * * The parameter `type` (positive integer, max 14, default 0) sets the polyhedron type to build among the 15 embbeded types. Please refer to the type sheet in the tutorial to choose the wanted type\r\n * * The parameter `size` (positive float, default 1) sets the polygon size\r\n * * You can overwrite the `size` on each dimension bu using the parameters `sizeX`, `sizeY` or `sizeZ` (positive floats, default to `size` value)\r\n * * You can build other polyhedron types than the 15 embbeded ones by setting the parameter `custom` (`polyhedronObject`, default null). If you set the parameter `custom`, this overrides the parameter `type`\r\n * * A `polyhedronObject` is a formatted javascript object. You'll find a full file with pre-set polyhedra here : https://github.com/BabylonJS/Extensions/tree/master/Polyhedron\r\n * * You can set the color and the UV of each side of the polyhedron with the parameters `faceColors` (Color4, default `(1, 1, 1, 1)`) and faceUV (Vector4, default `(0, 0, 1, 1)`)\r\n * * To understand how to set `faceUV` or `faceColors`, please read this by considering the right number of faces of your polyhedron, instead of only 6 for the box : https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * * The parameter `flat` (boolean, default true). If set to false, it gives the polyhedron a single global face, so less vertices and shared normals. In this case, `faceColors` and `faceUV` are ignored\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\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\r\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\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param scene defines the hosting scene\r\n * @returns the polyhedron mesh\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/polyhedra\r\n */\r\nexport function CreatePolyhedron(\r\n name: string,\r\n options: {\r\n type?: number;\r\n size?: number;\r\n sizeX?: number;\r\n sizeY?: number;\r\n sizeZ?: number;\r\n custom?: any;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n flat?: boolean;\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n } = {},\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const polyhedron = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n polyhedron._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreatePolyhedronVertexData(options);\r\n\r\n vertexData.applyToMesh(polyhedron, options.updatable);\r\n\r\n return polyhedron;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated use the function directly from the module\r\n */\r\nexport const PolyhedronBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreatePolyhedron,\r\n};\r\n\r\nVertexData.CreatePolyhedron = CreatePolyhedronVertexData;\r\n\r\nMesh.CreatePolyhedron = (\r\n name: string,\r\n options: {\r\n type?: number;\r\n size?: number;\r\n sizeX?: number;\r\n sizeY?: number;\r\n sizeZ?: number;\r\n custom?: any;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n },\r\n scene: Scene\r\n): Mesh => {\r\n return CreatePolyhedron(name, options, scene);\r\n};\r\n"]}
@@ -17,16 +17,6 @@ import { VertexData } from "../mesh.vertexData";
17
17
  * * invertUV swaps in the U and V coordinates when applying a texture, optional, default false
18
18
  * * uvs a linear array, of length 2 * number of vertices, of custom UV values, optional
19
19
  * * colors a linear array, of length 4 * number of vertices, of custom color values, optional
20
- * @param options.pathArray
21
- * @param options.closeArray
22
- * @param options.closePath
23
- * @param options.offset
24
- * @param options.sideOrientation
25
- * @param options.frontUVs
26
- * @param options.backUVs
27
- * @param options.invertUV
28
- * @param options.uvs
29
- * @param options.colors
30
20
  * @returns the VertexData of the ribbon
31
21
  */
32
22
  export declare function CreateRibbonVertexData(options: {
@@ -59,18 +49,6 @@ export declare function CreateRibbonVertexData(options: {
59
49
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created
60
50
  * @param name defines the name of the mesh
61
51
  * @param options defines the options used to create the mesh
62
- * @param options.pathArray
63
- * @param options.closeArray
64
- * @param options.closePath
65
- * @param options.offset
66
- * @param options.updatable
67
- * @param options.sideOrientation
68
- * @param options.frontUVs
69
- * @param options.backUVs
70
- * @param options.instance
71
- * @param options.invertUV
72
- * @param options.uvs
73
- * @param options.colors
74
52
  * @param scene defines the hosting scene
75
53
  * @returns the ribbon mesh
76
54
  * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon_extra
@@ -16,16 +16,6 @@ import { CompatibilityOptions } from "../../Compat/compatibilityOptions.js";
16
16
  * * invertUV swaps in the U and V coordinates when applying a texture, optional, default false
17
17
  * * uvs a linear array, of length 2 * number of vertices, of custom UV values, optional
18
18
  * * colors a linear array, of length 4 * number of vertices, of custom color values, optional
19
- * @param options.pathArray
20
- * @param options.closeArray
21
- * @param options.closePath
22
- * @param options.offset
23
- * @param options.sideOrientation
24
- * @param options.frontUVs
25
- * @param options.backUVs
26
- * @param options.invertUV
27
- * @param options.uvs
28
- * @param options.colors
29
19
  * @returns the VertexData of the ribbon
30
20
  */
31
21
  export function CreateRibbonVertexData(options) {
@@ -262,18 +252,6 @@ export function CreateRibbonVertexData(options) {
262
252
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created
263
253
  * @param name defines the name of the mesh
264
254
  * @param options defines the options used to create the mesh
265
- * @param options.pathArray
266
- * @param options.closeArray
267
- * @param options.closePath
268
- * @param options.offset
269
- * @param options.updatable
270
- * @param options.sideOrientation
271
- * @param options.frontUVs
272
- * @param options.backUVs
273
- * @param options.instance
274
- * @param options.invertUV
275
- * @param options.uvs
276
- * @param options.colors
277
255
  * @param scene defines the hosting scene
278
256
  * @returns the ribbon mesh
279
257
  * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon_extra