Cesium 使用primitive绘制几何图形,相机拉近(视野放大),几何图形破损显示不完整
作者:互联网
分析:此原因是因为地形导致,可以尝试将primitive设置高程(高度)如5000m,此时图形位置由于高于山峰等地形,图形可以显示完整。
但是如果几何图形必须要贴地(高度为0m)呢?
解决方法:
1.设置scene.globe.depthTestAgainstTerrain = false;即不进行地形深度测试,也就忽略了地形。这时可以正常显示几何图形。
2.使用GroundPrimitive。顾名思义,这是帮助你将几何图形贴地的类。
scene.primitives.add(new Cesium.GroundPrimitive({
geometryInstances : instances,
appearance : new Cesium.PerInstanceColorAppearance()
}));
这里给出官方的解释:
A ground primitive represents geometry draped over the terrain in the Scene
. The geometry must be from a single GeometryInstance
. Batching multiple geometries is not yet supported.
A primitive combines the geometry instance with an Appearance
that describes the full shading, including Material
and RenderState
. Roughly, the geometry instance defines the structure and placement, and the appearance defines the visual characteristics. Decoupling geometry and appearance allows us to mix and match most of them and add a new geometry or appearance independently of each other. Only the PerInstanceColorAppearance
is supported at this time.
For correct rendering, this feature requires the EXT_frag_depth WebGL extension. For hardware that do not support this extension, there will be rendering artifacts for some viewing angles.
Valid geometries are CircleGeometry
, CorridorGeometry
, EllipseGeometry
, PolygonGeometry
, and RectangleGeometry
.
这里给出官方demo:
var rectangleInstance = new Cesium.GeometryInstance({ geometry : new Cesium.RectangleGeometry({ rectangle : Cesium.Rectangle.fromDegrees(-140.0, 30.0, -100.0, 40.0) }), id : 'rectangle', attributes : { color : new Cesium.ColorGeometryInstanceAttribute(0.0, 1.0, 1.0, 0.5) } }); scene.primitives.add(new Cesium.GroundPrimitive({ geometryInstances : rectangleInstance }));
本文转自 https://blog.csdn.net/u013821237/article/details/80221108,如有侵权,请联系删除。
标签:primitive,几何图形,geometry,appearance,Cesium,new 来源: https://www.cnblogs.com/hustshu/p/16103521.html