GroundPrimitive

new Cesium.GroundPrimitive ( options )

地面基元表示覆盖在地形或 Scene 中的 3D 瓦片上的几何图形。

图元将几何实例与描述完整着色的 Appearance 组合在一起,包括 Material RenderState 。粗略地说,几何实例定义了结构和位置,外观定义了视觉特征。解耦几何和外观允许我们混合和匹配它们中的大多数,并相互独立地添加新的几何或外观。

需要对 WEBGL_depth_texture 扩展的支持才能使用具有不同 PerInstanceColors 或除 PerInstanceColorAppearance 之外的材质的 GeometryInstances。

Textured GroundPrimitives 是为概念图案设计的,并不意味着将纹理精确映射到地形 - 对于该用例,请使用 SingleTileImageryProvider

为了正确渲染,此功能需要 EXT_frag_depth WebGL 扩展。对于不支持此扩展的硬件,某些视角会出现渲染伪影。

有效的几何图形是 CircleGeometry CorridorGeometry EllipseGeometry PolygonGeometry RectangleGeometry

Name Type Description
options Object 具有以下属性的 可选 对象:
姓名 类型 默认 描述
geometryInstances 数组 | 几何实例 可选 要渲染的几何实例。
appearance 外貌 可选 用于渲染图元的外观。当 GeometryInstances 具有颜色属性时,默认为平面 PerInstanceColorAppearance。
show 布尔值 true 可选 确定是否显示此原语。
vertexCacheOptimize 布尔值 false 可选 true 时,几何顶点针对顶点着色器前后缓存进行优化。
interleave 布尔值 false 可选 true 时,几何顶点属性是交错的,这可以稍微提高渲染性能但增加加载时间。
compressVertices 布尔值 true 可选 true 时,几何顶点被压缩,这将节省内存。
releaseGeometryInstances 布尔值 true 可选 true 时,基元不保留对输入 geometryInstances 的引用以节省内存。
allowPicking 布尔值 true 可选 true 时,每个几何实例只能通过 Scene#pick 来选择。当为 false 时,GPU 内存被保存。
asynchronous 布尔值 true 可选 确定原语是异步创建还是阻塞直到准备好。如果为 false,则必须首先调用 initializeTerrainHeights()。
classificationType 分类类型 ClassificationType.BOTH 可选 确定是对地形、3D 瓷砖还是两者都进行分类。
debugShowBoundingVolume 布尔值 false 可选 仅用于调试。确定是否显示此原语的命令的边界球。
debugShowShadowVolume 布尔值 false 可选 仅用于调试。确定是否绘制图元中每个几何体的阴影体积。在创建几何体之前要创建的卷必须为 true 或 options.releaseGeometryInstance 必须为 false
Example:
// Example 1: Create primitive with a single instance
const 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
}));

// Example 2: Batch instances
const color = new Cesium.ColorGeometryInstanceAttribute(0.0, 1.0, 1.0, 0.5); // Both instances must have the same color.
const rectangleInstance = new Cesium.GeometryInstance({
  geometry : new Cesium.RectangleGeometry({
    rectangle : Cesium.Rectangle.fromDegrees(-140.0, 30.0, -100.0, 40.0)
  }),
  id : 'rectangle',
  attributes : {
    color : color
  }
});
const ellipseInstance = new Cesium.GeometryInstance({
    geometry : new Cesium.EllipseGeometry({
        center : Cesium.Cartesian3.fromDegrees(-105.0, 40.0),
        semiMinorAxis : 300000.0,
        semiMajorAxis : 400000.0
    }),
    id : 'ellipse',
    attributes : {
        color : color
    }
});
scene.primitives.add(new Cesium.GroundPrimitive({
  geometryInstances : [rectangleInstance, ellipseInstance]
}));
See:

Members

readonly allowPicking : Boolean

当为 true 时,每个几何实例只能通过 Scene#pick 进行拾取。当为 false 时,GPU 内存被保存。
Default Value: true
用于着色此图元的 Appearance 。每个几何实例都以相同的外观着色。某些外观,例如 PerInstanceColorAppearance 允许为每个实例赋予唯一的属性。
Default Value: undefined

readonly asynchronous : Boolean

