Skip to content

Meshes

Babylon.Blazor supports five mesh types. All mesh creation methods are on the Scene class and return a Mesh object.

Common Pattern

Every mesh method takes a name and a MeshParameters object:

var parameters = new MeshParameters(BabylonInstance) { Options = options };
await parameters.SetPosition(x, y, z);
await parameters.SetRotation(x, y, z);
var mesh = await scene.CreateSphere("name", parameters);

MeshParameters holds:

Property Type Description
Options Options Shape-specific options (see below)
Position Vector3 Set with await parameters.SetPosition(x, y, z)
Rotation Vector3 Set with await parameters.SetRotation(x, y, z)

Sphere

var options = new SphereOptions { Diameter = 5.0 };
var parameters = new MeshParameters(BabylonInstance) { Options = options };
await parameters.SetPosition(-4.5, 0, 0);
var sphere = await scene.CreateSphere("sphere1", parameters);
Option Type Description
Diameter double Sphere diameter

Box

var boxColors = await BabylonInstance.CreateFaceColors(Color.Chocolate);
var options = new BoxOptions { Size = 2, FaceColors = boxColors };
var parameters = new MeshParameters(BabylonInstance) { Options = options };
await parameters.SetPosition(0, 0, 0);
await scene.CreateBox("box1", parameters);
Option Type Description
Size double Uniform size for all sides
Height double Height (overrides Size for this dimension)
Width double Width
Depth double Depth
FaceColors BoxOptions.FaceColorsObj Per-face colors. Create with BabylonInstance.CreateFaceColors(color)

Cylinder

var options = new CylinderOptions { Diameter = 1, Height = 3 };
var parameters = new MeshParameters(BabylonInstance) { Options = options };
await parameters.SetRotation(0, 0, Tools.GradToRadian(45));
await parameters.SetPosition(0, 0, 0);
var cylinder = await scene.CreateCylinder("cyl1", parameters);
Option Type Description
Diameter double Cylinder diameter
Height double Cylinder height

Torus

var options = new TorusOptions { Diameter = 4, Tessellation = 20 };
var parameters = new MeshParameters(BabylonInstance) { Options = options };
var torus = await scene.CreateTorus("torus1", parameters);
Option Type Description
Diameter double Overall torus diameter
Tessellation int Number of segments around the ring

Tube

A tube connects two 3D points with a cylindrical shape. It does not use MeshParameters:

var from = await BabylonInstance.CreateVector3(0, 0, 0);
var to = await BabylonInstance.CreateVector3(3, 2, 0);
var tube = await scene.CreateTube("tube1", from, to, radius: 0.1);
Parameter Type Description
name string Mesh name
fromPoint Vector3 Start point
toPoint Vector3 End point
radius double Tube radius

Applying Materials

Any mesh can have a material applied:

var color = await BabylonInstance.CreateColor3(Color.Aqua);
var material = await scene.CreateMaterial("mat1", color, null, 1.0);
sphere.SetMaterial(material);

See Materials and Textures for details on materials and textures.

Tools Helper

The Tools class provides math utilities for positioning meshes:

Method Description
GradToRadian(degrees) Convert degrees to radians
RadianToGrad(radians) Convert radians to degrees
RectangularTriangleSolutions(hypotenuse, angleRad) Returns (X, Y) legs of a right triangle
RectangularTriangleSolutionAngle(sideA, sideB) Returns the angle from two sides