Scene

new LSGlobe.Scene(options)

三维场景类,它是所有三维图形对象和状态的容器,通常不直接创建场景,而是由CesiumWidget隐式创建。 contextOptions参数详细信息 默认值为: { webgl : { alpha : false, depth : true, stencil : false, antialias : true, premultipliedAlpha : true, preserveDrawingBuffer : false, failIfMajorPerformanceCaveat : false }, allowTextureFilterAnisotropic : true } webgl属性对应用于创建WebGL环境的WebGLContextAttributes对象。 webgl.alpha默认为false,与标准WebGL默认值为true相比,这可以提高性能。 其他webgl属性与WebGLContextAttributes.的WebGL默认值匹配。 allowTextureFilterAnisotropic默认为true,这允许在支持WebGL扩展时进行各向异性纹理过滤。设置为false可以提高性能,但会损害视觉质量,特别是对于水平视角
Name Type Description
options Object optional 对象具有以下属性:
Name Type Default Description
canvas Canvas 用于创建场景的HTML cancas元素
contextOptions Object optional 环境和WebGL创建属性,详见上述
creditContainer Element optional 用于显示服务描述信息的HTML元素
mapProjection MapProjection new GeographicProjection() optional 在二维和Columbus 视图模式下使用的地图投影
orderIndependentTranslucency Boolean true optional 如果此项设置为true,并且使用设备支持,将使用与顺序无关的半透明
scene3DOnly Boolean false optional 如果此项设置为true,将优化三维模式的内存使用和性能,但禁止使用二维或Columbus视图功能
terrainExaggeration Number 1.0 optional 用于夸大地形的标量。请注意,设置地形夸张不会修改其它任何数值
shadows Boolean false optional 确定阴影是否由太阳投射形状
mapMode2D MapMode2D MapMode2D.INFINITE_SCROLL optional 确定二维地图是可旋转的或是可以在在水平方向上无限滚动
Throws:
  • DeveloperError : options and options.canvas are required.
Example:
// 创建一个场景
var scene = new LSGlobe.Scene({
  canvas : canvas,
  contextOptions : {
    allowTextureFilterAnisotropic : false
  }
});
See:

Members

readonlycamera : Camera

获取当前场景的相机对象

readonlycanvas : Canvas

获取与场景绑定的canvas对象

readonlydrawingBufferHeight : Number

WebGL中绘制缓存的高度
See:

readonlydrawingBufferWidth : Number

WebGL中绘制缓存的宽度
See:

eyeSeparation : Number

用于纸板或WebVR的眼睛间隔距离(米)

focalLength : Number

使用纸板或WebVR时,使用的焦距

globe : Globe

获取或设置深度测试

readonlygroundPrimitives : PrimitiveCollection

获取groundPrimitives对象集合

readonlyid : String

获取场景的唯一标示

readonlyimageryLayers : ImageryLayerCollection

获取三维地球上影像层的集合

imagerySplitPosition : Number

获取或设置视口中影像分割条的位置。取值范围为0.0~1.0

invertClassification : Boolean

3D Tiles正常渲染时,该值为false。分类3D Tile几何体将正常渲染,未分类的3D Tile几何体使用颜色乘以 Scene#invertClassificationColor渲染
Default Value: false

invertClassificationColor : Color

Scene#invertClassification为true时,未分类的3D Tile为高亮显示。当alpha值小于1.0时,3D Tile的未分类部分 将无法与3D Tile的分类位置正确混合。此外,当颜色的alpha值小于1.0时,必须支持WEBGL_depth_texture和EXT_frag_depth WebGL扩展
Default Value: Color.WHITE

readonlylastRenderTime : JulianDate

获取上次渲染场景时的模拟时间。如果场景尚未渲染,则返回undefined

mapMode2D : Boolean

用来设置2D地图是否可以旋转,或者是否可以无限制的在水平方向上移

readonlymapProjection : MapProjection

获取在二维和Columbus 视图模式下使用的地图投影
Default Value: new GeographicProjection()

readonlymaximumAliasedLineWidth : Number

在像素里所能显示的最大线宽。支持用webGL去实现。至少是一个像素
See:
  • glGet with ALIASED_LINE_WIDTH_RANGE.

readonlymaximumCubeMapSize : Number

