Cesium边界掩膜、发光

项目地址

https://github.com/zhengjie9510/webgis-demo

实现效果

核心代码

const glowBorder = new Cesium.Primitive({
  geometryInstances: instance,
  appearance: new Cesium.PolylineMaterialAppearance({
    material: new Cesium.Material({
      fabric: {
        type: 'MyBorderColor',
        uniforms: {
          color: new Cesium.Color(0.2, 0.2, 0.8, 1.0),
          glowPower: 0.25,
          taperPower: 1
        },
        source: `
            uniform vec4 color;
            uniform float glowPower;
            uniform float taperPower;
            czm_material czm_getMaterial(czm_materialInput materialInput)
            {
              czm_material material = czm_getDefaultMaterial(materialInput);
              vec2 st = materialInput.st;
              float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5);

              if (taperPower <= 0.99999) {
                  glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5));
              }

              vec4 fragColor;
              fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb);
              fragColor.a = clamp(0.0, 1.0, glow) * color.a;
              fragColor = czm_gammaCorrect(fragColor);

              material.emission = fragColor.rgb;
              material.alpha = fragColor.a;

              return material;
            }
          `
      }
    })
  }),
  allowPicking: false
})
Cesium中,可以加载边界线并高亮显示。通过添加polygon实体后,设置outline属性,可以创建一个带有边界线的多边形。但是,如果未设置height属性,边界线将不会显示。为了解决这个问题,可以再绘制一个polyline实体作为边界线。代码示例如下: ``` var positions = entity.polygon.hierarchy._value.positions; this.viewer.entities.add({ name: 'borderLine', polyline: { positions: positions, width: 2, material: Color.BLACK.withAlpha(0.5), clampToGround: true } }); ``` 这段代码将根据polygon实体的位置创建一个polyline实体,并将其添加到viewer.entities中。这样就可以加载边界线并显示在Cesium中了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Cesium,加载面geojson, 鼠标点选高亮显示面边界](https://download.csdn.net/download/ccxbb/10726415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Cesium11:加载geojson面贴地和显示边界问题](https://blog.csdn.net/bitree1/article/details/131964219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Cesium 加载发光材质的行政区边界](https://blog.csdn.net/lz5211314121/article/details/131719616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值