定位在三維場(chǎng)景中的視區(qū)對(duì)齊圖像,使用

廣告牌示例
new Billboard()
BillboardCollection
創(chuàng)建和渲染。創(chuàng)建公告牌并通過調(diào)用BillboardCollection#add
設(shè)置其初始屬性。
廣告牌示例
Throws
-
DeveloperError : scaleByDistance.far必須大于scaleByDistance.near
-
DeveloperError : translucencybydistance.far必須大于translucencybydistance.near。
-
DeveloperError : pixeloffsetscaleByDistance.far必須大于pixeloffsetscaleByDistance.near。
-
DeveloperError : 距離displayCondition.far必須大于距離displayCondition.near
Members
alignedAxis : Cartesian3
獲取或設(shè)置世界空間中對(duì)齊的軸。對(duì)齊軸是廣告牌上方向向量指向的單位向量。默認(rèn)值是零向量,這意味著廣告牌與屏幕上方向向量對(duì)齊。
Examples:
// Example 1.
// Have the billboard up vector point north
billboard.alignedAxis = bmgl.Cartesian3.UNIT_Z;
// Example 2.
// Have the billboard point east.
billboard.alignedAxis = bmgl.Cartesian3.UNIT_Z;
billboard.rotation = -bmgl.Math.PI_OVER_TWO;
// Example 3.
// Reset the aligned axis
billboard.alignedAxis = bmgl.Cartesian3.ZERO;
color : Color
獲取或設(shè)置與廣告牌紋理相乘的顏色。 這有兩個(gè)常見的用例。 首先,許多不同的廣告牌可以使用相同的白色紋理,每個(gè)廣告牌具有不同的顏色,以創(chuàng)建彩色的廣告牌。 其次,顏色的Alpha分量可用于使廣告牌透明,如下所示。
紅色,綠色,藍(lán)色和alpha值由
0.0
的Alpha使廣告牌透明,而1.0
的Alpha使廣告牌不透明。 default ![]() | alpha : 0.5 ![]() |
紅色,綠色,藍(lán)色和alpha值由
value
的red
,green
,blue
和alpha
屬性指示,如示例1所示。 分量范圍從0.0
(無(wú)強(qiáng)度)到1.0
(全強(qiáng)度)。
Examples:
// Example 1. Assign yellow.
b.color = bmgl.Color.YELLOW;
// Example 2. Make a billboard 50% translucent.
b.color = new bmgl.Color(1.0, 1.0, 1.0, 0.5);
disableDepthTestDistance : Number
獲取或設(shè)置與要禁用深度測(cè)試的照相機(jī)之間的距離,例如,防止對(duì)地形進(jìn)行剪切。當(dāng)設(shè)置為零時(shí),始終應(yīng)用深度測(cè)試。當(dāng)設(shè)置為數(shù)字正無(wú)窮大時(shí),深度測(cè)試永遠(yuǎn)不會(huì)應(yīng)用。
distanceDisplayCondition : DistanceDisplayCondition
獲取或設(shè)置一個(gè)條件,該條件指定此公告牌將顯示在距相機(jī)的距離處。
-
Default Value:
undefined
eyeOffset : Cartesian3
獲取或設(shè)置在眼睛坐標(biāo)中應(yīng)用于此公告牌的三維笛卡爾偏移量。眼睛坐標(biāo)系是左手坐標(biāo)系,其中
眼睛偏移通常用于在同一位置安排多個(gè)廣告牌或?qū)ο螅纾谄湎鄳?yīng)的3D模型上方安排一個(gè)廣告牌。
下面,廣告牌位于地球的中心,但是眼睛的偏移使它總是出現(xiàn)在地球的頂部,而不管觀眾或地球的方向如何。
x
指向觀看者的右側(cè),y
指向上方,z
指向屏幕。眼睛坐標(biāo)使用與世界和模型坐標(biāo)相同的比例,通常是米。眼睛偏移通常用于在同一位置安排多個(gè)廣告牌或?qū)ο螅纾谄湎鄳?yīng)的3D模型上方安排一個(gè)廣告牌。
下面,廣告牌位于地球的中心,但是眼睛的偏移使它總是出現(xiàn)在地球的頂部,而不管觀眾或地球的方向如何。
![]() | ![]() |
b.eyeOffset = new Cartesian3(0.0, 8000000.0, 0.0);
height : Number
獲取或設(shè)置廣告牌的高度。如果未定義,將使用圖像高度。
heightReference : HeightReference
獲取或設(shè)置此公告牌的高度引用。
-
Default Value:
HeightReference.NONE
horizontalOrigin : HorizontalOrigin
獲取或設(shè)置此公告牌的水平原點(diǎn),該原點(diǎn)確定公告牌是位于其定位點(diǎn)位置的左側(cè)、中心還是右側(cè)。


