Cesium 动态Polyline绘制

Cesium 用Entity绘制polyline,如果使用CallbackProperty方法进行动态绘制,depthFailMaterial属性将失效。
从官方github上的issue找了替代的方法。

动态Primitive线的绘制

// 绘制方法
this._candidateLinePrimitive = this.scene.primitives.add(
  new Cesium.Primitive({
    geometryInstances: new Cesium.GeometryInstance({
      geometry: new Cesium.PolylineGeometry({
        positions: this._candidateLinePositions,
        width: this.defaultLineWidth,
        vertexFormat: Cesium.PolylineMaterialAppearance.VERTEX_FORMAT
      })
    }),
    appearance: new Cesium.PolylineMaterialAppearance({
      material: new Cesium.Material({
        fabric: {
          type: "PolylineDash",
          uniforms: {
            color: (() => {
              let c = this.lineMaterial.color.getValue();
              return new Cesium.Color(c.red, c.green, c.blue, 1.0);
            })()
          }
        }
      }),
      renderState: {
        depthTest: {
          enabled: false  // shut off depth test
        }
      }
    }),
    asynchronous: false   // block or not
  })
);
// 动态刷新,remove 再 add
if (!_.isEmpty(this._candidateLinePrimitive)) {
    this.scene.primitives.remove(this._candidateLinePrimitive);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章