@babylonjs/core 5.32.0 → 5.32.2

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 (636) hide show
  1. package/Actions/abstractActionManager.d.ts +1 -1
  2. package/Actions/abstractActionManager.js +1 -1
  3. package/Actions/abstractActionManager.js.map +1 -1
  4. package/Actions/action.d.ts +1 -1
  5. package/Actions/action.js +1 -1
  6. package/Actions/action.js.map +1 -1
  7. package/Actions/actionManager.d.ts +18 -18
  8. package/Actions/actionManager.js +18 -18
  9. package/Actions/actionManager.js.map +1 -1
  10. package/Actions/directActions.d.ts +10 -10
  11. package/Actions/directActions.js +10 -10
  12. package/Actions/directActions.js.map +1 -1
  13. package/Actions/interpolateValueAction.d.ts +1 -1
  14. package/Actions/interpolateValueAction.js +1 -1
  15. package/Actions/interpolateValueAction.js.map +1 -1
  16. package/Animations/animatable.d.ts +2 -2
  17. package/Animations/animatable.js +2 -2
  18. package/Animations/animatable.js.map +1 -1
  19. package/Animations/animationGroup.d.ts +3 -3
  20. package/Animations/animationGroup.js +3 -3
  21. package/Animations/animationGroup.js.map +1 -1
  22. package/Animations/easing.d.ts +14 -14
  23. package/Animations/easing.js +13 -13
  24. package/Animations/easing.js.map +1 -1
  25. package/Audio/Interfaces/IAudioEngine.d.ts +2 -2
  26. package/Audio/Interfaces/IAudioEngine.js.map +1 -1
  27. package/Audio/Interfaces/ISoundOptions.d.ts +3 -3
  28. package/Audio/Interfaces/ISoundOptions.js.map +1 -1
  29. package/Audio/analyser.d.ts +1 -1
  30. package/Audio/analyser.js +1 -1
  31. package/Audio/analyser.js.map +1 -1
  32. package/Audio/audioEngine.d.ts +2 -2
  33. package/Audio/audioEngine.js +2 -2
  34. package/Audio/audioEngine.js.map +1 -1
  35. package/Audio/audioSceneComponent.d.ts +4 -4
  36. package/Audio/audioSceneComponent.js.map +1 -1
  37. package/Audio/sound.d.ts +13 -13
  38. package/Audio/sound.js +13 -13
  39. package/Audio/sound.js.map +1 -1
  40. package/Audio/soundTrack.d.ts +5 -5
  41. package/Audio/soundTrack.js +5 -5
  42. package/Audio/soundTrack.js.map +1 -1
  43. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  44. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  45. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  46. package/Behaviors/Cameras/autoRotationBehavior.d.ts +1 -1
  47. package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
  48. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  49. package/Behaviors/Cameras/bouncingBehavior.d.ts +1 -1
  50. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  51. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  52. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  53. package/Behaviors/Cameras/framingBehavior.js +1 -1
  54. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  55. package/Behaviors/Meshes/pointerDragBehavior.d.ts +8 -0
  56. package/Behaviors/Meshes/pointerDragBehavior.js +9 -3
  57. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  58. package/Bones/bone.d.ts +1 -1
  59. package/Bones/bone.js +1 -1
  60. package/Bones/bone.js.map +1 -1
  61. package/Bones/boneIKController.d.ts +1 -1
  62. package/Bones/boneIKController.js +1 -1
  63. package/Bones/boneIKController.js.map +1 -1
  64. package/Bones/boneLookController.d.ts +1 -1
  65. package/Bones/boneLookController.js +1 -1
  66. package/Bones/boneLookController.js.map +1 -1
  67. package/Bones/skeleton.d.ts +3 -3
  68. package/Bones/skeleton.js +2 -2
  69. package/Bones/skeleton.js.map +1 -1
  70. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +2 -2
  71. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  72. package/Cameras/Inputs/BaseCameraPointersInput.js +2 -2
  73. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  74. package/Cameras/Inputs/arcRotateCameraGamepadInput.d.ts +1 -1
  75. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +1 -1
  76. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  77. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +1 -1
  78. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  79. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  80. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.d.ts +1 -1
  81. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +3 -3
  82. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  83. package/Cameras/Inputs/arcRotateCameraPointersInput.d.ts +1 -1
  84. package/Cameras/Inputs/arcRotateCameraPointersInput.js +1 -1
  85. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  86. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.d.ts +1 -1
  87. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +1 -1
  88. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js.map +1 -1
  89. package/Cameras/Inputs/flyCameraKeyboardInput.d.ts +1 -1
  90. package/Cameras/Inputs/flyCameraKeyboardInput.js +1 -1
  91. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  92. package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -2
  93. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  94. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  95. package/Cameras/Inputs/followCameraKeyboardMoveInput.d.ts +1 -1
  96. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  97. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  98. package/Cameras/Inputs/followCameraMouseWheelInput.d.ts +1 -1
  99. package/Cameras/Inputs/followCameraMouseWheelInput.js +3 -3
  100. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  101. package/Cameras/Inputs/followCameraPointersInput.d.ts +1 -1
  102. package/Cameras/Inputs/followCameraPointersInput.js +1 -1
  103. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  104. package/Cameras/Inputs/freeCameraDeviceOrientationInput.d.ts +2 -2
  105. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +2 -2
  106. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
  107. package/Cameras/Inputs/freeCameraGamepadInput.d.ts +1 -1
  108. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  109. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  110. package/Cameras/Inputs/freeCameraKeyboardMoveInput.d.ts +1 -1
  111. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +1 -1
  112. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  113. package/Cameras/Inputs/freeCameraMouseInput.d.ts +3 -2
  114. package/Cameras/Inputs/freeCameraMouseInput.js +10 -7
  115. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  116. package/Cameras/Inputs/freeCameraMouseWheelInput.d.ts +1 -1
  117. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  118. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  119. package/Cameras/Inputs/freeCameraTouchInput.d.ts +2 -2
  120. package/Cameras/Inputs/freeCameraTouchInput.js +4 -4
  121. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  122. package/Cameras/Inputs/freeCameraVirtualJoystickInput.d.ts +1 -1
  123. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +1 -1
  124. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js.map +1 -1
  125. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +1 -1
  126. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js +1 -1
  127. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  128. package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +1 -1
  129. package/Cameras/Stereoscopic/anaglyphFreeCamera.js +1 -1
  130. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  131. package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +1 -1
  132. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js +1 -1
  133. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  134. package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +1 -1
  135. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js +1 -1
  136. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  137. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +1 -1
  138. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js +1 -1
  139. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  140. package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +1 -1
  141. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js +1 -1
  142. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  143. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +1 -1
  144. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js +1 -1
  145. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  146. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +1 -1
  147. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +1 -1
  148. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  149. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +1 -1
  150. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js +1 -1
  151. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  152. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  153. package/Cameras/VR/vrCameraMetrics.js +1 -1
  154. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  155. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +1 -1
  156. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +1 -1
  157. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  158. package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +1 -1
  159. package/Cameras/VR/vrDeviceOrientationFreeCamera.js +1 -1
  160. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  161. package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +1 -1
  162. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js +1 -1
  163. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  164. package/Cameras/VR/vrExperienceHelper.d.ts +2 -2
  165. package/Cameras/VR/vrExperienceHelper.js +2 -2
  166. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  167. package/Cameras/VR/webVRCamera.d.ts +2 -2
  168. package/Cameras/VR/webVRCamera.js +2 -2
  169. package/Cameras/VR/webVRCamera.js.map +1 -1
  170. package/Cameras/arcRotateCamera.d.ts +9 -9
  171. package/Cameras/arcRotateCamera.js +9 -9
  172. package/Cameras/arcRotateCamera.js.map +1 -1
  173. package/Cameras/arcRotateCameraInputsManager.d.ts +1 -1
  174. package/Cameras/arcRotateCameraInputsManager.js +1 -1
  175. package/Cameras/arcRotateCameraInputsManager.js.map +1 -1
  176. package/Cameras/camera.d.ts +4 -4
  177. package/Cameras/camera.js +4 -4
  178. package/Cameras/camera.js.map +1 -1
  179. package/Cameras/cameraInputsManager.d.ts +1 -1
  180. package/Cameras/cameraInputsManager.js +1 -1
  181. package/Cameras/cameraInputsManager.js.map +1 -1
  182. package/Cameras/flyCamera.d.ts +1 -1
  183. package/Cameras/flyCamera.js +1 -1
  184. package/Cameras/flyCamera.js.map +1 -1
  185. package/Cameras/flyCameraInputsManager.d.ts +1 -1
  186. package/Cameras/flyCameraInputsManager.js +1 -1
  187. package/Cameras/flyCameraInputsManager.js.map +1 -1
  188. package/Cameras/followCamera.d.ts +4 -4
  189. package/Cameras/followCamera.js +4 -4
  190. package/Cameras/followCamera.js.map +1 -1
  191. package/Cameras/followCameraInputsManager.d.ts +1 -1
  192. package/Cameras/followCameraInputsManager.js +1 -1
  193. package/Cameras/followCameraInputsManager.js.map +1 -1
  194. package/Cameras/freeCamera.d.ts +3 -3
  195. package/Cameras/freeCamera.js +3 -3
  196. package/Cameras/freeCamera.js.map +1 -1
  197. package/Cameras/freeCameraInputsManager.d.ts +1 -1
  198. package/Cameras/freeCameraInputsManager.js +1 -1
  199. package/Cameras/freeCameraInputsManager.js.map +1 -1
  200. package/Cameras/gamepadCamera.d.ts +2 -2
  201. package/Cameras/gamepadCamera.js +2 -2
  202. package/Cameras/gamepadCamera.js.map +1 -1
  203. package/Cameras/targetCamera.d.ts +2 -2
  204. package/Cameras/targetCamera.js +2 -2
  205. package/Cameras/targetCamera.js.map +1 -1
  206. package/Cameras/touchCamera.d.ts +2 -2
  207. package/Cameras/touchCamera.js +2 -2
  208. package/Cameras/touchCamera.js.map +1 -1
  209. package/Cameras/universalCamera.d.ts +2 -2
  210. package/Cameras/universalCamera.js +2 -2
  211. package/Cameras/universalCamera.js.map +1 -1
  212. package/Cameras/virtualJoysticksCamera.d.ts +2 -2
  213. package/Cameras/virtualJoysticksCamera.js +2 -2
  214. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  215. package/Collisions/pickingInfo.d.ts +1 -1
  216. package/Collisions/pickingInfo.js +1 -1
  217. package/Collisions/pickingInfo.js.map +1 -1
  218. package/Culling/Octrees/octree.d.ts +2 -2
  219. package/Culling/Octrees/octree.js +2 -2
  220. package/Culling/Octrees/octree.js.map +1 -1
  221. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  222. package/Culling/Octrees/octreeBlock.js +1 -1
  223. package/Culling/Octrees/octreeBlock.js.map +1 -1
  224. package/Culling/Octrees/octreeSceneComponent.d.ts +3 -3
  225. package/Culling/Octrees/octreeSceneComponent.js +1 -1
  226. package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
  227. package/Culling/boundingInfo.d.ts +3 -3
  228. package/Culling/boundingInfo.js +2 -2
  229. package/Culling/boundingInfo.js.map +1 -1
  230. package/Debug/debugLayer.d.ts +1 -1
  231. package/Debug/debugLayer.js.map +1 -1
  232. package/Debug/rayHelper.d.ts +2 -2
  233. package/Debug/rayHelper.js +2 -2
  234. package/Debug/rayHelper.js.map +1 -1
  235. package/Engines/Extensions/engine.alpha.d.ts +2 -2
  236. package/Engines/Extensions/engine.alpha.js.map +1 -1
  237. package/Engines/Extensions/engine.multiRender.d.ts +2 -2
  238. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  239. package/Engines/Extensions/engine.query.d.ts +8 -8
  240. package/Engines/Extensions/engine.query.js.map +1 -1
  241. package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
  242. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  243. package/Engines/Extensions/engine.uniformBuffer.d.ts +3 -3
  244. package/Engines/Extensions/engine.uniformBuffer.js.map +1 -1
  245. package/Engines/Extensions/engine.views.d.ts +2 -2
  246. package/Engines/Extensions/engine.views.js +1 -1
  247. package/Engines/Extensions/engine.views.js.map +1 -1
  248. package/Engines/Extensions/engine.webVR.d.ts +1 -1
  249. package/Engines/Extensions/engine.webVR.js.map +1 -1
  250. package/Engines/Processors/shaderProcessor.d.ts +2 -2
  251. package/Engines/Processors/shaderProcessor.js +2 -2
  252. package/Engines/Processors/shaderProcessor.js.map +1 -1
  253. package/Engines/WebGPU/webgpuShaderProcessor.js +11 -9
  254. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  255. package/Engines/constants.d.ts +17 -17
  256. package/Engines/constants.js +17 -17
  257. package/Engines/constants.js.map +1 -1
  258. package/Engines/engine.d.ts +12 -12
  259. package/Engines/engine.js +11 -11
  260. package/Engines/engine.js.map +1 -1
  261. package/Engines/nativeEngine.d.ts +2 -2
  262. package/Engines/nativeEngine.js +23 -2
  263. package/Engines/nativeEngine.js.map +1 -1
  264. package/Engines/nullEngine.d.ts +5 -5
  265. package/Engines/nullEngine.js +5 -5
  266. package/Engines/nullEngine.js.map +1 -1
  267. package/Engines/thinEngine.d.ts +8 -8
  268. package/Engines/thinEngine.js +6 -6
  269. package/Engines/thinEngine.js.map +1 -1
  270. package/Engines/webgpuEngine.d.ts +4 -4
  271. package/Engines/webgpuEngine.js +1 -1
  272. package/Engines/webgpuEngine.js.map +1 -1
  273. package/Gamepads/gamepadSceneComponent.d.ts +1 -1
  274. package/Gamepads/gamepadSceneComponent.js.map +1 -1
  275. package/Gizmos/gizmo.d.ts +6 -7
  276. package/Gizmos/gizmo.js +43 -36
  277. package/Gizmos/gizmo.js.map +1 -1
  278. package/Gizmos/planeRotationGizmo.js +17 -7
  279. package/Gizmos/planeRotationGizmo.js.map +1 -1
  280. package/Gizmos/positionGizmo.d.ts +4 -0
  281. package/Gizmos/positionGizmo.js +21 -0
  282. package/Gizmos/positionGizmo.js.map +1 -1
  283. package/Gizmos/rotationGizmo.d.ts +4 -0
  284. package/Gizmos/rotationGizmo.js +20 -0
  285. package/Gizmos/rotationGizmo.js.map +1 -1
  286. package/Gizmos/scaleGizmo.d.ts +2 -0
  287. package/Gizmos/scaleGizmo.js +10 -0
  288. package/Gizmos/scaleGizmo.js.map +1 -1
  289. package/Helpers/sceneHelpers.d.ts +7 -7
  290. package/Helpers/sceneHelpers.js.map +1 -1
  291. package/Inputs/scene.inputManager.js +34 -25
  292. package/Inputs/scene.inputManager.js.map +1 -1
  293. package/Instrumentation/engineInstrumentation.d.ts +2 -2
  294. package/Instrumentation/engineInstrumentation.js +2 -2
  295. package/Instrumentation/engineInstrumentation.js.map +1 -1
  296. package/Instrumentation/sceneInstrumentation.d.ts +2 -2
  297. package/Instrumentation/sceneInstrumentation.js +2 -2
  298. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  299. package/Layers/effectLayerSceneComponent.d.ts +2 -2
  300. package/Layers/effectLayerSceneComponent.js.map +1 -1
  301. package/Layers/glowLayer.d.ts +1 -1
  302. package/Layers/glowLayer.js +1 -1
  303. package/Layers/glowLayer.js.map +1 -1
  304. package/LensFlares/lensFlare.d.ts +3 -3
  305. package/LensFlares/lensFlare.js +3 -3
  306. package/LensFlares/lensFlare.js.map +1 -1
  307. package/LensFlares/lensFlareSystem.d.ts +2 -2
  308. package/LensFlares/lensFlareSystem.js +2 -2
  309. package/LensFlares/lensFlareSystem.js.map +1 -1
  310. package/LensFlares/lensFlareSystemSceneComponent.d.ts +1 -1
  311. package/LensFlares/lensFlareSystemSceneComponent.js.map +1 -1
  312. package/Lights/Shadows/shadowGenerator.d.ts +2 -2
  313. package/Lights/Shadows/shadowGenerator.js +2 -2
  314. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  315. package/Lights/directionalLight.d.ts +2 -2
  316. package/Lights/directionalLight.js +2 -2
  317. package/Lights/directionalLight.js.map +1 -1
  318. package/Lights/hemisphericLight.d.ts +1 -1
  319. package/Lights/hemisphericLight.js +1 -1
  320. package/Lights/hemisphericLight.js.map +1 -1
  321. package/Lights/light.d.ts +1 -1
  322. package/Lights/light.js +1 -1
  323. package/Lights/light.js.map +1 -1
  324. package/Lights/pointLight.d.ts +2 -2
  325. package/Lights/pointLight.js +2 -2
  326. package/Lights/pointLight.js.map +1 -1
  327. package/Lights/spotLight.d.ts +2 -2
  328. package/Lights/spotLight.js +2 -2
  329. package/Lights/spotLight.js.map +1 -1
  330. package/Loading/loadingScreen.d.ts +2 -2
  331. package/Loading/loadingScreen.js +1 -1
  332. package/Loading/loadingScreen.js.map +1 -1
  333. package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +1 -1
  334. package/Materials/Node/Blocks/Vertex/instancesBlock.js +1 -1
  335. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  336. package/Materials/Node/Blocks/reciprocalBlock.js +6 -2
  337. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  338. package/Materials/PBR/pbrBaseMaterial.d.ts +1 -1
  339. package/Materials/PBR/pbrBaseMaterial.js +1 -1
  340. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  341. package/Materials/PBR/pbrMaterial.d.ts +1 -1
  342. package/Materials/PBR/pbrMaterial.js +1 -1
  343. package/Materials/PBR/pbrMaterial.js.map +1 -1
  344. package/Materials/Textures/Packer/packer.d.ts +1 -1
  345. package/Materials/Textures/Packer/packer.js +1 -1
  346. package/Materials/Textures/Packer/packer.js.map +1 -1
  347. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  348. package/Materials/Textures/Procedurals/customProceduralTexture.js +2 -2
  349. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  350. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +2 -2
  351. package/Materials/Textures/Procedurals/proceduralTexture.js +2 -2
  352. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  353. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.d.ts +1 -1
  354. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  355. package/Materials/Textures/cubeTexture.d.ts +2 -2
  356. package/Materials/Textures/cubeTexture.js +2 -2
  357. package/Materials/Textures/cubeTexture.js.map +1 -1
  358. package/Materials/Textures/dynamicTexture.d.ts +1 -1
  359. package/Materials/Textures/dynamicTexture.js +1 -1
  360. package/Materials/Textures/dynamicTexture.js.map +1 -1
  361. package/Materials/Textures/mirrorTexture.d.ts +3 -3
  362. package/Materials/Textures/mirrorTexture.js +3 -3
  363. package/Materials/Textures/mirrorTexture.js.map +1 -1
  364. package/Materials/Textures/refractionTexture.d.ts +3 -3
  365. package/Materials/Textures/refractionTexture.js +3 -3
  366. package/Materials/Textures/refractionTexture.js.map +1 -1
  367. package/Materials/Textures/texture.d.ts +10 -10
  368. package/Materials/Textures/texture.js +10 -10
  369. package/Materials/Textures/texture.js.map +1 -1
  370. package/Materials/Textures/videoTexture.d.ts +2 -2
  371. package/Materials/Textures/videoTexture.js +2 -2
  372. package/Materials/Textures/videoTexture.js.map +1 -1
  373. package/Materials/effect.d.ts +20 -2
  374. package/Materials/effect.js +28 -4
  375. package/Materials/effect.js.map +1 -1
  376. package/Materials/effectRenderer.js +1 -0
  377. package/Materials/effectRenderer.js.map +1 -1
  378. package/Materials/fresnelParameters.d.ts +1 -1
  379. package/Materials/fresnelParameters.js +1 -1
  380. package/Materials/fresnelParameters.js.map +1 -1
  381. package/Materials/material.d.ts +1 -1
  382. package/Materials/material.js.map +1 -1
  383. package/Materials/multiMaterial.d.ts +2 -2
  384. package/Materials/multiMaterial.js +2 -2
  385. package/Materials/multiMaterial.js.map +1 -1
  386. package/Materials/shaderMaterial.d.ts +2 -2
  387. package/Materials/shaderMaterial.js +2 -2
  388. package/Materials/shaderMaterial.js.map +1 -1
  389. package/Materials/shadowDepthWrapper.d.ts +1 -1
  390. package/Materials/shadowDepthWrapper.js +2 -2
  391. package/Materials/shadowDepthWrapper.js.map +1 -1
  392. package/Materials/standardMaterial.d.ts +18 -18
  393. package/Materials/standardMaterial.js +6 -6
  394. package/Materials/standardMaterial.js.map +1 -1
  395. package/Maths/math.path.d.ts +7 -7
  396. package/Maths/math.path.js +7 -7
  397. package/Maths/math.path.js.map +1 -1
  398. package/Maths/math.vector.d.ts +4 -4
  399. package/Maths/math.vector.js +4 -4
  400. package/Maths/math.vector.js.map +1 -1
  401. package/Meshes/Builders/boxBuilder.d.ts +3 -3
  402. package/Meshes/Builders/boxBuilder.js +3 -3
  403. package/Meshes/Builders/boxBuilder.js.map +1 -1
  404. package/Meshes/Builders/capsuleBuilder.d.ts +1 -1
  405. package/Meshes/Builders/capsuleBuilder.js +1 -1
  406. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  407. package/Meshes/Builders/cylinderBuilder.d.ts +2 -2
  408. package/Meshes/Builders/cylinderBuilder.js +2 -2
  409. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  410. package/Meshes/Builders/decalBuilder.d.ts +1 -1
  411. package/Meshes/Builders/decalBuilder.js +1 -1
  412. package/Meshes/Builders/decalBuilder.js.map +1 -1
  413. package/Meshes/Builders/discBuilder.d.ts +2 -2
  414. package/Meshes/Builders/discBuilder.js +2 -2
  415. package/Meshes/Builders/discBuilder.js.map +1 -1
  416. package/Meshes/Builders/geodesicBuilder.d.ts +1 -1
  417. package/Meshes/Builders/geodesicBuilder.js +1 -1
  418. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  419. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  420. package/Meshes/Builders/goldbergBuilder.js +1 -1
  421. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  422. package/Meshes/Builders/groundBuilder.d.ts +4 -4
  423. package/Meshes/Builders/groundBuilder.js +4 -4
  424. package/Meshes/Builders/groundBuilder.js.map +1 -1
  425. package/Meshes/Builders/icoSphereBuilder.d.ts +2 -2
  426. package/Meshes/Builders/icoSphereBuilder.js +2 -2
  427. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  428. package/Meshes/Builders/latheBuilder.d.ts +2 -2
  429. package/Meshes/Builders/latheBuilder.js +2 -2
  430. package/Meshes/Builders/latheBuilder.js.map +1 -1
  431. package/Meshes/Builders/linesBuilder.d.ts +6 -6
  432. package/Meshes/Builders/linesBuilder.js +6 -6
  433. package/Meshes/Builders/linesBuilder.js.map +1 -1
  434. package/Meshes/Builders/planeBuilder.d.ts +2 -2
  435. package/Meshes/Builders/planeBuilder.js +2 -2
  436. package/Meshes/Builders/planeBuilder.js.map +1 -1
  437. package/Meshes/Builders/polygonBuilder.d.ts +1 -1
  438. package/Meshes/Builders/polygonBuilder.js +1 -1
  439. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  440. package/Meshes/Builders/polyhedronBuilder.d.ts +3 -3
  441. package/Meshes/Builders/polyhedronBuilder.js +3 -3
  442. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  443. package/Meshes/Builders/ribbonBuilder.d.ts +4 -4
  444. package/Meshes/Builders/ribbonBuilder.js +4 -4
  445. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  446. package/Meshes/Builders/shapeBuilder.d.ts +9 -9
  447. package/Meshes/Builders/shapeBuilder.js +9 -9
  448. package/Meshes/Builders/shapeBuilder.js.map +1 -1
  449. package/Meshes/Builders/sphereBuilder.d.ts +2 -2
  450. package/Meshes/Builders/sphereBuilder.js +2 -2
  451. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  452. package/Meshes/Builders/tiledBoxBuilder.d.ts +2 -2
  453. package/Meshes/Builders/tiledBoxBuilder.js +2 -2
  454. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  455. package/Meshes/Builders/tiledPlaneBuilder.d.ts +2 -2
  456. package/Meshes/Builders/tiledPlaneBuilder.js +2 -2
  457. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  458. package/Meshes/Builders/torusBuilder.d.ts +2 -2
  459. package/Meshes/Builders/torusBuilder.js +2 -2
  460. package/Meshes/Builders/torusBuilder.js.map +1 -1
  461. package/Meshes/Builders/torusKnotBuilder.d.ts +2 -2
  462. package/Meshes/Builders/torusKnotBuilder.js +2 -2
  463. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  464. package/Meshes/Builders/tubeBuilder.d.ts +4 -4
  465. package/Meshes/Builders/tubeBuilder.js +4 -4
  466. package/Meshes/Builders/tubeBuilder.js.map +1 -1
  467. package/Meshes/abstractMesh.d.ts +35 -35
  468. package/Meshes/abstractMesh.js +34 -34
  469. package/Meshes/abstractMesh.js.map +1 -1
  470. package/Meshes/instancedMesh.d.ts +3 -3
  471. package/Meshes/instancedMesh.js +1 -1
  472. package/Meshes/instancedMesh.js.map +1 -1
  473. package/Meshes/linesMesh.d.ts +2 -2
  474. package/Meshes/linesMesh.js +2 -2
  475. package/Meshes/linesMesh.js.map +1 -1
  476. package/Meshes/mesh.d.ts +36 -36
  477. package/Meshes/mesh.js +9 -17
  478. package/Meshes/mesh.js.map +1 -1
  479. package/Meshes/meshLODLevel.d.ts +1 -1
  480. package/Meshes/meshLODLevel.js +1 -1
  481. package/Meshes/meshLODLevel.js.map +1 -1
  482. package/Meshes/meshSimplification.d.ts +6 -6
  483. package/Meshes/meshSimplification.js +4 -4
  484. package/Meshes/meshSimplification.js.map +1 -1
  485. package/Meshes/meshSimplificationSceneComponent.d.ts +1 -1
  486. package/Meshes/meshSimplificationSceneComponent.js.map +1 -1
  487. package/Meshes/polygonMesh.d.ts +2 -2
  488. package/Meshes/polygonMesh.js +2 -2
  489. package/Meshes/polygonMesh.js.map +1 -1
  490. package/Meshes/transformNode.d.ts +1 -1
  491. package/Meshes/transformNode.js +1 -1
  492. package/Meshes/transformNode.js.map +1 -1
  493. package/Misc/assetsManager.d.ts +2 -2
  494. package/Misc/assetsManager.js +2 -2
  495. package/Misc/assetsManager.js.map +1 -1
  496. package/Misc/iInspectable.d.ts +1 -1
  497. package/Misc/iInspectable.js.map +1 -1
  498. package/Misc/sceneOptimizer.d.ts +12 -12
  499. package/Misc/sceneOptimizer.js +12 -12
  500. package/Misc/sceneOptimizer.js.map +1 -1
  501. package/Misc/screenshotTools.d.ts +10 -10
  502. package/Misc/screenshotTools.js +10 -10
  503. package/Misc/screenshotTools.js.map +1 -1
  504. package/Misc/tools.d.ts +4 -4
  505. package/Misc/tools.js +4 -4
  506. package/Misc/tools.js.map +1 -1
  507. package/Misc/videoRecorder.d.ts +1 -1
  508. package/Misc/videoRecorder.js +1 -1
  509. package/Misc/videoRecorder.js.map +1 -1
  510. package/Morph/morphTarget.d.ts +1 -1
  511. package/Morph/morphTarget.js +1 -1
  512. package/Morph/morphTarget.js.map +1 -1
  513. package/Morph/morphTargetManager.d.ts +1 -1
  514. package/Morph/morphTargetManager.js +1 -1
  515. package/Morph/morphTargetManager.js.map +1 -1
  516. package/Offline/IOfflineProvider.d.ts +1 -1
  517. package/Offline/IOfflineProvider.js.map +1 -1
  518. package/Offline/database.d.ts +1 -1
  519. package/Offline/database.js +1 -1
  520. package/Offline/database.js.map +1 -1
  521. package/Particles/IParticleSystem.d.ts +1 -1
  522. package/Particles/IParticleSystem.js.map +1 -1
  523. package/Particles/baseParticleSystem.d.ts +1 -1
  524. package/Particles/baseParticleSystem.js +1 -1
  525. package/Particles/baseParticleSystem.js.map +1 -1
  526. package/Particles/gpuParticleSystem.d.ts +1 -1
  527. package/Particles/gpuParticleSystem.js +1 -1
  528. package/Particles/gpuParticleSystem.js.map +1 -1
  529. package/Particles/particleSystem.d.ts +2 -2
  530. package/Particles/particleSystem.js +2 -2
  531. package/Particles/particleSystem.js.map +1 -1
  532. package/Particles/solidParticleSystem.d.ts +15 -15
  533. package/Particles/solidParticleSystem.js +13 -13
  534. package/Particles/solidParticleSystem.js.map +1 -1
  535. package/Physics/IPhysicsEngine.d.ts +1 -1
  536. package/Physics/IPhysicsEngine.js.map +1 -1
  537. package/Physics/Plugins/ammoJSPlugin.d.ts +1 -1
  538. package/Physics/Plugins/ammoJSPlugin.js +1 -1
  539. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  540. package/Physics/physicsEngine.d.ts +1 -1
  541. package/Physics/physicsEngine.js +1 -1
  542. package/Physics/physicsEngine.js.map +1 -1
  543. package/Physics/physicsEngineComponent.d.ts +3 -3
  544. package/Physics/physicsEngineComponent.js +2 -2
  545. package/Physics/physicsEngineComponent.js.map +1 -1
  546. package/Physics/physicsHelper.d.ts +12 -12
  547. package/Physics/physicsHelper.js +6 -6
  548. package/Physics/physicsHelper.js.map +1 -1
  549. package/Physics/physicsImpostor.d.ts +3 -3
  550. package/Physics/physicsImpostor.js +1 -1
  551. package/Physics/physicsImpostor.js.map +1 -1
  552. package/Physics/physicsJoint.d.ts +9 -9
  553. package/Physics/physicsJoint.js +5 -5
  554. package/Physics/physicsJoint.js.map +1 -1
  555. package/Physics/physicsRaycastResult.d.ts +1 -1
  556. package/Physics/physicsRaycastResult.js +1 -1
  557. package/Physics/physicsRaycastResult.js.map +1 -1
  558. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.d.ts +1 -1
  559. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +1 -1
  560. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  561. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.d.ts +1 -1
  562. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +1 -1
  563. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  564. package/PostProcesses/RenderPipeline/postProcessRenderEffect.d.ts +1 -1
  565. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  566. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  567. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +2 -2
  568. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +1 -1
  569. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  570. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.d.ts +2 -2
  571. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js +2 -2
  572. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js.map +1 -1
  573. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.d.ts +2 -2
  574. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js.map +1 -1
  575. package/PostProcesses/blackAndWhitePostProcess.d.ts +1 -1
  576. package/PostProcesses/blackAndWhitePostProcess.js +1 -1
  577. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  578. package/PostProcesses/fxaaPostProcess.d.ts +1 -1
  579. package/PostProcesses/fxaaPostProcess.js +1 -1
  580. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  581. package/PostProcesses/highlightsPostProcess.d.ts +2 -2
  582. package/PostProcesses/highlightsPostProcess.js +2 -2
  583. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  584. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  585. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  586. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  587. package/PostProcesses/postProcess.d.ts +2 -2
  588. package/PostProcesses/postProcess.js +1 -1
  589. package/PostProcesses/postProcess.js.map +1 -1
  590. package/PostProcesses/postProcessManager.d.ts +1 -1
  591. package/PostProcesses/postProcessManager.js +1 -1
  592. package/PostProcesses/postProcessManager.js.map +1 -1
  593. package/PostProcesses/refractionPostProcess.d.ts +2 -2
  594. package/PostProcesses/refractionPostProcess.js +2 -2
  595. package/PostProcesses/refractionPostProcess.js.map +1 -1
  596. package/Probes/reflectionProbe.d.ts +2 -2
  597. package/Probes/reflectionProbe.js +1 -1
  598. package/Probes/reflectionProbe.js.map +1 -1
  599. package/Rendering/geometryBufferRenderer.js +2 -2
  600. package/Rendering/geometryBufferRenderer.js.map +1 -1
  601. package/Sprites/sprite.d.ts +1 -1
  602. package/Sprites/sprite.js +1 -1
  603. package/Sprites/sprite.js.map +1 -1
  604. package/Sprites/spriteManager.d.ts +2 -2
  605. package/Sprites/spriteManager.js +1 -1
  606. package/Sprites/spriteManager.js.map +1 -1
  607. package/Sprites/spritePackedManager.d.ts +1 -1
  608. package/Sprites/spritePackedManager.js +1 -1
  609. package/Sprites/spritePackedManager.js.map +1 -1
  610. package/Sprites/spriteSceneComponent.d.ts +1 -1
  611. package/Sprites/spriteSceneComponent.js.map +1 -1
  612. package/Sprites/thinSprite.d.ts +1 -1
  613. package/Sprites/thinSprite.js +1 -1
  614. package/Sprites/thinSprite.js.map +1 -1
  615. package/XR/webXRCamera.d.ts +1 -1
  616. package/XR/webXRCamera.js +1 -1
  617. package/XR/webXRCamera.js.map +1 -1
  618. package/XR/webXRExperienceHelper.d.ts +1 -1
  619. package/XR/webXRExperienceHelper.js +1 -1
  620. package/XR/webXRExperienceHelper.js.map +1 -1
  621. package/XR/webXRInputSource.d.ts +1 -1
  622. package/XR/webXRInputSource.js +1 -1
  623. package/XR/webXRInputSource.js.map +1 -1
  624. package/XR/webXRSessionManager.d.ts +1 -1
  625. package/XR/webXRSessionManager.js +1 -1
  626. package/XR/webXRSessionManager.js.map +1 -1
  627. package/abstractScene.d.ts +9 -9
  628. package/abstractScene.js +9 -9
  629. package/abstractScene.js.map +1 -1
  630. package/node.d.ts +6 -6
  631. package/node.js +5 -5
  632. package/node.js.map +1 -1
  633. package/package.json +1 -1
  634. package/scene.d.ts +29 -24
  635. package/scene.js +24 -18
  636. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"polyhedronBuilder.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/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 = new Array<number>();\r\n const indices = new Array<number>();\r\n const normals = new Array<number>();\r\n const uvs = new Array<number>();\r\n const colors = new Array<number>();\r\n let index = 0;\r\n let faceIdx = 0; // face cursor in the array \"indexes\"\r\n const indexes = new Array<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/how_to/createbox_per_face_textures_and_colors\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/babylon101/discover_basic_elements#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/how_to/polyhedra_shapes\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\n(Mesh as any).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":["../../../../../../lts/core/generated/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 = new Array<number>();\r\n const indices = new Array<number>();\r\n const normals = new Array<number>();\r\n const uvs = new Array<number>();\r\n const colors = new Array<number>();\r\n let index = 0;\r\n let faceIdx = 0; // face cursor in the array \"indexes\"\r\n const indexes = new Array<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\n(Mesh as any).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"]}
