MeshMaterial

AMD: require(["esri/geometry/support/MeshMaterial"], (MeshMaterial) => { /* code goes here */ });
ESM: import MeshMaterial from "@arcgis/core/geometry/support/MeshMaterial";
Class: esri/geometry/support/MeshMaterial
Inheritance: MeshMaterial Accessor
Since: ArcGIS API for JavaScript 4.11

The material determines how a MeshComponent is visualized. One of the major characteristics of a material is its color. The color property can be used to set a uniform color for the whole MeshComponent. Use the colorTexture property to map an image onto the mesh component, using the uv coordinate specified for each vertex in the Mesh.vertexAttributes.

The material properties support a number of convenience autocast types, including hex color strings and well known color strings (autocasts to Color), or strings representing urls to images, HTMLImageElements, HTMLCanvasElements, HTMLVideoElement, or ImageData (autocasts to MeshTexture).


// create a material that uses a color

const meshWithColor = new MeshComponent({
  // autocasts to MeshMaterial
  material: {
    color: "#ff00ff"
  }
});

// create a material that uses a texture by linking to
// an image url

const meshTextureByUrl = new MeshTexture({
  url: "./image.png"
});

const boxMesh = Mesh.createBox(location, {
  material: {
    colorTexture: meshTextureByUrl
  }
});

// create a material that uses a texture from
// a canvas element

function createLinearGradient() {
  const canvas = document.createElement("canvas");
  canvas.width = 32;
  canvas.height = 32;

  const ctx = canvas.getContext("2d");

  // Create the linear gradient with which to fill the canvas
  const gradient = ctx.createLinearGradient(0, 0, 0, 32);
  gradient.addColorStop(0, "#00ff00");
  gradient.addColorStop(1, "#009900");

  // Fill the canvas with the gradient pattern
  ctx.fillStyle = gradient;
  ctx.fillRect(0, 0, 32, 32);

  return canvas;
}

const component = new MeshComponent({
  material: {
    // Autocast canvas element to MeshTexture instance
    colorTexture: createLinearGradient()
  }
});
See also:

Constructors

new MeshMaterial(properties)
Parameter:
properties Object
optional

See the properties for a list of all the properties that may be passed into the constructor.

Property Overview

Any properties can be set, retrieved or listened to. See the Working with Properties topic.
Show inherited properties Hide inherited properties
Name Type Summary Class
Numbermore details

Specifies how transparency on the object is handled.

more detailsMeshMaterial
Stringmore details

Specifies how transparency on the object is handled.

more detailsMeshMaterial
Colormore details

Specifies a single, uniform color for the mesh component.

more detailsMeshMaterial
MeshTexturemore details

Specifies a texture from which to get color information.

more detailsMeshMaterial
Stringmore details

The name of the class.

more detailsAccessor
Booleanmore details

Specifies whether both sides of each triangle are displayed, or only the front sides.

more detailsMeshMaterial
MeshTexturemore details

Specifies a texture from which to get normal information.

more detailsMeshMaterial

Property Details

alphaCutoff Number

Specifies how transparency on the object is handled. If alphaMode is set to either mask or auto this property specifies the cutoff value below which masking happens (that is, the coresponding part of the Mesh is rendered fully transparent).

Default Value:0.5
alphaMode String

Specifies how transparency on the object is handled. See also alphaCutoff.

Type Description
opaque Alpha is ignored, and the object is rendered fully opaque.
blend Alpha values are used for gradual transparency, blending between the object and its background.
mask Alpha values are used for binary transparency, either displaying the object, or its background. See also alphaCutoff.
auto The implementation mixes the mask and blend settings, masking below alphaCutoff and blending above it.

Possible Values:"auto"|"blend"|"opaque"|"mask"

Default Value:"auto"
Autocasts from Object|Number[]|String

Specifies a single, uniform color for the mesh component. This can be autocast with a named string, hex string, array of rgb or rgba values, an object with r, g, b, and a properties, or a Color object.

colorTexture MeshTextureautocast

Specifies a texture from which to get color information. The texture is accessed using the uv coordinate specified for each vertex in the Mesh.vertexAttributes.

declaredClass Stringreadonly inherited

The name of the class. The declared class name is formatted as esri.folder.className.

doubleSided Boolean

Specifies whether both sides of each triangle are displayed, or only the front sides.

Default Value:true
normalTexture MeshTextureautocast

Specifies a texture from which to get normal information. The texture is accessed using the uv coordinate specified for each vertex in the Mesh.vertexAttributes.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.