require(["esri/geometry/support/MeshMaterial"], (MeshMaterial) => { /* code goes here */ });
import MeshMaterial from "@arcgis/core/geometry/support/MeshMaterial.js";
esri/geometry/support/MeshMaterial
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
-
Parameterproperties Objectoptional
See the properties for a list of all the properties that may be passed into the constructor.
Property Overview
Name | Type | Summary | Class |
---|---|---|---|
Specifies how transparency on the object is handled. | MeshMaterial | ||
Specifies how transparency on the object is handled. | MeshMaterial | ||
Specifies a single, uniform color for the mesh component. | MeshMaterial | ||
Specifies a texture from which to get color information. | MeshMaterial | ||
A transformation of UV mesh coordinates used to sample the color texture. | MeshMaterial | ||
The name of the class. | Accessor | ||
Specifies whether both sides of each triangle are displayed, or only the front sides. | MeshMaterial | ||
Specifies a texture from which to get normal information. | MeshMaterial | ||
A transformation of UV mesh coordinates used to sample the normal texture. | MeshMaterial |
Property Details
-
alphaMode
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
andblend
settings, masking belowalphaCutoff
and blending above it.Possible Values:"auto" |"blend" |"opaque" |"mask"
- Default Value:"auto"
-
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
, anda
properties, or a Color object.
-
colorTexture
colorTexture MeshTextureautocast
Autocasts from Object|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement|ImageData|String -
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.
-
colorTextureTransform
colorTextureTransform MeshTextureTransform
Since: ArcGIS Maps SDK for JavaScript 4.27MeshMaterial since 4.11, colorTextureTransform added at 4.27. -
A transformation of UV mesh coordinates used to sample the color texture. Texture transformations can be used to optimize re-use of textures, for example by packing many images into a single texture "atlas" and using the texture transform offset and scale to sample a specific region within this larger texture.
- Default Value:undefined
-
doubleSided
doubleSided Boolean
-
Specifies whether both sides of each triangle are displayed, or only the front sides.
- Default Value:true
-
normalTexture
normalTexture MeshTextureautocast
Autocasts from Object|HTMLImageElement|HTMLVideoElement|HTMLCanvasElement|ImageData|String -
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.
-
normalTextureTransform
normalTextureTransform MeshTextureTransform
Since: ArcGIS Maps SDK for JavaScript 4.27MeshMaterial since 4.11, normalTextureTransform added at 4.27. -
A transformation of UV mesh coordinates used to sample the normal texture. Texture transformations can be used to optimize re-use of textures, for example by packing many images into a single texture "atlas" and using the texture transform offset and scale to sample a specific region within this larger texture.
- Default Value:undefined
Method Overview
Name | Return Type | Summary | Class |
---|---|---|---|
Adds one or more handles which are to be tied to the lifecycle of the object. | Accessor | ||
Returns true if a named group of handles exist. | Accessor | ||
Removes a group of handles owned by the object. | Accessor |
Method Details
-
Inherited from Accessor
Since: ArcGIS Maps SDK for JavaScript 4.25Accessor since 4.0, addHandles added at 4.25. -
Adds one or more handles which are to be tied to the lifecycle of the object. The handles will be removed when the object is destroyed.
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); this.addHandles(handle); // Destroy the object this.destroy();
ParametershandleOrHandles WatchHandle|WatchHandle[]Handles marked for removal once the object is destroyed.
groupKey *optionalKey identifying the group to which the handles should be added. All the handles in the group can later be removed with Accessor.removeHandles(). If no key is provided the handles are added to a default group.
-
hasHandles
InheritedMethodhasHandles(groupKey){Boolean}
Inherited from AccessorSince: ArcGIS Maps SDK for JavaScript 4.25Accessor since 4.0, hasHandles added at 4.25. -
Returns true if a named group of handles exist.
ParametergroupKey *optionalA group key.
ReturnsType Description Boolean Returns true
if a named group of handles exist.Example// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
Inherited from Accessor
Since: ArcGIS Maps SDK for JavaScript 4.25Accessor since 4.0, removeHandles added at 4.25. -
Removes a group of handles owned by the object.
ParametergroupKey *optionalA group key or an array or collection of group keys to remove.
Exampleobj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");