确定是否将在 Web Worker 上创建和批处理几何实例。
Default Value: true
确定是对地形、3D 瓷砖还是两者都进行分类。
Default Value: ClassificationType.BOTH

readonly compressVertices : Boolean

当为 true 时,几何顶点被压缩,这将节省内存。
Default Value: true

debugShowBoundingVolume : Boolean

该属性仅用于调试;它不是用于生产用途,也不是优化的。

为基元中的每个绘制命令绘制边界球体。

Default Value: false

debugShowShadowVolume : Boolean

该属性仅用于调试;它不是用于生产用途,也不是优化的。

为图元中的每个几何体绘制阴影体积。

Default Value: false

readonly geometryInstances : Array| GeometryInstance

使用此图元渲染的几何实例。如果在构造图元时 options.releaseGeometryInstances true ,则这可能是 undefined 的。

在渲染图元后更改此属性无效。

Default Value: undefined

readonly interleave : Boolean

确定几何顶点属性是否交错,这可以稍微提高渲染性能。
Default Value: false

readonly ready : Boolean

确定图元是否完整并准备好渲染。如果此属性为 true,则在下次调用 GroundPrimitive#update 时将呈现图元。

readonly readyPromise : Promise.< GroundPrimitive >

获取当原语准备好渲染时解决的承诺。

readonly releaseGeometryInstances : Boolean

当为 true 时,图元不会保留对输入 geometryInstances 的引用以节省内存。
Default Value: true
确定是否将显示图元。这会影响图元中的所有几何实例。
Default Value: true

readonly vertexCacheOptimize : Boolean

当为 true 时,几何顶点针对顶点着色器前后缓存进行优化。
Default Value: true

Methods

static Cesium.GroundPrimitive.initializeTerrainHeights () Promise.<void>

初始化最小和最大地形高度。只有在同步创建 GroundPrimitive 时才需要调用它。
Returns:
加载地形高度后将解决的承诺。

static Cesium.GroundPrimitive.isSupported (scene) Boolean

确定是否支持 GroundPrimitive 渲染。
Name Type Description
scene Scene 现场。
Returns:
如果支持 GroundPrimitives,则为 true ;否则,返回 false

static Cesium.GroundPrimitive.supportsMaterials (scene) Boolean

检查给定场景是否支持 GroundPrimitives 上的材质。 GroundPrimitives 上的材质需要支持 WEBGL_depth_texture 扩展。
Name Type Description
scene Scene 当前场景。
Returns:
当前场景是否支持 GroundPrimitives 上的材质。
销毁此对象持有的 WebGL 资源。销毁一个对象允许确定性地释放 WebGL 资源,而不是依赖垃圾收集器来销毁这个对象。

一旦一个对象被销毁,它就不应该被使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。因此,如示例中所做的那样,将返回值 ( undefined ) 分配给对象。

Throws:
Example:
e = e && e.destroy();
See:

getGeometryInstanceAttributes (id) Object

返回 GeometryInstance 的可修改的每实例属性。
Name Type Description
id * GeometryInstance 的 ID。
Returns:
属性格式的类型化数组,如果没有具有 id 的实例,则为未定义。
Throws:
  • DeveloperError :必须在调用 getGeometryInstanceAttributes 之前调用 update。
Example:
const attributes = primitive.getGeometryInstanceAttributes('an id');
attributes.color = Cesium.ColorGeometryInstanceAttribute.toValue(Cesium.Color.AQUA);
attributes.show = Cesium.ShowGeometryInstanceAttribute.toValue(true);

isDestroyed () Boolean

如果此对象被销毁,则返回 true;否则为假。

如果该对象被销毁,则不应使用;调用 isDestroyed 以外的任何函数都会导致 DeveloperError 异常。

Returns:
如果此对象被销毁,则为 true ;否则, false
See:
Viewer CesiumWidget 渲染场景以获取渲染此图元所需的绘制命令时调用。

不要直接调用这个函数。记录这只是为了列出渲染场景时可能传播的异常:

Throws:
  • DeveloperError : 对于同步 GroundPrimitive,您必须调用 GroundPrimitive.initializeTerrainHeights() 并等待返回的 Promise 解决。
  • DeveloperError :所有实例几何必须具有相同的primitiveType。
  • DeveloperError : 外观和材质有同名的制服。