Example:
// Use a bottom, left origin
b.horizontalOrigin = bmgl.HorizontalOrigin.LEFT;
b.verticalOrigin = bmgl.VerticalOrigin.BOTTOM;
id : Object
獲取或設(shè)置拾取公告牌時(shí)返回的用戶定義對(duì)象。
image : String
獲取或設(shè)置要用于此廣告牌的圖像。如果已經(jīng)為給定圖像創(chuàng)建了紋理,則使用現(xiàn)有紋理。
此屬性可以設(shè)置為已加載的圖像、自動(dòng)加載為圖像的URL、畫布或其他公告牌的圖像屬性(來(lái)自同一公告牌集合)。
Example:
// load an image from a URL
b.image = 'some/image/url.png';
// assuming b1 and b2 are billboards in the same billboard collection,
// use the same image for both billboards.
b2.image = b1.image;
pixelOffset : Cartesian2
獲取或設(shè)置屏幕空間中距此公告牌原點(diǎn)的像素偏移量。這通常用于在同一位置對(duì)齊多個(gè)廣告牌和標(biāo)簽,例如圖像和文本。屏幕空間原點(diǎn)是畫布的左上角;
廣告牌的原點(diǎn)用黃色點(diǎn)表示。
x
從左到右增加,y
從上到下增加。default ![]() | b.pixeloffset = new Cartesian2(50, 25); ![]() |
pixelOffsetScaleByDistance : NearFarScalar
獲取或設(shè)置基于公告牌與相機(jī)的距離的公告牌的近像素和遠(yuǎn)像素偏移縮放屬性。廣告牌的像素偏移量將在
NearFarScalar#nearValue
和NearFarScalar#farValue
之間縮放,而相機(jī)距離在指定NearFarScalar#near
和NearFarScalar#far
的上下限內(nèi)。在這些范圍之外,廣告牌的像素偏移比例仍保持固定到最近的界限。如果未定義,將禁用PixeLoffSetscaleByDistance。
Examples:
// Example 1.
// Set a billboard's pixel offset scale to 0.0 when the
// camera is 1500 meters from the billboard and scale pixel offset to 10.0 pixels
// in the y direction the camera distance approaches 8.0e6 meters.
b.pixelOffset = new bmgl.Cartesian2(0.0, 1.0);
b.pixelOffsetScaleByDistance = new bmgl.NearFarScalar(1.5e2, 0.0, 8.0e6, 10.0);
// Example 2.
// disable pixel offset by distance
b.pixelOffsetScaleByDistance = undefined;
position : Cartesian3
獲取或設(shè)置此公告牌的笛卡爾位置。
(readonly) ready : Boolean
當(dāng)
true
時(shí),此公告牌準(zhǔn)備好呈現(xiàn),即圖像已下載并創(chuàng)建WebGL資源。
-
Default Value:
false
rotation : Number
獲取或設(shè)置以弧度表示的旋轉(zhuǎn)角度。
scale : Number
獲取或設(shè)置與公告牌圖像大小(像素)相乘的統(tǒng)一比例。
{
從左到右,上圖中的比例分別為
1.0
的比例不會(huì)改變廣告牌的大小;大于1.0
的比例會(huì)放大廣告牌;小于1.0
的正比例會(huì)縮小廣告牌。
從左到右,上圖中的比例分別為
0.5
、1.0
和2.0
。scaleByDistance : NearFarScalar
根據(jù)公告牌與照相機(jī)的距離獲取或設(shè)置公告牌的近比例和遠(yuǎn)比例屬性。廣告牌的比例將在
NearFarScalar#nearValue
和NearFarScalar#farValue
之間插入,而攝像機(jī)距離在指定NearFarScalar#near
和NearFarScalar#far
的上下限內(nèi)。在這些范圍之外,廣告牌的比例仍然被限制在最近的范圍內(nèi)。如果未定義,將禁用scaleByDistance。
Examples:
// Example 1.
// Set a billboard's scaleByDistance to scale by 1.5 when the
// camera is 1500 meters from the billboard and disappear as
// the camera distance approaches 8.0e6 meters.
b.scaleByDistance = new bmgl.NearFarScalar(1.5e2, 1.5, 8.0e6, 0.0);
// Example 2.
// disable scaling by distance
b.scaleByDistance = undefined;
show : Boolean
確定是否顯示此公告牌。使用此選項(xiàng)可隱藏或顯示公告牌,而不是將其刪除并重新添加到集合中。
-
Default Value:
true
sizeInMeters : Boolean
獲取或設(shè)置廣告牌大小是以米還是像素為單位。
true
以米為單位調(diào)整廣告牌大小;否則,大小以像素為單位。
-
Default Value:
false
translucencyByDistance : NearFarScalar
根據(jù)公告牌與相機(jī)的距離獲取或設(shè)置公告牌的近半透明屬性和遠(yuǎn)半透明屬性。廣告牌的半透明將插入
NearFarScalar#nearValue
和NearFarScalar#farValue
之間,而攝像機(jī)距離則在指定NearFarScalar#near
和NearFarScalar#far
的上下限內(nèi)。在這些范圍之外,廣告牌的半透明性保持在最近的范圍內(nèi)。如果未定義,半透明Y距離將被禁用。
Examples:
// Example 1.
// Set a billboard's translucency to 1.0 when the
// camera is 1500 meters from the billboard and disappear as
// the camera distance approaches 8.0e6 meters.
b.translucencyByDistance = new bmgl.NearFarScalar(1.5e2, 1.0, 8.0e6, 0.0);
// Example 2.
// disable translucency by distance
b.translucencyByDistance = undefined;
verticalOrigin : VerticalOrigin
獲取或設(shè)置此公告牌的垂直原點(diǎn),該原點(diǎn)確定公告牌是位于其定位點(diǎn)的上方、下方還是中心。


Example:
// Use a bottom, left origin
b.horizontalOrigin = bmgl.HorizontalOrigin.LEFT;
b.verticalOrigin = bmgl.VerticalOrigin.BOTTOM;
width : Number
獲取或設(shè)置公告牌的寬度。如果未定義,將使用圖像寬度。
Methods
computeScreenSpacePosition(scene, result) → {Cartesian2}
計(jì)算廣告牌原點(diǎn)的屏幕空間位置,同時(shí)考慮眼睛和像素偏移。屏幕空間原點(diǎn)是畫布的左上角;
x
從左到右增加,y
從上到下增加。
Parameters:
Throws
-
DeveloperError : 公告牌必須在集合中。
確定此公告牌是否等于另一個(gè)公告牌。如果廣告牌的所有屬性都相同,則它們是相等的。不同收藏中的廣告牌可以相等。
Parameters:
設(shè)置要用于此廣告牌的圖像。 如果已經(jīng)為給定的id創(chuàng)建了紋理,則使用現(xiàn)有的紋理。
此功能對(duì)于動(dòng)態(tài)創(chuàng)建在許多廣告牌之間共享的紋理很有用。 只有第一個(gè)廣告牌會(huì)實(shí)際調(diào)用該函數(shù)并創(chuàng)建紋理,而使用相同ID創(chuàng)建的后續(xù)廣告牌將僅重用現(xiàn)有紋理。
要從URL加載圖像,設(shè)置Billboard#image
屬性更為方便。
Parameters:
id
(String)
圖像的ID。這可以是唯一標(biāo)識(shí)圖像的任何字符串。
image
((Image | Canvas | String | Resource | Billboard~CreateImageCallback))
要加載的圖像。此參數(shù)可以是已加載的圖像或畫布、自動(dòng)加載為圖像的URL,也可以是在尚未加載圖像時(shí)調(diào)用以創(chuàng)建圖像的函數(shù)。
Example
// create a billboard image dynamically
function drawImage(id) {
// create and draw an image using a canvas
var canvas = document.createElement('canvas');
var context2D = canvas.getContext('2d');
// ... draw image
return canvas;
}
// drawImage will be called to create the texture
b.setImage('myImage', drawImage);
// subsequent billboards created in the same collection using the same id will use the existing
// texture, without the need to create the canvas or draw the image
b2.setImage('myImage', drawImage);
使用具有給定ID的圖像的子區(qū)域作為此公告牌的圖像,從左下角開始以像素度量。
Parameters:
id
(String)
要使用的圖像的ID。
Throws
-
RuntimeError : 帶ID的圖像必須在圖集中
Type Definitions
CreateImageCallback(id) → {Image|Canvas|Promise.<(Image|Canvas)>}
創(chuàng)建圖像的函數(shù)。
Parameters:
id
(String)
要加載的圖像的標(biāo)識(shí)符。