Ground Primitive表示覆蓋在地形上的幾何體,或
new GroundPrimitive(options)
Scene
中的3D瓦片。基本體將幾何體實(shí)例與描述完整著色的Appearance
結(jié)合起來,包括Material
和RenderState
。大致上,幾何體實(shí)例定義結(jié)構(gòu)和位置,外觀定義視覺特征。分離幾何體和外觀允許我們混合和匹配大多數(shù)幾何體和外觀,并獨(dú)立地添加新的幾何體或外觀。
支持WebGL_深度紋理擴(kuò)展,除了PerinstanceColorAppearance外,還需要使用具有不同PerinstanceColors或材質(zhì)的幾何體。
紋理基本體是為概念模式而設(shè)計的,并不用于精確地將紋理映射到地形-對于該用例,請使用SingleTileImageryProvider
。
要正確渲染,此功能需要ext}frag_depth webgl擴(kuò)展。對于不支持此擴(kuò)展的硬件,將存在一些視角的渲染工件。
有效幾何圖形為CircleGeometry
、CorridorGeometry
、EllipseGeometry
、PolygonGeometry
和RectangleGeometry
。
Parameters:
options
(Object)
Name | Description |
---|---|
options.geometryInstances
(Array | GeometryInstance)
|
要渲染的幾何體實(shí)例。 |
options.appearance
Appearance
|
用于呈現(xiàn)原語的外觀。當(dāng)幾何實(shí)體具有顏色屬性時,默認(rèn)為平面PerinstanceColorAppearance。 |
options.show
Boolean
default true
|
確定是否顯示此基元。 |
options.vertexCacheOptimize
Boolean
default false
|
當(dāng)true 時,幾何體頂點(diǎn)將針對頂點(diǎn)前和頂點(diǎn)后明暗器緩存進(jìn)行優(yōu)化。
|
options.interleave
Boolean
default false
|
當(dāng)true 時,幾何頂點(diǎn)屬性交錯,這可以稍微提高渲染性能,但增加加載時間。
|
options.compressVertices
Boolean
default true
|
當(dāng)true 時,幾何體頂點(diǎn)被壓縮,這將節(jié)省內(nèi)存。
|
options.releaseGeometryInstances
Boolean
default true
|
當(dāng)true 時,原語不保留對輸入geometryInstances 的引用以保存內(nèi)存。
|
options.allowPicking
Boolean
default true
|
當(dāng)true 時,每個幾何體實(shí)例只能使用Scene#pick 進(jìn)行選擇。當(dāng)false 時,保存GPU內(nèi)存。
|
options.asynchronous
Boolean
default true
|
確定在準(zhǔn)備就緒之前是異步創(chuàng)建基元還是阻止創(chuàng)建基元。如果為false,則必須首先調(diào)用initiaterrainheights()。 |
options.classificationType
ClassificationType
default ClassificationType.BOTH
|
確定地形、三維瓦片還是兩者都要分類。 |
options.debugShowBoundingVolume
Boolean
default false
|
僅用于調(diào)試。確定是否顯示此基元的命令的邊界球。 |
options.debugShowShadowVolume
Boolean
default false
|
僅用于調(diào)試。確定是否繪制基本體中每個幾何體的陰影體積。在釋放幾何圖形或選項之前,要創(chuàng)建的卷在創(chuàng)建時必須為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]
}));
Members
(readonly) allowPicking : Boolean
-
Default Value:
true
appearance : Appearance
Appearance
用于對該原語進(jìn)行著色。每個幾何體實(shí)例都以相同的外觀著色。一些外觀,如PerInstanceColorAppearance
允許為每個實(shí)例提供唯一的屬性。
-
Default Value:
undefined
(readonly) asynchronous : Boolean
確定是否將在Web工作者上創(chuàng)建和批處理幾何體實(shí)例。
-
Default Value:
true
classificationType : ClassificationType
確定地形、三維瓦片還是兩者都要分類。
-
Default Value:
ClassificationType.BOTH
(readonly) compressVertices : Boolean
當(dāng)
true
時,幾何體頂點(diǎn)被壓縮,這將節(jié)省內(nèi)存。
-
Default Value:
true
debugShowBoundingVolume : Boolean
此屬性僅用于調(diào)試;它既不用于生產(chǎn),也不進(jìn)行優(yōu)化。
為基本體中的每個draw命令繪制邊界球體。
-
Default Value:
false
debugShowShadowVolume : Boolean
此屬性僅用于調(diào)試;它既不用于生產(chǎn),也不進(jìn)行優(yōu)化。
為基本體中的每個幾何體繪制陰影體積。
-
Default Value:
false
(readonly) geometryInstances : (Array|GeometryInstance)
使用此基元渲染的幾何體實(shí)例。在構(gòu)造基元時,如果
options.releaseGeometryInstances
是true
,則可能是undefined
。在呈現(xiàn)基元后更改此屬性沒有效果。
-
Default Value:
undefined
(readonly) interleave : Boolean
確定幾何體頂點(diǎn)屬性是否交錯,這可以稍微提高渲染性能。
-
Default Value:
false
(readonly) ready : Boolean
確定基元是否已完成并準(zhǔn)備好呈現(xiàn)。如果此屬性為真,則下次調(diào)用
GroundPrimitive#update
時將呈現(xiàn)原語。
(readonly) readyPromise : Promise.<GroundPrimitive>
獲取解決基元何時準(zhǔn)備呈現(xiàn)的承諾。
(readonly) releaseGeometryInstances : Boolean
當(dāng)
true
時,原語不保留對輸入geometryInstances
的引用以保存內(nèi)存。
-
Default Value:
true
show : Boolean
確定是否顯示基元。這會影響基本體中的所有幾何體實(shí)例。
-
Default Value:
true
(readonly) vertexCacheOptimize : Boolean
當(dāng)
true
時,幾何體頂點(diǎn)將針對頂點(diǎn)前和頂點(diǎn)后明暗器緩存進(jìn)行優(yōu)化。
-
Default Value:
true
Methods
(static) initializeTerrainHeights() → {Promise}
初始化最小和最大地形高度。這只需要在同步創(chuàng)建groundprimitive時調(diào)用。
確定是否支持GroundPrimitive呈現(xiàn)。
Parameters:
檢查給定場景是否支持基本體上的材質(zhì)。GroundPrimitive上的材質(zhì)需要支持WebGL“深度”紋理擴(kuò)展。
Parameters:
銷毀此對象持有的WebGL資源。銷毀對象允許確定地釋放WebGL資源,而不是依賴?yán)占鱽礓N毀此對象。
一旦對象被破壞,就不應(yīng)使用它;調(diào)用除isDestroyed
以外的任何函數(shù)都將導(dǎo)致DeveloperError
異常。因此,將返回值(undefined
)賦給對象,如示例中所述。
Throws
-
DeveloperError : 此對象已被銷毀,即調(diào)用destroy()。
返回
GeometryInstance
的每個實(shí)例可修改屬性。
Parameters:
Example
var attributes = primitive.getGeometryInstanceAttributes('an id');
attributes.color = bmgl.ColorGeometryInstanceAttribute.toValue(bmgl.Color.AQUA);
attributes.show = bmgl.ShowGeometryInstanceAttribute.toValue(true);
Throws
-
DeveloperError : 必須在調(diào)用GetGeometryInstanceAttributes之前調(diào)用Update。
如果此對象被破壞,則返回true;否則返回false。
update()
如果此對象被破壞,則不應(yīng)使用它;調(diào)用除isDestroyed
以外的任何函數(shù)都將導(dǎo)致DeveloperError
異常。
Throws
-
DeveloperError : 對于同步groundPrimitive,必須調(diào)用groundPrimitive.InitializerRainHeights()并等待返回的Promise解析。
-
DeveloperError : 所有實(shí)例幾何必須具有相同的PrimitiveType。
-
DeveloperError : 外觀和材料有一個統(tǒng)一的名稱。