Cesium GifPrimitive拓展

在这里插入图片描述
使用

    var rectangle = new Cesium.RectangleGeometry({
        rectangle: Cesium.Rectangle.fromDegrees(110.0, 29.0, 114.0, 32.0),
    });
    var circle = new Cesium.CircleGeometry({
        center: Cesium.Cartesian3.fromDegrees(115.59777, 30.03883),
        radius: 100000.0,
    });

    var len = 1.0;
    var longitude = 114;
    var latitude = 30;
    var positions = Cesium.Cartesian3.fromDegreesArray([
      longitude - len,
      latitude,
      longitude + len,
      latitude,
    ]);
    var maximumHeight = 300000;
    var minimumHeight = 0;
  
    var wall = Cesium.WallGeometry.fromConstantHeights({
      positions: positions,
      minimumHeight: minimumHeight,
      maximumHeight: maximumHeight,
    });

    var geometryInstances = [];
    geometryInstances.push(
      new Cesium.GeometryInstance({
        geometry: rectangle,
      })
    );
    geometryInstances.push(
        new Cesium.GeometryInstance({
          geometry: circle,
      })
    );
    geometryInstances.push(
        new Cesium.GeometryInstance({
          geometry: wall,
      })
    );

    var options = {
        geometryInstances: geometryInstances,
        appearance: new Cesium.MaterialAppearance({
          renderState: {
            depthTest: { enabled: true },
            depthMask: true,
            blending: Cesium.BlendingState.ALPHA_BLEND,
            cull: {
              enabled: false,
              face: Cesium.CullFace.FRONT,
            },
          },
          translucent: false,
        }),
        asynchronous: true,
    };

    var fs = "czm_material czm_getMaterial(czm_materialInput materialInput) { \n" +
    "    czm_material material = czm_getDefaultMaterial(materialInput); \n" +
    "    vec2 st = materialInput.st; \n" +
    "    vec4 color = texture2D(image, st); \n" +
    "    material.diffuse = color.rgb; \n" +
    "    material.alpha = 1.0 - min(color.r,min(color.g,color.b)); \n" +
    "    return material; \n" +
    "} \n";
  
    options.url = 'http://img6.cache.netease.com/game/2016/3/3/20160303135738201d6.gif';
    options.fragmentShaderSource = fs;
    
    var primitive = new GifPrimitive(options);
    viewer.scene.primitives.add(primitive);

加入着色器对比
可以通过加入着色器控制透明度

使用了libgif的canvas,编译需要npm引入

  "dependencies": {
    "libgif": "^0.0.3"
  }

GifPrimitive

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值