ClassificationPrimitive

new Cesium.ClassificationPrimitive(options)

分类图元表示 Scene 中用于高亮显示的、包围几何的体积。

图元将几何实例与描述完整着色的 Appearance 结合在一起,包括 MaterialRenderState。粗略地说,几何实例定义了结构和位置, 而外观定义了视觉特征。将几何和外观解耦使我们能够混合搭配其中的大部分,并相互独立地添加新的几何或外观。 目前,在使用 ClassificationPrimitive 时,仅支持所有实例颜色相同的 PerInstanceColorAppearance。 若要在对地形或 3D Tiles 进行分类时获得完整的 Appearance 支持,请改用 GroundPrimitive

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

有效的几何体包括 BoxGeometryCylinderGeometryEllipsoidGeometryPolylineVolumeGeometrySphereGeometry

遵循椭球体表面的几何体,例如 CircleGeometryCorridorGeometryEllipseGeometryPolygonGeometryRectangleGeometry, 如果是拉伸体积,则同样有效;否则将不会被渲染。

Name Type Description
options object optional 包含以下属性的对象:
Name Type Default Description
geometryInstances Array | GeometryInstance optional 要渲染的几何实例。可以是单个实例,也可以是长度为 1 的数组。
appearance Appearance optional 用于渲染图元的外观。当 GeometryInstances 具有颜色属性时,默认为 PerInstanceColorAppearance。
show boolean true optional 确定是否显示此图元。
vertexCacheOptimize boolean false optional 当为 true 时,会对几何顶点进行优化,以适用于顶点着色器前后的缓存。
interleave boolean false optional 当为 true 时,几何顶点属性会交错排列,这可以略微提高渲染性能,但会增加加载时间。
compressVertices boolean true optional 当为 true 时,几何顶点会被压缩,从而节省内存。
releaseGeometryInstances boolean true optional 当为 true 时,图元不会保留对输入 geometryInstances 的引用,以节省内存。
allowPicking boolean true optional 当为 true 时,每个几何实例只能使用 Scene#pick 进行拾取。当为 false 时,可节省 GPU 内存。
asynchronous boolean true optional 确定图元是异步创建还是阻塞直到准备就绪。如果为 false,则必须先调用 initializeTerrainHeights()。
classificationType ClassificationType ClassificationType.BOTH optional 确定地形、3D Tiles 或两者是否将被分类。
debugShowBoundingVolume boolean false optional 仅用于调试。确定是否显示此图元命令的包围球。
debugShowShadowVolume boolean false optional 仅用于调试。确定是否绘制图元中每个几何的阴影体。必须在创建时设置为 true,以便在几何被释放之前创建阴影体;或者 options.releaseGeometryInstance 必须为 false
See:

Members

readonly allowPicking : boolean

当为 true 时,每个几何实例只能使用 Scene#pick 进行拾取。当为 false 时,可节省 GPU 内存。
Default Value: true

readonly asynchronous : boolean

确定几何实例是否将在 web worker 上创建并批处理。
Default Value: true
确定地形、3D Tiles 或两者是否将被分类。
Default Value: ClassificationType.BOTH

readonly compressVertices : boolean

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

debugShowBoundingVolume : boolean

此属性仅用于调试;它不用于生产环境,也未经过优化。

绘制图元中每个绘制命令的包围球。

Default Value: false

debugShowShadowVolume : boolean

此属性仅用于调试;它不用于生产环境,也未经过优化。

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

Default Value: false
使用此图元渲染的几何实例。如果在构造图元时 options.releaseGeometryInstancestrue,则可能为 undefined

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

由于所使用的渲染技术,所有几何实例必须具有相同的颜色。 如果存在颜色不同的实例,则在首次尝试渲染时会抛出 DeveloperError

Default Value: undefined
确定几何顶点属性是否交错排列,这可以略微提高渲染性能。
Default Value: false
确定图元是否已完成并准备好渲染。如果此属性为 true,则图元将在下一次调用 ClassificationPrimitive#update 时渲染。

readonly releaseGeometryInstances : boolean

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

readonly vertexCacheOptimize : boolean

当为 true 时,会对几何顶点进行优化,以适用于顶点着色器前后的缓存。
Default Value: true

Methods

static Cesium.ClassificationPrimitive.isSupported(scene)boolean

确定是否支持 ClassificationPrimitive 渲染。
Name Type Description
scene Scene 场景。
Returns:
如果支持 ClassificationPrimitives 则为 true;否则返回 false
销毁此对象持有的 WebGL 资源。销毁对象可以确定性地释放 WebGL 资源,而不是依赖垃圾回收器来销毁此对象。

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

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

getGeometryInstanceAttributes(id)object

返回 GeometryInstance 的可修改的逐实例属性。
Name Type Description
id * GeometryInstance 的 id。
Returns:
属性格式中的类型化数组;如果没有具有该 id 的实例,则为 undefined。
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);
如果此对象已被销毁则返回 true;否则返回 false。

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

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

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

Throws:
  • DeveloperError :所有实例几何体必须具有相同的 primitiveType。
  • DeveloperError :Appearance 和材质具有同名的 uniform。
  • DeveloperError :并非所有几何实例都具有相同的颜色属性。
需要帮助?获取答案的最快方式是在 Cesium 论坛 上向社区和团队提问。