BMWidget
隐式创建。 contextOptions
参数详细信息:
默认值为:
{
webgl : {
alpha : false,
depth : true,
stencil : false,
antialias : true,
premultipliedAlpha : true,
preserveDrawingBuffer : false,
failIfMajorPerformanceCaveat : false
},
allowTextureFilterAnisotropic : true
}
webgl
属性对应于用于创建的WebGLContextAttributes对象 WebGL上下文。
webgl.alpha
的默认值为false,与标准的WebGL默认值为true相比,可以提高性能。 如果应用程序需要使用alpha混合在其他HTML元素上方合成,请将webgl.alpha
设置为true。
其他webgl
属性与WebGLContextAttributes的WebGL默认值匹配。
allowTextureFilterAnisotropic
的默认值为true,当支持WebGL扩展时,它将启用各向异性纹理过滤。 将其设置为false将提高性能,但会损害视觉质量,尤其是对于地平线视图。
Parameters:
(Object)
Name | Description |
---|---|
options.canvas
Canvas
|
要为其创建场景的HTML画布元素。 |
options.contextOptions
Object
|
上下文和WebGL创建属性。详见上文。 |
options.creditContainer
Element
|
显示学分的HTML元素。 |
options.creditViewport
Element
|
显示信用弹出窗口的HTML元素。如果未指定,则视区将作为画布的同级添加。 |
options.mapProjection
MapProjection
default new GeographicProjection()
|
要在二维和哥伦布视图模式中使用的地图投影。 |
options.orderIndependentTranslucency
Boolean
default true
|
如果为true,并且配置支持它,则使用与顺序无关的半透明。 |
options.scene3DOnly
Boolean
default false
|
如果为真,则优化3D模式的内存使用和性能,但禁用使用二维或哥伦布视图的功能。 |
options.terrainExaggeration
Number
default 1.0
|
用于放大地形的标量。请注意,地形放大不会修改任何其他基本体,因为它们是相对于椭球体定位的。 |
options.shadows
Boolean
default false
|
确定阴影是否由太阳投射。 |
options.mapMode2D
MapMode2D
default MapMode2D.INFINITE_SCROLL
|
确定二维地图是可旋转的还是可以沿水平方向无限滚动。 |
options.requestRenderMode
Boolean
default false
|
如果为“真”,则仅在场景中的更改决定需要时才会渲染帧。启用可以提高应用程序的性能,但需要使用Scene#requestRender 在此模式下显式呈现新帧。在许多情况下,在对API其他部分中的场景进行更改之后,这是必需的。
|
options.maximumRenderTimeChange
Number
default 0.0
|
如果requestrendermode为true,则此值定义请求呈现之前允许的模拟时间的最大更改。 |
Example
// Create scene without anisotropic texture filtering
var scene = new bmgl.Scene({
canvas : canvas,
contextOptions : {
allowTextureFilterAnisotropic : false
}
});
Throws
-
DeveloperError : 选项和选项.canvas是必需的。
Members
backgroundColor : Color
Scene#skyBox
未定义。
-
Default Value:
Color.BLACK
See:
(readonly) camera : Camera
(readonly) canvas : Canvas
(readonly) clampToHeightSupported : Boolean
completeMorphOnUserInput : Boolean
-
Default Value:
true
debugCommandFilter : function
确定执行哪些命令的函数。如下面的示例所示,函数接收命令的owner
作为参数,并返回一个布尔值,指示是否应执行命令。
默认为undefined
,表示执行所有命令。
-
Default Value:
undefined
Example:
// Do not execute any commands.
scene.debugCommandFilter = function(command) {
return false;
};
// Execute only the billboard's commands. That is, only draw the billboard.
var billboards = new bmgl.BillboardCollection();
scene.debugCommandFilter = function(command) {
return command.owner === billboards;
};
(readonly) debugFrustumStatistics : Object
当Scene.debugShowFrustums
为true
时,这包含属性,统计每个截锥执行的命令数。totalCommands
是执行的命令总数,忽略重叠。commandsInFrustums
是一个具有重复执行命令次数的数组,例如,有多少命令与两个或三个截锥重叠。
-
Default Value:
undefined
debugShowCommands : Boolean
当true
时,命令随机着色。这对于性能分析很有用,可以查看场景或模型的哪些部分是命令密集的,并且可以从批处理中受益。
-
Default Value:
false
debugShowDepthFrustum : Number
表示哪个截锥将显示深度信息。
-
Default Value:
1
debugShowFramesPerSecond : Boolean
显示每秒帧数和帧之间的时间。
-
Default Value:
false
debugShowFrustumPlanes : Boolean
当true
时,绘制轮廓以显示相机截锥的边界
-
Default Value:
false
debugShowFrustums : Boolean
当true
时,命令将根据它们重叠的截锥体进行着色。最近截锥体中的命令为红色,下一个最近截锥体中的命令为绿色,最远截锥体中的命令为蓝色。如果一个命令与多个截锥重叠,则组合颜色组件,例如,与前两个截锥重叠的命令为黄色。
-
Default Value:
false
debugShowGlobeDepth : Boolean
显示所示截锥的深度信息。
-
Default Value:
false
(readonly) drawingBufferHeight : Number
See:
(readonly) drawingBufferWidth : Number
See:
eyeSeparation : Number
farToNearRatio : Number
该值用于为多个截锥体的每个截锥体创建近、远值。仅当Scene#logarithmicDepthBuffer
为false
时使用。当logarithmicDepthBuffer
为true
时,使用Scene#logarithmicDepthFarToNearRatio
。
-
Default Value:
1000.0
focalLength : Number
fog : Fog
gamma : Number
-
Default Value:
2.2
globe : Globe
(readonly) groundPrimitives : PrimitiveCollection
highDynamicRange : Boolean
-
Default Value:
true
highDynamicRangeSupported : Boolean
-
Default Value:
true
(readonly) id : String
(readonly) imageryLayers : ImageryLayerCollection
imagerySplitPosition : Number
invertClassification : Boolean
-
Default Value:
false
invertClassificationColor : Color
Scene#invertClassification
为true
时,未分类的3D瓦片几何体的突出显示颜色。当颜色的alpha小于1.0时,3D瓦片的未分类部分将无法与3D瓦片的分类位置正确混合。
{此外,当颜色的alpha小于1.0时,必须支持WebGL{深度{纹理和扩展{深度WebGL扩展。
-
Default Value:
Color.WHITE
(readonly) invertClassificationSupported : Boolean
Scene#invertClassification
,则返回true
。
(readonly) lastRenderTime : JulianDate
logarithmicDepthBuffer : Boolean
logarithmicDepthFarToNearRatio : Number
该值用于为多个截锥体的每个截锥体创建近、远值。仅当Scene#logarithmicDepthBuffer
为true
时使用。当logarithmicDepthBuffer
为false
时,使用Scene#farToNearRatio
。
-
Default Value:
1e9
mapMode2D : MapMode2D
(readonly) mapProjection : MapProjection
-
Default Value:
new GeographicProjection()
(readonly) maximumAliasedLineWidth : Number
- glGet with
ALIASED_LINE_WIDTH_RANGE
.
See:
(readonly) maximumCubeMapSize : Number
- glGet with
GL_MAX_CUBE_MAP_TEXTURE_SIZE
.
See:
maximumRenderTimeChange : Number
Scene#requestRenderMode
为true
,则此值定义请求渲染之前允许的模拟时间的最大更改。值越小,渲染的帧数越多,值越大,渲染的帧数越少。如果undefined
,对模拟时间的更改将永远不会请求渲染。此值会影响场景中更改(如照明、实体属性更新和动画)的渲染速率。
-
Default Value:
0.5
See:
minimumDisableDepthTestDistance : Number
-
Default Value:
0.0
mode : SceneMode
-
Default Value:
SceneMode.SCENE3D
moon : Moon
-
Default Value:
undefined
morphComplete : Event
-
Default Value:
Event()
morphStart : Event
-
Default Value:
Event()
morphTime : Number
-
Default Value:
1.0
nearToFarDistance2D : Number
-
Default Value:
1.75e6
(readonly) orderIndependentTranslucency : Boolean
(readonly) pickPositionSupported : Boolean
Scene#pickPosition
函数,则返回true
。
See:
pickTranslucentDepth : Boolean
true
时,启用使用深度缓冲区拾取半透明几何体。请注意,Scene#useDepthPicking
也必须为真,才能使其工作。渲染必须在拾取之间调用。
启用时性能会降低。有额外的绘图调用来写入半透明几何体的深度。
-
Default Value:
false
Example:
// picking the position of a translucent primitive
viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) {
var pickedFeature = viewer.scene.pick(movement.position);
if (!bmgl.defined(pickedFeature)) {
// nothing picked
return;
}
viewer.scene.render();
var worldPosition = viewer.scene.pickPosition(movement.position);
}, bmgl.ScreenSpaceEventType.LEFT_CLICK);
postProcessStages : PostProcessStageCollection
(readonly) postRender : Event
(readonly) postUpdate : Event
(readonly) preRender : Event
(readonly) preUpdate : Event
(readonly) primitives : PrimitiveCollection
(readonly) renderError : Event
render
函数中引发错误时将引发的事件。场景实例和抛出的错误是传递给事件处理程序的唯一两个参数。默认情况下,在引发此事件后不会重新引发错误,但可以通过设置rethrowRenderErrors
属性来更改错误。
requestRenderMode : Boolean
true
时,仅当场景中的更改决定需要时才会渲染帧。启用可以提高应用程序的性能,但需要使用Scene#requestRender
在此模式下显式呈现新帧。在许多情况下,在对API其他部分中的场景进行更改之后,这是必需的。
-
Default Value:
false
See:
rethrowRenderErrors : Boolean
render
中发生的异常始终被捕获,以便引发renderError
事件。如果此属性为true,则在引发事件后重新引发错误。如果此属性为假,则在引发事件后,render
函数将正常返回。
-
Default Value:
false
(readonly) sampleHeightSupported : Boolean
(readonly) scene3DOnly : Boolean
(readonly) screenSpaceCameraController : ScreenSpaceCameraController
shadowMap : ShadowMap
skyAtmosphere : SkyAtmosphere
-
Default Value:
undefined
skyBox : SkyBox
SkyBox
用于绘制星星。
-
Default Value:
undefined
See:
specularEnvironmentMaps : String
(readonly) specularEnvironmentMapsSupported : Boolean
true
。
sphericalHarmonicCoefficients : Array.<Cartesian3>
sun : Sun
-
Default Value:
undefined
sunBloom : Boolean
-
Default Value:
true
sunColor : Cartesian3
-
Default Value:
Cartesian3(1.8, 1.85, 2.0)
terrainExaggeration : Number
terrainProvider : TerrainProvider
(readonly) terrainProviderChanged : Event
useDepthPicking : Boolean
true
时,使用深度缓冲区启用拾取。
-
Default Value:
true
useWebVR : Boolean
true
时,将场景分割为两个具有左右眼立体视图的视区。用于纸板和网络虚拟现实。
-
Default Value:
false
Methods
cartesianToCanvasCoordinates(position, result) → {Cartesian2}Parameters:
Example
// Output the canvas position of longitude/latitude (0, 0) every time the mouse moves.
var scene = widget.scene;
var ellipsoid = scene.globe.ellipsoid;
var position = bmgl.Cartesian3.fromDegrees(0.0, 0.0);
var handler = new bmgl.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(movement) {
console.log(scene.cartesianToCanvasCoordinates(position));
}, bmgl.ScreenSpaceEventType.MOUSE_MOVE);
undefined
。可用于将对象夹持到场景中的球体、三维平铺或基本体上。此功能仅限于当前视图中呈现的球形瓦片和三维瓦片。钳制到所有其他基本体,而不管它们的可见性如何。
Parameters:
(Array.<Object>)
基本体、实体或三维平铺特征的列表,不夹在其中。
(Number)
(default 0.1
)
交叉口体积的宽度(米)。
Example
// Clamp an entity to the underlying scene geometry
var position = entity.position.getValue(bmgl.JulianDate.now());
entity.position = viewer.scene.clampToHeight(position);
Throws
-
DeveloperError : ClampToHeight仅在3D模式下受支持。
-
DeveloperError : ClampToHeight需要深度纹理支持。检查支架高度。
Scene#clampToHeight
查询Cartesian3
位置数组。返回在查询完成时解决的承诺。每个位置都在适当的位置进行了修改。如果由于在该位置无法对几何图形进行采样而无法夹紧某个位置,或者发生其他错误,则阵列中的元素将设置为“未定义”。
Parameters:
(Array.<Object>)
基本体、实体或三维平铺特征的列表,不夹在其中。
(Number)
(default 0.1
)
交叉口体积的宽度(米)。
Example
var cartesians = [
entities[0].position.getValue(bmgl.JulianDate.now()),
entities[1].position.getValue(bmgl.JulianDate.now())
];
var promise = viewer.scene.clampToHeightMostDetailed(cartesians);
promise.then(function(updatedCartesians) {
entities[0].position = updatedCartesians[0];
entities[1].position = updatedCartesians[1];
}
Throws
-
DeveloperError : ClampToHeightMostDetailed仅在3D模式下受支持。
-
DeveloperError : ClamptoHeightMostDetailed需要深度纹理支持。检查支架高度。
See:
一旦对象被破坏,就不应使用它;调用除
isDestroyed
以外的任何函数都将导致DeveloperError
异常。因此,将返回值(undefined
)赋给对象,如示例中所述。
Throws
-
DeveloperError : 此对象已被销毁,即调用destroy()。
See:
Parameters:
(Number)
如果提供,在收集了这么多镐后停止钻孔。
(Number)
(default 3
)
拾取矩形的宽度。
(Number)
(default 3
)
拾取矩形的高度。
Throws
-
DeveloperError : WindowPosition未定义。
See:
Parameters:
(String)
纹理格式。可以是格式名或WebGL扩展名,例如S3TC或WebGL_compressed_texture_S3TC。
See:
Parameters:
(Number)
(default 2.0
)
过渡动画完成所需的时间量(秒)。
Parameters:
(Number)
(default 2.0
)
过渡动画完成所需的时间量(秒)。
Parameters:
(Number)
(default 2.0
)
过渡动画完成所需的时间量(秒)。
当拾取3D Tiles-Tileset的功能时,pick
返回BM3DTileFeature
对象。
Parameters:
(Number)
(default 3
)
拾取矩形的宽度。
(Number)
(default 3
)
拾取矩形的高度。
Example
// On mouse over, color the feature yellow.
handler.setInputAction(function(movement) {
var feature = scene.pick(movement.endPosition);
if (feature instanceof bmgl.BM3DTileFeature) {
feature.color = bmgl.Color.YELLOW;
}
}, bmgl.ScreenSpaceEventType.MOUSE_MOVE);
从二维深度缓冲区重建的位置可能与三维和哥伦布视图重建的位置略有不同。这是由于透视投影和正交投影的深度值分布不同造成的。
设置Scene#pickTranslucentDepth
至true
以包括半透明基本体的深度;否则,这基本上是通过半透明基本体选取的。
Parameters:
Throws
-
DeveloperError : 不支持从深度缓冲区选取。检查支持的选择位置。
undefined
。输入位置的高度被忽略。可用于将对象夹持到场景中的球体、三维平铺或基本体上。此函数仅对当前视图中渲染的球形瓦片和三维瓦片的高度进行采样。从所有其他基本体采样高度,而不考虑它们的可见性。
Parameters:
(Array.<Object>)
不从中采样高度的基本体、实体或三维平铺特征列表。
(Number)
(default 0.1
)
交叉口体积的宽度(米)。
Example
var position = new bmgl.Cartographic(-1.31968, 0.698874);
var height = viewer.scene.sampleHeight(position);
console.log(height);
Throws
-
DeveloperError : 只有在3D模式下才支持sampleheight。
-
DeveloperError : 样品瓶需要深度纹理支持。检查支持的样本权重。
Scene#sampleHeight
查询Cartographic
位置数组。输入位置的高度将被忽略。返回在查询完成时解决的承诺。每个点的高度都会在适当的位置进行修改。如果由于无法在该位置对几何图形进行采样而无法确定高度,或发生其他错误,则高度设置为“未定义”。
Parameters:
(Array.<Object>)
不从中采样高度的基本体、实体或三维平铺特征列表。
(Number)
(default 0.1
)
交叉口体积的宽度(米)。
Example
var positions = [
new bmgl.Cartographic(-1.31968, 0.69887),
new bmgl.Cartographic(-1.10489, 0.83923)
];
var promise = viewer.scene.sampleHeightMostDetailed(positions);
promise.then(function(updatedPosition) {
// positions[0].height and positions[1].height have been updated.
// updatedPositions is just a reference to positions.
}
Throws
-
DeveloperError : 只有在3D模式下才支持sampleheight mostdetailed。
-
DeveloperError : sampleHeightmostDetailed需要深度纹理支持。检查支持的样本权重。