Cesium中entity材料纹理类封装

发布时间:2024年01月17日

1.随机颜色

2.固定颜色

3.图片纹理?

4.棋盘纹理

5.条纹纹理

6.网格纹理

7.边缘发光纹理

8.轮廓线条纹理

import * as Cesium from "cesium";
/**
 * entity材料纹理类
 */
class Material {
  /**
   * cesium颜色对象
   */
  static newColor = Cesium.Color;
  /**
   *获取随机颜色
   * @param {Number} value -透明度(0-1)
   * @return {Cesium.Color} -返回随机颜色
   */
  randomColor(value) {
    return Cesium.Color.fromRandom().withAlpha(value);
  }
  /**
   *获取固定颜色
   * @param {Cesium.Color} color -指定的颜色
   * @param {Number} value -透明度(0-1)
   * @return {Cesium.Color} -返回指定颜色
   */
  defineColor(color, value) {
    return color.withAlpha(value);
  }
  /**
   *获取图片纹理
   * @param {String} img -图片路径
   * @param {Cesium.Color} bgColor -指定的背景颜色
   * @param {Array} array -横竖图片排列重复次数
   * @return {Cesium.ImageMaterialProperty} -返回图片纹理
   */
  imageMaterial(img, bgColor, array) {
    return new Cesium.ImageMaterialProperty({
      image: img,
      color: bgColor,
      repeat: new Cesium.Cartesian2(...array),
    });
  }
  /**
   *获取棋盘纹理
   * @param {Cesium.Color} evenColor -颜色1
   * @param {Cesium.Color} oddColor -颜色2
   * @param {Array} array -横竖棋盘排列重复次数
   * @return {Cesium.CheckerboardMaterialProperty} -返回棋盘纹理
   */
  checkerBoardMaterial(evenColor, oddColor, array) {
    return new Cesium.CheckerboardMaterialProperty({
      evenColor,
      oddColor,
      repeat: new Cesium.Cartesian2(...array),
    });
  }
  /**
   *获取条纹纹理
   * @param {Cesium.Color} evenColor -条纹颜色1
   * @param {Cesium.Color} oddColor -条纹颜色2
   * @param {Number} repeat -条纹重复次数
   * @param {Number} offset -偏移量
   * @param {Boolean} orientation -条纹放置方向,true:水平,false:垂直,默认水平放置
   * @return {Cesium.StripeMaterialProperty} -返回条纹纹理
   */
  StripeMaterial(evenColor, oddColor, repeat, offset, orientation = true) {
    let ori;
    if (orientation) {
      ori = Cesium.StripeOrientation.VERTICAL;
    } else {
      ori = Cesium.StripeOrientation.HORIZONTAL;
    }
    return new Cesium.StripeMaterialProperty({
      evenColor,
      oddColor,
      repeat,
      offset,
      orientation: ori,
    });
  }
  /**
   *获取网格纹理
   * @param {Cesium.Color} color - 网格颜色
   * @param {Number} cellAlpha -单元格透明度(0-1)
   * @param {Array} lineCount -行列重复个数
   * @param {Array} lineThickness -横线竖线宽度大小
   * @param {Number} ineOffset -网格线偏移量
   * @return {Cesium.GridMaterialProperty} -返回网格纹理
   */
  GridMaterial(color, cellAlpha, lineCount, lineThickness, ineOffset) {
    return new Cesium.GridMaterialProperty({
      color,
      cellAlpha,
      lineCount: new Cesium.Cartesian2(...lineCount),
      lineThickness: new Cesium.Cartesian2(...lineThickness),
      ineOffset,
    });
  }
  /**
   *边缘发光线条
   * @param {Cesium.Color} color - 线条边缘颜色
   * @param {Number} glowPower -发光强度,以总线宽的百分比表示
   * @return {Cesium.PolylineGlowMaterialProperty} -返回边缘发光线条
   */
  polylineGlow(color, glowPower) {
    return new Cesium.PolylineGlowMaterialProperty({
      glowPower,
      color,
    });
  }
  /**
   * 轮廓线条
   * @param {Cesium.Color} color - 线条颜色
   * @param {Cesium.Color} outlineColor - 线条轮廓颜色
   * @param {Number} outlineWidth -轮廓宽度,单位:像素
   * @return {Cesium.PolylineOutlineMaterialProperty} -返回轮廓线条
   */
  polylineOutline(color, outlineColor, outlineWidth) {
    return new Cesium.PolylineOutlineMaterialProperty({
      color,
      outlineWidth,
      outlineColor,
    });
  }
}
export default Material;

文章来源:https://blog.csdn.net/qq_48273925/article/details/135653638
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。