立方体纹理边缘的最大像素长度
See:
  • glGet with GL_MAX_CUBE_MAP_TEXTURE_SIZE.

maximumRenderTimeChange : Number

如果Scene#requestRenderMode是true,则此值定义在请求呈现之前允许的模拟时间的最大更改。 较低的值会增加渲染帧的帧数,较高的值会减少渲染的帧数。如果undefined,对模拟时间的更改将永远不会请求渲染。 此值会影响场景中的渲染率,如光照、实体属性更新和动画
Default Value: 0.5
See:

minimumDisableDepthTestDistance : Number

距离相机的距离(此时广告板,标签和点等的深度测试无效) 例如,为了防止裁剪地形。当把这个属性值设置为0的时候,深度测试就会一直开启;当值比0小的时候,深度测试将一直关闭。 如果设置了广告板,标签,点的disableDepthTestDistance属性值将会覆盖它
Default Value: 0.0

mode : SceneMode

获取或者设置当前场景的模式
Default Value: SceneMode.SCENE3D

readonlypickPositionSupported : Boolean

R如果支持拾取位置的功能,则返回true

readonlypitCollection : LSPitCollection

获取场景地形开挖对象的集合

readonlypostRender : Event

获取在渲染场景后立即引发的事件。事件的订阅者接收scene实例作为第一个参数,将当前时间作为第二个参数
See:

readonlypostUpdate : Event

获取在场景更新后以及渲染场景之前立即引发的事件。事件的订阅者接收scene作为第一个参数,将当前事件作为第二个参数
See:

readonlypreRender : Event

获取在场景更新后以及渲染场景之前将引发的事件。事件的订阅者接收scene作为第一个参数,将当前时间作为第二个参数
See:

readonlypreUpdate : Event

获取在更新或呈现场景之前将引发的事件,事件的订阅接受scene实例作为第一个参数,将当前事件作为第二个参数
See:

readonlyprimitives : PrimitiveCollection

获取primitives对象的集合

readonlyrenderError : Event

当render函数里有错误发生时,触发此事件

requestRenderMode : Boolean

当场景需要渲染的时候,渲染帧就发生。启用它可以提高程序的性能,但是需要使用Scene#requestRender 在这种模式下显式地呈现新框架。在对API的其他部分的场景进行改进之后,在很多情况下这是必要的
Default Value: false
See:

readonlyscene3DOnly : Boolean

获取场景是否仅支3D显示

readonlyscreenSpaceCameraController : ScreenSpaceCameraController

获取相机输入的控制参数

readonlysetSurfaceTransparency : LSSetSurfaceTransparency

场景地表透明度

terrainLayers : TerrainProvider

获取或设置地球的地形服务提供者。

readonlyterrainProviderChanged : Event

地形服务提供者改变事件

useSingleFrustum : Boolean

获取或设置场景是否用单个视景体
Default Value: true

useWebVR : Boolean

获取或设置是否开启WebVR
Default Value: false

readonlywaterCollection : LSWaterCollection

获取场景水面对象的集合

Methods

cartesianToCanvasCoordinates(position, result)Cartesian2

将笛卡尔坐标转换成canvas坐标。这通常用于去定位一个HTML元素(与之在同样屏幕位置的场景中的一个对象)
Name Type Description
position Cartesian3 笛卡尔坐标系中的位置.
result Cartesian2 optional 可选对象(返回转换成canvas坐标系时的输入坐标)
Returns:
如果未提供的话,则返回修改过的结果参数或者是新的笛卡尔二维坐标值。如果输入位置靠近球心,值是未定义的
Example:
// 随着鼠标移动,每时每刻都输出一个canvas的(0,0)格式的经纬度位置信息
var scene = widget.scene;
var ellipsoid = scene.globe.ellipsoid;
var position = LSGlobe.Cartesian3.fromDegrees(0.0, 0.0);
var handler = new LSGlobe.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(movement) {
    console.log(scene.cartesianToCanvasCoordinates(position));
}, LSGlobe.ScreenSpaceEventType.MOUSE_MOVE);

cartesianToCanvasCoordinates(position, result)Cartesian2

