index.d.ts 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680
  1. declare module 'babylonjs/meshBuilder' {
  2. class MeshBuilder {
  3. private static updateSideOrientation(orientation?);
  4. /**
  5. * Creates a box mesh.
  6. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#box
  7. * The parameter `size` sets the size (float) of each box side (default 1).
  8. * You can set some different box dimensions by using the parameters `width`, `height` and `depth` (all by default have the same value than `size`).
  9. * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of 6 Color3 elements) and `faceUV` (an array of 6 Vector4 elements).
  10. * Please read this tutorial : http://doc.babylonjs.com/tutorials/CreateBox_Per_Face_Textures_And_Colors
  11. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  12. * 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).
  13. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  14. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  15. */
  16. static CreateBox(name: string, options: {
  17. size?: number;
  18. width?: number;
  19. height?: number;
  20. depth?: number;
  21. faceUV?: Vector4[];
  22. faceColors?: Color4[];
  23. sideOrientation?: number;
  24. frontUVs?: Vector4;
  25. backUVs?: Vector4;
  26. updatable?: boolean;
  27. }, scene?: Nullable<Scene>): Mesh;
  28. /**
  29. * Creates a sphere mesh.
  30. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#sphere
  31. * The parameter `diameter` sets the diameter size (float) of the sphere (default 1).
  32. * You can set some different sphere dimensions, for instance to build an ellipsoid, by using the parameters `diameterX`, `diameterY` and `diameterZ` (all by default have the same value than `diameter`).
  33. * The parameter `segments` sets the sphere number of horizontal stripes (positive integer, default 32).
  34. * You can create an unclosed sphere with the parameter `arc` (positive float, default 1), valued between 0 and 1, what is the ratio of the circumference (latitude) : 2 x PI x ratio
  35. * You can create an unclosed sphere on its height with the parameter `slice` (positive float, default1), valued between 0 and 1, what is the height ratio (longitude).
  36. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  37. * 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).
  38. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  39. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  40. */
  41. static CreateSphere(name: string, options: {
  42. segments?: number;
  43. diameter?: number;
  44. diameterX?: number;
  45. diameterY?: number;
  46. diameterZ?: number;
  47. arc?: number;
  48. slice?: number;
  49. sideOrientation?: number;
  50. frontUVs?: Vector4;
  51. backUVs?: Vector4;
  52. updatable?: boolean;
  53. }, scene: any): Mesh;
  54. /**
  55. * Creates a plane polygonal mesh. By default, this is a disc.
  56. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#disc
  57. * The parameter `radius` sets the radius size (float) of the polygon (default 0.5).
  58. * The parameter `tessellation` sets the number of polygon sides (positive integer, default 64). So a tessellation valued to 3 will build a triangle, to 4 a square, etc.
  59. * You can create an unclosed polygon with the parameter `arc` (positive float, default 1), valued between 0 and 1, what is the ratio of the circumference : 2 x PI x ratio
  60. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  61. * 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).
  62. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  63. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  64. */
  65. static CreateDisc(name: string, options: {
  66. radius?: number;
  67. tessellation?: number;
  68. arc?: number;
  69. updatable?: boolean;
  70. sideOrientation?: number;
  71. frontUVs?: Vector4;
  72. backUVs?: Vector4;
  73. }, scene?: Nullable<Scene>): Mesh;
  74. /**
  75. * Creates a sphere based upon an icosahedron with 20 triangular faces which can be subdivided.
  76. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#icosphere
  77. * The parameter `radius` sets the radius size (float) of the icosphere (default 1).
  78. * You can set some different icosphere dimensions, for instance to build an ellipsoid, by using the parameters `radiusX`, `radiusY` and `radiusZ` (all by default have the same value than `radius`).
  79. * The parameter `subdivisions` sets the number of subdivisions (postive integer, default 4). The more subdivisions, the more faces on the icosphere whatever its size.
  80. * The parameter `flat` (boolean, default true) gives each side its own normals. Set it to false to get a smooth continuous light reflection on the surface.
  81. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  82. * 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).
  83. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  84. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  85. */
  86. static CreateIcoSphere(name: string, options: {
  87. radius?: number;
  88. radiusX?: number;
  89. radiusY?: number;
  90. radiusZ?: number;
  91. flat?: boolean;
  92. subdivisions?: number;
  93. sideOrientation?: number;
  94. frontUVs?: Vector4;
  95. backUVs?: Vector4;
  96. updatable?: boolean;
  97. }, scene: Scene): Mesh;
  98. /**
  99. * Creates a ribbon mesh.
  100. * The ribbon is a parametric shape : http://doc.babylonjs.com/tutorials/Parametric_Shapes. It has no predefined shape. Its final shape will depend on the input parameters.
  101. *
  102. * Please read this full tutorial to understand how to design a ribbon : http://doc.babylonjs.com/tutorials/Ribbon_Tutorial
  103. * The parameter `pathArray` is a required array of paths, what are each an array of successive Vector3. The pathArray parameter depicts the ribbon geometry.
  104. * The parameter `closeArray` (boolean, default false) creates a seam between the first and the last paths of the path array.
  105. * The parameter `closePath` (boolean, default false) creates a seam between the first and the last points of each path of the path array.
  106. * 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.
  107. * 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.
  108. * The optional parameter `instance` is an instance of an existing Ribbon object to be updated with the passed `pathArray` parameter : http://doc.babylonjs.com/tutorials/How_to_dynamically_morph_a_mesh#ribbon
  109. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  110. * 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).
  111. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  112. * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture.
  113. * 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.
  114. * The parameters `colors` is an optional flat array of `Color4` to set/update each ribbon vertex with its own custom color values.
  115. * 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
  116. * if you set `closePath` to `true`, there's one extra vertex per path in the geometry.
  117. * Moreover, you can use the parameter `color` with `instance` (to update the ribbon), only if you previously used it at creation time.
  118. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  119. */
  120. static CreateRibbon(name: string, options: {
  121. pathArray: Vector3[][];
  122. closeArray?: boolean;
  123. closePath?: boolean;
  124. offset?: number;
  125. updatable?: boolean;
  126. sideOrientation?: number;
  127. frontUVs?: Vector4;
  128. backUVs?: Vector4;
  129. instance?: Mesh;
  130. invertUV?: boolean;
  131. uvs?: Vector2[];
  132. colors?: Color4[];
  133. }, scene?: Nullable<Scene>): Mesh;
  134. /**
  135. * Creates a cylinder or a cone mesh.
  136. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#cylinder-or-cone
  137. * The parameter `height` sets the height size (float) of the cylinder/cone (float, default 2).
  138. * The parameter `diameter` sets the diameter of the top and bottom cap at once (float, default 1).
  139. * The parameters `diameterTop` and `diameterBottom` overwrite the parameter `diameter` and set respectively the top cap and bottom cap diameter (floats, default 1). The parameter "diameterBottom" can't be zero.
  140. * The parameter `tessellation` sets the number of cylinder sides (positive integer, default 24). Set it to 3 to get a prism for instance.
  141. * The parameter `subdivisions` sets the number of rings along the cylinder height (positive integer, default 1).
  142. * The parameter `hasRings` (boolean, default false) makes the subdivisions independent from each other, so they become different faces.
  143. * The parameter `enclose` (boolean, default false) adds two extra faces per subdivision to a sliced cylinder to close it around its height axis.
  144. * The parameter `arc` (float, default 1) is the ratio (max 1) to apply to the circumference to slice the cylinder.
  145. * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of n Color3 elements) and `faceUV` (an array of n Vector4 elements).
  146. * The value of n is the number of cylinder faces. If the cylinder has only 1 subdivisions, n equals : top face + cylinder surface + bottom face = 3
  147. * Now, if the cylinder has 5 independent subdivisions (hasRings = true), n equals : top face + 5 stripe surfaces + bottom face = 2 + 5 = 7
  148. * Finally, if the cylinder has 5 independent subdivisions and is enclose, n equals : top face + 5 x (stripe surface + 2 closing faces) + bottom face = 2 + 5 * 3 = 17
  149. * Each array (color or UVs) is always ordered the same way : the first element is the bottom cap, the last element is the top cap. The other elements are each a ring surface.
  150. * If `enclose` is false, a ring surface is one element.
  151. * If `enclose` is true, a ring surface is 3 successive elements in the array : the tubular surface, then the two closing faces.
  152. * Example how to set colors and textures on a sliced cylinder : http://www.html5gamedevs.com/topic/17945-creating-a-closed-slice-of-a-cylinder/#comment-106379
  153. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  154. * 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).
  155. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  156. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  157. */
  158. static CreateCylinder(name: string, options: {
  159. height?: number;
  160. diameterTop?: number;
  161. diameterBottom?: number;
  162. diameter?: number;
  163. tessellation?: number;
  164. subdivisions?: number;
  165. arc?: number;
  166. faceColors?: Color4[];
  167. faceUV?: Vector4[];
  168. updatable?: boolean;
  169. hasRings?: boolean;
  170. enclose?: boolean;
  171. sideOrientation?: number;
  172. frontUVs?: Vector4;
  173. backUVs?: Vector4;
  174. }, scene: any): Mesh;
  175. /**
  176. * Creates a torus mesh.
  177. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#torus
  178. * The parameter `diameter` sets the diameter size (float) of the torus (default 1).
  179. * The parameter `thickness` sets the diameter size of the tube of the torus (float, default 0.5).
  180. * The parameter `tessellation` sets the number of torus sides (postive integer, default 16).
  181. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  182. * 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).
  183. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  184. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  185. */
  186. static CreateTorus(name: string, options: {
  187. diameter?: number;
  188. thickness?: number;
  189. tessellation?: number;
  190. updatable?: boolean;
  191. sideOrientation?: number;
  192. frontUVs?: Vector4;
  193. backUVs?: Vector4;
  194. }, scene: any): Mesh;
  195. /**
  196. * Creates a torus knot mesh.
  197. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#torus-knot
  198. * The parameter `radius` sets the global radius size (float) of the torus knot (default 2).
  199. * The parameter `radialSegments` sets the number of sides on each tube segments (positive integer, default 32).
  200. * The parameter `tubularSegments` sets the number of tubes to decompose the knot into (positive integer, default 32).
  201. * The parameters `p` and `q` are the number of windings on each axis (positive integers, default 2 and 3).
  202. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  203. * 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).
  204. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  205. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  206. */
  207. static CreateTorusKnot(name: string, options: {
  208. radius?: number;
  209. tube?: number;
  210. radialSegments?: number;
  211. tubularSegments?: number;
  212. p?: number;
  213. q?: number;
  214. updatable?: boolean;
  215. sideOrientation?: number;
  216. frontUVs?: Vector4;
  217. backUVs?: Vector4;
  218. }, scene: any): Mesh;
  219. /**
  220. * Creates a line system mesh.
  221. * A line system is a pool of many lines gathered in a single mesh.
  222. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#linesystem
  223. * A line system mesh is considered as a parametric shape since it has no predefined original shape. Its shape is determined by the passed array of lines as an input parameter.
  224. * Like every other parametric shape, it is dynamically updatable by passing an existing instance of LineSystem to this static function.
  225. * The parameter `lines` is an array of lines, each line being an array of successive Vector3.
  226. * The optional parameter `instance` is an instance of an existing LineSystem object to be updated with the passed `lines` parameter. The way to update it is the same than for
  227. * The optional parameter `colors` is an array of line colors, each line colors being an array of successive Color4, one per line point.
  228. * The optional parameter `useVertexAlpha' is to be set to `false` (default `true`) when you don't need the alpha blending (faster).
  229. * updating a simple Line mesh, you just need to update every line in the `lines` array : http://doc.babylonjs.com/tutorials/How_to_dynamically_morph_a_mesh#lines-and-dashedlines
  230. * When updating an instance, remember that only line point positions can change, not the number of points, neither the number of lines.
  231. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  232. */
  233. static CreateLineSystem(name: string, options: {
  234. lines: Vector3[][];
  235. updatable: boolean;
  236. instance: Nullable<LinesMesh>;
  237. colors?: Nullable<Color4[][]>;
  238. useVertexAlpha?: boolean;
  239. }, scene: Nullable<Scene>): LinesMesh;
  240. /**
  241. * Creates a line mesh.
  242. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#lines
  243. * A line mesh is considered as a parametric shape since it has no predefined original shape. Its shape is determined by the passed array of points as an input parameter.
  244. * Like every other parametric shape, it is dynamically updatable by passing an existing instance of LineMesh to this static function.
  245. * The parameter `points` is an array successive Vector3.
  246. * The optional parameter `instance` is an instance of an existing LineMesh object to be updated with the passed `points` parameter : http://doc.babylonjs.com/tutorials/How_to_dynamically_morph_a_mesh#lines-and-dashedlines
  247. * The optional parameter `colors` is an array of successive Color4, one per line point.
  248. * The optional parameter `useVertexAlpha' is to be set to `false` (default `true`) when you don't need alpha blending (faster).
  249. * When updating an instance, remember that only point positions can change, not the number of points.
  250. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  251. */
  252. static CreateLines(name: string, options: {
  253. points: Vector3[];
  254. updatable: boolean;
  255. instance: Nullable<LinesMesh>;
  256. colors?: Color4[];
  257. useVertexAlpha?: boolean;
  258. }, scene?: Nullable<Scene>): LinesMesh;
  259. /**
  260. * Creates a dashed line mesh.
  261. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#dashed-lines
  262. * A dashed line mesh is considered as a parametric shape since it has no predefined original shape. Its shape is determined by the passed array of points as an input parameter.
  263. * Like every other parametric shape, it is dynamically updatable by passing an existing instance of LineMesh to this static function.
  264. * The parameter `points` is an array successive Vector3.
  265. * The parameter `dashNb` is the intended total number of dashes (positive integer, default 200).
  266. * The parameter `dashSize` is the size of the dashes relatively the dash number (positive float, default 3).
  267. * The parameter `gapSize` is the size of the gap between two successive dashes relatively the dash number (positive float, default 1).
  268. * The optional parameter `instance` is an instance of an existing LineMesh object to be updated with the passed `points` parameter : http://doc.babylonjs.com/tutorials/How_to_dynamically_morph_a_mesh#lines-and-dashedlines
  269. * When updating an instance, remember that only point positions can change, not the number of points.
  270. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  271. */
  272. static CreateDashedLines(name: string, options: {
  273. points: Vector3[];
  274. dashSize?: number;
  275. gapSize?: number;
  276. dashNb?: number;
  277. updatable?: boolean;
  278. instance?: LinesMesh;
  279. }, scene?: Nullable<Scene>): LinesMesh;
  280. /**
  281. * Creates an extruded shape mesh.
  282. * The extrusion is a parametric shape : http://doc.babylonjs.com/tutorials/Parametric_Shapes. It has no predefined shape. Its final shape will depend on the input parameters.
  283. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#extruded-shapes
  284. *
  285. * Please read this full tutorial to understand how to design an extruded shape : http://doc.babylonjs.com/tutorials/Parametric_Shapes#extrusion
  286. * The parameter `shape` is a required array of successive Vector3. This array depicts the shape to be extruded in its local space : the shape must be designed in the xOy plane and will be
  287. * extruded along the Z axis.
  288. * The parameter `path` is a required array of successive Vector3. This is the axis curve the shape is extruded along.
  289. * The parameter `rotation` (float, default 0 radians) is the angle value to rotate the shape each step (each path point), from the former step (so rotation added each step) along the curve.
  290. * The parameter `scale` (float, default 1) is the value to scale the shape.
  291. * 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
  292. * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : http://doc.babylonjs.com/tutorials/How_to_dynamically_morph_a_mesh#extruded-shape
  293. * Remember you can only change the shape or path point positions, not their number when updating an extruded shape.
  294. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  295. * 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).
  296. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  297. * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture.
  298. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  299. */
  300. static ExtrudeShape(name: string, options: {
  301. shape: Vector3[];
  302. path: Vector3[];
  303. scale?: number;
  304. rotation?: number;
  305. cap?: number;
  306. updatable?: boolean;
  307. sideOrientation?: number;
  308. frontUVs?: Vector4;
  309. backUVs?: Vector4;
  310. instance?: Mesh;
  311. invertUV?: boolean;
  312. }, scene?: Nullable<Scene>): Mesh;
  313. /**
  314. * Creates an custom extruded shape mesh.
  315. * The custom extrusion is a parametric shape : http://doc.babylonjs.com/tutorials/Parametric_Shapes. It has no predefined shape. Its final shape will depend on the input parameters.
  316. * tuto :http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#custom-extruded-shapes
  317. *
  318. * Please read this full tutorial to understand how to design a custom extruded shape : http://doc.babylonjs.com/tutorials/Parametric_Shapes#extrusion
  319. * The parameter `shape` is a required array of successive Vector3. This array depicts the shape to be extruded in its local space : the shape must be designed in the xOy plane and will be
  320. * extruded along the Z axis.
  321. * The parameter `path` is a required array of successive Vector3. This is the axis curve the shape is extruded along.
  322. * The parameter `rotationFunction` (JS function) is a custom Javascript function called on each path point. This function is passed the position i of the point in the path
  323. * and the distance of this point from the begining of the path :
  324. * ```javascript
  325. * var rotationFunction = function(i, distance) {
  326. * // do things
  327. * return rotationValue; }
  328. * ```
  329. * It must returns a float value that will be the rotation in radians applied to the shape on each path point.
  330. * The parameter `scaleFunction` (JS function) is a custom Javascript function called on each path point. This function is passed the position i of the point in the path
  331. * and the distance of this point from the begining of the path :
  332. * ```javascript
  333. * var scaleFunction = function(i, distance) {
  334. * // do things
  335. * return scaleValue;}
  336. * ```
  337. * It must returns a float value that will be the scale value applied to the shape on each path point.
  338. * The parameter `ribbonClosePath` (boolean, default false) forces the extrusion underlying ribbon to close all the paths in its `pathArray`.
  339. * The parameter `ribbonCloseArray` (boolean, default false) forces the extrusion underlying ribbon to close its `pathArray`.
  340. * 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
  341. * The optional parameter `instance` is an instance of an existing ExtrudedShape object to be updated with the passed `shape`, `path`, `scale` or `rotation` parameters : http://doc.babylonjs.com/tutorials/How_to_dynamically_morph_a_mesh#extruded-shape
  342. * Remember you can only change the shape or path point positions, not their number when updating an extruded shape.
  343. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  344. * 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).
  345. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  346. * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture.
  347. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  348. */
  349. static ExtrudeShapeCustom(name: string, options: {
  350. shape: Vector3[];
  351. path: Vector3[];
  352. scaleFunction?: any;
  353. rotationFunction?: any;
  354. ribbonCloseArray?: boolean;
  355. ribbonClosePath?: boolean;
  356. cap?: number;
  357. updatable?: boolean;
  358. sideOrientation?: number;
  359. frontUVs?: Vector4;
  360. backUVs?: Vector4;
  361. instance?: Mesh;
  362. invertUV?: boolean;
  363. }, scene: Scene): Mesh;
  364. /**
  365. * Creates lathe mesh.
  366. * The lathe is a shape with a symetry axis : a 2D model shape is rotated around this axis to design the lathe.
  367. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#lathe
  368. *
  369. * The parameter `shape` is a required array of successive Vector3. This array depicts the shape to be rotated in its local space : the shape must be designed in the xOy plane and will be
  370. * rotated around the Y axis. It's usually a 2D shape, so the Vector3 z coordinates are often set to zero.
  371. * The parameter `radius` (positive float, default 1) is the radius value of the lathe.
  372. * The parameter `tessellation` (positive integer, default 64) is the side number of the lathe.
  373. * The parameter `arc` (positive float, default 1) is the ratio of the lathe. 0.5 builds for instance half a lathe, so an opened shape.
  374. * The parameter `closed` (boolean, default true) opens/closes the lathe circumference. This should be set to false when used with the parameter "arc".
  375. * 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
  376. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  377. * 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).
  378. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  379. * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture.
  380. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  381. */
  382. static CreateLathe(name: string, options: {
  383. shape: Vector3[];
  384. radius?: number;
  385. tessellation?: number;
  386. arc?: number;
  387. closed?: boolean;
  388. updatable?: boolean;
  389. sideOrientation?: number;
  390. frontUVs?: Vector4;
  391. backUVs?: Vector4;
  392. cap?: number;
  393. invertUV?: boolean;
  394. }, scene: Scene): Mesh;
  395. /**
  396. * Creates a plane mesh.
  397. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#plane
  398. * The parameter `size` sets the size (float) of both sides of the plane at once (default 1).
  399. * You can set some different plane dimensions by using the parameters `width` and `height` (both by default have the same value than `size`).
  400. * The parameter `sourcePlane` is a Plane instance. It builds a mesh plane from a Math plane.
  401. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  402. * 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).
  403. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  404. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  405. */
  406. static CreatePlane(name: string, options: {
  407. size?: number;
  408. width?: number;
  409. height?: number;
  410. sideOrientation?: number;
  411. frontUVs?: Vector4;
  412. backUVs?: Vector4;
  413. updatable?: boolean;
  414. sourcePlane?: Plane;
  415. }, scene: Scene): Mesh;
  416. /**
  417. * Creates a ground mesh.
  418. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#plane
  419. * The parameters `width` and `height` (floats, default 1) set the width and height sizes of the ground.
  420. * The parameter `subdivisions` (positive integer) sets the number of subdivisions per side.
  421. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  422. */
  423. static CreateGround(name: string, options: {
  424. width?: number;
  425. height?: number;
  426. subdivisions?: number;
  427. subdivisionsX?: number;
  428. subdivisionsY?: number;
  429. updatable?: boolean;
  430. }, scene: any): Mesh;
  431. /**
  432. * Creates a tiled ground mesh.
  433. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#tiled-ground
  434. * The parameters `xmin` and `xmax` (floats, default -1 and 1) set the ground minimum and maximum X coordinates.
  435. * The parameters `zmin` and `zmax` (floats, default -1 and 1) set the ground minimum and maximum Z coordinates.
  436. * The parameter `subdivisions` is a javascript object `{w: positive integer, h: positive integer}` (default `{w: 6, h: 6}`). `w` and `h` are the
  437. * numbers of subdivisions on the ground width and height. Each subdivision is called a tile.
  438. * The parameter `precision` is a javascript object `{w: positive integer, h: positive integer}` (default `{w: 2, h: 2}`). `w` and `h` are the
  439. * numbers of subdivisions on the ground width and height of each tile.
  440. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  441. */
  442. static CreateTiledGround(name: string, options: {
  443. xmin: number;
  444. zmin: number;
  445. xmax: number;
  446. zmax: number;
  447. subdivisions?: {
  448. w: number;
  449. h: number;
  450. };
  451. precision?: {
  452. w: number;
  453. h: number;
  454. };
  455. updatable?: boolean;
  456. }, scene: Scene): Mesh;
  457. /**
  458. * Creates a ground mesh from a height map.
  459. * tuto : http://doc.babylonjs.com/tutorials/14._Height_Map
  460. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#ground-from-a-height-map
  461. * The parameter `url` sets the URL of the height map image resource.
  462. * The parameters `width` and `height` (positive floats, default 10) set the ground width and height sizes.
  463. * The parameter `subdivisions` (positive integer, default 1) sets the number of subdivision per side.
  464. * The parameter `minHeight` (float, default 0) is the minimum altitude on the ground.
  465. * The parameter `maxHeight` (float, default 1) is the maximum altitude on the ground.
  466. * The parameter `colorFilter` (optional Color3, default (0.3, 0.59, 0.11) ) is the filter to apply to the image pixel colors to compute the height.
  467. * The parameter `onReady` is a javascript callback function that will be called once the mesh is just built (the height map download can last some time).
  468. * This function is passed the newly built mesh :
  469. * ```javascript
  470. * function(mesh) { // do things
  471. * return; }
  472. * ```
  473. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  474. */
  475. static CreateGroundFromHeightMap(name: string, url: string, options: {
  476. width?: number;
  477. height?: number;
  478. subdivisions?: number;
  479. minHeight?: number;
  480. maxHeight?: number;
  481. colorFilter?: Color3;
  482. updatable?: boolean;
  483. onReady?: (mesh: GroundMesh) => void;
  484. }, scene: Scene): GroundMesh;
  485. /**
  486. * Creates a polygon mesh.
  487. * The polygon's shape will depend on the input parameters and is constructed parallel to a ground mesh.
  488. * The parameter `shape` is a required array of successive Vector3 representing the corners of the polygon in th XoZ plane, that is y = 0 for all vectors.
  489. * You can set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  490. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  491. * 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).
  492. * Remember you can only change the shape positions, not their number when updating a polygon.
  493. */
  494. static CreatePolygon(name: string, options: {
  495. shape: Vector3[];
  496. holes?: Vector3[][];
  497. depth?: number;
  498. faceUV?: Vector4[];
  499. faceColors?: Color4[];
  500. updatable?: boolean;
  501. sideOrientation?: number;
  502. frontUVs?: Vector4;
  503. backUVs?: Vector4;
  504. }, scene: Scene): Mesh;
  505. /**
  506. * Creates an extruded polygon mesh, with depth in the Y direction.
  507. * You can set different colors and different images to the top, bottom and extruded side by using the parameters `faceColors` (an array of 3 Color3 elements) and `faceUV` (an array of 3 Vector4 elements).
  508. * Please read this tutorial : http://doc.babylonjs.com/tutorials/CreateBox_Per_Face_Textures_And_Colors
  509. */
  510. static ExtrudePolygon(name: string, options: {
  511. shape: Vector3[];
  512. holes?: Vector3[][];
  513. depth?: number;
  514. faceUV?: Vector4[];
  515. faceColors?: Color4[];
  516. updatable?: boolean;
  517. sideOrientation?: number;
  518. frontUVs?: Vector4;
  519. backUVs?: Vector4;
  520. }, scene: Scene): Mesh;
  521. /**
  522. * Creates a tube mesh.
  523. * The tube is a parametric shape : http://doc.babylonjs.com/tutorials/Parametric_Shapes. It has no predefined shape. Its final shape will depend on the input parameters.
  524. *
  525. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#tube
  526. * The parameter `path` is a required array of successive Vector3. It is the curve used as the axis of the tube.
  527. * The parameter `radius` (positive float, default 1) sets the tube radius size.
  528. * The parameter `tessellation` (positive float, default 64) is the number of sides on the tubular surface.
  529. * The parameter `radiusFunction` (javascript function, default null) is a vanilla javascript function. If it is not null, it overwrittes the parameter `radius`.
  530. * This function is called on each point of the tube path and is passed the index `i` of the i-th point and the distance of this point from the first point of the path.
  531. * It must return a radius value (positive float) :
  532. * ```javascript
  533. * var radiusFunction = function(i, distance) {
  534. * // do things
  535. * return radius; }
  536. * ```
  537. * The parameter `arc` (positive float, maximum 1, default 1) is the ratio to apply to the tube circumference : 2 x PI x arc.
  538. * 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
  539. * The optional parameter `instance` is an instance of an existing Tube object to be updated with the passed `pathArray` parameter : http://doc.babylonjs.com/tutorials/How_to_dynamically_morph_a_mesh#tube
  540. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  541. * 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).
  542. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  543. * The optional parameter `invertUV` (boolean, default false) swaps in the geometry the U and V coordinates to apply a texture.
  544. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  545. */
  546. static CreateTube(name: string, options: {
  547. path: Vector3[];
  548. radius?: number;
  549. tessellation?: number;
  550. radiusFunction?: {
  551. (i: number, distance: number): number;
  552. };
  553. cap?: number;
  554. arc?: number;
  555. updatable?: boolean;
  556. sideOrientation?: number;
  557. frontUVs?: Vector4;
  558. backUVs?: Vector4;
  559. instance?: Mesh;
  560. invertUV?: boolean;
  561. }, scene: Scene): Mesh;
  562. /**
  563. * Creates a polyhedron mesh.
  564. *
  565. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#polyhedron
  566. * 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
  567. * to choose the wanted type.
  568. * The parameter `size` (positive float, default 1) sets the polygon size.
  569. * You can overwrite the `size` on each dimension bu using the parameters `sizeX`, `sizeY` or `sizeZ` (positive floats, default to `size` value).
  570. * 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 overwrittes the parameter `type`.
  571. * 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
  572. * 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)`).
  573. * 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 : http://doc.babylonjs.com/tutorials/CreateBox_Per_Face_Textures_And_Colors
  574. * 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.
  575. * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE
  576. * 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).
  577. * Detail here : http://doc.babylonjs.com/tutorials/02._Discover_Basic_Elements#side-orientation
  578. * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.
  579. */
  580. static CreatePolyhedron(name: string, options: {
  581. type?: number;
  582. size?: number;
  583. sizeX?: number;
  584. sizeY?: number;
  585. sizeZ?: number;
  586. custom?: any;
  587. faceUV?: Vector4[];
  588. faceColors?: Color4[];
  589. flat?: boolean;
  590. updatable?: boolean;
  591. sideOrientation?: number;
  592. frontUVs?: Vector4;
  593. backUVs?: Vector4;
  594. }, scene: Scene): Mesh;
  595. /**
  596. * Creates a decal mesh.
  597. * tuto : http://doc.babylonjs.com/tutorials/Mesh_CreateXXX_Methods_With_Options_Parameter#decals
  598. * A decal is a mesh usually applied as a model onto the surface of another mesh. So don't forget the parameter `sourceMesh` depicting the decal.
  599. * The parameter `position` (Vector3, default `(0, 0, 0)`) sets the position of the decal in World coordinates.
  600. * The parameter `normal` (Vector3, default `Vector3.Up`) sets the normal of the mesh where the decal is applied onto in World coordinates.
  601. * The parameter `size` (Vector3, default `(1, 1, 1)`) sets the decal scaling.
  602. * The parameter `angle` (float in radian, default 0) sets the angle to rotate the decal.
  603. */
  604. static CreateDecal(name: string, sourceMesh: AbstractMesh, options: {
  605. position?: Vector3;
  606. normal?: Vector3;
  607. size?: Vector3;
  608. angle?: number;
  609. }): Mesh;
  610. private static _ExtrudeShapeGeneric(name, shape, curve, scale, rotation, scaleFunction, rotateFunction, rbCA, rbCP, cap, custom, scene, updtbl, side, instance, invertUV, frontUVs, backUVs);
  611. }
  612. }
  613. import {EffectFallbacks,EffectCreationOptions,Effect,Nullable,float,double,int,FloatArray,IndicesArray,KeyboardEventTypes,KeyboardInfo,KeyboardInfoPre,PointerEventTypes,PointerInfoBase,PointerInfoPre,PointerInfo,ToGammaSpace,ToLinearSpace,Epsilon,Color3,Color4,Vector2,Vector3,Vector4,ISize,Size,Quaternion,Matrix,Plane,Viewport,Frustum,Space,Axis,BezierCurve,Orientation,Angle,Arc2,Path2,Path3D,Curve3,PositionNormalVertex,PositionNormalTextureVertex,Tmp,Scalar,expandToProperty,serialize,serializeAsTexture,serializeAsColor3,serializeAsFresnelParameters,serializeAsVector2,serializeAsVector3,serializeAsMeshReference,serializeAsColorCurves,serializeAsColor4,serializeAsImageProcessingConfiguration,serializeAsQuaternion,SerializationHelper,EventState,Observer,MultiObserver,Observable,SmartArray,SmartArrayNoDuplicate,IAnimatable,LoadFileError,RetryStrategy,IFileRequest,Tools,PerfCounter,className,AsyncLoop,_AlphaState,_DepthCullingState,_StencilState,InstancingAttributeInfo,RenderTargetCreationOptions,EngineCapabilities,EngineOptions,IDisplayChangedEventArgs,Engine,Node,BoundingSphere,BoundingBox,ICullable,BoundingInfo,TransformNode,AbstractMesh,Light,Camera,RenderingManager,RenderingGroup,IDisposable,IActiveMeshCandidateProvider,RenderingGroupInfo,Scene,Buffer,VertexBuffer,InternalTexture,BaseTexture,Texture,_InstancesBatch,Mesh,BaseSubMesh,SubMesh,MaterialDefines,Material,UniformBuffer,IGetSetVerticesData,VertexData,Geometry,_PrimitiveGeometry,RibbonGeometry,BoxGeometry,SphereGeometry,DiscGeometry,CylinderGeometry,TorusGeometry,GroundGeometry,TiledGroundGeometry,PlaneGeometry,TorusKnotGeometry,PostProcessManager,PerformanceMonitor,RollingAverage,IImageProcessingConfigurationDefines,ImageProcessingConfiguration,ColorGradingTexture,ColorCurves,Behavior,MaterialHelper,PushMaterial,StandardMaterialDefines,StandardMaterial} from 'babylonjs/core';
  614. import {EngineInstrumentation,SceneInstrumentation,_TimeToken} from 'babylonjs/instrumentation';
  615. import {Particle,IParticleSystem,ParticleSystem,BoxParticleEmitter,ConeParticleEmitter,SphereParticleEmitter,SphereDirectedParticleEmitter,IParticleEmitterType} from 'babylonjs/particles';
  616. import {GPUParticleSystem} from 'babylonjs/gpuParticles';
  617. import {FramingBehavior,BouncingBehavior,AutoRotationBehavior} from 'babylonjs/cameraBehaviors';
  618. import {NullEngineOptions,NullEngine} from 'babylonjs/nullEngine';
  619. import {TextureTools} from 'babylonjs/textureTools';
  620. import {SolidParticle,ModelShape,DepthSortedParticle,SolidParticleSystem} from 'babylonjs/solidParticles';
  621. import {Collider,CollisionWorker,ICollisionCoordinator,SerializedMesh,SerializedSubMesh,SerializedGeometry,BabylonMessage,SerializedColliderToWorker,WorkerTaskType,WorkerReply,CollisionReplyPayload,InitPayload,CollidePayload,UpdatePayload,WorkerReplyType,CollisionCoordinatorWorker,CollisionCoordinatorLegacy} from 'babylonjs/collisions';
  622. import {IntersectionInfo,PickingInfo,Ray} from 'babylonjs/picking';
  623. import {SpriteManager,Sprite} from 'babylonjs/sprites';
  624. import {AnimationRange,AnimationEvent,PathCursor,Animation,TargetedAnimation,AnimationGroup,RuntimeAnimation,Animatable,IEasingFunction,EasingFunction,CircleEase,BackEase,BounceEase,CubicEase,ElasticEase,ExponentialEase,PowerEase,QuadraticEase,QuarticEase,QuinticEase,SineEase,BezierCurveEase} from 'babylonjs/animations';
  625. import {Condition,ValueCondition,PredicateCondition,StateCondition,Action,ActionEvent,ActionManager,InterpolateValueAction,SwitchBooleanAction,SetStateAction,SetValueAction,IncrementValueAction,PlayAnimationAction,StopAnimationAction,DoNothingAction,CombineAction,ExecuteCodeAction,SetParentAction,PlaySoundAction,StopSoundAction} from 'babylonjs/actions';
  626. import {GroundMesh,InstancedMesh,LinesMesh} from 'babylonjs/additionalMeshes';
  627. import {ShaderMaterial} from 'babylonjs/shaderMaterial';
  628. import {PBRBaseMaterial,PBRBaseSimpleMaterial,PBRMaterial,PBRMetallicRoughnessMaterial,PBRSpecularGlossinessMaterial} from 'babylonjs/pbrMaterial';
  629. import {CameraInputTypes,ICameraInput,CameraInputsMap,CameraInputsManager,TargetCamera} from 'babylonjs/targetCamera';
  630. import {ArcRotateCameraKeyboardMoveInput,ArcRotateCameraMouseWheelInput,ArcRotateCameraPointersInput,ArcRotateCameraInputsManager,ArcRotateCamera} from 'babylonjs/arcRotateCamera';
  631. import {FreeCameraMouseInput,FreeCameraKeyboardMoveInput,FreeCameraInputsManager,FreeCamera} from 'babylonjs/freeCamera';
  632. import {HemisphericLight} from 'babylonjs/hemisphericLight';
  633. import {IShadowLight,ShadowLight,PointLight} from 'babylonjs/pointLight';
  634. import {DirectionalLight} from 'babylonjs/directionalLight';
  635. import {SpotLight} from 'babylonjs/spotLight';
  636. import {CubeTexture,RenderTargetTexture,IMultiRenderTargetOptions,MultiRenderTarget,MirrorTexture,RefractionTexture,DynamicTexture,VideoTexture,RawTexture} from 'babylonjs/additionalTextures';
  637. import {AudioEngine,Sound,SoundTrack,Analyser} from 'babylonjs/audio';
  638. import {ILoadingScreen,DefaultLoadingScreen,SceneLoaderProgressEvent,ISceneLoaderPluginExtensions,ISceneLoaderPluginFactory,ISceneLoaderPlugin,ISceneLoaderPluginAsync,SceneLoader,FilesInput} from 'babylonjs/loader';
  639. import {IShadowGenerator,ShadowGenerator} from 'babylonjs/shadows';
  640. import {StringDictionary} from 'babylonjs/stringDictionary';
  641. import {Tags,AndOrNotEvaluator} from 'babylonjs/userData';
  642. import {FresnelParameters} from 'babylonjs/fresnel';
  643. import {MultiMaterial} from 'babylonjs/multiMaterial';
  644. import {Database} from 'babylonjs/offline';
  645. import {FreeCameraTouchInput,TouchCamera} from 'babylonjs/touchCamera';
  646. import {ProceduralTexture,CustomProceduralTexture} from 'babylonjs/procedural';
  647. import {FreeCameraGamepadInput,ArcRotateCameraGamepadInput,GamepadManager,StickValues,GamepadButtonChanges,Gamepad,GenericPad,Xbox360Button,Xbox360Dpad,Xbox360Pad,PoseEnabledControllerType,MutableGamepadButton,ExtendedGamepadButton,PoseEnabledControllerHelper,PoseEnabledController,WebVRController,OculusTouchController,ViveController,GenericController,WindowsMotionController} from 'babylonjs/gamepad';
  648. import {FollowCamera,ArcFollowCamera,UniversalCamera,GamepadCamera} from 'babylonjs/additionalCameras';
  649. import {DepthRenderer} from 'babylonjs/depthRenderer';
  650. import {GeometryBufferRenderer} from 'babylonjs/geometryBufferRenderer';
  651. import {PostProcessOptions,PostProcess,PassPostProcess} from 'babylonjs/postProcesses';
  652. import {BlurPostProcess} from 'babylonjs/additionalPostProcess_blur';
  653. import {FxaaPostProcess} from 'babylonjs/additionalPostProcess_fxaa';
  654. import {HighlightsPostProcess} from 'babylonjs/additionalPostProcess_highlights';
  655. import {RefractionPostProcess,BlackAndWhitePostProcess,ConvolutionPostProcess,FilterPostProcess,VolumetricLightScatteringPostProcess,ColorCorrectionPostProcess,TonemappingOperator,TonemapPostProcess,DisplayPassPostProcess,ImageProcessingPostProcess} from 'babylonjs/additionalPostProcesses';
  656. import {PostProcessRenderPipelineManager,PostProcessRenderPass,PostProcessRenderEffect,PostProcessRenderPipeline} from 'babylonjs/renderingPipeline';
  657. import {SSAORenderingPipeline,SSAO2RenderingPipeline,LensRenderingPipeline,StandardRenderingPipeline} from 'babylonjs/additionalRenderingPipeline';
  658. import {DefaultRenderingPipeline} from 'babylonjs/defaultRenderingPipeline';
  659. import {Bone,BoneIKController,BoneLookController,Skeleton} from 'babylonjs/bones';
  660. import {SphericalPolynomial,SphericalHarmonics,CubeMapToSphericalPolynomialTools,CubeMapInfo,PanoramaToCubeMapTools,HDRInfo,HDRTools,HDRCubeTexture} from 'babylonjs/hdr';
  661. import {CSG} from 'babylonjs/csg';
  662. import {Polygon,PolygonMeshBuilder} from 'babylonjs/polygonMesh';
  663. import {LensFlare,LensFlareSystem} from 'babylonjs/lensFlares';
  664. import {PhysicsJointData,PhysicsJoint,DistanceJoint,MotorEnabledJoint,HingeJoint,Hinge2Joint,IMotorEnabledJoint,DistanceJointData,SpringJointData,PhysicsImpostorParameters,IPhysicsEnabledObject,PhysicsImpostor,PhysicsImpostorJoint,PhysicsEngine,IPhysicsEnginePlugin,PhysicsHelper,PhysicsRadialExplosionEvent,PhysicsGravitationalFieldEvent,PhysicsUpdraftEvent,PhysicsVortexEvent,PhysicsRadialImpulseFalloff,PhysicsUpdraftMode,PhysicsForceAndContactPoint,PhysicsRadialExplosionEventData,PhysicsGravitationalFieldEventData,PhysicsUpdraftEventData,PhysicsVortexEventData,CannonJSPlugin,OimoJSPlugin} from 'babylonjs/physics';
  665. import {TGATools,DDSInfo,DDSTools,KhronosTextureContainer} from 'babylonjs/textureFormats';
  666. import {Debug,RayHelper,DebugLayer,BoundingBoxRenderer} from 'babylonjs/debug';
  667. import {MorphTarget,MorphTargetManager} from 'babylonjs/morphTargets';
  668. import {IOctreeContainer,Octree,OctreeBlock} from 'babylonjs/octrees';
  669. import {SIMDHelper} from 'babylonjs/simd';
  670. import {VRDistortionCorrectionPostProcess,AnaglyphPostProcess,StereoscopicInterlacePostProcess,FreeCameraDeviceOrientationInput,ArcRotateCameraVRDeviceOrientationInput,VRCameraMetrics,DevicePose,PoseControlled,WebVROptions,WebVRFreeCamera,DeviceOrientationCamera,VRDeviceOrientationFreeCamera,VRDeviceOrientationGamepadCamera,VRDeviceOrientationArcRotateCamera,AnaglyphFreeCamera,AnaglyphArcRotateCamera,AnaglyphGamepadCamera,AnaglyphUniversalCamera,StereoscopicFreeCamera,StereoscopicArcRotateCamera,StereoscopicGamepadCamera,StereoscopicUniversalCamera,VRTeleportationOptions,VRExperienceHelperOptions,VRExperienceHelper} from 'babylonjs/vr';
  671. import {JoystickAxis,VirtualJoystick,VirtualJoysticksCamera,FreeCameraVirtualJoystickInput} from 'babylonjs/virtualJoystick';
  672. import {ISimplifier,ISimplificationSettings,SimplificationSettings,ISimplificationTask,SimplificationQueue,SimplificationType,DecimationTriangle,DecimationVertex,QuadraticMatrix,Reference,QuadraticErrorSimplification,MeshLODLevel,SceneOptimization,TextureOptimization,HardwareScalingOptimization,ShadowsOptimization,PostProcessesOptimization,LensFlaresOptimization,ParticlesOptimization,RenderTargetsOptimization,MergeMeshesOptimization,SceneOptimizerOptions,SceneOptimizer} from 'babylonjs/optimizations';
  673. import {OutlineRenderer,EdgesRenderer,IHighlightLayerOptions,HighlightLayer} from 'babylonjs/highlights';
  674. import {SceneSerializer} from 'babylonjs/serialization';
  675. import {AssetTaskState,AbstractAssetTask,IAssetsProgressEvent,AssetsProgressEvent,MeshAssetTask,TextFileAssetTask,BinaryFileAssetTask,ImageAssetTask,ITextureAssetTask,TextureAssetTask,CubeTextureAssetTask,HDRCubeTextureAssetTask,AssetsManager} from 'babylonjs/assetsManager';
  676. import {ReflectionProbe} from 'babylonjs/probes';
  677. import {BackgroundMaterial} from 'babylonjs/backgroundMaterial';
  678. import {Layer} from 'babylonjs/layer';
  679. import {IEnvironmentHelperOptions,EnvironmentHelper} from 'babylonjs/environmentHelper';