# Creating Parametric Meshes

> Learn how to create parametric meshes in Babylon.js.

Source: https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param

## Parametric Shapes
These meshes are so-called because their shape is defined by an array of Vector3 parameters and can be irregular in nature. You can produce a series of broken or unbroken lines across 3D space. In 2D, you can produce a horizontal irregular convex or concave polygon, which may be extruded vertically into 3D. It is also possible to extrude the 2D outline along a path that travels in 3D space and vary its rotation and scale as it travels the path. You can also 'lathe' an outline to give a shape with rotational symmetry.

To create these meshes you use one of
```javascript
const mesh = BABYLON.MeshBuilder.Create<MeshType>(name, options, scene);
const mesh = BABYLON.MeshBuilder.Extrude<MeshType>(name, options, scene);
```
where the *options* object properties vary according to the type of mesh. The scene parameter is optional and defaults to the current scene. One or more of the *options* properties will be used to set the Vector3 data that defines paths and outlines, and you must set these.

All the parametric shapes, except for CreateLathe, CreatePolygon, and ExtrudePolygon, have an *instance* property in the options. This is used to update the shape after creation, provided its *updatable* option property was set to *true*. You can change only the values in the shape-defining data arrays, not the size of the arrays.

Where possible, playgrounds will give two examples: the first creates a mesh, and the second updates it with the instance option. Comment out the latter to see the original mesh.

It is still possible to use the *Mesh* method to create these shapes. This has the forms

```javascript
const mesh = BABYLON.Mesh.Create<MeshType>(name, required_param1, required_param2, ..., scene, optional_parameter1, ........);
const mesh = BABYLON.Mesh.Extrude<MeshType>(name, required_param1, required_param2, ..., scene, optional_parameter1, ........);
```
The scene parameter is compulsory when used with optional parameters. You will still find this method in playgrounds.

## Pages in this section

- [Creating Lines](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/lines.md): Learn how to create lines in Babylon.js.
- [Creating Dashed Lines](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/dashed.md): Learn how to create dashed lines in Babylon.js.
- [Creating A Line System](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/line_system.md): Learn how to create line systems in Babylon.js.
- [Creating A GreasedLine](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/greased_line.md): Learn how to create GreasedLines in Babylon.js.
- [Creating Ribbons](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon.md): Learn how to create ribbons in Babylon.js.
- [Ribbon In Detail](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon_extra.md): Dive into the details of ribbons in Babylon.js.
- [Ribbons With Math](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/ribbon_maths.md): Learn how to create ribbons with math in Babylon.js.
- [Creating Tubes](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/tube.md): Learn how to create tubes in Babylon.js.
- [Extruding Shapes](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/extrude_shape.md): Learn how to extrude shapes in Babylon.js.
- [Custom Extrusion](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/custom_extrude.md): Learn how custom extrusion works in Babylon.js.
- [Lathe](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/lathe.md): Learn how to use the lathe operation in Babylon.js.
- [Irregular Polygons](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/polygon.md): Learn about creating irregular polygons in Babylon.js.
- [Irregular Polygon Extrusion](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/extrude_polygon.md): Learn how to extrude irregular polygons in Babylon.js.
- [Polygon Mesh Builder](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/polyMeshBuilder.md): Learn how to create polygons with Mesh Builder in Babylon.js.
