GroundPrimitive

Ground Primitive表示覆盖在地形上的几何体,或Scene中的3D瓦片。

基本体将几何体实例与描述完整着色的Appearance结合起来,包括MaterialRenderState。大致上,几何体实例定义结构和位置,外观定义视觉特征。分离几何体和外观允许我们混合和匹配大多数几何体和外观,并独立地添加新的几何体或外观。

支持WebGL_深度纹理扩展,除了PerinstanceColorAppearance外,还需要使用具有不同PerinstanceColors或材质的几何体。

纹理基本体是为概念模式而设计的,并不用于精确地将纹理映射到地形-对于该用例,请使用SingleTileImageryProvider

要正确渲染,此功能需要ext}frag_depth webgl扩展。对于不支持此扩展的硬件,将存在一些视角的渲染工件。

有效几何图形为CircleGeometryCorridorGeometryEllipseGeometryPolygonGeometryRectangleGeometry

new GroundPrimitive(options)
Parameters:
options (Object)
Name Description
options.geometryInstances
(Array | GeometryInstance)
要渲染的几何体实例。
options.appearance
Appearance
用于呈现原语的外观。当几何实体具有颜色属性时,默认为平面PerinstanceColorAppearance。
options.show
Boolean
default true
确定是否显示此基元。
options.vertexCacheOptimize
Boolean
default false
true时,几何体顶点将针对顶点前和顶点后明暗器缓存进行优化。
options.interleave
Boolean
default false
true时,几何顶点属性交错,这可以稍微提高渲染性能,但增加加载时间。
options.compressVertices
Boolean
default true
true时,几何体顶点被压缩,这将节省内存。
options.releaseGeometryInstances
Boolean
default true
true时,原语不保留对输入geometryInstances的引用以保存内存。
options.allowPicking
Boolean
default true
true时,每个几何体实例只能使用Scene#pick进行选择。当false时,保存GPU内存。
options.asynchronous
Boolean
default true
确定在准备就绪之前是异步创建基元还是阻止创建基元。如果为false,则必须首先调用initiaterrainheights()。
options.classificationType
ClassificationType
default ClassificationType.BOTH
确定地形、三维瓦片还是两者都要分类。
options.debugShowBoundingVolume
Boolean
default false
仅用于调试。确定是否显示此基元的命令的边界球。
options.debugShowShadowVolume
Boolean
default false
仅用于调试。确定是否绘制基本体中每个几何体的阴影体积。在释放几何图形或选项之前,要创建的卷在创建时必须为true。ReleaseGeometryInstance必须为false
Example
// Example 1: Create primitive with a single instance
var rectangleInstance = new bmgl.GeometryInstance({
  geometry : new bmgl.RectangleGeometry({
    rectangle : bmgl.Rectangle.fromDegrees(-140.0, 30.0, -100.0, 40.0)
  }),
  id : 'rectangle',
  attributes : {
    color : new bmgl.ColorGeometryInstanceAttribute(0.0, 1.0, 1.0, 0.5)
  }
});
scene.primitives.add(new bmgl.GroundPrimitive({
  geometryInstances : rectangleInstance
}));

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

Members

(readonly) allowPicking : Boolean

true时,每个几何体实例只能使用Scene#pick进行选择。当false时,保存GPU内存。
Default Value: true

appearance : Appearance

Appearance用于对该原语进行着色。每个几何体实例都以相同的外观着色。一些外观,如PerInstanceColorAppearance允许为每个实例提供唯一的属性。
Default Value: undefined

(readonly) asynchronous : Boolean

确定是否将在Web工作者上创建和批处理几何体实例。
Default Value: true

classificationType : ClassificationType

确定地形、三维瓦片还是两者都要分类。
Default Value: ClassificationType.BOTH

(readonly) compressVertices : Boolean

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

debugShowBoundingVolume : Boolean

此属性仅用于调试;它既不用于生产,也不进行优化。

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

Default Value: false

debugShowShadowVolume : Boolean

此属性仅用于调试;它既不用于生产,也不进行优化。

为基本体中的每个几何体绘制阴影体积。

Default Value: false

(readonly) geometryInstances : (Array|GeometryInstance)

使用此基元渲染的几何体实例。在构造基元时,如果options.releaseGeometryInstancestrue,则可能是undefined

在呈现基元后更改此属性没有效果。

Default Value: undefined

(readonly) interleave : Boolean

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

(readonly) ready : Boolean

确定基元是否已完成并准备好呈现。如果此属性为真,则下次调用GroundPrimitive#update时将呈现原语。

(readonly) readyPromise : Promise.<GroundPrimitive>

获取解决基元何时准备呈现的承诺。

(readonly) releaseGeometryInstances : Boolean

true时,原语不保留对输入geometryInstances的引用以保存内存。
Default Value: true

show : Boolean

确定是否显示基元。这会影响基本体中的所有几何体实例。
Default Value: true

(readonly) vertexCacheOptimize : Boolean

true时,几何体顶点将针对顶点前和顶点后明暗器缓存进行优化。
Default Value: true

Methods

(static) initializeTerrainHeights() → {Promise}
初始化最小和最大地形高度。这只需要在同步创建groundprimitive时调用。
(static) isSupported(scene) → {Boolean}
确定是否支持GroundPrimitive呈现。
Parameters:
scene (Scene) 现场。
(static) supportsMaterials(scene) → {Boolean}
检查给定场景是否支持基本体上的材质。GroundPrimitive上的材质需要支持WebGL“深度”纹理扩展。
Parameters:
scene (Scene) 当前场景。
destroy()
销毁此对象持有的WebGL资源。销毁对象允许确定地释放WebGL资源,而不是依赖垃圾收集器来销毁此对象。

一旦对象被破坏,就不应使用它;调用除isDestroyed以外的任何函数都将导致DeveloperError异常。因此,将返回值(undefined)赋给对象,如示例中所述。

Example
e = e && e.destroy();
Throws
See:
getGeometryInstanceAttributes(id) → {Object}
返回GeometryInstance的每个实例可修改属性。
Parameters:
id (*) GeometryInstance的ID。
Example
var attributes = primitive.getGeometryInstanceAttributes('an id');
attributes.color = bmgl.ColorGeometryInstanceAttribute.toValue(bmgl.Color.AQUA);
attributes.show = bmgl.ShowGeometryInstanceAttribute.toValue(true);
Throws
  • DeveloperError : 必须在调用GetGeometryInstanceAttributes之前调用Update。
isDestroyed() → {Boolean}
如果此对象被破坏,则返回true;否则返回false。

如果此对象被破坏,则不应使用它;调用除isDestroyed以外的任何函数都将导致DeveloperError异常。

See:
update()
ViewerBMWidget渲染场景以获取渲染此原语所需的绘制命令时调用。

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

Throws
  • DeveloperError : 对于同步groundPrimitive,必须调用groundPrimitive.InitializerRainHeights()并等待返回的Promise解析。
  • DeveloperError : 所有实例几何必须具有相同的PrimitiveType。
  • DeveloperError : 外观和材料有一个统一的名称。