可渲染的廣告牌集合。公告牌是在3D場(chǎng)景中定位的視區(qū)對(duì)齊的圖像。

示例廣告牌
廣告牌使用
new BillboardCollection(options)

示例廣告牌
廣告牌使用
BillboardCollection#add
和BillboardCollection#remove
從集合中添加和刪除。集合中的公告牌自動(dòng)共享具有相同標(biāo)識(shí)符的圖像的紋理。
Parameters:
options
(Object)
Name | Description |
---|---|
options.modelMatrix
Matrix4
default Matrix4.IDENTITY
|
4x4轉(zhuǎn)換矩陣,將每個(gè)廣告牌從模型轉(zhuǎn)換為世界坐標(biāo)。 |
options.debugShowBoundingVolume
Boolean
default false
|
僅用于調(diào)試。確定是否顯示此基元的命令的邊界球。 |
options.scene
Scene
|
必須通過(guò)使用高度參考屬性的廣告牌,或?qū)?duì)地球儀進(jìn)行深度測(cè)試。 |
options.blendOption
BlendOption
default BlendOption.OPAQUE_AND_TRANSLUCENT
|
廣告牌混合選項(xiàng)。默認(rèn)設(shè)置用于渲染不透明和半透明的廣告牌。但是,如果所有的廣告牌都是完全不透明的或者都是完全半透明的,那么將該技術(shù)設(shè)置為blendoption.opaque或blendoption.transparent可以將性能提高2倍。 |
Example
// Create a billboard collection with two billboards
var billboards = scene.primitives.add(new bmgl.BillboardCollection());
billboards.add({
position : new bmgl.Cartesian3(1.0, 2.0, 3.0),
image : 'url/to/image'
});
billboards.add({
position : new bmgl.Cartesian3(4.0, 5.0, 6.0),
image : 'url/to/another/image'
});
Members
blendOption : BlendOption
廣告牌混合選項(xiàng)。默認(rèn)設(shè)置用于渲染不透明和半透明的廣告牌。但是,如果所有的廣告牌都是完全不透明的或者都是完全半透明的,那么將該技術(shù)設(shè)置為blendoption.opaque或blendoption.transparent可以將性能提高2倍。
-
Default Value:
BlendOption.OPAQUE_AND_TRANSLUCENT
debugShowBoundingVolume : Boolean
此屬性僅用于調(diào)試;它既不用于生產(chǎn),也不進(jìn)行優(yōu)化。
為基本體中的每個(gè)draw命令繪制邊界球體。
-
Default Value:
false
debugShowTextureAtlas : Boolean
此屬性僅用于調(diào)試;它既不用于生產(chǎn),也不進(jìn)行優(yōu)化。
將此布告欄集合的紋理圖集繪制為全屏四邊形。
-
Default Value:
false
length : Number
返回此集合中公告牌的數(shù)目。這通常與
BillboardCollection#get
一起用于遍歷集合中的所有公告牌。
modelMatrix : Matrix4
4x4轉(zhuǎn)換矩陣,將此集合中的每個(gè)公告牌從模型坐標(biāo)轉(zhuǎn)換為世界坐標(biāo)。當(dāng)這是標(biāo)識(shí)矩陣時(shí),廣告牌以世界坐標(biāo)繪制,即地球的wgs84坐標(biāo)。本地參考幀可以通過(guò)提供不同的轉(zhuǎn)換矩陣來(lái)使用,如
Transforms.eastNorthUpToFixedFrame
返回的轉(zhuǎn)換矩陣。
-
Default Value:
Matrix4.IDENTITY
See:
Example:
var center = bmgl.Cartesian3.fromDegrees(-75.59777, 40.03883);
billboards.modelMatrix = bmgl.Transforms.eastNorthUpToFixedFrame(center);
billboards.add({
image : 'url/to/image',
position : new bmgl.Cartesian3(0.0, 0.0, 0.0) // center
});
billboards.add({
image : 'url/to/image',
position : new bmgl.Cartesian3(1000000.0, 0.0, 0.0) // east
});
billboards.add({
image : 'url/to/image',
position : new bmgl.Cartesian3(0.0, 1000000.0, 0.0) // north
});
billboards.add({
image : 'url/to/image',
position : new bmgl.Cartesian3(0.0, 0.0, 1000000.0) // up
});
Methods
add(options) → {Billboard}
創(chuàng)建具有指定初始屬性的公告牌并將其添加到集合中。將返回添加的公告牌,以便以后可以對(duì)其進(jìn)行修改或從集合中刪除。
Parameters:
options
(Object)
描述公告牌屬性的模板,如示例1所示。
Examples
// Example 1: Add a billboard, specifying all the default values.
var b = billboards.add({
show : true,
position : bmgl.Cartesian3.ZERO,
pixelOffset : bmgl.Cartesian2.ZERO,
eyeOffset : bmgl.Cartesian3.ZERO,
heightReference : bmgl.HeightReference.NONE,
horizontalOrigin : bmgl.HorizontalOrigin.CENTER,
verticalOrigin : bmgl.VerticalOrigin.CENTER,
scale : 1.0,
image : 'url/to/image',
imageSubRegion : undefined,
color : bmgl.Color.WHITE,
id : undefined,
rotation : 0.0,
alignedAxis : bmgl.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 : bmgl.Cartesian3.fromDegrees(longitude, latitude, height)
});
Throws
-
DeveloperError : 此對(duì)象已被銷(xiāo)毀,即調(diào)用destroy()。
檢查此集合是否包含給定的公告牌。
Parameters:
銷(xiāo)毀此對(duì)象持有的WebGL資源。銷(xiāo)毀對(duì)象允許確定地釋放WebGL資源,而不是依賴?yán)占鱽?lái)銷(xiāo)毀此對(duì)象。
一旦對(duì)象被破壞,就不應(yīng)使用它;調(diào)用除
一旦對(duì)象被破壞,就不應(yīng)使用它;調(diào)用除
isDestroyed
以外的任何函數(shù)都將導(dǎo)致DeveloperError
異常。因此,將返回值(undefined
)賦給對(duì)象,如示例中所述。
Throws
-
DeveloperError : 此對(duì)象已被銷(xiāo)毀,即調(diào)用destroy()。
返回集合中指定索引處的公告牌。指數(shù)以零為基礎(chǔ),隨著廣告牌的增加而增加。移除一個(gè)廣告牌后,所有的廣告牌都會(huì)向左移動(dòng),從而改變它們的索引。此函數(shù)通常與
BillboardCollection#length
一起用于迭代集合中的所有公告牌。
Parameters:
index
(Number)
廣告牌的零基索引。
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;
}
Throws
-
DeveloperError : 此對(duì)象已被銷(xiāo)毀,即調(diào)用destroy()。
如果此對(duì)象被破壞,則返回true;否則返回false。
如果此對(duì)象被破壞,則不應(yīng)使用它;調(diào)用除
remove(billboard) → {Boolean}
如果此對(duì)象被破壞,則不應(yīng)使用它;調(diào)用除
isDestroyed
以外的任何函數(shù)將導(dǎo)致DeveloperError
異常。
從集合中刪除公告牌。
Parameters:
Throws
-
DeveloperError : 此對(duì)象已被銷(xiāo)毀,即調(diào)用destroy()。
從集合中刪除所有公告牌。
Throws
-
DeveloperError : 此對(duì)象已被銷(xiāo)毀,即調(diào)用destroy()。
當(dāng)
Viewer
或BMWidget
渲染場(chǎng)景以獲取渲染此原語(yǔ)所需的繪制命令時(shí)調(diào)用。不要直接調(diào)用此函數(shù)。這只是為了列出渲染場(chǎng)景時(shí)可能傳播的異常:
Throws
-
RuntimeError : 帶ID的圖像必須在地圖冊(cè)中。