Scene

new Cesium.Scene(options)

Cesium 虚拟场景中承载所有 3D 图形对象和状态的容器。通常, 场景不会直接创建,而是由 CesiumWidget 隐式创建。
Name Type Description
options object Object with the following properties:
Name Type Default Description
canvas HTMLCanvasElement 要为其创建场景的 HTML canvas 元素。
contextOptions ContextOptions optional 上下文和 WebGL 创建的属性。
creditContainer Element optional 用于显示 credit 的 HTML 元素。如果未指定,将创建一个 credit 容器并作为 canvas 的兄弟节点添加。
creditViewport Element optional 用于显示 credit 弹窗的 HTML 元素。如果未指定,视口将作为 canvas 的兄弟节点添加。
ellipsoid Ellipsoid Ellipsoid.default optional 默认椭球体。如果未指定,则使用默认椭球体。
mapProjection MapProjection new GeographicProjection(options.ellipsoid) optional 在 2D 和 Columbus 视图模式下使用的地图投影。
orderIndependentTranslucency boolean true optional 如果为 true 且配置支持,则使用顺序无关透明度(OIT)。
scene3DOnly boolean false optional 如果为 true,则优化 3D 模式下的内存使用和性能,但会禁用使用 2D 或 Columbus 视图的能力。
shadows boolean false optional 确定是否由光源投射阴影。
mapMode2D MapMode2D MapMode2D.INFINITE_SCROLL optional 确定 2D 地图是否可旋转,或者是否可以在水平方向上无限滚动。
requestRenderMode boolean false optional 如果为 true,则仅在场景内发生变化需要时才渲染帧。启用后可提升应用程序的性能,但需要使用 Scene#requestRender 在此模式下显式渲染新帧。在 API 的其他部分对场景进行更改后,许多情况下都需要这样做。参见 Improving Performance with Explicit Rendering
maximumRenderTimeChange number 0.0 optional 如果 requestRenderMode 为 true,此值定义了在请求渲染之前所允许的模拟时间的最大变化量。参见 Improving Performance with Explicit Rendering
depthPlaneEllipsoidOffset number 0.0 optional 调整 DepthPlane 以解决椭球体零高程以下的渲染伪影问题。
msaaSamples number 4 optional 如果提供此值,它将控制多重采样抗锯齿(MSAA)的采样率。典型的多重采样率为每像素 2、4,有时为 8 个样本。更高的 MSAA 采样率可能会影响性能,但能换取更好的视觉质量。此值仅适用于支持多重采样渲染目标的 WebGL2 上下文。设置为 1 可禁用 MSAA。
Throws:
Example:
// Create scene without anisotropic texture filtering
const scene = new Cesium.Scene({
  canvas : canvas,
  contextOptions : {
    allowTextureFilterAnisotropic : false
  }
});
See:

Members

static Cesium.Scene.defaultLogDepthBuffer

使用此属性为新建 Scene 中的 Scene#logarithmicDepthBuffer 设置默认值。 此属性依赖于对 fragmentDepth 的支持。

_enableEdgeVisibility : boolean

