@babylonjs/core 5.0.0-alpha.60 → 5.0.0-alpha.61

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 (332) hide show
  1. package/Animations/animation.d.ts +20 -0
  2. package/Animations/animation.js +57 -8
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationKey.d.ts +4 -0
  5. package/Animations/animationKey.js +4 -0
  6. package/Animations/animationKey.js.map +1 -1
  7. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +130 -0
  8. package/BakedVertexAnimation/bakedVertexAnimationManager.js +134 -0
  9. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -0
  10. package/BakedVertexAnimation/index.d.ts +2 -0
  11. package/BakedVertexAnimation/index.js +3 -0
  12. package/BakedVertexAnimation/index.js.map +1 -0
  13. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +65 -0
  14. package/BakedVertexAnimation/vertexAnimationBaker.js +155 -0
  15. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -0
  16. package/Behaviors/Cameras/framingBehavior.d.ts +5 -0
  17. package/Behaviors/Cameras/framingBehavior.js +8 -1
  18. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  19. package/Bones/bone.d.ts +3 -1
  20. package/Bones/bone.js +4 -1
  21. package/Bones/bone.js.map +1 -1
  22. package/Cameras/Inputs/BaseCameraPointersInput.js +4 -6
  23. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  24. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  25. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  26. package/Cameras/Inputs/freeCameraMouseInput.js +4 -4
  27. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  28. package/Cameras/camera.js +7 -1
  29. package/Cameras/camera.js.map +1 -1
  30. package/Cameras/targetCamera.js +1 -1
  31. package/Cameras/targetCamera.js.map +1 -1
  32. package/Culling/boundingBox.d.ts +4 -0
  33. package/Culling/boundingBox.js +8 -0
  34. package/Culling/boundingBox.js.map +1 -1
  35. package/Debug/physicsViewer.js +1 -1
  36. package/Debug/physicsViewer.js.map +1 -1
  37. package/Debug/skeletonViewer.js +2 -2
  38. package/Debug/skeletonViewer.js.map +1 -1
  39. package/DeviceInput/Implementations/nativeDeviceInputWrapper.d.ts +6 -1
  40. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +16 -1
  41. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +1 -1
  42. package/DeviceInput/Implementations/webDeviceInputSystem.js +1 -1
  43. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  44. package/DeviceInput/deviceInputSystem.js +6 -1
  45. package/DeviceInput/deviceInputSystem.js.map +1 -1
  46. package/Engines/Extensions/engine.multiview.js +17 -6
  47. package/Engines/Extensions/engine.multiview.js.map +1 -1
  48. package/Engines/WebGPU/Extensions/engine.query.js +19 -3
  49. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  50. package/Engines/WebGPU/webgpuBundleList.d.ts +13 -0
  51. package/Engines/WebGPU/webgpuBundleList.js +27 -0
  52. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  53. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +4 -0
  54. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  55. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +6 -0
  56. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +6 -0
  57. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  58. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +27 -0
  59. package/Engines/WebGPU/webgpuSnapshotRendering.js +107 -0
  60. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -0
  61. package/Engines/WebGPU/webgpuTextureHelper.d.ts +2 -2
  62. package/Engines/WebGPU/webgpuTextureHelper.js +41 -18
  63. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  64. package/Engines/constants.d.ts +2 -0
  65. package/Engines/constants.js +2 -0
  66. package/Engines/constants.js.map +1 -1
  67. package/Engines/engine.d.ts +12 -1
  68. package/Engines/engine.js +33 -0
  69. package/Engines/engine.js.map +1 -1
  70. package/Engines/engineFeatures.d.ts +2 -0
  71. package/Engines/engineFeatures.js.map +1 -1
  72. package/Engines/index.d.ts +1 -0
  73. package/Engines/index.js +1 -0
  74. package/Engines/index.js.map +1 -1
  75. package/Engines/nativeEngine.js +1 -0
  76. package/Engines/nativeEngine.js.map +1 -1
  77. package/Engines/nullEngine.js +1 -0
  78. package/Engines/nullEngine.js.map +1 -1
  79. package/Engines/thinEngine.d.ts +0 -11
  80. package/Engines/thinEngine.js +12 -40
  81. package/Engines/thinEngine.js.map +1 -1
  82. package/Engines/webgpuEngine.d.ts +6 -6
  83. package/Engines/webgpuEngine.js +26 -67
  84. package/Engines/webgpuEngine.js.map +1 -1
  85. package/Helpers/sceneHelpers.d.ts +3 -3
  86. package/Helpers/sceneHelpers.js +1 -2
  87. package/Helpers/sceneHelpers.js.map +1 -1
  88. package/Inputs/scene.inputManager.js +12 -14
  89. package/Inputs/scene.inputManager.js.map +1 -1
  90. package/Layers/effectLayer.d.ts +13 -1
  91. package/Layers/effectLayer.js +115 -65
  92. package/Layers/effectLayer.js.map +1 -1
  93. package/Layers/highlightLayer.d.ts +2 -1
  94. package/Layers/highlightLayer.js +6 -3
  95. package/Layers/highlightLayer.js.map +1 -1
  96. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -0
  97. package/Lights/Shadows/cascadedShadowGenerator.js +14 -0
  98. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  99. package/Lights/Shadows/shadowGenerator.d.ts +4 -0
  100. package/Lights/Shadows/shadowGenerator.js +31 -3
  101. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  102. package/Lights/light.js +7 -1
  103. package/Lights/light.js.map +1 -1
  104. package/Loading/Plugins/babylonFileLoader.js +17 -4
  105. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  106. package/Materials/Background/backgroundMaterial.js +1 -0
  107. package/Materials/Background/backgroundMaterial.js.map +1 -1
  108. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +10 -0
  109. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +31 -0
  110. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  111. package/Materials/Node/Blocks/Fragment/index.d.ts +1 -0
  112. package/Materials/Node/Blocks/Fragment/index.js +1 -0
  113. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  114. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +41 -0
  115. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +130 -0
  116. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -0
  117. package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
  118. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  119. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -0
  120. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +15 -0
  121. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  122. package/Materials/Node/Blocks/index.d.ts +1 -0
  123. package/Materials/Node/Blocks/index.js +1 -0
  124. package/Materials/Node/Blocks/index.js.map +1 -1
  125. package/Materials/Node/Blocks/vectorMergerBlock.js +4 -4
  126. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  127. package/Materials/Node/Blocks/voronoiNoiseBlock.d.ts +39 -0
  128. package/Materials/Node/Blocks/voronoiNoiseBlock.js +107 -0
  129. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -0
  130. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +8 -0
  131. package/Materials/Node/Blocks/worleyNoise3DBlock.js +34 -2
  132. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  133. package/Materials/Node/nodeMaterial.d.ts +1 -0
  134. package/Materials/Node/nodeMaterial.js +2 -0
  135. package/Materials/Node/nodeMaterial.js.map +1 -1
  136. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +5 -0
  137. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  138. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -0
  139. package/Materials/PBR/pbrBaseMaterial.js +11 -4
  140. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  141. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +11 -0
  142. package/Materials/PBR/pbrSubSurfaceConfiguration.js +18 -3
  143. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  144. package/Materials/Textures/hdrCubeTexture.d.ts +9 -0
  145. package/Materials/Textures/hdrCubeTexture.js +21 -5
  146. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  147. package/Materials/Textures/mirrorTexture.d.ts +2 -0
  148. package/Materials/Textures/mirrorTexture.js +13 -0
  149. package/Materials/Textures/mirrorTexture.js.map +1 -1
  150. package/Materials/imageProcessingConfiguration.d.ts +16 -1
  151. package/Materials/imageProcessingConfiguration.js +31 -0
  152. package/Materials/imageProcessingConfiguration.js.map +1 -1
  153. package/Materials/materialHelper.d.ts +15 -1
  154. package/Materials/materialHelper.js +40 -3
  155. package/Materials/materialHelper.js.map +1 -1
  156. package/Materials/pushMaterial.d.ts +2 -2
  157. package/Materials/pushMaterial.js +7 -3
  158. package/Materials/pushMaterial.js.map +1 -1
  159. package/Materials/shaderMaterial.d.ts +6 -5
  160. package/Materials/shaderMaterial.js +58 -28
  161. package/Materials/shaderMaterial.js.map +1 -1
  162. package/Materials/shadowDepthWrapper.js +7 -7
  163. package/Materials/shadowDepthWrapper.js.map +1 -1
  164. package/Materials/standardMaterial.d.ts +2 -0
  165. package/Materials/standardMaterial.js +11 -1
  166. package/Materials/standardMaterial.js.map +1 -1
  167. package/Materials/uniformBuffer.js +1 -2
  168. package/Materials/uniformBuffer.js.map +1 -1
  169. package/Maths/math.color.d.ts +20 -0
  170. package/Maths/math.color.js +45 -2
  171. package/Maths/math.color.js.map +1 -1
  172. package/Maths/math.vector.d.ts +2 -1
  173. package/Maths/math.vector.js +14 -3
  174. package/Maths/math.vector.js.map +1 -1
  175. package/Meshes/Builders/boxBuilder.d.ts +1 -1
  176. package/Meshes/Builders/boxBuilder.js +1 -0
  177. package/Meshes/Builders/boxBuilder.js.map +1 -1
  178. package/Meshes/Builders/cylinderBuilder.d.ts +17 -17
  179. package/Meshes/Builders/cylinderBuilder.js +1 -0
  180. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  181. package/Meshes/Builders/discBuilder.d.ts +1 -1
  182. package/Meshes/Builders/discBuilder.js +1 -0
  183. package/Meshes/Builders/discBuilder.js.map +1 -1
  184. package/Meshes/Builders/groundBuilder.d.ts +8 -8
  185. package/Meshes/Builders/groundBuilder.js +2 -0
  186. package/Meshes/Builders/groundBuilder.js.map +1 -1
  187. package/Meshes/Builders/hemisphereBuilder.d.ts +4 -4
  188. package/Meshes/Builders/hemisphereBuilder.js +1 -0
  189. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  190. package/Meshes/Builders/icoSphereBuilder.d.ts +1 -1
  191. package/Meshes/Builders/icoSphereBuilder.js +1 -0
  192. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  193. package/Meshes/Builders/planeBuilder.d.ts +1 -1
  194. package/Meshes/Builders/planeBuilder.js +1 -0
  195. package/Meshes/Builders/planeBuilder.js.map +1 -1
  196. package/Meshes/Builders/polyhedronBuilder.d.ts +1 -1
  197. package/Meshes/Builders/polyhedronBuilder.js +1 -0
  198. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  199. package/Meshes/Builders/sphereBuilder.d.ts +1 -1
  200. package/Meshes/Builders/sphereBuilder.js +1 -0
  201. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  202. package/Meshes/Builders/torusBuilder.d.ts +8 -8
  203. package/Meshes/Builders/torusBuilder.js +1 -0
  204. package/Meshes/Builders/torusBuilder.js.map +1 -1
  205. package/Meshes/Builders/torusKnotBuilder.d.ts +11 -11
  206. package/Meshes/Builders/torusKnotBuilder.js +1 -0
  207. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  208. package/Meshes/abstractMesh.d.ts +22 -2
  209. package/Meshes/abstractMesh.js +55 -6
  210. package/Meshes/abstractMesh.js.map +1 -1
  211. package/Meshes/geometry.d.ts +3 -0
  212. package/Meshes/geometry.js +13 -5
  213. package/Meshes/geometry.js.map +1 -1
  214. package/Meshes/linesMesh.d.ts +0 -2
  215. package/Meshes/linesMesh.js +3 -35
  216. package/Meshes/linesMesh.js.map +1 -1
  217. package/Meshes/mesh.js +4 -4
  218. package/Meshes/mesh.js.map +1 -1
  219. package/Meshes/thinInstanceMesh.js +6 -5
  220. package/Meshes/thinInstanceMesh.js.map +1 -1
  221. package/Meshes/transformNode.d.ts +8 -8
  222. package/Meshes/transformNode.js +25 -17
  223. package/Meshes/transformNode.js.map +1 -1
  224. package/Misc/basis.d.ts +2 -2
  225. package/Misc/basis.js +19 -4
  226. package/Misc/basis.js.map +1 -1
  227. package/Misc/sceneSerializer.js +0 -3
  228. package/Misc/sceneSerializer.js.map +1 -1
  229. package/Misc/tools.d.ts +2 -4
  230. package/Misc/tools.js +6 -10
  231. package/Misc/tools.js.map +1 -1
  232. package/Particles/particleSystem.js +19 -16
  233. package/Particles/particleSystem.js.map +1 -1
  234. package/Particles/solidParticleSystem.js +29 -5
  235. package/Particles/solidParticleSystem.js.map +1 -1
  236. package/Physics/Plugins/ammoJSPlugin.js +10 -8
  237. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  238. package/PostProcesses/imageProcessingPostProcess.js +1 -0
  239. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  240. package/Probes/reflectionProbe.d.ts +2 -0
  241. package/Probes/reflectionProbe.js +21 -0
  242. package/Probes/reflectionProbe.js.map +1 -1
  243. package/Rendering/boundingBoxRenderer.d.ts +3 -0
  244. package/Rendering/boundingBoxRenderer.js +49 -14
  245. package/Rendering/boundingBoxRenderer.js.map +1 -1
  246. package/Rendering/depthRenderer.d.ts +1 -1
  247. package/Rendering/depthRenderer.js +2 -2
  248. package/Rendering/depthRenderer.js.map +1 -1
  249. package/Rendering/edgesRenderer.js +3 -1
  250. package/Rendering/edgesRenderer.js.map +1 -1
  251. package/Rendering/geometryBufferRenderer.d.ts +0 -2
  252. package/Rendering/geometryBufferRenderer.js +13 -10
  253. package/Rendering/geometryBufferRenderer.js.map +1 -1
  254. package/Shaders/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  255. package/Shaders/ShadersInclude/bakedVertexAnimation.js +7 -0
  256. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  257. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  258. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  259. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  260. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  261. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  262. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  263. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  264. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  265. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  266. package/Shaders/background.fragment.js +1 -1
  267. package/Shaders/background.fragment.js.map +1 -1
  268. package/Shaders/background.vertex.d.ts +2 -0
  269. package/Shaders/background.vertex.js +3 -1
  270. package/Shaders/background.vertex.js.map +1 -1
  271. package/Shaders/color.vertex.d.ts +2 -0
  272. package/Shaders/color.vertex.js +3 -1
  273. package/Shaders/color.vertex.js.map +1 -1
  274. package/Shaders/default.vertex.d.ts +2 -0
  275. package/Shaders/default.vertex.js +3 -1
  276. package/Shaders/default.vertex.js.map +1 -1
  277. package/Shaders/depth.vertex.d.ts +2 -0
  278. package/Shaders/depth.vertex.js +3 -1
  279. package/Shaders/depth.vertex.js.map +1 -1
  280. package/Shaders/geometry.vertex.d.ts +2 -0
  281. package/Shaders/geometry.vertex.js +3 -1
  282. package/Shaders/geometry.vertex.js.map +1 -1
  283. package/Shaders/glowMapGeneration.vertex.d.ts +2 -0
  284. package/Shaders/glowMapGeneration.vertex.js +3 -1
  285. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  286. package/Shaders/outline.vertex.d.ts +2 -0
  287. package/Shaders/outline.vertex.js +3 -1
  288. package/Shaders/outline.vertex.js.map +1 -1
  289. package/Shaders/pbr.vertex.d.ts +2 -0
  290. package/Shaders/pbr.vertex.js +3 -1
  291. package/Shaders/pbr.vertex.js.map +1 -1
  292. package/Shaders/shadowMap.vertex.d.ts +2 -0
  293. package/Shaders/shadowMap.vertex.js +3 -1
  294. package/Shaders/shadowMap.vertex.js.map +1 -1
  295. package/Shaders/volumetricLightScatteringPass.vertex.d.ts +2 -0
  296. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  297. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  298. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  299. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +7 -0
  300. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  301. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  302. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  303. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  304. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  305. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  306. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  307. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  308. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.d.ts +5 -0
  309. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +7 -0
  310. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -0
  311. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +5 -0
  312. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +7 -0
  313. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -0
  314. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.d.ts +5 -0
  315. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +7 -0
  316. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -0
  317. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.d.ts +5 -0
  318. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +7 -0
  319. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -0
  320. package/XR/features/WebXRNearInteraction.d.ts +1 -0
  321. package/XR/features/WebXRNearInteraction.js +2 -0
  322. package/XR/features/WebXRNearInteraction.js.map +1 -1
  323. package/index.d.ts +1 -0
  324. package/index.js +1 -0
  325. package/index.js.map +1 -1
  326. package/node.d.ts +30 -1
  327. package/node.js +12 -0
  328. package/node.js.map +1 -1
  329. package/package.json +43 -1
  330. package/scene.d.ts +10 -0
  331. package/scene.js +27 -0
  332. package/scene.js.map +1 -1