将笛卡尔坐标转换成canvas坐标。这通常用于去定位一个HTML元素(与之在同样屏幕位置的场景中的一个对象)
Name Type Description
position Cartesian3 在笛卡尔坐标系中的位置
result Cartesian2 optional 可选对象(返回转换成canvas坐标系时的输入坐标)
Returns:
如果未提供的话,则返回修改过的结果参数或者是新的笛卡尔二维坐标值。如果输入位置靠近球心,值是未定义的
Example:
// 随着鼠标移动,每时每刻都输出一个canvas的(0,0)格式的经纬度位置信息
var scene = widget.scene;
var ellipsoid = scene.globe.ellipsoid;
var position = LSGlobe.Cartesian3.fromDegrees(0.0, 0.0);
var handler = new LSGlobe.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(movement) {
    console.log(scene.cartesianToCanvasCoordinates(position));
}, LSGlobe.ScreenSpaceEventType.MOUSE_MOVE);

completeMorph()

立即结束一个有效的转换

destroy()undefined

通过这个对象销毁webGL资源。销毁一个对象时候允许确定性的webGL资源的释放,而不是依靠垃圾回收站去销毁这个对象

Returns:
Throws:
  • DeveloperError : 对象被销毁响应destroy()函数
Example:
scene = scene && scene.destroy();
See:

drillPick(windowPosition, limit)Array.<Object>

返回一系列对象。对于所有在特定屏幕坐标位置的primitives来说,每个对象都有一个primitive属性。 其他属性的设置也会依赖于primitive的类型。返回列表中的primitives是通过他们在场景中的可见顺序(从前往后)进行排序
Name Type Description
windowPosition Cartesian2 执行拾取的窗口坐标
limit Number optional 如果提供这个参数,在进行多次的pick之后将会停止drilling.
Returns:
对象数组,每个对象包含一个选取的primitives.
Throws:
  • DeveloperError : 窗口坐标未定义
Example:
var pickedObjects = scene.drillPick(new LSGlobe.Cartesian2(100.0, 200.0));

getCompressedTextureFormatSupported(format)boolean

判断是否支持压缩纹理形式
Name Type Description
format String 纹理格式。可以是格式名称或WebGL扩展名称,例如 s3tc或WEBGL_compressed_texture_s3tc
Returns:
是否支持该格式

isDestroyed()Boolean

如果对象被销毁返回true,否则,false
Returns:
true 如果对象被销毁 否则, false.
See:

morphTo2D(duration)

异步转换场景2D模式.
Name Type Default Description
duration Number 2.0 optional 时间的值,以秒为单位,表示结束转换所需要的时间

morphTo3D(duration)

异步地把场景转成3D
Name Type Default Description
duration Number 2.0 optional 时间的值,以秒为单位,表示结束转换所需要的时间

morphToColumbusView(duration)

异步地把场景转换成Columbus View
Name Type Default Description
duration Number 2.0 optional 时间的值,以秒为单位,表示结束转换所需要的时间

pick(windowPosition)Object

返回一个拥有primitive属性的对象(特定窗口坐标对应的场景中的第一个(最上面)的primitive对象。 或者返回undefined,如果定位处没有对象, 其他的属性的设置很有可能依赖于primitive对象的类, Dtiles对象被拾取,pick方法返回3DTileFeature对象
Name Type Description
windowPosition Cartesian2 执行拾取的窗口坐标
Returns:
包含拾取的primitive对象
Throws:
  • DeveloperError : 窗口坐标未定义
Example:
// 鼠标移动时,设置feature颜色为黄色
handler.setInputAction(function(movement) {
    var feature = scene.pick(movement.endPosition);
    if (feature instanceof LSGlobe.Cesium3DTileFeature) {
        feature.color = LSGlobe.Color.YELLOW;
    }
}, LSGlobe.ScreenSpaceEventType.MOUSE_MOVE);

pickPosition(windowPosition, result)Cartesian3

从屏幕位置和深度纹理中获取笛卡尔坐标
Name Type Description
windowPosition Cartesian2 执行拾取的窗口坐标
result Cartesian3 optional 待还原结果的对象
Returns:
笛卡尔坐标位置
Throws:
  • DeveloperError : 不支持从深度纹理中拾取,请检查pickPositionSupported.

requestRender()

Requests a new rendered frame when Scene#requestRenderMode is set to true. The render rate will not exceed the CesiumWidget#targetFrameRate.
See: