Scene

new Cesium.Scene(options)

Cesium 虚拟场景中所有 3D 图形对象和状态的容器。通常, 场景不会直接创建;相反,它由 CesiumWidget 隐式创建。
Name Type Description
options object 包含以下属性的对象:
Name Type Default Description
canvas HTMLCanvasElement 为其创建场景的 HTML canvas 元素。
contextOptions ContextOptions optional 上下文和 WebGL 创建属性。
creditContainer Element optional 显示版权信息的 HTML 元素。如果未指定,将创建版权容器并添加为 canvas 的兄弟元素。
creditViewport Element optional 显示版权弹出窗口的 HTML 元素。如果未指定,视口将添加为 canvas 的兄弟元素。
ellipsoid Ellipsoid Ellipsoid.default optional 默认椭球体。如果未指定,则使用默认椭球体。
mapProjection MapProjection new GeographicProjection(options.ellipsoid) optional 在 2D 和 Columbus 视图模式中使用的地图投影。
orderIndependentTranslucency boolean true optional 如果为 true 且配置支持,则使用顺序无关的半透明。
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 如果提供,此值控制多重采样抗锯齿的速率。典型的多重采样率为每像素 2、4,有时为 8 个样本。较高的 MSAA 采样率可能会影响性能以换取视觉质量的改善。此值仅适用于支持多重采样渲染目标的 WebGL2 上下文。设置为 1 以禁用 MSAA。
Throws:
Example:
// 创建没有各向异性纹理过滤的场景
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:
// 不执行任何命令。
scene.debugCommandFilter = function(command) {
    return false;
};

// 仅执行广告牌的命令。即仅绘制广告牌。
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:
  • glGetALIASED_LINE_WIDTH_RANGE

readonly maximumCubeMapSize : number

此 WebGL 实现支持的立方体贴图一边的最大长度(以像素为单位)。至少为 16。
See:
  • glGetGL_MAX_CUBE_MAP_TEXTURE_SIZE

maximumRenderTimeChange : number

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

minimumDisableDepthTestDistance : number

禁用广告牌、标签和点的深度测试的相机距离, 例如防止与地形裁剪。当设置为零时,应始终 应用深度测试。当小于零时,应永不应用深度测试。设置广告牌、 标签或点的 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

如果场景的上下文支持 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:
// 拾取半透明图元的位置
viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) {
     const pickedFeature = viewer.scene.pick(movement.position);
     if (!Cesium.defined(pickedFeature)) {
         // 未拾取到任何东西
         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 模型基于图像光照的镜面环境贴图和卷积 mipmaps 的 KTX2 文件的 URL。

readonly specularEnvironmentMapsSupported : boolean

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

sphericalHarmonicCoefficients : Array.<Cartesian3>

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

splitPosition : number

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

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:
修改后的结果参数或新的 Cartesian2 实例(如果未提供)。如果输入位置靠近椭球体中心,则可能为 undefined
Example:
// 每次鼠标移动时输出经度/纬度 (0, 0) 的 canvas 位置。
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:
修改后的结果参数或新的 Cartesian3 实例(如果未提供)。如果不存在可贴合的场景几何体,则可能为 undefined
Throws:
  • DeveloperError : clampToHeight 仅在 3D 模式下受支持。
  • DeveloperError : clampToHeight 需要深度纹理支持。请检查 clampToHeightSupported。
Example:
// 将实体贴合到基础场景几何体
const position = entity.position.getValue(Cesium.JulianDate.now());
entity.position = viewer.scene.clampToHeight(position);
See:

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

Cartesian3 位置数组启动异步 Scene#clampToHeight 查询, 使用场景中 3D Tilesets 的最大细节级别。返回查询完成时解决的 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:
对象数组,每个对象包含 1 个拾取的图元。
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:
// 鼠标悬停时,将特征着色为黄色。
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:
// 鼠标悬停时,将特征着色为黄色。
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 要拾取值的元数据模式的 ID。 如果为 undefined,则将拾取与给定类和属性名称匹配的对象的值,而不考虑模式 ID。
className string 要拾取值的元数据类的名称
propertyName string 要拾取值的元数据属性的名称
Returns:
元数据值,如果在给定位置未找到匹配的元数据则返回 undefined
Experimental

此功能尚未完成,可能会在没有 Cesium 标准弃用策略的情况下进行更改。

pickMetadataSchema(windowPosition)MetadataSchema|undefined

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

此功能尚未完成,可能会在没有 Cesium 标准弃用策略的情况下进行更改。

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:
左键单击时,报告该体素样本处 "color" 属性的值。
handler.setInputAction(function(movement) {
  const voxelCell = scene.pickVoxel(movement.position);
  if (defined(voxelCell)) {
    console.log(voxelCell.getProperty("color"));
  }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
Experimental

此功能尚未完成,可能会在没有 Cesium 标准弃用策略的情况下进行更改。

更新并渲染场景。通常不需要直接调用此函数, 因为 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)>>

Cartographic 位置数组启动异步 Scene#sampleHeight 查询, 使用场景中 3D Tilesets 的最大细节级别。输入位置的高度将被忽略。 返回查询完成时解决的 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 和 positions[1].height 已更新。
    // updatedPositions 只是对 positions 的引用。
}
See:

setTerrain(terrain)Terrain

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

terrain.errorEvent.addEventListener(error => {
  alert(`创建地形时遇到错误!${error}`);
});
Need help? The fastest way to get answers is from the community and team on the Cesium Forum.