可渲染的布告板集合。
Example billboards
布告板可通过
Example billboards
布告板可通过
BillboardCollection#add
和 BillboardCollection#remove
从集合中添加和移除。集合中的布告板会自动共享具有相同标识符的影像纹理。
Name | Type | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
具有以下属性的对象:
|
Example:
// Create a billboard collection with two billboards
var billboards = scene.primitives.add(new SuperMap3D.BillboardCollection());
billboards.add({
position : new SuperMap3D.Cartesian3(1.0, 2.0, 3.0),
image : 'url/to/image'
});
billboards.add({
position : new SuperMap3D.Cartesian3(4.0, 5.0, 6.0),
image : 'url/to/another/image'
});
See:
Members
-
blendOption : BlendOption
-
布告板混合选项。默认值用于渲染不透明和半透明的布告板。 不过,如果所有布告板都是完全不透明或完全半透明的,将该技术设置为 BillboardRenderTechnique.OPAQUE 或 BillboardRenderTechnique.TRANSLUCENT 最多可将性能提高 2 倍。
-
Default Value:
BlendOption.OPAQUE_AND_TRANSLUCENT
-
此属性仅用于调试;它不是用于生产的,也没有经过优化。
为基元中的每个绘制命令绘制包围球。
-
Default Value:
false
-
返回此集合中布告板的数量。通常与
BillboardCollection#get
一起使用,以遍历集合中的所有布告板。 -
modelMatrix : Matrix4
-
4x4变换矩阵,将这个集合中的每个布告板从模型转换为地理坐标。当这是单位矩阵时,布告板以地理坐标绘制,即WGS84坐标。 本地参考帧可以通过提供不同的转换矩阵来使用,就像
Transforms.eastNorthUpToFixedFrame
返回的那样。-
Default Value:
Matrix4.IDENTITY
Example:
var center = SuperMap3D.Cartesian3.fromDegrees(-75.59777, 40.03883); billboards.modelMatrix = SuperMap3D.Transforms.eastNorthUpToFixedFrame(center); billboards.add({ image : 'url/to/image', position : new SuperMap3D.Cartesian3(0.0, 0.0, 0.0) // center }); billboards.add({ image : 'url/to/image', position : new SuperMap3D.Cartesian3(1000000.0, 0.0, 0.0) // east }); billboards.add({ image : 'url/to/image', position : new SuperMap3D.Cartesian3(0.0, 1000000.0, 0.0) // north }); billboards.add({ image : 'url/to/image', position : new SuperMap3D.Cartesian3(0.0, 0.0, 1000000.0) // up });
See:
Methods
-
add(billboard) → Billboard
-
创建一个具有指定初始属性的布告板并将其添加到集合中。添加的布告板将被返回,以便以后修改或从集合中删除。
Name Type Description billboard
Object optional 描述布告板属性的模板,如例 1 所示。 Returns:
加入该系列的布告板。 调用add
是期望的常数时间。 然而,集合的顶点缓冲区被重写一个0 (n)
操作,也会导致CPU到GPU的开销。 为了获得最佳性能,在调用update
之前添加尽可能多的布告板。Throws:
-
DeveloperError : 该对象被销毁,即调用destroy()。
Examples:
// Example 1: Add a billboard, specifying all the default values. var b = billboards.add({ show : true, position : SuperMap3D.Cartesian3.ZERO, pixelOffset : SuperMap3D.Cartesian2.ZERO, eyeOffset : SuperMap3D.Cartesian3.ZERO, heightReference : SuperMap3D.HeightReference.NONE, horizontalOrigin : SuperMap3D.HorizontalOrigin.CENTER, verticalOrigin : SuperMap3D.VerticalOrigin.CENTER, scale : 1.0, image : 'url/to/image', imageSubRegion : undefined, color : SuperMap3D.Color.WHITE, id : undefined, rotation : 0.0, alignedAxis : SuperMap3D.Cartesian3.ZERO, width : undefined, height : undefined, scaleByDistance : undefined, translucencyByDistance : undefined, pixelOffsetScaleByDistance : undefined, sizeInMeters : false, distanceDisplayCondition : undefined });
// Example 2: Specify only the billboard's cartographic position. var b = billboards.add({ position : SuperMap3D.Cartesian3.fromDegrees(longitude, latitude, height) });
See:
-
-
检查此集合是否包含给定的布告板。
Name Type Description billboard
Billboard optional 要检查的布告板。 Returns:
如果此集合包含布告板,则为True,否则为false。 -
销毁该对象持有的 WebGL 资源。销毁对象可以确定性地释放 WebGL 资源,而不是依赖垃圾回收器来销毁该对象。
一旦对象被销毁,就不应再使用;调用 isDestroyed 以外的任何函数都将导致DeveloperError
异常。因此,请按照示例中的方法将返回值(undefined)赋值给对象。Returns:
Throws:
-
DeveloperError : 该对象已被销毁,即 destroy() 被调用。
Example:
billboards = billboards && billboards.destroy();
See:
-
-
get(index) → Billboard
-
返回集合中指定索引处的布告板。指数从0开始,随着布告板的增加而增加。 移除一个布告板会将它之后的所有布告板移到左侧,改变它们的索引。 此函数通常与
BillboardCollection#length
一起使用,用于遍历集合中的所有布告板。Name Type Description index
Number 布告板的零基索引。 Returns:
指定索引处的布告板。Throws:
-
DeveloperError : 该对象被销毁,即调用destroy()。
Example:
// Toggle the show property of every billboard in the collection var len = billboards.length; for (var i = 0; i < len; ++i) { var b = billboards.get(i); b.show = !b.show; }
See:
-
-
Returns:
如果该对象已销毁,则为 true;否则为 false。 -
从集合中移除一个布告板。
Name Type Description billboard
Billboard 要移除的布告板。 Returns:
如果布告板已被移除,则为 true;如果在集合中找不到该布告板,则为 false。 调用remove
是期望的常量时间。然而,集合的顶点缓冲区被重写——一个0 (n)
操作,也会导致CPU到GPU的开销。 为了获得最佳性能,在调用update
之前尽可能多地移除布告板。 如果你想暂时隐藏一个布告板,调用#show
而不是删除并重新添加布告板通常更有效。Throws:
-
DeveloperError : 该对象被销毁,即调用destroy()。
Example:
var b = billboards.add(...); billboards.remove(b); // Returns true
See:
-
-
从集合中移除所有布告板。
Performance:
O(n)。从集合中删除所有布告板,然后添加新布告板比完全创建一个新集合更有效。
Throws:
-
DeveloperError : This object was destroyed, i.e., destroy() was called.
Example:
billboards.add(...); billboards.add(...); billboards.removeAll();
See:
-
-
Throws:
-
RuntimeError : 带 id 的影像必须在图集中。
-