@@ -48,9 +48,9 @@ export declare function CreateRibbonVertexData(options: {
48
48
  * * The parameter `closePath` (boolean, default false) creates a seam between the first and the last points of each path of the path array
49
49
  * * The parameter `offset` (positive integer, default : rounded half size of the pathArray length), is taken in account only if the `pathArray` is containing a single path
50
50
  * * It's the offset to join the points from the same path. Ex : offset = 10 means the point 1 is joined to the point 11
51
- * * The optional parameter `instance` is an instance of an existing Ribbon object to be updated with the passed `pathArray` parameter : https://doc.babylonjs.com/how_to/how_to_dynamically_morph_a_mesh#ribbon
51
+ * * The optional parameter `instance` is an instance of an existing Ribbon object to be updated with the passed `pathArray` parameter : https://doc.babylonjs.com/features/featuresDeepDive/mesh/dynamicMeshMorph#ribbon
52
52
  * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
53
- * * 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/babylon101/discover_basic_elements#side-orientation
53
+ * * 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
54
54
  * * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture
55
55
  * * The parameter `uvs` is an optional flat array of `Vector2` to update/set each ribbon vertex with its own custom UV values instead of the computed ones
56
56
  * * The parameters `colors` is an optional flat array of `Color4` to set/update each ribbon vertex with its own custom color values
@@ -73,8 +73,8 @@ export declare function CreateRibbonVertexData(options: {
73
73
  * @param options.colors
74
74
  * @param scene defines the hosting scene
75
75
  * @returns the ribbon mesh
76
- * @see https://doc.babylonjs.com/how_to/ribbon_tutorial
77
- * @see https://doc.babylonjs.com/how_to/parametric_shapes
76
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon_extra
77
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param
78
78
  */
79
79
  export declare function CreateRibbon(name: string, options: {
80
80
  pathArray: Vector3[][];
@@ -251,9 +251,9 @@ export function CreateRibbonVertexData(options) {
251
251
  * * The parameter `closePath` (boolean, default false) creates a seam between the first and the last points of each path of the path array
252
252
  * * The parameter `offset` (positive integer, default : rounded half size of the pathArray length), is taken in account only if the `pathArray` is containing a single path
253
253
  * * It's the offset to join the points from the same path. Ex : offset = 10 means the point 1 is joined to the point 11
254
- * * The optional parameter `instance` is an instance of an existing Ribbon object to be updated with the passed `pathArray` parameter : https://doc.babylonjs.com/how_to/how_to_dynamically_morph_a_mesh#ribbon
254
+ * * The optional parameter `instance` is an instance of an existing Ribbon object to be updated with the passed `pathArray` parameter : https://doc.babylonjs.com/features/featuresDeepDive/mesh/dynamicMeshMorph#ribbon
255
255
  * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
256
- * * 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/babylon101/discover_basic_elements#side-orientation
256
+ * * 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
257
257
  * * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture
258
258
  * * The parameter `uvs` is an optional flat array of `Vector2` to update/set each ribbon vertex with its own custom UV values instead of the computed ones
259
259
  * * The parameters `colors` is an optional flat array of `Color4` to set/update each ribbon vertex with its own custom color values
@@ -276,8 +276,8 @@ export function CreateRibbonVertexData(options) {
276
276
  * @param options.colors
277
277
  * @param scene defines the hosting scene
278
278
  * @returns the ribbon mesh
279
- * @see https://doc.babylonjs.com/how_to/ribbon_tutorial
280
- * @see https://doc.babylonjs.com/how_to/parametric_shapes
279
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon_extra
280
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param
281
281
  */
282
282
  export function CreateRibbon(name, options, scene = null) {
283
283
  const pathArray = options.pathArray;
@@ -1 +1 @@
1
- {"version":3,"file":"ribbonBuilder.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Meshes/Builders/ribbonBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable, FloatArray } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Vector3, Vector2, Vector4 } from \"../../Maths/math.vector\";\r\nimport { TmpVectors } from \"../../Maths/math.vector\";\r\nimport type { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh, _CreationDataStorage } from \"../mesh\";\r\nimport { VertexBuffer } from \"../../Buffers/buffer\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n/**\r\n * Creates the VertexData for a Ribbon\r\n * @param options an object used to set the following optional parameters for the ribbon, required but can be empty\r\n * * pathArray array of paths, each of which an array of successive Vector3\r\n * * closeArray creates a seam between the first and the last paths of the pathArray, optional, default false\r\n * * closePath creates a seam between the first and the last points of each path of the path array, optional, default false\r\n * * offset a positive integer, only used when pathArray contains a single path (offset = 10 means the point 1 is joined to the point 11), default rounded half size of the pathArray length\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 * * invertUV swaps in the U and V coordinates when applying a texture, optional, default false\r\n * * uvs a linear array, of length 2 * number of vertices, of custom UV values, optional\r\n * * colors a linear array, of length 4 * number of vertices, of custom color values, optional\r\n * @param options.pathArray\r\n * @param options.closeArray\r\n * @param options.closePath\r\n * @param options.offset\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.invertUV\r\n * @param options.uvs\r\n * @param options.colors\r\n * @returns the VertexData of the ribbon\r\n */\r\nexport function CreateRibbonVertexData(options: {\r\n pathArray: Vector3[][];\r\n closeArray?: boolean;\r\n closePath?: boolean;\r\n offset?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n invertUV?: boolean;\r\n uvs?: Vector2[];\r\n colors?: Color4[];\r\n}): VertexData {\r\n let pathArray: Vector3[][] = options.pathArray;\r\n const closeArray: boolean = options.closeArray || false;\r\n const closePath: boolean = options.closePath || false;\r\n const invertUV: boolean = options.invertUV || false;\r\n const defaultOffset: number = Math.floor(pathArray[0].length / 2);\r\n let offset: number = options.offset || defaultOffset;\r\n offset = offset > defaultOffset ? defaultOffset : Math.floor(offset); // offset max allowed : defaultOffset\r\n const sideOrientation: number = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n const customUV = options.uvs;\r\n const customColors = options.colors;\r\n\r\n const positions: number[] = [];\r\n const indices: number[] = [];\r\n const normals: number[] = [];\r\n const uvs: number[] = [];\r\n\r\n const us: number[][] = []; // us[path_id] = [uDist1, uDist2, uDist3 ... ] distances between points on path path_id\r\n const vs: number[][] = []; // vs[i] = [vDist1, vDist2, vDist3, ... ] distances between points i of consecutive paths from pathArray\r\n const uTotalDistance: number[] = []; // uTotalDistance[p] : total distance of path p\r\n const vTotalDistance: number[] = []; // vTotalDistance[i] : total distance between points i of first and last path from pathArray\r\n let minlg: number; // minimal length among all paths from pathArray\r\n const lg: number[] = []; // array of path lengths : nb of vertex per path\r\n const idx: number[] = []; // array of path indexes : index of each path (first vertex) in the total vertex number\r\n let p: number; // path iterator\r\n let i: number; // point iterator\r\n let j: number; // point iterator\r\n\r\n // if single path in pathArray\r\n if (pathArray.length < 2) {\r\n const ar1: Vector3[] = [];\r\n const ar2: Vector3[] = [];\r\n for (i = 0; i < pathArray[0].length - offset; i++) {\r\n ar1.push(pathArray[0][i]);\r\n ar2.push(pathArray[0][i + offset]);\r\n }\r\n pathArray = [ar1, ar2];\r\n }\r\n\r\n // positions and horizontal distances (u)\r\n let idc: number = 0;\r\n const closePathCorr: number = closePath ? 1 : 0; // the final index will be +1 if closePath\r\n let path: Vector3[];\r\n let l: number;\r\n minlg = pathArray[0].length;\r\n let vectlg: number;\r\n let dist: number;\r\n for (p = 0; p < pathArray.length; p++) {\r\n uTotalDistance[p] = 0;\r\n us[p] = [0];\r\n path = pathArray[p];\r\n l = path.length;\r\n minlg = minlg < l ? minlg : l;\r\n\r\n j = 0;\r\n while (j < l) {\r\n positions.push(path[j].x, path[j].y, path[j].z);\r\n if (j > 0) {\r\n vectlg = path[j].subtract(path[j - 1]).length();\r\n dist = vectlg + uTotalDistance[p];\r\n us[p].push(dist);\r\n uTotalDistance[p] = dist;\r\n }\r\n j++;\r\n }\r\n\r\n if (closePath) {\r\n // an extra hidden vertex is added in the \"positions\" array\r\n j--;\r\n positions.push(path[0].x, path[0].y, path[0].z);\r\n vectlg = path[j].subtract(path[0]).length();\r\n dist = vectlg + uTotalDistance[p];\r\n us[p].push(dist);\r\n uTotalDistance[p] = dist;\r\n }\r\n\r\n lg[p] = l + closePathCorr;\r\n idx[p] = idc;\r\n idc += l + closePathCorr;\r\n }\r\n\r\n // vertical distances (v)\r\n let path1: Vector3[];\r\n let path2: Vector3[];\r\n let vertex1: Nullable<Vector3> = null;\r\n let vertex2: Nullable<Vector3> = null;\r\n for (i = 0; i < minlg + closePathCorr; i++) {\r\n vTotalDistance[i] = 0;\r\n vs[i] = [0];\r\n for (p = 0; p < pathArray.length - 1; p++) {\r\n path1 = pathArray[p];\r\n path2 = pathArray[p + 1];\r\n if (i === minlg) {\r\n // closePath\r\n vertex1 = path1[0];\r\n vertex2 = path2[0];\r\n } else {\r\n vertex1 = path1[i];\r\n vertex2 = path2[i];\r\n }\r\n vectlg = vertex2.subtract(vertex1).length();\r\n dist = vectlg + vTotalDistance[i];\r\n vs[i].push(dist);\r\n vTotalDistance[i] = dist;\r\n }\r\n\r\n if (closeArray && vertex2 && vertex1) {\r\n path1 = pathArray[p];\r\n path2 = pathArray[0];\r\n if (i === minlg) {\r\n // closePath\r\n vertex2 = path2[0];\r\n }\r\n vectlg = vertex2.subtract(vertex1).length();\r\n dist = vectlg + vTotalDistance[i];\r\n vTotalDistance[i] = dist;\r\n }\r\n }\r\n\r\n // uvs\r\n let u: number;\r\n let v: number;\r\n if (customUV) {\r\n for (p = 0; p < customUV.length; p++) {\r\n uvs.push(customUV[p].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - customUV[p].y : customUV[p].y);\r\n }\r\n } else {\r\n for (p = 0; p < pathArray.length; p++) {\r\n for (i = 0; i < minlg + closePathCorr; i++) {\r\n u = uTotalDistance[p] != 0.0 ? us[p][i] / uTotalDistance[p] : 0.0;\r\n v = vTotalDistance[i] != 0.0 ? vs[i][p] / vTotalDistance[i] : 0.0;\r\n if (invertUV) {\r\n uvs.push(v, u);\r\n } else {\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - v : v);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // indices\r\n p = 0; // path index\r\n let pi: number = 0; // positions array index\r\n let l1: number = lg[p] - 1; // path1 length\r\n let l2: number = lg[p + 1] - 1; // path2 length\r\n let min: number = l1 < l2 ? l1 : l2; // current path stop index\r\n let shft: number = idx[1] - idx[0]; // shift\r\n const path1nb: number = closeArray ? lg.length : lg.length - 1; // number of path1 to iterate\ton\r\n\r\n while (pi <= min && p < path1nb) {\r\n // stay under min and don't go over next to last path\r\n // draw two triangles between path1 (p1) and path2 (p2) : (p1.pi, p2.pi, p1.pi+1) and (p2.pi+1, p1.pi+1, p2.pi) clockwise\r\n\r\n indices.push(pi, pi + shft, pi + 1);\r\n indices.push(pi + shft + 1, pi + 1, pi + shft);\r\n pi += 1;\r\n if (pi === min) {\r\n // if end of one of two consecutive paths reached, go to next existing path\r\n p++;\r\n if (p === lg.length - 1) {\r\n // last path of pathArray reached <=> closeArray == true\r\n shft = idx[0] - idx[p];\r\n l1 = lg[p] - 1;\r\n l2 = lg[0] - 1;\r\n } else {\r\n shft = idx[p + 1] - idx[p];\r\n l1 = lg[p] - 1;\r\n l2 = lg[p + 1] - 1;\r\n }\r\n pi = idx[p];\r\n min = l1 < l2 ? l1 + pi : l2 + pi;\r\n }\r\n }\r\n\r\n // normals\r\n VertexData.ComputeNormals(positions, indices, normals);\r\n\r\n if (closePath) {\r\n // update both the first and last vertex normals to their average value\r\n let indexFirst: number = 0;\r\n let indexLast: number = 0;\r\n for (p = 0; p < pathArray.length; p++) {\r\n indexFirst = idx[p] * 3;\r\n if (p + 1 < pathArray.length) {\r\n indexLast = (idx[p + 1] - 1) * 3;\r\n } else {\r\n indexLast = normals.length - 3;\r\n }\r\n normals[indexFirst] = (normals[indexFirst] + normals[indexLast]) * 0.5;\r\n normals[indexFirst + 1] = (normals[indexFirst + 1] + normals[indexLast + 1]) * 0.5;\r\n normals[indexFirst + 2] = (normals[indexFirst + 2] + normals[indexLast + 2]) * 0.5;\r\n normals[indexLast] = normals[indexFirst];\r\n normals[indexLast + 1] = normals[indexFirst + 1];\r\n normals[indexLast + 2] = normals[indexFirst + 2];\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n // Colors\r\n let colors: Nullable<Float32Array> = null;\r\n if (customColors) {\r\n colors = new Float32Array(customColors.length * 4);\r\n for (let c = 0; c < customColors.length; c++) {\r\n colors[c * 4] = customColors[c].r;\r\n colors[c * 4 + 1] = customColors[c].g;\r\n colors[c * 4 + 2] = customColors[c].b;\r\n colors[c * 4 + 3] = customColors[c].a;\r\n }\r\n }\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n const positions32 = new Float32Array(positions);\r\n const normals32 = new Float32Array(normals);\r\n const uvs32 = new Float32Array(uvs);\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions32;\r\n vertexData.normals = normals32;\r\n vertexData.uvs = uvs32;\r\n if (colors) {\r\n vertexData.set(colors, VertexBuffer.ColorKind);\r\n }\r\n\r\n if (closePath) {\r\n (<any>vertexData)._idx = idx;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a ribbon mesh. The ribbon is a parametric shape. It has no predefined shape. Its final shape will depend on the input parameters\r\n * * The parameter `pathArray` is a required array of paths, what are each an array of successive Vector3. The pathArray parameter depicts the ribbon geometry\r\n * * The parameter `closeArray` (boolean, default false) creates a seam between the first and the last paths of the path array\r\n * * The parameter `closePath` (boolean, default false) creates a seam between the first and the last points of each path of the path array\r\n * * The parameter `offset` (positive integer, default : rounded half size of the pathArray length), is taken in account only if the `pathArray` is containing a single path\r\n * * It's the offset to join the points from the same path. Ex : offset = 10 means the point 1 is joined to the point 11\r\n * * The optional parameter `instance` is an instance of an existing Ribbon object to be updated with the passed `pathArray` parameter : https://doc.babylonjs.com/how_to/how_to_dynamically_morph_a_mesh#ribbon\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/babylon101/discover_basic_elements#side-orientation\r\n * * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture\r\n * * The parameter `uvs` is an optional flat array of `Vector2` to update/set each ribbon vertex with its own custom UV values instead of the computed ones\r\n * * The parameters `colors` is an optional flat array of `Color4` to set/update each ribbon vertex with its own custom color values\r\n * * Note that if you use the parameters `uvs` or `colors`, the passed arrays must be populated with the right number of elements, it is to say the number of ribbon vertices. Remember that if you set `closePath` to `true`, there's one extra vertex per path in the geometry\r\n * * Moreover, you can use the parameter `color` with `instance` (to update the ribbon), only if you previously used it at creation time\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.pathArray\r\n * @param options.closeArray\r\n * @param options.closePath\r\n * @param options.offset\r\n * @param options.updatable\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.instance\r\n * @param options.invertUV\r\n * @param options.uvs\r\n * @param options.colors\r\n * @param scene defines the hosting scene\r\n * @returns the ribbon mesh\r\n * @see https://doc.babylonjs.com/how_to/ribbon_tutorial\r\n * @see https://doc.babylonjs.com/how_to/parametric_shapes\r\n */\r\nexport function CreateRibbon(\r\n name: string,\r\n options: {\r\n pathArray: Vector3[][];\r\n closeArray?: boolean;\r\n closePath?: boolean;\r\n offset?: number;\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n instance?: Mesh;\r\n invertUV?: boolean;\r\n uvs?: Vector2[];\r\n colors?: Color4[];\r\n },\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const pathArray = options.pathArray;\r\n const closeArray = options.closeArray;\r\n const closePath = options.closePath;\r\n const sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n const instance = options.instance;\r\n const updatable = options.updatable;\r\n\r\n if (instance) {\r\n // existing ribbon instance update\r\n // positionFunction : ribbon case\r\n // only pathArray and sideOrientation parameters are taken into account for positions update\r\n const minimum = TmpVectors.Vector3[0].setAll(Number.MAX_VALUE);\r\n const maximum = TmpVectors.Vector3[1].setAll(-Number.MAX_VALUE);\r\n const positionFunction = (positions: FloatArray) => {\r\n let minlg = pathArray[0].length;\r\n const mesh = <Mesh>instance;\r\n let i = 0;\r\n const ns = mesh._originalBuilderSideOrientation === Mesh.DOUBLESIDE ? 2 : 1;\r\n for (let si = 1; si <= ns; ++si) {\r\n for (let p = 0; p < pathArray.length; ++p) {\r\n const path = pathArray[p];\r\n const l = path.length;\r\n minlg = minlg < l ? minlg : l;\r\n for (let j = 0; j < minlg; ++j) {\r\n const pathPoint = path[j];\r\n positions[i] = pathPoint.x;\r\n positions[i + 1] = pathPoint.y;\r\n positions[i + 2] = pathPoint.z;\r\n minimum.minimizeInPlaceFromFloats(pathPoint.x, pathPoint.y, pathPoint.z);\r\n maximum.maximizeInPlaceFromFloats(pathPoint.x, pathPoint.y, pathPoint.z);\r\n i += 3;\r\n }\r\n if (mesh._creationDataStorage && mesh._creationDataStorage.closePath) {\r\n const pathPoint = path[0];\r\n positions[i] = pathPoint.x;\r\n positions[i + 1] = pathPoint.y;\r\n positions[i + 2] = pathPoint.z;\r\n i += 3;\r\n }\r\n }\r\n }\r\n };\r\n const positions = <FloatArray>instance.getVerticesData(VertexBuffer.PositionKind);\r\n positionFunction(positions);\r\n if (instance.hasBoundingInfo) {\r\n instance.getBoundingInfo().reConstruct(minimum, maximum, instance._worldMatrix);\r\n } else {\r\n instance.buildBoundingInfo(minimum, maximum, instance._worldMatrix);\r\n }\r\n instance.updateVerticesData(VertexBuffer.PositionKind, positions, false, false);\r\n if (options.colors) {\r\n const colors = <FloatArray>instance.getVerticesData(VertexBuffer.ColorKind);\r\n for (let c = 0, colorIndex = 0; c < options.colors.length; c++, colorIndex += 4) {\r\n const color = options.colors[c];\r\n colors[colorIndex] = color.r;\r\n colors[colorIndex + 1] = color.g;\r\n colors[colorIndex + 2] = color.b;\r\n colors[colorIndex + 3] = color.a;\r\n }\r\n instance.updateVerticesData(VertexBuffer.ColorKind, colors, false, false);\r\n }\r\n if (options.uvs) {\r\n const uvs = <FloatArray>instance.getVerticesData(VertexBuffer.UVKind);\r\n for (let i = 0; i < options.uvs.length; i++) {\r\n uvs[i * 2] = options.uvs[i].x;\r\n uvs[i * 2 + 1] = CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - options.uvs[i].y : options.uvs[i].y;\r\n }\r\n instance.updateVerticesData(VertexBuffer.UVKind, uvs, false, false);\r\n }\r\n if (!instance.areNormalsFrozen || instance.isFacetDataEnabled) {\r\n const indices = instance.getIndices();\r\n const normals = <FloatArray>instance.getVerticesData(VertexBuffer.NormalKind);\r\n const params = instance.isFacetDataEnabled ? instance.getFacetDataParameters() : null;\r\n VertexData.ComputeNormals(positions, indices, normals, params);\r\n\r\n if (instance._creationDataStorage && instance._creationDataStorage.closePath) {\r\n let indexFirst: number = 0;\r\n let indexLast: number = 0;\r\n for (let p = 0; p < pathArray.length; p++) {\r\n indexFirst = instance._creationDataStorage!.idx[p] * 3;\r\n if (p + 1 < pathArray.length) {\r\n indexLast = (instance._creationDataStorage!.idx[p + 1] - 1) * 3;\r\n } else {\r\n indexLast = normals.length - 3;\r\n }\r\n normals[indexFirst] = (normals[indexFirst] + normals[indexLast]) * 0.5;\r\n normals[indexFirst + 1] = (normals[indexFirst + 1] + normals[indexLast + 1]) * 0.5;\r\n normals[indexFirst + 2] = (normals[indexFirst + 2] + normals[indexLast + 2]) * 0.5;\r\n normals[indexLast] = normals[indexFirst];\r\n normals[indexLast + 1] = normals[indexFirst + 1];\r\n normals[indexLast + 2] = normals[indexFirst + 2];\r\n }\r\n }\r\n if (!instance.areNormalsFrozen) {\r\n instance.updateVerticesData(VertexBuffer.NormalKind, normals, false, false);\r\n }\r\n }\r\n\r\n return instance;\r\n } else {\r\n // new ribbon creation\r\n\r\n const ribbon = new Mesh(name, scene);\r\n ribbon._originalBuilderSideOrientation = sideOrientation;\r\n ribbon._creationDataStorage = new _CreationDataStorage();\r\n\r\n const vertexData = CreateRibbonVertexData(options);\r\n if (closePath) {\r\n ribbon._creationDataStorage.idx = (<any>vertexData)._idx;\r\n }\r\n ribbon._creationDataStorage.closePath = closePath;\r\n ribbon._creationDataStorage.closeArray = closeArray;\r\n\r\n vertexData.applyToMesh(ribbon, updatable);\r\n\r\n return ribbon;\r\n }\r\n}\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated use CreateRibbon directly\r\n */\r\nexport const RibbonBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateRibbon,\r\n};\r\n\r\nVertexData.CreateRibbon = CreateRibbonVertexData;\r\n\r\n(Mesh as any).CreateRibbon = (\r\n name: string,\r\n pathArray: Vector3[][],\r\n closeArray: boolean = false,\r\n closePath: boolean,\r\n offset: number,\r\n scene?: Scene,\r\n updatable: boolean = false,\r\n sideOrientation?: number,\r\n instance?: Mesh\r\n) => {\r\n return CreateRibbon(\r\n name,\r\n {\r\n pathArray: pathArray,\r\n closeArray: closeArray,\r\n closePath: closePath,\r\n offset: offset,\r\n updatable: updatable,\r\n sideOrientation: sideOrientation,\r\n instance: instance,\r\n },\r\n scene\r\n );\r\n};\r\n"]}
1
+ {"version":3,"file":"ribbonBuilder.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Meshes/Builders/ribbonBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable, FloatArray } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Vector3, Vector2, Vector4 } from \"../../Maths/math.vector\";\r\nimport { TmpVectors } from \"../../Maths/math.vector\";\r\nimport type { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh, _CreationDataStorage } from \"../mesh\";\r\nimport { VertexBuffer } from \"../../Buffers/buffer\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n/**\r\n * Creates the VertexData for a Ribbon\r\n * @param options an object used to set the following optional parameters for the ribbon, required but can be empty\r\n * * pathArray array of paths, each of which an array of successive Vector3\r\n * * closeArray creates a seam between the first and the last paths of the pathArray, optional, default false\r\n * * closePath creates a seam between the first and the last points of each path of the path array, optional, default false\r\n * * offset a positive integer, only used when pathArray contains a single path (offset = 10 means the point 1 is joined to the point 11), default rounded half size of the pathArray length\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 * * invertUV swaps in the U and V coordinates when applying a texture, optional, default false\r\n * * uvs a linear array, of length 2 * number of vertices, of custom UV values, optional\r\n * * colors a linear array, of length 4 * number of vertices, of custom color values, optional\r\n * @param options.pathArray\r\n * @param options.closeArray\r\n * @param options.closePath\r\n * @param options.offset\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.invertUV\r\n * @param options.uvs\r\n * @param options.colors\r\n * @returns the VertexData of the ribbon\r\n */\r\nexport function CreateRibbonVertexData(options: {\r\n pathArray: Vector3[][];\r\n closeArray?: boolean;\r\n closePath?: boolean;\r\n offset?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n invertUV?: boolean;\r\n uvs?: Vector2[];\r\n colors?: Color4[];\r\n}): VertexData {\r\n let pathArray: Vector3[][] = options.pathArray;\r\n const closeArray: boolean = options.closeArray || false;\r\n const closePath: boolean = options.closePath || false;\r\n const invertUV: boolean = options.invertUV || false;\r\n const defaultOffset: number = Math.floor(pathArray[0].length / 2);\r\n let offset: number = options.offset || defaultOffset;\r\n offset = offset > defaultOffset ? defaultOffset : Math.floor(offset); // offset max allowed : defaultOffset\r\n const sideOrientation: number = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n const customUV = options.uvs;\r\n const customColors = options.colors;\r\n\r\n const positions: number[] = [];\r\n const indices: number[] = [];\r\n const normals: number[] = [];\r\n const uvs: number[] = [];\r\n\r\n const us: number[][] = []; // us[path_id] = [uDist1, uDist2, uDist3 ... ] distances between points on path path_id\r\n const vs: number[][] = []; // vs[i] = [vDist1, vDist2, vDist3, ... ] distances between points i of consecutive paths from pathArray\r\n const uTotalDistance: number[] = []; // uTotalDistance[p] : total distance of path p\r\n const vTotalDistance: number[] = []; // vTotalDistance[i] : total distance between points i of first and last path from pathArray\r\n let minlg: number; // minimal length among all paths from pathArray\r\n const lg: number[] = []; // array of path lengths : nb of vertex per path\r\n const idx: number[] = []; // array of path indexes : index of each path (first vertex) in the total vertex number\r\n let p: number; // path iterator\r\n let i: number; // point iterator\r\n let j: number; // point iterator\r\n\r\n // if single path in pathArray\r\n if (pathArray.length < 2) {\r\n const ar1: Vector3[] = [];\r\n const ar2: Vector3[] = [];\r\n for (i = 0; i < pathArray[0].length - offset; i++) {\r\n ar1.push(pathArray[0][i]);\r\n ar2.push(pathArray[0][i + offset]);\r\n }\r\n pathArray = [ar1, ar2];\r\n }\r\n\r\n // positions and horizontal distances (u)\r\n let idc: number = 0;\r\n const closePathCorr: number = closePath ? 1 : 0; // the final index will be +1 if closePath\r\n let path: Vector3[];\r\n let l: number;\r\n minlg = pathArray[0].length;\r\n let vectlg: number;\r\n let dist: number;\r\n for (p = 0; p < pathArray.length; p++) {\r\n uTotalDistance[p] = 0;\r\n us[p] = [0];\r\n path = pathArray[p];\r\n l = path.length;\r\n minlg = minlg < l ? minlg : l;\r\n\r\n j = 0;\r\n while (j < l) {\r\n positions.push(path[j].x, path[j].y, path[j].z);\r\n if (j > 0) {\r\n vectlg = path[j].subtract(path[j - 1]).length();\r\n dist = vectlg + uTotalDistance[p];\r\n us[p].push(dist);\r\n uTotalDistance[p] = dist;\r\n }\r\n j++;\r\n }\r\n\r\n if (closePath) {\r\n // an extra hidden vertex is added in the \"positions\" array\r\n j--;\r\n positions.push(path[0].x, path[0].y, path[0].z);\r\n vectlg = path[j].subtract(path[0]).length();\r\n dist = vectlg + uTotalDistance[p];\r\n us[p].push(dist);\r\n uTotalDistance[p] = dist;\r\n }\r\n\r\n lg[p] = l + closePathCorr;\r\n idx[p] = idc;\r\n idc += l + closePathCorr;\r\n }\r\n\r\n // vertical distances (v)\r\n let path1: Vector3[];\r\n let path2: Vector3[];\r\n let vertex1: Nullable<Vector3> = null;\r\n let vertex2: Nullable<Vector3> = null;\r\n for (i = 0; i < minlg + closePathCorr; i++) {\r\n vTotalDistance[i] = 0;\r\n vs[i] = [0];\r\n for (p = 0; p < pathArray.length - 1; p++) {\r\n path1 = pathArray[p];\r\n path2 = pathArray[p + 1];\r\n if (i === minlg) {\r\n // closePath\r\n vertex1 = path1[0];\r\n vertex2 = path2[0];\r\n } else {\r\n vertex1 = path1[i];\r\n vertex2 = path2[i];\r\n }\r\n vectlg = vertex2.subtract(vertex1).length();\r\n dist = vectlg + vTotalDistance[i];\r\n vs[i].push(dist);\r\n vTotalDistance[i] = dist;\r\n }\r\n\r\n if (closeArray && vertex2 && vertex1) {\r\n path1 = pathArray[p];\r\n path2 = pathArray[0];\r\n if (i === minlg) {\r\n // closePath\r\n vertex2 = path2[0];\r\n }\r\n vectlg = vertex2.subtract(vertex1).length();\r\n dist = vectlg + vTotalDistance[i];\r\n vTotalDistance[i] = dist;\r\n }\r\n }\r\n\r\n // uvs\r\n let u: number;\r\n let v: number;\r\n if (customUV) {\r\n for (p = 0; p < customUV.length; p++) {\r\n uvs.push(customUV[p].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - customUV[p].y : customUV[p].y);\r\n }\r\n } else {\r\n for (p = 0; p < pathArray.length; p++) {\r\n for (i = 0; i < minlg + closePathCorr; i++) {\r\n u = uTotalDistance[p] != 0.0 ? us[p][i] / uTotalDistance[p] : 0.0;\r\n v = vTotalDistance[i] != 0.0 ? vs[i][p] / vTotalDistance[i] : 0.0;\r\n if (invertUV) {\r\n uvs.push(v, u);\r\n } else {\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - v : v);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // indices\r\n p = 0; // path index\r\n let pi: number = 0; // positions array index\r\n let l1: number = lg[p] - 1; // path1 length\r\n let l2: number = lg[p + 1] - 1; // path2 length\r\n let min: number = l1 < l2 ? l1 : l2; // current path stop index\r\n let shft: number = idx[1] - idx[0]; // shift\r\n const path1nb: number = closeArray ? lg.length : lg.length - 1; // number of path1 to iterate\ton\r\n\r\n while (pi <= min && p < path1nb) {\r\n // stay under min and don't go over next to last path\r\n // draw two triangles between path1 (p1) and path2 (p2) : (p1.pi, p2.pi, p1.pi+1) and (p2.pi+1, p1.pi+1, p2.pi) clockwise\r\n\r\n indices.push(pi, pi + shft, pi + 1);\r\n indices.push(pi + shft + 1, pi + 1, pi + shft);\r\n pi += 1;\r\n if (pi === min) {\r\n // if end of one of two consecutive paths reached, go to next existing path\r\n p++;\r\n if (p === lg.length - 1) {\r\n // last path of pathArray reached <=> closeArray == true\r\n shft = idx[0] - idx[p];\r\n l1 = lg[p] - 1;\r\n l2 = lg[0] - 1;\r\n } else {\r\n shft = idx[p + 1] - idx[p];\r\n l1 = lg[p] - 1;\r\n l2 = lg[p + 1] - 1;\r\n }\r\n pi = idx[p];\r\n min = l1 < l2 ? l1 + pi : l2 + pi;\r\n }\r\n }\r\n\r\n // normals\r\n VertexData.ComputeNormals(positions, indices, normals);\r\n\r\n if (closePath) {\r\n // update both the first and last vertex normals to their average value\r\n let indexFirst: number = 0;\r\n let indexLast: number = 0;\r\n for (p = 0; p < pathArray.length; p++) {\r\n indexFirst = idx[p] * 3;\r\n if (p + 1 < pathArray.length) {\r\n indexLast = (idx[p + 1] - 1) * 3;\r\n } else {\r\n indexLast = normals.length - 3;\r\n }\r\n normals[indexFirst] = (normals[indexFirst] + normals[indexLast]) * 0.5;\r\n normals[indexFirst + 1] = (normals[indexFirst + 1] + normals[indexLast + 1]) * 0.5;\r\n normals[indexFirst + 2] = (normals[indexFirst + 2] + normals[indexLast + 2]) * 0.5;\r\n normals[indexLast] = normals[indexFirst];\r\n normals[indexLast + 1] = normals[indexFirst + 1];\r\n normals[indexLast + 2] = normals[indexFirst + 2];\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n // Colors\r\n let colors: Nullable<Float32Array> = null;\r\n if (customColors) {\r\n colors = new Float32Array(customColors.length * 4);\r\n for (let c = 0; c < customColors.length; c++) {\r\n colors[c * 4] = customColors[c].r;\r\n colors[c * 4 + 1] = customColors[c].g;\r\n colors[c * 4 + 2] = customColors[c].b;\r\n colors[c * 4 + 3] = customColors[c].a;\r\n }\r\n }\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n const positions32 = new Float32Array(positions);\r\n const normals32 = new Float32Array(normals);\r\n const uvs32 = new Float32Array(uvs);\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions32;\r\n vertexData.normals = normals32;\r\n vertexData.uvs = uvs32;\r\n if (colors) {\r\n vertexData.set(colors, VertexBuffer.ColorKind);\r\n }\r\n\r\n if (closePath) {\r\n (<any>vertexData)._idx = idx;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a ribbon mesh. The ribbon is a parametric shape. It has no predefined shape. Its final shape will depend on the input parameters\r\n * * The parameter `pathArray` is a required array of paths, what are each an array of successive Vector3. The pathArray parameter depicts the ribbon geometry\r\n * * The parameter `closeArray` (boolean, default false) creates a seam between the first and the last paths of the path array\r\n * * The parameter `closePath` (boolean, default false) creates a seam between the first and the last points of each path of the path array\r\n * * The parameter `offset` (positive integer, default : rounded half size of the pathArray length), is taken in account only if the `pathArray` is containing a single path\r\n * * It's the offset to join the points from the same path. Ex : offset = 10 means the point 1 is joined to the point 11\r\n * * The optional parameter `instance` is an instance of an existing Ribbon object to be updated with the passed `pathArray` parameter : https://doc.babylonjs.com/features/featuresDeepDive/mesh/dynamicMeshMorph#ribbon\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 optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture\r\n * * The parameter `uvs` is an optional flat array of `Vector2` to update/set each ribbon vertex with its own custom UV values instead of the computed ones\r\n * * The parameters `colors` is an optional flat array of `Color4` to set/update each ribbon vertex with its own custom color values\r\n * * Note that if you use the parameters `uvs` or `colors`, the passed arrays must be populated with the right number of elements, it is to say the number of ribbon vertices. Remember that if you set `closePath` to `true`, there's one extra vertex per path in the geometry\r\n * * Moreover, you can use the parameter `color` with `instance` (to update the ribbon), only if you previously used it at creation time\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.pathArray\r\n * @param options.closeArray\r\n * @param options.closePath\r\n * @param options.offset\r\n * @param options.updatable\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.instance\r\n * @param options.invertUV\r\n * @param options.uvs\r\n * @param options.colors\r\n * @param scene defines the hosting scene\r\n * @returns the ribbon mesh\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon_extra\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param\r\n */\r\nexport function CreateRibbon(\r\n name: string,\r\n options: {\r\n pathArray: Vector3[][];\r\n closeArray?: boolean;\r\n closePath?: boolean;\r\n offset?: number;\r\n updatable?: boolean;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n instance?: Mesh;\r\n invertUV?: boolean;\r\n uvs?: Vector2[];\r\n colors?: Color4[];\r\n },\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const pathArray = options.pathArray;\r\n const closeArray = options.closeArray;\r\n const closePath = options.closePath;\r\n const sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n const instance = options.instance;\r\n const updatable = options.updatable;\r\n\r\n if (instance) {\r\n // existing ribbon instance update\r\n // positionFunction : ribbon case\r\n // only pathArray and sideOrientation parameters are taken into account for positions update\r\n const minimum = TmpVectors.Vector3[0].setAll(Number.MAX_VALUE);\r\n const maximum = TmpVectors.Vector3[1].setAll(-Number.MAX_VALUE);\r\n const positionFunction = (positions: FloatArray) => {\r\n let minlg = pathArray[0].length;\r\n const mesh = <Mesh>instance;\r\n let i = 0;\r\n const ns = mesh._originalBuilderSideOrientation === Mesh.DOUBLESIDE ? 2 : 1;\r\n for (let si = 1; si <= ns; ++si) {\r\n for (let p = 0; p < pathArray.length; ++p) {\r\n const path = pathArray[p];\r\n const l = path.length;\r\n minlg = minlg < l ? minlg : l;\r\n for (let j = 0; j < minlg; ++j) {\r\n const pathPoint = path[j];\r\n positions[i] = pathPoint.x;\r\n positions[i + 1] = pathPoint.y;\r\n positions[i + 2] = pathPoint.z;\r\n minimum.minimizeInPlaceFromFloats(pathPoint.x, pathPoint.y, pathPoint.z);\r\n maximum.maximizeInPlaceFromFloats(pathPoint.x, pathPoint.y, pathPoint.z);\r\n i += 3;\r\n }\r\n if (mesh._creationDataStorage && mesh._creationDataStorage.closePath) {\r\n const pathPoint = path[0];\r\n positions[i] = pathPoint.x;\r\n positions[i + 1] = pathPoint.y;\r\n positions[i + 2] = pathPoint.z;\r\n i += 3;\r\n }\r\n }\r\n }\r\n };\r\n const positions = <FloatArray>instance.getVerticesData(VertexBuffer.PositionKind);\r\n positionFunction(positions);\r\n if (instance.hasBoundingInfo) {\r\n instance.getBoundingInfo().reConstruct(minimum, maximum, instance._worldMatrix);\r\n } else {\r\n instance.buildBoundingInfo(minimum, maximum, instance._worldMatrix);\r\n }\r\n instance.updateVerticesData(VertexBuffer.PositionKind, positions, false, false);\r\n if (options.colors) {\r\n const colors = <FloatArray>instance.getVerticesData(VertexBuffer.ColorKind);\r\n for (let c = 0, colorIndex = 0; c < options.colors.length; c++, colorIndex += 4) {\r\n const color = options.colors[c];\r\n colors[colorIndex] = color.r;\r\n colors[colorIndex + 1] = color.g;\r\n colors[colorIndex + 2] = color.b;\r\n colors[colorIndex + 3] = color.a;\r\n }\r\n instance.updateVerticesData(VertexBuffer.ColorKind, colors, false, false);\r\n }\r\n if (options.uvs) {\r\n const uvs = <FloatArray>instance.getVerticesData(VertexBuffer.UVKind);\r\n for (let i = 0; i < options.uvs.length; i++) {\r\n uvs[i * 2] = options.uvs[i].x;\r\n uvs[i * 2 + 1] = CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - options.uvs[i].y : options.uvs[i].y;\r\n }\r\n instance.updateVerticesData(VertexBuffer.UVKind, uvs, false, false);\r\n }\r\n if (!instance.areNormalsFrozen || instance.isFacetDataEnabled) {\r\n const indices = instance.getIndices();\r\n const normals = <FloatArray>instance.getVerticesData(VertexBuffer.NormalKind);\r\n const params = instance.isFacetDataEnabled ? instance.getFacetDataParameters() : null;\r\n VertexData.ComputeNormals(positions, indices, normals, params);\r\n\r\n if (instance._creationDataStorage && instance._creationDataStorage.closePath) {\r\n let indexFirst: number = 0;\r\n let indexLast: number = 0;\r\n for (let p = 0; p < pathArray.length; p++) {\r\n indexFirst = instance._creationDataStorage!.idx[p] * 3;\r\n if (p + 1 < pathArray.length) {\r\n indexLast = (instance._creationDataStorage!.idx[p + 1] - 1) * 3;\r\n } else {\r\n indexLast = normals.length - 3;\r\n }\r\n normals[indexFirst] = (normals[indexFirst] + normals[indexLast]) * 0.5;\r\n normals[indexFirst + 1] = (normals[indexFirst + 1] + normals[indexLast + 1]) * 0.5;\r\n normals[indexFirst + 2] = (normals[indexFirst + 2] + normals[indexLast + 2]) * 0.5;\r\n normals[indexLast] = normals[indexFirst];\r\n normals[indexLast + 1] = normals[indexFirst + 1];\r\n normals[indexLast + 2] = normals[indexFirst + 2];\r\n }\r\n }\r\n if (!instance.areNormalsFrozen) {\r\n instance.updateVerticesData(VertexBuffer.NormalKind, normals, false, false);\r\n }\r\n }\r\n\r\n return instance;\r\n } else {\r\n // new ribbon creation\r\n\r\n const ribbon = new Mesh(name, scene);\r\n ribbon._originalBuilderSideOrientation = sideOrientation;\r\n ribbon._creationDataStorage = new _CreationDataStorage();\r\n\r\n const vertexData = CreateRibbonVertexData(options);\r\n if (closePath) {\r\n ribbon._creationDataStorage.idx = (<any>vertexData)._idx;\r\n }\r\n ribbon._creationDataStorage.closePath = closePath;\r\n ribbon._creationDataStorage.closeArray = closeArray;\r\n\r\n vertexData.applyToMesh(ribbon, updatable);\r\n\r\n return ribbon;\r\n }\r\n}\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated use CreateRibbon directly\r\n */\r\nexport const RibbonBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateRibbon,\r\n};\r\n\r\nVertexData.CreateRibbon = CreateRibbonVertexData;\r\n\r\n(Mesh as any).CreateRibbon = (\r\n name: string,\r\n pathArray: Vector3[][],\r\n closeArray: boolean = false,\r\n closePath: boolean,\r\n offset: number,\r\n scene?: Scene,\r\n updatable: boolean = false,\r\n sideOrientation?: number,\r\n instance?: Mesh\r\n) => {\r\n return CreateRibbon(\r\n name,\r\n {\r\n pathArray: pathArray,\r\n closeArray: closeArray,\r\n closePath: closePath,\r\n offset: offset,\r\n updatable: updatable,\r\n sideOrientation: sideOrientation,\r\n instance: instance,\r\n },\r\n scene\r\n );\r\n};\r\n"]}
@@ -12,10 +12,10 @@ import { Mesh } from "../mesh";
12
12
  * * The parameter `closeShape` (boolean, default false) closes the shape when true, since v5.0.0.
13
13
  * * The parameter `closePath` (boolean, default false) closes the path when true and no caps, since v5.0.0.
14
14
  * * The parameter `cap` sets the way the extruded shape is capped. Possible values : BABYLON.Mesh.NO_CAP (default), BABYLON.Mesh.CAP_START, BABYLON.Mesh.CAP_END, BABYLON.Mesh.CAP_ALL
15
- * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/how_to/how_to_dynamically_morph_a_mesh#extruded-shape
15
+ * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/features/featuresDeepDive/mesh/dynamicMeshMorph#extruded-shape
16
16
  * * Remember you can only change the shape or path point positions, not their number when updating an extruded shape.
17
17
  * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
18
- * * 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/babylon101/discover_basic_elements#side-orientation
18
+ * * 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
19
19
  * * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture.
20
20
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
21
21
  * * The optional parameter `firstNormal` (Vector3) defines the direction of the first normal of the supplied path. Consider using this for any path that is straight, and particular for paths in the xy plane.
@@ -39,8 +39,8 @@ import { Mesh } from "../mesh";
39
39
  * @param options.adjustFrame
40
40
  * @param scene defines the hosting scene
41
41
  * @returns the extruded shape mesh
42
- * @see https://doc.babylonjs.com/how_to/parametric_shapes
43
- * @see https://doc.babylonjs.com/how_to/parametric_shapes#extruded-shapes
42
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param
43
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#extruded-shapes
44
44
  */
45
45
  export declare function ExtrudeShape(name: string, options: {
46
46
  shape: Vector3[];
@@ -73,10 +73,10 @@ export declare function ExtrudeShape(name: string, options: {
73
73
  * * The parameter `ribbonClosePath` (boolean, default false) forces the extrusion underlying ribbon to close all the paths in its `pathArray` - depreciated in favor of closeShape
74
74
  * * The parameter `ribbonCloseArray` (boolean, default false) forces the extrusion underlying ribbon to close its `pathArray` - depreciated in favor of closePath
75
75
  * * The parameter `cap` sets the way the extruded shape is capped. Possible values : BABYLON.Mesh.NO_CAP (default), BABYLON.Mesh.CAP_START, BABYLON.Mesh.CAP_END, BABYLON.Mesh.CAP_ALL
76
- * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/how_to/how_to_dynamically_morph_a_mesh#extruded-shape
76
+ * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/features/featuresDeepDive/mesh/dynamicMeshMorph#extruded-shape
77
77
  * * Remember you can only change the shape or path point positions, not their number when updating an extruded shape
78
78
  * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
79
- * * 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/babylon101/discover_basic_elements#side-orientation
79
+ * * 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
80
80
  * * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture
81
81
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created
82
82
  * * The optional parameter `firstNormal` (Vector3) defines the direction of the first normal of the supplied path. It should be supplied when the path is in the xy plane, and particularly if these sections are straight, because the underlying Path3D object will pick a normal in the xy plane that causes the extrusion to be collapsed into the plane. This should be used for any path that is straight.
@@ -102,9 +102,9 @@ export declare function ExtrudeShape(name: string, options: {
102
102
  * @param options.adjustFrame
103
103
  * @param scene defines the hosting scene
104
104
  * @returns the custom extruded shape mesh
105
- * @see https://doc.babylonjs.com/how_to/parametric_shapes#custom-extruded-shapes
106
- * @see https://doc.babylonjs.com/how_to/parametric_shapes
107
- * @see https://doc.babylonjs.com/how_to/parametric_shapes#extruded-shapes
105
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#custom-extruded-shapes
106
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param
107
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#extruded-shapes
108
108
  */
109
109
  export declare function ExtrudeShapeCustom(name: string, options: {
110
110
  shape: Vector3[];
@@ -11,10 +11,10 @@ import { Path3D } from "../../Maths/math.path.js";
11
11
  * * The parameter `closeShape` (boolean, default false) closes the shape when true, since v5.0.0.
12
12
  * * The parameter `closePath` (boolean, default false) closes the path when true and no caps, since v5.0.0.
13
13
  * * The parameter `cap` sets the way the extruded shape is capped. Possible values : BABYLON.Mesh.NO_CAP (default), BABYLON.Mesh.CAP_START, BABYLON.Mesh.CAP_END, BABYLON.Mesh.CAP_ALL
14
- * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/how_to/how_to_dynamically_morph_a_mesh#extruded-shape
14
+ * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/features/featuresDeepDive/mesh/dynamicMeshMorph#extruded-shape
15
15
  * * Remember you can only change the shape or path point positions, not their number when updating an extruded shape.
16
16
  * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
17
- * * 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/babylon101/discover_basic_elements#side-orientation
17
+ * * 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
18
18
  * * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture.
19
19
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
20
20
  * * The optional parameter `firstNormal` (Vector3) defines the direction of the first normal of the supplied path. Consider using this for any path that is straight, and particular for paths in the xy plane.
@@ -38,8 +38,8 @@ import { Path3D } from "../../Maths/math.path.js";
38
38
  * @param options.adjustFrame
39
39
  * @param scene defines the hosting scene
40
40
  * @returns the extruded shape mesh
41
- * @see https://doc.babylonjs.com/how_to/parametric_shapes
42
- * @see https://doc.babylonjs.com/how_to/parametric_shapes#extruded-shapes
41
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param
42
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#extruded-shapes
43
43
  */
44
44
  export function ExtrudeShape(name, options, scene = null) {
45
45
  const path = options.path;
@@ -69,10 +69,10 @@ export function ExtrudeShape(name, options, scene = null) {
69
69
  * * The parameter `ribbonClosePath` (boolean, default false) forces the extrusion underlying ribbon to close all the paths in its `pathArray` - depreciated in favor of closeShape
70
70
  * * The parameter `ribbonCloseArray` (boolean, default false) forces the extrusion underlying ribbon to close its `pathArray` - depreciated in favor of closePath
71
71
  * * The parameter `cap` sets the way the extruded shape is capped. Possible values : BABYLON.Mesh.NO_CAP (default), BABYLON.Mesh.CAP_START, BABYLON.Mesh.CAP_END, BABYLON.Mesh.CAP_ALL
72
- * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/how_to/how_to_dynamically_morph_a_mesh#extruded-shape
72
+ * * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : https://doc.babylonjs.com/features/featuresDeepDive/mesh/dynamicMeshMorph#extruded-shape
73
73
  * * Remember you can only change the shape or path point positions, not their number when updating an extruded shape
74
74
  * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
75
- * * 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/babylon101/discover_basic_elements#side-orientation
75
+ * * 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
76
76
  * * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture
77
77
  * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created
78
78
  * * The optional parameter `firstNormal` (Vector3) defines the direction of the first normal of the supplied path. It should be supplied when the path is in the xy plane, and particularly if these sections are straight, because the underlying Path3D object will pick a normal in the xy plane that causes the extrusion to be collapsed into the plane. This should be used for any path that is straight.
@@ -98,9 +98,9 @@ export function ExtrudeShape(name, options, scene = null) {
98
98
  * @param options.adjustFrame
99
99
  * @param scene defines the hosting scene
100
100
  * @returns the custom extruded shape mesh
101
- * @see https://doc.babylonjs.com/how_to/parametric_shapes#custom-extruded-shapes
102
- * @see https://doc.babylonjs.com/how_to/parametric_shapes
103
- * @see https://doc.babylonjs.com/how_to/parametric_shapes#extruded-shapes
101
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#custom-extruded-shapes
102
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param
103
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param#extruded-shapes
104
104
  */
105
105
  export function ExtrudeShapeCustom(name, options, scene = null) {
106
106
  const path = options.path;