是否对 3D Tiles 启用边缘可见性渲染。 启用时,会创建一个带有多渲染目标的帧缓冲区, 用于高级边缘检测和可见性技术。
Default Value: false
影响 3D Tiles 和模型渲染的大气光照效果设置。不要将其与 负责渲染天空的 Scene#skyAtmosphere 混淆。
背景颜色,仅在没有天空盒(即 Scene#skyBoxundefined)时可见。
Default Value: Color.BLACK
See:
获取或设置相机。

readonly cameraUnderground : boolean

相机是否位于地球下方。
Default Value: false

readonly canvas : HTMLCanvasElement

获取此场景所绑定的 canvas 元素。

readonly clampToHeightSupported : boolean

如果支持 Scene#clampToHeightScene#clampToHeightMostDetailed 函数则返回 true
See:

completeMorphOnUserInput : boolean

确定是否在用户输入时立即完成 场景过渡动画。
Default Value: true

debugCommandFilter : function|undefined

此属性仅用于调试,不用于生产环境。

一个用于确定执行哪些命令的函数。如下方示例所示, 该函数接收命令的 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.
const billboards = new Cesium.BillboardCollection();
scene.debugCommandFilter = function(command) {
    return command.owner === billboards;
};

readonly debugFrustumStatistics : object|undefined

此属性仅用于调试,不用于生产环境。

Scene.debugShowFrustumstrue 时,此属性包含 每个视锥体所执行命令数量的统计信息。 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

readonly drawingBufferHeight : number

底层 GL 上下文的 drawingBufferHeight。
See:

readonly drawingBufferWidth : number

底层 GL 上下文的 drawingBufferWidth。
See:
椭球体。如果未指定,则使用默认椭球体。

eyeSeparation : number

用于 cardboard 或 WebVR 的双眼间距(米)。

farToNearRatio : number

使用普通深度缓冲区时多视锥体的远-近比值。

此值用于为多视锥体的每个视锥体创建近值和远值。仅当 Scene#logarithmicDepthBufferfalse 时使用。当 logarithmicDepthBuffertrue 时,请使用 Scene#logarithmicDepthFarToNearRatio

Default Value: 1000.0

focalLength : number

用于 cardboard 或 WebVR 时的焦距。
将大气与远离相机的几何体进行混合,以获得地平线视图。通过渲染更少的几何体和发送更少的地形请求, 可以实现额外的性能提升。 如果使用的是 WGS84 之外的其他椭球体,则默认禁用。
用于伽马校正的值。仅在以高动态范围渲染时使用。
Default Value: 2.2
获取或设置深度测试椭球体。
获取地面图元集合。

highDynamicRange : boolean

是否使用高动态范围渲染。
Default Value: false

readonly highDynamicRangeSupported : boolean

是否支持高动态范围渲染。
Default Value: true

readonly id : string

获取此场景的唯一标识符。
获取将在地球上渲染的影像图层集合。

invertClassification : boolean

当为 false 时,3D Tiles 将正常渲染。当为 true 时,已分类的 3D Tile 几何体会正常渲染,而 未分类的 3D Tile 几何体会以颜色乘以 Scene#invertClassificationColor 的方式渲染。
Default Value: false

invertClassificationColor : Color

Scene#invertClassificationtrue 时,未分类 3D Tile 几何体的高亮颜色。

当颜色的 alpha 小于 1.0 时,3D Tiles 的未分类部分将无法与 3D Tiles 的已分类位置正确混合。

此外,当颜色的 alpha 小于 1.0 时,必须支持 WEBGL_depth_texture 和 EXT_frag_depth 这两个 WebGL 扩展。

Default Value: Color.WHITE

readonly invertClassificationSupported : boolean

如果支持 Scene#invertClassification 则返回 true
See:

readonly lastRenderTime : JulianDate|undefined

获取场景上次渲染时的模拟时间。如果场景尚未渲染则返回 undefined
用于着色的光源。默认为来自太阳的方向光。

logarithmicDepthBuffer : boolean

是否使用对数深度缓冲区。启用此选项将允许多视锥体中使用更少的视锥体, 从而提升性能。此属性依赖于对 fragmentDepth 的支持。

logarithmicDepthFarToNearRatio : number

使用对数深度缓冲区时多视锥体的远-近比值。

此值用于为多视锥体的每个视锥体创建近值和远值。仅当 Scene#logarithmicDepthBuffertrue 时使用。当 logarithmicDepthBufferfalse 时,请使用 Scene#farToNearRatio

Default Value: 1e9
确定 2D 地图是否可旋转,或者是否可以在水平方向上无限滚动。
获取在 2D 和 Columbus 视图模式下使用的地图投影。
Default Value: new GeographicProjection()

readonly maximumAliasedLineWidth : number

此 WebGL 实现所支持的最大走样线宽(像素)。至少为 1。
See:
  • glGet with ALIASED_LINE_WIDTH_RANGE.

readonly maximumCubeMapSize : number

此 WebGL 实现所支持的立方体贴图单条边的长度(像素)。至少为 16。
See:
  • glGet with GL_MAX_CUBE_MAP_TEXTURE_SIZE.

maximumRenderTimeChange : number

如果 Scene#requestRenderModetrue,此值定义了在请求渲染之前所允许的模拟时间 最大变化量。较小的值会增加渲染的帧数,较大的值会减少渲染的帧数。如果为 undefined, 模拟时间的变化将永远不会请求渲染。 此值会影响场景变化(如光照、实体属性更新和动画)的渲染速率。
Default Value: 0.0
See:

minimumDisableDepthTestDistance : number

距相机的距离,在该距离处禁用广告牌、标签和点的深度测试, 例如,以防止被地形裁剪。当设置为 0 时,应始终应用深度测试。当小于 0 时,应永远不应用深度测试。 设置广告牌、标签或点的 disableDepthTestDistance 属性将覆盖此值。
Default Value: 0.0
获取或设置场景的当前模式。
Default Value: SceneMode.SCENE3D
场景中绘制的 Moon
Default Value: undefined
场景过渡完成时触发的事件。
Default Value: Event()
场景过渡开始时触发的事件。
Default Value: Event()
2D/Columbus 视图与 3D 之间的当前变形过渡时间, 其中 0.0 表示 2D 或 Columbus 视图,1.0 表示 3D。
Default Value: 1.0

msaaSamples : number

多重采样抗锯齿的采样率(值大于 1 时启用 MSAA)。
Default Value: 4

readonly msaaSupported : boolean

如果 Scene 的上下文支持 MSAA 则返回 true

nearToFarDistance2D : number

确定 2D 中 multifrustum 每个视锥体的统一深度大小(米)。如果靠近表面的图元或模型出现 z-fighting(深度冲突), 减小此值可以消除该伪影,但会降低性能。另一方面,增大此值会提升性能,但可能导致靠近表面的图元之间出现 z-fighting。
Default Value: 1.75e6

readonly orderIndependentTranslucency : boolean

获取场景是否启用了顺序无关透明度。 请注意,这仅反映原始的构造选项,还有其他因素可能会阻止 OIT 在给定系统配置上运行。

readonly pickPositionSupported : boolean

如果支持 Scene#pickPosition 函数则返回 true
See:

pickTranslucentDepth : boolean

当为 true 时,启用使用深度缓冲区拾取半透明几何体的功能。请注意,要使此功能生效,Scene#useDepthPicking 也必须为 true。

启用时性能会下降,因为需要额外的绘制调用来为半透明几何体写入深度。

Default Value: false
Example:
// picking the position of a translucent primitive
viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) {
     const pickedFeature = viewer.scene.pick(movement.position);
     if (!Cesium.defined(pickedFeature)) {
         // nothing picked
         return;
     }
     const worldPosition = viewer.scene.pickPosition(movement.position);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
应用于最终渲染的后处理效果。
获取将在场景渲染后立即触发的事件。该事件的订阅者 会接收到 Scene 实例作为第一个参数,以及当前时间作为第二个参数。
See:
获取将在场景更新之后、渲染之前立即触发的事件。 该事件的订阅者会接收到 Scene 实例作为第一个参数,以及当前时间作为第二个参数。
See:
获取将在场景更新之后、渲染之前立即触发的事件。 该事件的订阅者会接收到 Scene 实例作为第一个参数,以及当前时间作为第二个参数。
See:
获取将在场景更新或渲染之前触发的事件。该事件的订阅者 会接收到 Scene 实例作为第一个参数,以及当前时间作为第二个参数。
See:
获取图元集合。

readonly renderError : Event

获取在 render 函数内部抛出异常时触发的事件。 Scene 实例和抛出的错误是传递给事件处理程序的仅有的两个参数。 默认情况下,在此事件触发后不会重新抛出异常,但可以通过设置 rethrowRenderErrors 属性来更改这一行为。

requestRenderMode : boolean

当为 true 时,仅在场景内发生变化需要时才渲染帧。 启用后可提升应用程序的性能,但需要使用 Scene#requestRender 在此模式下显式渲染新帧。在 API 的其他部分对场景进行更改后,许多情况下都需要这样做。
Default Value: false
See:

rethrowRenderErrors : boolean

render 中发生的异常总是会被捕获,以触发 renderError 事件。如果此属性为 true,错误会在事件触发后重新抛出。 如果此属性为 false,render 函数在触发事件后会正常返回。
Default Value: false

readonly sampleHeightSupported : boolean

如果支持 Scene#sampleHeightScene#sampleHeightMostDetailed 函数则返回 true
See:

readonly scene3DOnly : boolean

获取场景是否已针对仅 3D 查看进行优化。

readonly screenSpaceCameraController : ScreenSpaceCameraController

获取用于处理相机输入的控制器。
场景光源的阴影贴图。启用后,模型、图元和地球可以投射和接收阴影。
围绕地球绘制的大气层。
Default Value: undefined
用于绘制星星的 SkyBox
Default Value: undefined
See:

specularEnvironmentMaps : string

包含用于 PBR 模型基于图像的照明的镜面环境贴图和卷积 mipmap 的 KTX2 文件的 url。

readonly specularEnvironmentMapsSupported : boolean

如果支持镜面环境贴图则返回 true
See:

sphericalHarmonicCoefficients : Array.<Cartesian3>

用于 PBR 模型基于图像的照明的球谐系数。

splitPosition : number

获取或设置分割器在视口中的位置。有效值在 0.0 到 1.0 之间。
场景中绘制的 Sun
Default Value: undefined
启用时对太阳使用泛光(bloom)滤镜。
Default Value: true
为地球提供表面几何体的地形提供者(terrain provider)。

readonly terrainProviderChanged : Event

获取地形提供者发生变化时触发的事件

useDepthPicking : boolean

当为 true 时,启用使用深度缓冲区的拾取。
Default Value: true
当为 true 时,将场景分割为两个视口,分别显示左右眼的立体视图。 用于 cardboard 和 WebVR。
Default Value: false

verticalExaggeration : number

场景的垂直夸张系数。 设置为 1.0 时不应用任何夸张。
Default Value: 1.0

verticalExaggerationRelativeHeight : number

场景垂直夸张的参考高度。 设置为 0.0 时,夸张是相对于椭球体表面应用的。
Default Value: 0.0

Methods

cartesianToCanvasCoordinates(position, result)Cartesian2|undefined

将笛卡尔坐标中的位置变换为 canvas 坐标。这通常用于将 HTML 元素放置在场景中对象所在的相同屏幕位置。
Name Type Description
position Cartesian3 笛卡尔坐标中的位置。
result Cartesian2 optional 一个可选对象,用于返回变换为 canvas 坐标的输入位置。
Returns:
修改后的 result 参数,如果未提供则为新的 Cartesian2 实例。如果输入位置靠近椭球体中心,则可能为 undefined
Example:
// Output the canvas position of longitude/latitude (0, 0) every time the mouse moves.
const scene = widget.scene;
const position = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
const handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(movement) {
    console.log(scene.cartesianToCanvasCoordinates(position));
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

clampToHeight(cartesian, objectsToExclude, width, result)Cartesian3|undefined

将给定的笛卡尔位置沿大地表面法线钳制到场景几何体上。返回 钳制后的位置;如果没有可钳制的场景几何体,则返回 undefined。可用于将 对象钳制到地球、3D Tiles 或场景中的图元上。

此函数仅钳制当前视图中渲染的地球瓦片和 3D Tiles。对于其他所有图元,无论其是否可见都会进行钳制。

Name Type Default Description
cartesian Cartesian3 笛卡尔位置。
objectsToExclude Array.<object> optional 不进行钳制的图元、实体或 3D Tiles 要素的列表。
width number 0.1 optional 相交体的宽度(米)。
result Cartesian3 optional 一个可选对象,用于返回钳制后的位置。
Returns:
修改后的 result 参数,如果未提供则为新的 Cartesian3 实例。如果没有可钳制的场景几何体,则可能为 undefined
Throws:
  • DeveloperError :clampToHeight 仅在 3D 模式下受支持。
  • DeveloperError :clampToHeight 需要深度纹理支持。请检查 clampToHeightSupported。
Example:
// Clamp an entity to the underlying scene geometry
const position = entity.position.getValue(Cesium.JulianDate.now());
entity.position = viewer.scene.clampToHeight(position);
See:

clampToHeightMostDetailed(cartesians, objectsToExclude, width)Promise.<Array.<(Cartesian3|undefined)>>

使用场景中 3D Tilesets 的最大细节级别,发起对一组 Cartesian3 位置的异步 Scene#clampToHeight 查询。 查询完成时返回一个已解析的 promise。每个位置都会原地修改。如果某个位置因为该位置没有可采样的几何体 或发生其他错误而无法钳制,则数组中的该元素会被设为 undefined。
Name Type Default Description
cartesians Array.<Cartesian3> 要使用钳制位置进行更新的笛卡尔位置。
objectsToExclude Array.<object> optional 不进行钳制的图元、实体或 3D Tiles 要素的列表。
width number 0.1 optional 相交体的宽度(米)。
Returns:
一个 promise,在查询完成时解析为所提供的位置列表。如果位置无法被钳制,则可能变为 undefined
Throws:
  • DeveloperError :clampToHeightMostDetailed 仅在 3D 模式下受支持。
  • DeveloperError :clampToHeightMostDetailed 需要深度纹理支持。请检查 clampToHeightSupported。
Example:
const cartesians = [
    entities[0].position.getValue(Cesium.JulianDate.now()),
    entities[1].position.getValue(Cesium.JulianDate.now())
];
const promise = viewer.scene.clampToHeightMostDetailed(cartesians);
promise.then(function(updatedCartesians) {
    entities[0].position = updatedCartesians[0];
    entities[1].position = updatedCartesians[1];
}
See:
立即完成正在进行的过渡。
销毁此对象持有的 WebGL 资源。销毁对象可以实现 WebGL 资源的确定性 释放,而不是依赖垃圾回收器来销毁此对象。

一旦对象被销毁,就不应再使用;调用 isDestroyed 之外的任何函数 都会抛出 DeveloperError 异常。因此, 应像示例中那样将返回值(undefined)赋给该对象。
Throws:
Example:
scene = scene && scene.destroy();
See:

drillPick(windowPosition, limit, width, height)Array.<any>

返回对象列表,每个对象都包含一个 primitive 属性,对应于位于 特定窗口坐标位置的所有图元。根据图元类型的不同,也可能设置其他属性,这些属性可用于进一步识别被拾取的对象。 列表中的图元按其在场景中的视觉顺序(从前到后)排列。
Name Type Default Description
windowPosition Cartesian2 用于执行拾取的窗口坐标。
limit number optional 如果提供,则在收集到这么多拾取结果后停止穿透拾取。
width number 3 optional 拾取矩形的宽度。
height number 3 optional 拾取矩形的高度。
Returns:
对象数组,每个对象包含一个被拾取的图元。
Throws:
Example:
const pickedObjects = scene.drillPick(new Cesium.Cartesian2(100.0, 200.0));
See:

getCompressedTextureFormatSupported(format)boolean

确定是否支持某种压缩纹理格式。
Name Type Description
format string 纹理格式。可以是格式名称或 WebGL 扩展名称,例如 s3tc 或 WEBGL_compressed_texture_s3tc。
Returns:
该格式是否受支持。

isDestroyed()boolean

如果此对象已被销毁则返回 true,否则返回 false。

如果此对象已被销毁,就不应再使用;调用 isDestroyed 之外的任何函数 都会抛出 DeveloperError 异常。
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 视图。
Name Type Default Description
duration number 2.0 optional 过渡动画完成所需的时间(秒)。

pick(windowPosition, width, height)object|undefined

返回一个包含 primitive 属性的对象,该属性表示在 特定窗口坐标处场景中的第一个(最顶层)图元;如果该位置没有任何内容,则返回 undefined。 根据图元类型的不同,也可能设置其他属性,这些属性可用于进一步识别被拾取的对象。

当拾取到 3D Tiles 瓦片集的一个要素时,pick 会返回一个 Cesium3DTileFeature 对象。

Name Type Default Description
windowPosition Cartesian2 用于执行拾取的窗口坐标。
width number 3 optional 拾取矩形的宽度。
height number 3 optional 拾取矩形的高度。
Returns:
包含被拾取图元的对象;如果该位置没有任何内容则为 undefined
Example:
// On mouse over, color the feature yellow.
handler.setInputAction(function(movement) {
    const feature = scene.pick(movement.endPosition);
    if (feature instanceof Cesium.Cesium3DTileFeature) {
        feature.color = Cesium.Color.YELLOW;
    }
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

pickAsync(windowPosition, width, height)Promise.<(Object|undefined)>

执行与 Scene.pick 相同的操作,但是异步进行,不会阻塞主渲染线程。 需要 WebGL2,否则会使用回退方案。
Name Type Default Description
windowPosition Cartesian2 用于执行拾取的窗口坐标。
width number 3 optional 拾取矩形的宽度。
height number 3 optional 拾取矩形的高度。
Returns:
包含被拾取图元的对象;如果该位置没有任何内容则为 undefined
Example:
// On mouse over, color the feature yellow.
handler.setInputAction(function(movement) {
    const feature = scene.pickAsync(movement.endPosition).then(function(feature) {
       if (feature instanceof Cesium.Cesium3DTileFeature) {
           feature.color = Cesium.Color.YELLOW;
       }
    });
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
See:

pickMetadata(windowPosition, schemaId, className, propertyName)MetadataValue|undefined

在给定窗口位置拾取一个元数据值。
Name Type Description
windowPosition Cartesian2 用于执行拾取的窗口坐标。
schemaId string | undefined 要从中拾取值的元数据 schema 的 ID。 如果为 undefined,则将从匹配给定类名称和属性名称的对象中拾取值, 而不考虑 schema ID。
className string 要从中拾取值的元数据类的名称
propertyName string 要从中拾取值的元数据属性的名称
Returns:
元数据值;如果在给定位置 未找到匹配的元数据,则为 undefined
Experimental

This feature is not final and is subject to change without Cesium's standard deprecation policy.

pickMetadataSchema(windowPosition)MetadataSchema|undefined

拾取给定位置处对象的元数据 schema
Name Type Description
windowPosition Cartesian2 用于执行拾取的窗口坐标。
Returns:
元数据 schema;如果在给定位置没有 关联元数据的对象,则为 undefined
Experimental

This feature is not final and is subject to change without Cesium's standard deprecation policy.

pickPosition(windowPosition, result)Cartesian3

返回根据深度缓冲区和窗口位置重建的笛卡尔位置。

在 2D 中根据深度缓冲区重建的位置,可能与在 3D 和 Columbus 视图中重建的位置略有不同。 这是由于透视投影和正交投影的深度值分布不同所致。

Scene#pickTranslucentDepth 设为 true 可包含 半透明图元的深度;否则,此操作实际上会穿透半透明图元进行拾取。

Name Type Description
windowPosition Cartesian2 用于执行拾取的窗口坐标。
result Cartesian3 optional 用于恢复结果的对象。
Returns:
笛卡尔位置。
Throws:
  • DeveloperError :不支持从深度缓冲区拾取。请检查 pickPositionSupported。

pickVoxel(windowPosition, width, height)VoxelCell|undefined

返回在特定的窗口坐标处渲染的体素样本的 VoxelCell, 如果该位置没有渲染体素,则返回 undefined
Name Type Default Description
windowPosition Cartesian2 用于执行拾取的窗口坐标。
width number 3 optional 拾取矩形的宽度。
height number 3 optional 拾取矩形的高度。
Returns:
关于在拾取位置处渲染的体素单元的信息;如果该位置没有渲染体素,则为 undefined
Example:
On left click, report the value of the "color" property at that voxel sample.
handler.setInputAction(function(movement) {
  const voxelCell = scene.pickVoxel(movement.position);
  if (defined(voxelCell)) {
    console.log(voxelCell.getProperty("color"));
  }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
Experimental

This feature is not final and is subject to change without Cesium's standard deprecation policy.

更新并渲染场景。通常不需要直接调用此函数, 因为 CesiumWidget 会自动执行。
Name Type Description
time JulianDate optional 要渲染的模拟时间。
Scene#requestRenderMode 设置为 true 时,请求渲染一个新的帧。 渲染速率不会超过 CesiumWidget#targetFrameRate
See:

sampleHeight(position, objectsToExclude, width)number|undefined

返回给定大地坐标位置处场景几何体的高度;如果没有可采样高度的 场景几何体,则返回 undefined。输入位置的高度会被忽略。可用于将对象钳制到 地球、3D Tiles 或场景中的图元上。

此函数仅从当前视图中渲染的地球瓦片和 3D Tiles 采样高度。对于其他所有图元, 无论其是否可见都会采样高度。

Name Type Default Description
position Cartographic 用于采样高度的大地坐标位置。
objectsToExclude Array.<object> optional 不从中采样高度的图元、实体或 3D Tiles 要素的列表。
width number 0.1 optional 相交体的宽度(米)。
Returns:
高度。如果没有可采样高度的场景几何体,则可能为 undefined
Throws:
  • DeveloperError :sampleHeight 仅在 3D 模式下受支持。
  • DeveloperError :sampleHeight 需要深度纹理支持。请检查 sampleHeightSupported。
Example:
const position = new Cesium.Cartographic(-1.31968, 0.698874);
const height = viewer.scene.sampleHeight(position);
console.log(height);
See:

sampleHeightMostDetailed(positions, objectsToExclude, width)Promise.<Array.<(Cartographic|undefined)>>

使用场景中 3D Tilesets 的最大细节级别,发起对一组 Cartographic 位置的异步 Scene#sampleHeight 查询。 输入位置的高度会被忽略。查询完成时返回一个已解析的 promise。每个点的高度都会原地修改。 如果某个位置因为该位置没有可采样的几何体或发生其他错误而无法确定高度, 则该高度会被设为 undefined
Name Type Default Description
positions Array.<Cartographic> 要使用采样高度进行更新的大地坐标位置。
objectsToExclude Array.<object> optional 不从中采样高度的图元、实体或 3D Tiles 要素的列表。
width number 0.1 optional 相交体的宽度(米)。
Returns:
一个 promise,在查询完成时解析为所提供的位置列表。如果高度无法确定,位置可能会变为 undefined
Throws:
  • DeveloperError :sampleHeightMostDetailed 仅在 3D 模式下受支持。
  • DeveloperError :sampleHeightMostDetailed 需要深度纹理支持。请检查 sampleHeightSupported。
Example:
const positions = [
    new Cesium.Cartographic(-1.31968, 0.69887),
    new Cesium.Cartographic(-1.10489, 0.83923)
];
const 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.
}
See:

setTerrain(terrain)Terrain

更新为地球提供表面几何体的地形。
Name Type Description
terrain Terrain 地形提供者异步辅助对象
Returns:
terrain 地形提供者异步辅助对象
Examples:
// Use Cesium World Terrain
scene.setTerrain(Cesium.Terrain.fromWorldTerrain());
// Use a custom terrain provider
const terrain = new Cesium.Terrain(Cesium.CesiumTerrainProvider.fromUrl("https://myTestTerrain.com"));
scene.setTerrain(terrain);

terrain.errorEvent.addEventListener(error => {
  alert(`Encountered an error while creating terrain! ${error}`);
});
需要帮助?获取答案的最快方式是在 Cesium 论坛 上向社区和团队提问。