@@ -3,6 +3,10 @@
3
3
  */
4
4
  export var AnimationKeyInterpolation;
5
5
  (function (AnimationKeyInterpolation) {
6
+ /**
7
+ * Use tangents to interpolate between start and end values.
8
+ */
9
+ AnimationKeyInterpolation[AnimationKeyInterpolation["NONE"] = 0] = "NONE";
6
10
  /**
7
11
  * Do not interpolate between keys and use the start key value only. Tangents are ignored
8
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"animationKey.js","sourceRoot":"","sources":["../../../sourceES6/core/Animations/animationKey.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,MAAM,CAAN,IAAY,yBAKX;AALD,WAAY,yBAAyB;IACjC;;OAEG;IACH,yEAAQ,CAAA;AACZ,CAAC,EALW,yBAAyB,KAAzB,yBAAyB,QAKpC","sourcesContent":["/**\r\n * Defines an interface which represents an animation key frame\r\n */\r\nexport interface IAnimationKey {\r\n /**\r\n * Frame of the key frame\r\n */\r\n frame: number;\r\n /**\r\n * Value at the specifies key frame\r\n */\r\n value: any;\r\n /**\r\n * The input tangent for the cubic hermite spline\r\n */\r\n inTangent?: any;\r\n /**\r\n * The output tangent for the cubic hermite spline\r\n */\r\n outTangent?: any;\r\n /**\r\n * The animation interpolation type\r\n */\r\n interpolation?: AnimationKeyInterpolation;\r\n /**\r\n * Property defined by UI tools to link (or not ) the tangents\r\n */\r\n lockedTangent?: boolean;\r\n}\r\n\r\n/**\r\n * Enum for the animation key frame interpolation type\r\n */\r\nexport enum AnimationKeyInterpolation {\r\n /**\r\n * Do not interpolate between keys and use the start key value only. Tangents are ignored\r\n */\r\n STEP = 1\r\n}"]}
1
+ {"version":3,"file":"animationKey.js","sourceRoot":"","sources":["../../../sourceES6/core/Animations/animationKey.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,MAAM,CAAN,IAAY,yBASX;AATD,WAAY,yBAAyB;IACjC;;OAEG;IACH,yEAAQ,CAAA;IACR;;OAEG;IACH,yEAAQ,CAAA;AACZ,CAAC,EATW,yBAAyB,KAAzB,yBAAyB,QASpC","sourcesContent":["/**\r\n * Defines an interface which represents an animation key frame\r\n */\r\nexport interface IAnimationKey {\r\n /**\r\n * Frame of the key frame\r\n */\r\n frame: number;\r\n /**\r\n * Value at the specifies key frame\r\n */\r\n value: any;\r\n /**\r\n * The input tangent for the cubic hermite spline\r\n */\r\n inTangent?: any;\r\n /**\r\n * The output tangent for the cubic hermite spline\r\n */\r\n outTangent?: any;\r\n /**\r\n * The animation interpolation type\r\n */\r\n interpolation?: AnimationKeyInterpolation;\r\n /**\r\n * Property defined by UI tools to link (or not ) the tangents\r\n */\r\n lockedTangent?: boolean;\r\n}\r\n\r\n/**\r\n * Enum for the animation key frame interpolation type\r\n */\r\nexport enum AnimationKeyInterpolation {\r\n /**\r\n * Use tangents to interpolate between start and end values.\r\n */\r\n NONE = 0,\r\n /**\r\n * Do not interpolate between keys and use the start key value only. Tangents are ignored\r\n */\r\n STEP = 1,\r\n}\r\n"]}
@@ -0,0 +1,130 @@
1
+ import { Nullable } from "../types";
2
+ import { Scene } from "../scene";
3
+ import { BaseTexture } from '../Materials/Textures/baseTexture';
4
+ import { Vector4 } from "../Maths/math.vector";
5
+ import { Effect } from "../Materials/effect";
6
+ /**
7
+ * Interface for baked vertex animation texture, see BakedVertexAnimationManager
8
+ * @since 5.0
9
+ */
10
+ export interface IBakedVertexAnimationManager {
11
+ /**
12
+ * The vertex animation texture
13
+ */
14
+ texture: Nullable<BaseTexture>;
15
+ /**
16
+ * Gets or sets a boolean indicating if the edgesRenderer is active
17
+ */
18
+ isEnabled: boolean;
19
+ /**
20
+ * The animation parameters for the mesh. See setAnimationParameters()
21
+ */
22
+ animationParameters: Vector4;
23
+ /**
24
+ * The time counter, to pick the correct animation frame.
25
+ */
26
+ time: number;
27
+ /**
28
+ * Binds to the effect.
29
+ * @param effect The effect to bind to.
30
+ * @param useInstances True when it's an instance.
31
+ */
32
+ bind(effect: Effect, useInstances: boolean): void;
33
+ /**
34
+ * Sets animation parameters.
35
+ * @param startFrame The first frame of the animation.
36
+ * @param endFrame The last frame of the animation.
37
+ * @param offset The offset when starting the animation.
38
+ * @param speedFramesPerSecond The frame rate.
39
+ */
40
+ setAnimationParameters(startFrame: number, endFrame: number, offset: number, speedFramesPerSecond: number): void;
41
+ /**
42
+ * Disposes the resources of the manager.
43
+ * @param forceDisposeTextures - Forces the disposal of all textures.
44
+ */
45
+ dispose(forceDisposeTextures?: boolean): void;
46
+ /**
47
+ * Get the current class name useful for serialization or dynamic coding.
48
+ * @returns "BakedVertexAnimationManager"
49
+ */
50
+ getClassName(): string;
51
+ }
52
+ /**
53
+ * This class is used to animate meshes using a baked vertex animation texture
54
+ * @see https://doc.babylonjs.com/divingDeeper/animation/baked_texture_animations
55
+ * @since 5.0
56
+ */
57
+ export declare class BakedVertexAnimationManager implements IBakedVertexAnimationManager {
58
+ private _scene;
59
+ private _texture;
60
+ /**
61
+ * The vertex animation texture
62
+ */
63
+ texture: Nullable<BaseTexture>;
64
+ private _isEnabled;
65
+ /**
66
+ * Enable or disable the vertex animation manager
67
+ */
68
+ isEnabled: boolean;
69
+ /**
70
+ * The animation parameters for the mesh. See setAnimationParameters()
71
+ */
72
+ animationParameters: Vector4;
73
+ /**
74
+ * The time counter, to pick the correct animation frame.
75
+ */
76
+ time: number;
77
+ /**
78
+ * Creates a new BakedVertexAnimationManager
79
+ * @param scene defines the current scene
80
+ */
81
+ constructor(scene: Scene);
82
+ /** @hidden */
83
+ _markSubMeshesAsAttributesDirty(): void;
84
+ /**
85
+ * Binds to the effect.
86
+ * @param effect The effect to bind to.
87
+ * @param useInstances True when it's an instance.
88
+ */
89
+ bind(effect: Effect, useInstances?: boolean): void;
90
+ /**
91
+ * Clone the current manager
92
+ * @returns a new BakedVertexAnimationManager
93
+ */
94
+ clone(): BakedVertexAnimationManager;
95
+ /**
96
+ * Sets animation parameters.
97
+ * @param startFrame The first frame of the animation.
98
+ * @param endFrame The last frame of the animation.
99
+ * @param offset The offset when starting the animation.
100
+ * @param speedFramesPerSecond The frame rate.
101
+ */
102
+ setAnimationParameters(startFrame: number, endFrame: number, offset?: number, speedFramesPerSecond?: number): void;
103
+ /**
104
+ * Disposes the resources of the manager.
105
+ * @param forceDisposeTextures - Forces the disposal of all textures.
106
+ */
107
+ dispose(forceDisposeTextures?: boolean): void;
108
+ /**
109
+ * Get the current class name useful for serialization or dynamic coding.
110
+ * @returns "BakedVertexAnimationManager"
111
+ */
112
+ getClassName(): string;
113
+ /**
114
+ * Makes a duplicate of the current instance into another one.
115
+ * @param vatMap define the instance where to copy the info
116
+ */
117
+ copyTo(vatMap: BakedVertexAnimationManager): void;
118
+ /**
119
+ * Serializes this vertex animation instance
120
+ * @returns - An object with the serialized instance.
121
+ */
122
+ serialize(): any;
123
+ /**
124
+ * Parses a vertex animation setting from a serialized object.
125
+ * @param source - Serialized object.
126
+ * @param scene Defines the scene we are parsing for
127
+ * @param rootUrl Defines the rootUrl to load from
128
+ */
129
+ parse(source: any, scene: Scene, rootUrl: string): void;
130
+ }
@@ -0,0 +1,134 @@
1
+ import { __decorate } from "tslib";
2
+ import { serialize, expandToProperty, serializeAsTexture, SerializationHelper } from "../Misc/decorators.js";
3
+ import { Vector4 } from "../Maths/math.vector.js";
4
+ /**
5
+ * This class is used to animate meshes using a baked vertex animation texture
6
+ * @see https://doc.babylonjs.com/divingDeeper/animation/baked_texture_animations
7
+ * @since 5.0
8
+ */
9
+ var BakedVertexAnimationManager = /** @class */ (function () {
10
+ /**
11
+ * Creates a new BakedVertexAnimationManager
12
+ * @param scene defines the current scene
13
+ */
14
+ function BakedVertexAnimationManager(scene) {
15
+ this._texture = null;
16
+ this._isEnabled = true;
17
+ /**
18
+ * Enable or disable the vertex animation manager
19
+ */
20
+ this.isEnabled = true;
21
+ /**
22
+ * The time counter, to pick the correct animation frame.
23
+ */
24
+ this.time = 0;
25
+ this._scene = scene;
26
+ this.animationParameters = new Vector4(0, 0, 0, 30);
27
+ }
28
+ /** @hidden */
29
+ BakedVertexAnimationManager.prototype._markSubMeshesAsAttributesDirty = function () {
30
+ for (var _i = 0, _a = this._scene.meshes; _i < _a.length; _i++) {
31
+ var mesh = _a[_i];
32
+ if (mesh.bakedVertexAnimationManager === this) {
33
+ mesh._markSubMeshesAsAttributesDirty();
34
+ }
35
+ }
36
+ };
37
+ /**
38
+ * Binds to the effect.
39
+ * @param effect The effect to bind to.
40
+ * @param useInstances True when it's an instance.
41
+ */
42
+ BakedVertexAnimationManager.prototype.bind = function (effect, useInstances) {
43
+ if (useInstances === void 0) { useInstances = false; }
44
+ if (!this._texture || !this._isEnabled) {
45
+ return;
46
+ }
47
+ var size = this._texture.getSize();
48
+ effect.setFloat2("bakedVertexAnimationTextureSizeInverted", 1.0 / size.width, 1.0 / size.height);
49
+ effect.setFloat("bakedVertexAnimationTime", this.time);
50
+ if (!useInstances) {
51
+ effect.setVector4("bakedVertexAnimationSettings", this.animationParameters);
52
+ }
53
+ effect.setTexture("bakedVertexAnimationTexture", this._texture);
54
+ };
55
+ /**
56
+ * Clone the current manager
57
+ * @returns a new BakedVertexAnimationManager
58
+ */
59
+ BakedVertexAnimationManager.prototype.clone = function () {
60
+ var copy = new BakedVertexAnimationManager(this._scene);
61
+ this.copyTo(copy);
62
+ return copy;
63
+ };
64
+ /**
65
+ * Sets animation parameters.
66
+ * @param startFrame The first frame of the animation.
67
+ * @param endFrame The last frame of the animation.
68
+ * @param offset The offset when starting the animation.
69
+ * @param speedFramesPerSecond The frame rate.
70
+ */
71
+ BakedVertexAnimationManager.prototype.setAnimationParameters = function (startFrame, endFrame, offset, speedFramesPerSecond) {
72
+ if (offset === void 0) { offset = 0; }
73
+ if (speedFramesPerSecond === void 0) { speedFramesPerSecond = 30; }
74
+ this.animationParameters = new Vector4(startFrame, endFrame, offset, speedFramesPerSecond);
75
+ };
76
+ /**
77
+ * Disposes the resources of the manager.
78
+ * @param forceDisposeTextures - Forces the disposal of all textures.
79
+ */
80
+ BakedVertexAnimationManager.prototype.dispose = function (forceDisposeTextures) {
81
+ var _a;
82
+ if (forceDisposeTextures) {
83
+ (_a = this._texture) === null || _a === void 0 ? void 0 : _a.dispose();
84
+ }
85
+ };
86
+ /**
87
+ * Get the current class name useful for serialization or dynamic coding.
88
+ * @returns "BakedVertexAnimationManager"
89
+ */
90
+ BakedVertexAnimationManager.prototype.getClassName = function () {
91
+ return "BakedVertexAnimationManager";
92
+ };
93
+ /**
94
+ * Makes a duplicate of the current instance into another one.
95
+ * @param vatMap define the instance where to copy the info
96
+ */
97
+ BakedVertexAnimationManager.prototype.copyTo = function (vatMap) {
98
+ SerializationHelper.Clone(function () { return vatMap; }, this);
99
+ };
100
+ /**
101
+ * Serializes this vertex animation instance
102
+ * @returns - An object with the serialized instance.
103
+ */
104
+ BakedVertexAnimationManager.prototype.serialize = function () {
105
+ return SerializationHelper.Serialize(this);
106
+ };
107
+ /**
108
+ * Parses a vertex animation setting from a serialized object.
109
+ * @param source - Serialized object.
110
+ * @param scene Defines the scene we are parsing for
111
+ * @param rootUrl Defines the rootUrl to load from
112
+ */
113
+ BakedVertexAnimationManager.prototype.parse = function (source, scene, rootUrl) {
114
+ var _this = this;
115
+ SerializationHelper.Parse(function () { return _this; }, source, scene, rootUrl);
116
+ };
117
+ __decorate([
118
+ serializeAsTexture(),
119
+ expandToProperty("_markSubMeshesAsAttributesDirty")
120
+ ], BakedVertexAnimationManager.prototype, "texture", void 0);
121
+ __decorate([
122
+ serialize(),
123
+ expandToProperty("_markSubMeshesAsAttributesDirty")
124
+ ], BakedVertexAnimationManager.prototype, "isEnabled", void 0);
125
+ __decorate([
126
+ serialize()
127
+ ], BakedVertexAnimationManager.prototype, "animationParameters", void 0);
128
+ __decorate([
129
+ serialize()
130
+ ], BakedVertexAnimationManager.prototype, "time", void 0);
131
+ return BakedVertexAnimationManager;
132
+ }());
133
+ export { BakedVertexAnimationManager };
134
+ //# sourceMappingURL=bakedVertexAnimationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bakedVertexAnimationManager.js","sourceRoot":"","sources":["../../../sourceES6/core/BakedVertexAnimation/bakedVertexAnimationManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { Scene } from \"../scene\";\r\nimport { serialize, expandToProperty, serializeAsTexture, SerializationHelper } from \"../Misc/decorators\";\r\nimport { BaseTexture } from '../Materials/Textures/baseTexture';\r\nimport { Vector4 } from \"../Maths/math.vector\";\r\nimport { Effect } from \"../Materials/effect\";\r\n\r\n/**\r\n * Interface for baked vertex animation texture, see BakedVertexAnimationManager\r\n * @since 5.0\r\n */\r\nexport interface IBakedVertexAnimationManager {\r\n /**\r\n * The vertex animation texture\r\n */\r\n texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the edgesRenderer is active\r\n */\r\n isEnabled: boolean;\r\n\r\n /**\r\n * The animation parameters for the mesh. See setAnimationParameters()\r\n */\r\n animationParameters: Vector4;\r\n\r\n /**\r\n * The time counter, to pick the correct animation frame.\r\n */\r\n time: number;\r\n\r\n /**\r\n * Binds to the effect.\r\n * @param effect The effect to bind to.\r\n * @param useInstances True when it's an instance.\r\n */\r\n bind(effect: Effect, useInstances: boolean): void;\r\n\r\n /**\r\n * Sets animation parameters.\r\n * @param startFrame The first frame of the animation.\r\n * @param endFrame The last frame of the animation.\r\n * @param offset The offset when starting the animation.\r\n * @param speedFramesPerSecond The frame rate.\r\n */\r\n setAnimationParameters(\r\n startFrame: number,\r\n endFrame: number,\r\n offset: number,\r\n speedFramesPerSecond: number\r\n ): void;\r\n\r\n /**\r\n * Disposes the resources of the manager.\r\n * @param forceDisposeTextures - Forces the disposal of all textures.\r\n */\r\n dispose(forceDisposeTextures?: boolean): void;\r\n\r\n /**\r\n * Get the current class name useful for serialization or dynamic coding.\r\n * @returns \"BakedVertexAnimationManager\"\r\n */\r\n getClassName(): string;\r\n}\r\n\r\n/**\r\n * This class is used to animate meshes using a baked vertex animation texture\r\n * @see https://doc.babylonjs.com/divingDeeper/animation/baked_texture_animations\r\n * @since 5.0\r\n */\r\nexport class BakedVertexAnimationManager implements IBakedVertexAnimationManager {\r\n private _scene: Scene;\r\n\r\n private _texture: Nullable<BaseTexture> = null;\r\n /**\r\n * The vertex animation texture\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markSubMeshesAsAttributesDirty\")\r\n public texture: Nullable<BaseTexture>;\r\n\r\n private _isEnabled = true;\r\n /**\r\n * Enable or disable the vertex animation manager\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markSubMeshesAsAttributesDirty\")\r\n public isEnabled = true;\r\n\r\n /**\r\n * The animation parameters for the mesh. See setAnimationParameters()\r\n */\r\n @serialize()\r\n public animationParameters: Vector4;\r\n\r\n /**\r\n * The time counter, to pick the correct animation frame.\r\n */\r\n @serialize()\r\n public time = 0;\r\n\r\n /**\r\n * Creates a new BakedVertexAnimationManager\r\n * @param scene defines the current scene\r\n */\r\n constructor(scene: Scene) {\r\n this._scene = scene;\r\n this.animationParameters = new Vector4(0, 0, 0, 30);\r\n }\r\n\r\n /** @hidden */\r\n public _markSubMeshesAsAttributesDirty(): void {\r\n for (const mesh of this._scene.meshes) {\r\n if ((<any>mesh).bakedVertexAnimationManager === this) {\r\n mesh._markSubMeshesAsAttributesDirty();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Binds to the effect.\r\n * @param effect The effect to bind to.\r\n * @param useInstances True when it's an instance.\r\n */\r\n public bind(effect: Effect, useInstances = false): void {\r\n if (!this._texture || !this._isEnabled) {\r\n return;\r\n }\r\n\r\n const size = this._texture.getSize();\r\n effect.setFloat2(\r\n \"bakedVertexAnimationTextureSizeInverted\",\r\n 1.0 / size.width,\r\n 1.0 / size.height\r\n );\r\n effect.setFloat(\"bakedVertexAnimationTime\", this.time);\r\n\r\n if (!useInstances) {\r\n effect.setVector4(\"bakedVertexAnimationSettings\", this.animationParameters);\r\n }\r\n\r\n effect.setTexture(\"bakedVertexAnimationTexture\", this._texture);\r\n }\r\n\r\n /**\r\n * Clone the current manager\r\n * @returns a new BakedVertexAnimationManager\r\n */\r\n public clone(): BakedVertexAnimationManager {\r\n let copy = new BakedVertexAnimationManager(this._scene);\r\n this.copyTo(copy);\r\n return copy;\r\n }\r\n\r\n /**\r\n * Sets animation parameters.\r\n * @param startFrame The first frame of the animation.\r\n * @param endFrame The last frame of the animation.\r\n * @param offset The offset when starting the animation.\r\n * @param speedFramesPerSecond The frame rate.\r\n */\r\n public setAnimationParameters(\r\n startFrame: number,\r\n endFrame: number,\r\n offset: number = 0,\r\n speedFramesPerSecond: number = 30\r\n ): void {\r\n this.animationParameters = new Vector4(startFrame, endFrame, offset, speedFramesPerSecond);\r\n }\r\n\r\n /**\r\n * Disposes the resources of the manager.\r\n * @param forceDisposeTextures - Forces the disposal of all textures.\r\n */\r\n public dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._texture?.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Get the current class name useful for serialization or dynamic coding.\r\n * @returns \"BakedVertexAnimationManager\"\r\n */\r\n public getClassName(): string {\r\n return \"BakedVertexAnimationManager\";\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the current instance into another one.\r\n * @param vatMap define the instance where to copy the info\r\n */\r\n public copyTo(vatMap: BakedVertexAnimationManager): void {\r\n SerializationHelper.Clone(() => vatMap, this);\r\n }\r\n\r\n /**\r\n * Serializes this vertex animation instance\r\n * @returns - An object with the serialized instance.\r\n */\r\n public serialize(): any {\r\n return SerializationHelper.Serialize(this);\r\n }\r\n\r\n /**\r\n * Parses a vertex animation setting from a serialized object.\r\n * @param source - Serialized object.\r\n * @param scene Defines the scene we are parsing for\r\n * @param rootUrl Defines the rootUrl to load from\r\n */\r\n public parse(source: any, scene: Scene, rootUrl: string): void {\r\n SerializationHelper.Parse(() => this, source, scene, rootUrl);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "./bakedVertexAnimationManager";
2
+ export * from "./vertexAnimationBaker";
@@ -0,0 +1,3 @@
1
+ export * from "./bakedVertexAnimationManager.js";
2
+ export * from "./vertexAnimationBaker.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sourceES6/core/BakedVertexAnimation/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./bakedVertexAnimationManager\";\r\nexport * from \"./vertexAnimationBaker\";\r\n"]}
@@ -0,0 +1,65 @@
1
+ import { AnimationRange } from "../Animations/animationRange";
2
+ import { RawTexture } from "../Materials/Textures/rawTexture";
3
+ import { Mesh } from "../Meshes/mesh";
4
+ import { Scene } from "../scene";
5
+ /**
6
+ * Class to bake vertex animation textures.
7
+ * @since 5.0
8
+ */
9
+ export declare class VertexAnimationBaker {
10
+ private _scene;
11
+ private _mesh;
12
+ /**
13
+ * Create a new VertexAnimationBaker object which can help baking animations into a texture.
14
+ * @param scene Defines the scene the VAT belongs to
15
+ * @param mesh Defines the mesh the VAT belongs to
16
+ * @param skeleton Defines the skeleton the VAT belongs to
17
+ */
18
+ constructor(scene: Scene, mesh: Mesh);
19
+ /**
20
+ * Bakes the animation into the texture. This should be called once, when the
21
+ * scene starts, so the VAT is generated and associated to the mesh.
22
+ * @param ranges Defines the ranges in the animation that will be baked.
23
+ * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.
24
+ */
25
+ bakeVertexData(ranges: AnimationRange[]): Promise<Float32Array>;
26
+ /**
27
+ * Runs an animation frame and stores its vertex data
28
+ *
29
+ * @param vertexData The array to save data to.
30
+ * @param frameIndex Current frame in the skeleton animation to render.
31
+ * @param textureIndex Current index of the texture data.
32
+ */
33
+ private _executeAnimationFrame;
34
+ /**
35
+ * Builds a vertex animation texture given the vertexData in an array.
36
+ * @param vertexData The vertex animation data. You can generate it with bakeVertexData().
37
+ * @returns The vertex animation texture to be used with BakedVertexAnimationManager.
38
+ */
39
+ textureFromBakedVertexData(vertexData: Float32Array): RawTexture;
40
+ /**
41
+ * Serializes our vertexData to an object, with a nice string for the vertexData.
42
+ * @param vertexData The vertex array data.
43
+ * @returns This object serialized to a JS dict.
44
+ */
45
+ serializeBakedVertexDataToObject(vertexData: Float32Array): Record<string, any>;
46
+ /**
47
+ * Loads previously baked data.
48
+ * @param data The object as serialized by serializeBakedVertexDataToObject()
49
+ * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.
50
+ */
51
+ loadBakedVertexDataFromObject(data: Record<string, any>): Float32Array;
52
+ /**
53
+ * Serializes our vertexData to a JSON string, with a nice string for the vertexData.
54
+ * Should be called right after bakeVertexData().
55
+ * @param vertexData The vertex array data.
56
+ * @returns This object serialized to a safe string.
57
+ */
58
+ serializeBakedVertexDataToJSON(vertexData: Float32Array): string;
59
+ /**
60
+ * Loads previously baked data in string format.
61
+ * @param json The json string as serialized by serializeBakedVertexDataToJSON().
62
+ * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.
63
+ */
64
+ loadBakedVertexDataFromJSON(json: string): Float32Array;
65
+ }
@@ -0,0 +1,155 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { RawTexture } from "../Materials/Textures/rawTexture.js";
3
+ import { Texture } from "../Materials/Textures/texture.js";
4
+ import { EncodeArrayBufferToBase64, DecodeBase64ToBinary } from "../Misc/stringTools.js";
5
+ /**
6
+ * Class to bake vertex animation textures.
7
+ * @since 5.0
8
+ */
9
+ var VertexAnimationBaker = /** @class */ (function () {
10
+ /**
11
+ * Create a new VertexAnimationBaker object which can help baking animations into a texture.
12
+ * @param scene Defines the scene the VAT belongs to
13
+ * @param mesh Defines the mesh the VAT belongs to
14
+ * @param skeleton Defines the skeleton the VAT belongs to
15
+ */
16
+ function VertexAnimationBaker(scene, mesh) {
17
+ this._scene = scene;
18
+ this._mesh = mesh;
19
+ }
20
+ /**
21
+ * Bakes the animation into the texture. This should be called once, when the
22
+ * scene starts, so the VAT is generated and associated to the mesh.
23
+ * @param ranges Defines the ranges in the animation that will be baked.
24
+ * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.
25
+ */
26
+ VertexAnimationBaker.prototype.bakeVertexData = function (ranges) {
27
+ return __awaiter(this, void 0, void 0, function () {
28
+ var boneCount, frameCount, textureIndex, textureSize, vertexData, _i, ranges_1, range, frameIndex;
29
+ return __generator(this, function (_a) {
30
+ switch (_a.label) {
31
+ case 0:
32
+ if (!this._mesh.skeleton) {
33
+ throw new Error("No skeleton in this mesh.");
34
+ }
35
+ boneCount = this._mesh.skeleton.bones.length;
36
+ frameCount = ranges.reduce(function (previous, current) { return previous + current.to - current.from + 1; }, 0);
37
+ if (isNaN(frameCount)) {
38
+ throw new Error("Invalid animation ranges.");
39
+ }
40
+ textureIndex = 0;
41
+ textureSize = (boneCount + 1) * 4 * 4 * frameCount;
42
+ vertexData = new Float32Array(textureSize);
43
+ this._scene.stopAnimation(this._mesh);
44
+ this._mesh.skeleton.returnToRest();
45
+ _i = 0, ranges_1 = ranges;
46
+ _a.label = 1;
47
+ case 1:
48
+ if (!(_i < ranges_1.length)) return [3 /*break*/, 6];
49
+ range = ranges_1[_i];
50
+ frameIndex = range.from;
51
+ _a.label = 2;
52
+ case 2:
53
+ if (!(frameIndex <= range.to)) return [3 /*break*/, 5];
54
+ return [4 /*yield*/, this._executeAnimationFrame(vertexData, frameIndex, textureIndex++)];
55
+ case 3:
56
+ _a.sent();
57
+ _a.label = 4;
58
+ case 4:
59
+ frameIndex++;
60
+ return [3 /*break*/, 2];
61
+ case 5:
62
+ _i++;
63
+ return [3 /*break*/, 1];
64
+ case 6: return [2 /*return*/, vertexData];
65
+ }
66
+ });
67
+ });
68
+ };
69
+ /**
70
+ * Runs an animation frame and stores its vertex data
71
+ *
72
+ * @param vertexData The array to save data to.
73
+ * @param frameIndex Current frame in the skeleton animation to render.
74
+ * @param textureIndex Current index of the texture data.
75
+ */
76
+ VertexAnimationBaker.prototype._executeAnimationFrame = function (vertexData, frameIndex, textureIndex) {
77
+ return __awaiter(this, void 0, void 0, function () {
78
+ var _this = this;
79
+ return __generator(this, function (_a) {
80
+ return [2 /*return*/, new Promise(function (resolve, _reject) {
81
+ _this._scene.beginAnimation(_this._mesh.skeleton, frameIndex, frameIndex, false, 1.0, function () {
82
+ _this._mesh.skeleton.prepare();
83
+ // generate matrices
84
+ var skeletonMatrices = _this._mesh.skeleton.getTransformMatrices(_this._mesh);
85
+ vertexData.set(skeletonMatrices, textureIndex * skeletonMatrices.length);
86
+ resolve();
87
+ });
88
+ })];
89
+ });
90
+ });
91
+ };
92
+ /**
93
+ * Builds a vertex animation texture given the vertexData in an array.
94
+ * @param vertexData The vertex animation data. You can generate it with bakeVertexData().
95
+ * @returns The vertex animation texture to be used with BakedVertexAnimationManager.
96
+ */
97
+ VertexAnimationBaker.prototype.textureFromBakedVertexData = function (vertexData) {
98
+ if (!this._mesh.skeleton) {
99
+ throw new Error("No skeleton in this mesh.");
100
+ }
101
+ var boneCount = this._mesh.skeleton.bones.length;
102
+ var texture = RawTexture.CreateRGBATexture(vertexData, (boneCount + 1) * 4, vertexData.length / ((boneCount + 1) * 4 * 4), this._scene, false, false, Texture.NEAREST_NEAREST, 1);
103
+ texture.name = "VAT" + this._mesh.skeleton.name;
104
+ return texture;
105
+ };
106
+ /**
107
+ * Serializes our vertexData to an object, with a nice string for the vertexData.
108
+ * @param vertexData The vertex array data.
109
+ * @returns This object serialized to a JS dict.
110
+ */
111
+ VertexAnimationBaker.prototype.serializeBakedVertexDataToObject = function (vertexData) {
112
+ if (!this._mesh.skeleton) {
113
+ throw new Error("No skeleton in this mesh.");
114
+ }
115
+ // this converts the float array to a serialized base64 string, ~1.3x larger
116
+ // than the original.
117
+ var boneCount = this._mesh.skeleton.bones.length;
118
+ var width = (boneCount + 1) * 4;
119
+ var height = vertexData.length / ((boneCount + 1) * 4 * 4);
120
+ var data = {
121
+ vertexData: EncodeArrayBufferToBase64(vertexData),
122
+ width: width,
123
+ height: height
124
+ };
125
+ return data;
126
+ };
127
+ /**
128
+ * Loads previously baked data.
129
+ * @param data The object as serialized by serializeBakedVertexDataToObject()
130
+ * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.
131
+ */
132
+ VertexAnimationBaker.prototype.loadBakedVertexDataFromObject = function (data) {
133
+ return new Float32Array(DecodeBase64ToBinary(data.vertexData));
134
+ };
135
+ /**
136
+ * Serializes our vertexData to a JSON string, with a nice string for the vertexData.
137
+ * Should be called right after bakeVertexData().
138
+ * @param vertexData The vertex array data.
139
+ * @returns This object serialized to a safe string.
140
+ */
141
+ VertexAnimationBaker.prototype.serializeBakedVertexDataToJSON = function (vertexData) {
142
+ return JSON.stringify(this.serializeBakedVertexDataToObject(vertexData));
143
+ };
144
+ /**
145
+ * Loads previously baked data in string format.
146
+ * @param json The json string as serialized by serializeBakedVertexDataToJSON().
147
+ * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.
148
+ */
149
+ VertexAnimationBaker.prototype.loadBakedVertexDataFromJSON = function (json) {
150
+ return this.loadBakedVertexDataFromObject(JSON.parse(json));
151
+ };
152
+ return VertexAnimationBaker;
153
+ }());
154
+ export { VertexAnimationBaker };
155
+ //# sourceMappingURL=vertexAnimationBaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertexAnimationBaker.js","sourceRoot":"","sources":["../../../sourceES6/core/BakedVertexAnimation/vertexAnimationBaker.ts"],"names":[],"mappings":"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","sourcesContent":["import { AnimationRange } from \"../Animations/animationRange\";\r\nimport { RawTexture } from \"../Materials/Textures/rawTexture\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { EncodeArrayBufferToBase64, DecodeBase64ToBinary } from \"../Misc/stringTools\";\r\nimport { Scene } from \"../scene\";\r\n\r\n\r\n/**\r\n * Class to bake vertex animation textures.\r\n * @since 5.0\r\n */\r\nexport class VertexAnimationBaker {\r\n private _scene: Scene;\r\n private _mesh: Mesh;\r\n\r\n /**\r\n * Create a new VertexAnimationBaker object which can help baking animations into a texture.\r\n * @param scene Defines the scene the VAT belongs to\r\n * @param mesh Defines the mesh the VAT belongs to\r\n * @param skeleton Defines the skeleton the VAT belongs to\r\n */\r\n constructor(scene: Scene, mesh: Mesh) {\r\n this._scene = scene;\r\n this._mesh = mesh;\r\n }\r\n\r\n /**\r\n * Bakes the animation into the texture. This should be called once, when the\r\n * scene starts, so the VAT is generated and associated to the mesh.\r\n * @param ranges Defines the ranges in the animation that will be baked.\r\n * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.\r\n */\r\n public async bakeVertexData(ranges: AnimationRange[]): Promise<Float32Array> {\r\n if (!this._mesh.skeleton) {\r\n throw new Error(\"No skeleton in this mesh.\");\r\n }\r\n const boneCount = this._mesh.skeleton.bones.length;\r\n\r\n /** total number of frames in our animations */\r\n const frameCount = ranges.reduce(\r\n (previous: number, current: AnimationRange) => previous + current.to - current.from + 1,\r\n 0\r\n );\r\n\r\n if (isNaN(frameCount)) {\r\n throw new Error(\"Invalid animation ranges.\");\r\n }\r\n\r\n // reset our loop data\r\n let textureIndex = 0;\r\n const textureSize = (boneCount + 1) * 4 * 4 * frameCount;\r\n const vertexData = new Float32Array(textureSize);\r\n this._scene.stopAnimation(this._mesh);\r\n this._mesh.skeleton.returnToRest();\r\n\r\n // render all frames from our slices\r\n for (const range of ranges) {\r\n for (let frameIndex = range.from; frameIndex <= range.to; frameIndex++) {\r\n await this._executeAnimationFrame(vertexData, frameIndex, textureIndex++);\r\n }\r\n }\r\n\r\n return vertexData;\r\n }\r\n\r\n /**\r\n * Runs an animation frame and stores its vertex data\r\n *\r\n * @param vertexData The array to save data to.\r\n * @param frameIndex Current frame in the skeleton animation to render.\r\n * @param textureIndex Current index of the texture data.\r\n */\r\n private async _executeAnimationFrame(vertexData: Float32Array, frameIndex: number, textureIndex: number): Promise<void> {\r\n return new Promise<void>((resolve, _reject) => {\r\n this._scene.beginAnimation(this._mesh.skeleton, frameIndex, frameIndex, false, 1.0, () => {\r\n this._mesh.skeleton!.prepare();\r\n\r\n // generate matrices\r\n const skeletonMatrices = this._mesh.skeleton!.getTransformMatrices(this._mesh);\r\n vertexData.set(skeletonMatrices, textureIndex * skeletonMatrices.length);\r\n\r\n resolve();\r\n });\r\n });\r\n }\r\n /**\r\n * Builds a vertex animation texture given the vertexData in an array.\r\n * @param vertexData The vertex animation data. You can generate it with bakeVertexData().\r\n * @returns The vertex animation texture to be used with BakedVertexAnimationManager.\r\n */\r\n public textureFromBakedVertexData(vertexData: Float32Array): RawTexture {\r\n if (!this._mesh.skeleton) {\r\n throw new Error(\"No skeleton in this mesh.\");\r\n }\r\n const boneCount = this._mesh.skeleton.bones.length;\r\n\r\n const texture = RawTexture.CreateRGBATexture(\r\n vertexData,\r\n (boneCount + 1) * 4,\r\n vertexData.length / ((boneCount + 1) * 4 * 4),\r\n this._scene,\r\n false,\r\n false,\r\n Texture.NEAREST_NEAREST,\r\n 1\r\n );\r\n texture.name = \"VAT\" + this._mesh.skeleton.name;\r\n return texture;\r\n }\r\n /**\r\n * Serializes our vertexData to an object, with a nice string for the vertexData.\r\n * @param vertexData The vertex array data.\r\n * @returns This object serialized to a JS dict.\r\n */\r\n public serializeBakedVertexDataToObject(vertexData: Float32Array): Record<string, any> {\r\n if (!this._mesh.skeleton) {\r\n throw new Error(\"No skeleton in this mesh.\");\r\n }\r\n\r\n // this converts the float array to a serialized base64 string, ~1.3x larger\r\n // than the original.\r\n const boneCount = this._mesh.skeleton.bones.length;\r\n const width = (boneCount + 1) * 4;\r\n const height = vertexData.length / ((boneCount + 1) * 4 * 4);\r\n const data = {\r\n vertexData: EncodeArrayBufferToBase64(vertexData),\r\n width,\r\n height\r\n };\r\n return data;\r\n }\r\n /**\r\n * Loads previously baked data.\r\n * @param data The object as serialized by serializeBakedVertexDataToObject()\r\n * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.\r\n */\r\n public loadBakedVertexDataFromObject(data: Record<string, any>): Float32Array {\r\n return new Float32Array(DecodeBase64ToBinary(data.vertexData));\r\n }\r\n /**\r\n * Serializes our vertexData to a JSON string, with a nice string for the vertexData.\r\n * Should be called right after bakeVertexData().\r\n * @param vertexData The vertex array data.\r\n * @returns This object serialized to a safe string.\r\n */\r\n public serializeBakedVertexDataToJSON(vertexData: Float32Array): string {\r\n return JSON.stringify(this.serializeBakedVertexDataToObject(vertexData));\r\n }\r\n /**\r\n * Loads previously baked data in string format.\r\n * @param json The json string as serialized by serializeBakedVertexDataToJSON().\r\n * @returns The array of matrix transforms for each vertex (columns) and frame (rows), as a Float32Array.\r\n */\r\n public loadBakedVertexDataFromJSON(json: string): Float32Array {\r\n return this.loadBakedVertexDataFromObject(JSON.parse(json));\r\n }\r\n}\r\n"]}
@@ -1,6 +1,7 @@
1
1
  import { Behavior } from "../../Behaviors/behavior";
2
2
  import { ArcRotateCamera } from "../../Cameras/arcRotateCamera";
3
3
  import { ExponentialEase } from "../../Animations/easing";
4
+ import { Observable } from "../../Misc/observable";
4
5
  import { Nullable } from "../../types";
5
6
  import { AbstractMesh } from "../../Meshes/abstractMesh";
6
7
  import { Vector3 } from "../../Maths/math.vector";
@@ -13,6 +14,10 @@ export declare class FramingBehavior implements Behavior<ArcRotateCamera> {
13
14
  * Gets the name of the behavior.
14
15
  */
15
16
  get name(): string;
17
+ /**
18
+ * An event triggered when the animation to zoom on target mesh has ended
19
+ */
20
+ onTargetFramingAnimationEndObservable: Observable<void>;
16
21
  private _mode;
17
22
  private _radiusScale;
18
23
  private _positionScale;
@@ -1,4 +1,5 @@
1
1
  import { ExponentialEase, EasingFunction } from "../../Animations/easing.js";
2
+ import { Observable } from "../../Misc/observable.js";
2
3
  import { PointerEventTypes } from "../../Events/pointerEvents.js";
3
4
  import { PrecisionDate } from "../../Misc/precisionDate.js";
4
5
  import { Vector3, Vector2 } from "../../Maths/math.vector.js";
@@ -9,6 +10,10 @@ import { Animation } from "../../Animations/animation.js";
9
10
  */
10
11
  var FramingBehavior = /** @class */ (function () {
11
12
  function FramingBehavior() {
13
+ /**
14
+ * An event triggered when the animation to zoom on target mesh has ended
15
+ */
16
+ this.onTargetFramingAnimationEndObservable = new Observable();
12
17
  this._mode = FramingBehavior.FitFrustumSidesMode;
13
18
  this._radiusScale = 1.0;
14
19
  this._positionScale = 0.5;
@@ -196,7 +201,9 @@ var FramingBehavior = /** @class */ (function () {
196
201
  });
197
202
  this._onMeshTargetChangedObserver = camera.onMeshTargetChangedObservable.add(function (mesh) {
198
203
  if (mesh) {
199
- _this.zoomOnMesh(mesh);
204
+ _this.zoomOnMesh(mesh, undefined, function () {
205
+ _this.onTargetFramingAnimationEndObservable.notifyObservers();
206
+ });
200
207
  }
201
208
  });
202
209
  this._onAfterCheckInputsObserver = camera.onAfterCheckInputsObservable.add(function () {