Material

new Cesium.Material(options)

Material 通过漫反射、高光、法线、自发光和透明度组件的组合来定义表面外观。 这些值使用名为 Fabric 的 JSON 模式进行指定,该模式在幕后被解析并组装为 GLSL 着色器代码。 有关 Fabric 的更多详细信息,请查看 wiki 页面

基础材质类型及其均匀变量:
  • Color
    • color: rgba 颜色对象。
  • Image
    • image: 图像路径。
    • repeat: 包含 x 和 y 值的对象,指定图像重复的次数。
  • DiffuseMap
    • image: 图像路径。
    • channels: 包含 r、g、b 和 a 任意组合的三字符字符串,用于选择所需的图像通道。
    • repeat: 包含 x 和 y 值的对象,指定图像重复的次数。
  • AlphaMap
    • image: 图像路径。
    • channel: 包含 r、g、b 或 a 的单字符字符串,用于选择所需的图像通道。
    • repeat: 包含 x 和 y 值的对象,指定图像重复的次数。
  • SpecularMap
    • image: 图像路径。
    • channel: 包含 r、g、b 或 a 的单字符字符串,用于选择所需的图像通道。
    • repeat: 包含 x 和 y 值的对象,指定图像重复的次数。
  • EmissionMap
    • image: 图像路径。
    • channels: 包含 r、g、b 和 a 任意组合的三字符字符串,用于选择所需的图像通道。
    • repeat: 包含 x 和 y 值的对象,指定图像重复的次数。
  • BumpMap
    • image: 图像路径。
    • channel: 包含 r、g、b 或 a 的单字符字符串,用于选择所需的图像通道。
    • repeat: 包含 x 和 y 值的对象,指定图像重复的次数。
    • strength: 凹凸强度值,范围在 0.0 到 1.0 之间,其中 0.0 表示小凹凸,1.0 表示大凹凸。
  • NormalMap
    • image: 图像路径。
    • channels: 包含 r、g、b 和 a 任意组合的三字符字符串,用于选择所需的图像通道。
    • repeat: 包含 x 和 y 值的对象,指定图像重复的次数。
    • strength: 凹凸强度值,范围在 0.0 到 1.0 之间,其中 0.0 表示小凹凸,1.0 表示大凹凸。
  • Grid
    • color: 整个材质的 rgba 颜色对象。
    • cellAlpha: 网格线之间单元格的透明度值。该值将与 color.alpha 结合。
    • lineCount: 包含 x 和 y 值的对象,分别指定列数和行数。
    • lineThickness: 包含 x 和 y 值的对象,指定网格线的粗细(在可用情况下以像素为单位)。
    • lineOffset: 包含 x 和 y 值的对象,指定网格线的偏移量(范围为 0 到 1)。
  • Stripe
    • horizontal: 布尔值,确定条纹是水平还是垂直。
    • evenColor: 条纹第一种颜色的 rgba 颜色对象。
    • oddColor: 条纹第二种颜色的 rgba 颜色对象。
    • offset: 控制从图案的哪个位置开始绘制的数字;0.0 表示偶数颜色的开始,1.0 表示奇数颜色的开始,2.0 表示再次回到偶数颜色,任何倍数或分数值表示在两者之间。
    • repeat: 控制条纹总数的数字,一半亮一半暗。
  • Checkerboard
    • lightColor: 棋盘格交替亮色的 rgba 颜色对象。
    • darkColor: 棋盘格交替暗色的 rgba 颜色对象。
    • repeat: 包含 x 和 y 值的对象,分别指定列数和行数。
  • Dot
    • lightColor: 点颜色的 rgba 颜色对象。
    • darkColor: 背景颜色的 rgba 颜色对象。
    • repeat: 包含 x 和 y 值的对象,分别指定点的列数和行数。
  • Water
    • baseWaterColor: 水的基色的 rgba 颜色对象。
    • blendColor: 从水域混合到非水域时使用的 rgba 颜色对象。
    • specularMap: 用于指示水域的单通道纹理。
    • normalMap: 用于水法线扰动的法线贴图。
    • frequency: 控制波浪数量的数字。
    • animationSpeed: 控制水动画速度的数字。
    • amplitude: 控制水波振幅的数字。
    • specularIntensity: 控制镜面反射强度的数字。
  • RimLighting
    • color: 漫反射颜色和透明度。
    • rimColor: 边缘的漫反射颜色和透明度。
    • width: 确定边缘宽度的数字。
  • Fade
    • fadeInColor: time 处的漫反射颜色和透明度
    • fadeOutColor: 距 time maximumDistance 处的漫反射颜色和透明度
    • maximumDistance: 0.0 到 1.0 之间的数字,fadeInColor 在此处变为 fadeOutColor。值为 0.0 时整个材质颜色为 fadeOutColor,值为 1.0 时整个材质颜色为 fadeInColor
    • repeat: 如果淡入淡出应环绕纹理坐标则设为 true。
    • fadeDirection: 包含 x 和 y 值的对象,指定淡入淡出是否应在 x 和 y 方向上进行。
    • time: fadeInColor 位置在 0.0 到 1.0 之间包含 x 和 y 值的对象
  • PolylineArrow
    • color: 漫反射颜色和透明度。
  • PolylineDash
    • color: 线条的颜色。
    • gapColor: 线条中间隙的颜色。
    • dashLength: 虚线长度(像素)。
    • dashPattern: 线条的 16 位点画图案。
  • PolylineGlow
    • color: 线条发光的颜色和最大透明度。
    • glowPower: 发光强度,占线条总宽度的百分比(小于 1.0)。
    • taperPower: 锥形效果的强度,占线条总长度的百分比。如果为 1.0 或更高,则不使用锥形效果。
  • PolylineOutline
    • color: 线条内部的漫反射颜色和透明度。
    • outlineColor: 轮廓的漫反射颜色和透明度。
    • outlineWidth: 轮廓宽度(像素)。
  • ElevationContour
    • color: 等高线的颜色和透明度。
    • spacing: 等高线间距(米)。
    • width: 指定网格线宽度(像素)的数字。
  • ElevationRamp
    • image: 用于地形着色的颜色渐变图像。
    • minimumHeight: 渐变的最小高度。
    • maximumHeight: 渐变的最大高度。
  • SlopeRamp
    • image: 用于按坡度对地形着色的颜色渐变图像。
  • AspectRamp
    • image: 用于按坡向对地形着色的颜色渐变图像。
  • ElevationBand
    • heights: 从最低到最高排序的高度图像。
    • colors: 对应高度处的颜色图像。
  • WaterMask
    • waterColor: 水域覆盖区域的漫反射颜色和透明度。
    • landColor: 陆地覆盖区域的漫反射颜色和透明度。
Name Type Description
options object optional 具有以下属性的对象:
Name Type Default Description
strict boolean false optional 对通常会被忽略的问题抛出错误,包括未使用的均匀变量或材质。
translucent boolean | function true optional 当为 true 或返回 true 的函数时, 使用此材质的几何体预计将呈现半透明效果。
minificationFilter TextureMinificationFilter TextureMinificationFilter.LINEAR optional 应用于此材质纹理的 TextureMinificationFilter
magnificationFilter TextureMagnificationFilter TextureMagnificationFilter.LINEAR optional 应用于此材质纹理的 TextureMagnificationFilter
fabric object 用于生成材质的 Fabric JSON。
Throws:
  • DeveloperError : fabric: 均匀变量具有无效的类型。
  • DeveloperError : fabric: 均匀变量和材质不能共享相同的属性。
  • DeveloperError : fabric: 不能在同一部分中同时包含 source 和 components。
  • DeveloperError : fabric: 属性名称无效。应为 'type'、'materials'、'uniforms'、'components' 或 'source'。
  • DeveloperError : fabric: 属性名称无效。应为 'diffuse'、'specular'、'shininess'、'normal'、'emission' 或 'alpha'。
  • DeveloperError : strict: 着色器源代码未使用字符串。
  • DeveloperError : strict: 着色器源代码未使用均匀变量。
  • DeveloperError : strict: 着色器源代码未使用材质。
Example:
// 使用 fromType 创建颜色材质:
polygon.material = Cesium.Material.fromType('Color');
polygon.material.uniforms.color = new Cesium.Color(1.0, 1.0, 0.0, 1.0);

// 创建默认材质:
polygon.material = new Cesium.Material();

// 使用完整 Fabric 表示法创建颜色材质:
polygon.material = new Cesium.Material({
  fabric: {
    type: 'Color',
    uniforms: {
      color: new Cesium.Color(1.0, 1.0, 0.0, 1.0)
    }
  }
});
Demo:
See:

Members

static readonly Cesium.Material.AlphaMapType : string

获取透明度贴图材质的名称。

static readonly Cesium.Material.AspectRampMaterialType : string

获取坡向渐变材质的名称。

static readonly Cesium.Material.BumpMapType : string

获取凹凸贴图层材质的名称。

static readonly Cesium.Material.CheckerboardType : string

获取棋盘格材质的名称。

static readonly Cesium.Material.ColorType : string

获取颜色材质的名称。

static Cesium.Material.DefaultCubeMapId : string

获取或设置默认立方体贴图纹理均匀变量值。

static Cesium.Material.DefaultImageId : string

获取或设置默认纹理均匀变量值。

static readonly Cesium.Material.DiffuseMapType : string

获取漫反射贴图层材质的名称。

static readonly Cesium.Material.DotType : string

获取点状材质的名称。

static readonly Cesium.Material.ElevationBandType : string

获取高程带材质的名称。

static readonly Cesium.Material.ElevationContourType : string

获取高程等高线材质的名称。

static readonly Cesium.Material.ElevationRampType : string

获取高程渐变材质的名称。

static readonly Cesium.Material.EmissionMapType : string

获取自发光贴图层材质的名称。

static readonly Cesium.Material.FadeType : string

获取淡入淡出材质的名称。

static readonly Cesium.Material.GridType : string

获取网格材质的名称。

static readonly Cesium.Material.ImageType : string

获取图像材质的名称。

static readonly Cesium.Material.NormalMapType : string

获取法线贴图层材质的名称。

static readonly Cesium.Material.PolylineArrowType : string

获取线段箭头材质的名称。

static readonly Cesium.Material.PolylineDashType : string

获取线段虚线材质的名称。

static readonly Cesium.Material.PolylineGlowType : string

获取线段发光材质的名称。

static readonly Cesium.Material.PolylineOutlineType : string

获取线段轮廓材质的名称。

static readonly Cesium.Material.RimLightingType : string

获取边缘光照材质的名称。

static readonly Cesium.Material.SlopeRampMaterialType : string

获取坡度渐变材质的名称。

static readonly Cesium.Material.SpecularMapType : string

获取高光贴图层材质的名称。

static readonly Cesium.Material.StripeType : string

获取条纹材质的名称。

static readonly Cesium.Material.WaterMaskType : string

获取水域遮罩材质的名称。

static readonly Cesium.Material.WaterType : string

获取水材质的名称。
应用于此材质纹理的 TextureMagnificationFilter
Default Value: TextureMagnificationFilter.LINEAR
将子材质名称映射到材质对象。
Default Value: undefined
应用于此材质纹理的 TextureMinificationFilter
Default Value: TextureMinificationFilter.LINEAR

shaderSource : string

此材质的 GLSL 着色器源代码。
Default Value: undefined

translucent : boolean|function

当为 true 或返回 true 的函数时, 几何体预计将呈现半透明效果。
Default Value: undefined
材质类型。可以是现有类型或新类型。如果未在 fabric 中指定类型,则类型为 GUID。
Default Value: undefined
将均匀变量名称映射到其值。
Default Value: undefined

Methods

static Cesium.Material.fromType(type, uniforms)Material

使用现有材质类型创建新材质。

简写形式:new Material({fabric : {type : type}});
Name Type Description
type string 基础材质类型。
uniforms object optional 覆盖默认均匀变量的值。
Returns:
新材质对象。
Throws:
Example:
const material = Cesium.Material.fromType('Color', {
  color: new Cesium.Color(1.0, 0.0, 0.0, 1.0)
});

static Cesium.Material.fromTypeAsync(type, uniforms)Promise.<Material>

使用现有材质类型创建新材质,并在加载完所有材质资源后返回一个 promise。
Name Type Description
type string 基础材质类型。
uniforms object optional 覆盖默认均匀变量的值。
Returns:
当所有资源加载完成时,解析为新材质对象的 promise。
Throws:
Example:
const material = await Cesium.Material.fromTypeAsync('Image', {
   image: '../Images/Cesium_Logo_overlay.png'
});
销毁此对象持有的 WebGL 资源。销毁对象可以确定性地 释放 WebGL 资源,而不是依赖垃圾回收器来销毁此对象。

对象销毁后,不应再使用;调用除 isDestroyed 之外的任何函数都将导致 DeveloperError 异常。因此, 如示例所示,将返回值(undefined)赋给该对象。
Throws:
Example:
material = material && material.destroy();
See:

isDestroyed()boolean

如果此对象已被销毁则返回 true;否则返回 false。

如果此对象已被销毁,则不应再使用;调用除 isDestroyed 之外的任何函数都将导致 DeveloperError 异常。
Returns:
如果此对象已被销毁则返回 true;否则返回 false。
See:

isTranslucent()boolean

获取此材质是否为半透明。
Returns:
如果此材质为半透明则返回 true,否则返回 false
Need help? The fastest way to get answers is from the community and team on the Cesium Forum.