麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

Cesium API - Cesium3DTileset 中文文档

本文介绍下Cesium中 Cesium3DTileset API的详细使用说明。

Cesium3DTileset API 调用方法

new Cesium.Cesium3DTileset(options)
3D Tiles tileset, 用于流式传输海量的异构三维地理空间数据集。
Name Type Description
options Object 对象,具有以下属性:
Name Type Default Description
url Resource | String | Promise.<Resource> | Promise.<String> 指向tileset JSON文件的url。
show Boolean true optional 确定是否显示tileset。
modelMatrix Matrix4 Matrix4.IDENTITY optional 一个4x4变换矩阵,转换tileset的根瓦片。
shadows ShadowMode ShadowMode.ENABLED optional 确定tileset是否从每个光源投射或接收阴影。
maximumScreenSpaceError Number 16 optional 用于驱动细节细化级别的最大屏幕空间误差。
maximumMemoryUsage Number 512 optional tileset可以使用的最大内存(以MB为单位)。
cullWithChildrenBounds Boolean true optional 优化选项。是否使用子包围体的合并来剔除瓦片。
cullRequestsWhileMoving Boolean true optional 优化选项。不要请求那些可能因为相机的移动而没有使用的瓦片。
cullRequestsWhileMovingMultiplier Number 60.0 optional 优化选项。用于移动时剔除请求的乘法器(multiplier)。 较大的是更有积极性的剔除,较小的是不那么有积极性的剔除。
preloadWhenHidden Boolean false optionaltileset.showfalse时预加载瓦片。 加载瓦片,就好像瓦片是可见的,但不渲染它们。
preloadFlightDestinations Boolean true optional 优化选项。当相机飞行时,在相机的飞行目的地预加载瓦片。
preferLeaves Boolean false optional 优化选项。首选加载子代。
dynamicScreenSpaceError Boolean false optional 优化选项。减少远离相机的瓦片的屏幕空间误差。
dynamicScreenSpaceErrorDensity Number 0.00278 optional 用于调整动态屏幕空间误差的密度,类似于雾密度。
dynamicScreenSpaceErrorFactor Number 4.0 optional 用于增加计算出的动态屏幕空间误差的因子。
dynamicScreenSpaceErrorHeightFalloff Number 0.25 optional 密度开始下降的tileset的高度的比率。
progressiveResolutionHeightFraction Number 0.3 optional 如果介于(0.0,0.5]之间,则将优先考虑屏幕空间错误或高于屏幕空间错误的图块,以降低 progressiveResolutionHeightFraction*screenHeight 的屏幕分辨率, 这可以在下载全分辨率瓦片时,快速得到一个图层。
foveatedScreenSpaceError Boolean true optional 优化选项。通过临时提高屏幕边缘周围的屏幕空间误差来优先加载屏幕中心的图像块。 加载Cesium3DTileset#foveatedConeSize所确定的屏幕中心的所有瓦片后,屏幕空间误差将恢复正常。
foveatedConeSize Number 0.1 optional 优化选项。当Cesium3DTileset#foveatedScreenSpaceError为true时,用于控制确定哪些瓦片被延迟的圆锥大小。 圆锥内的瓦片立即被加载。位于圆锥外部的瓦片可能会根据它们位于圆锥外部的距离和屏幕空间误差而延迟。 这是由Cesium3DTileset#foveatedInterpolationCallbackCesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation控制的。 将此设置为0.0意味着圆锥将是由相机位置及其视图方向形成的直线。将此设置为1.0意味着圆锥将包含相机的整个视场,关闭效果。
foveatedMinimumScreenSpaceErrorRelaxation Number 0.0 optional 优化选项。当Cesium3DTileset#foveatedScreenSpaceError为true时使用, 用于控制位于中心凹锥体外的瓦片的起始屏幕空间误差松弛。根据提供的Cesium3DTileset#foveatedInterpolationCallback, 屏幕空间误差将从tileset值开始上升到Cesium3DTileset#maximumScreenSpaceError
foveatedInterpolationCallback Cesium3DTileset~foveatedInterpolationCallback Math.lerp optional 优化选项。 当Cesium3DTileset#foveatedScreenSpaceError为true时,用于控制在圆锥体中心凹外的平铺块的屏幕空间误差上升多少, 在Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxationCesium3DTileset#maximumScreenSpaceError之间插值。
foveatedTimeDelay Number 0.2 optional 优化选项。当Cesium3DTileset#foveatedScreenSpaceError为true时, 用于控制相机停止移动后延迟的瓦片开始加载之前等待的时间(以秒为单位)。这个时间延迟可以防止在相机移动时请求屏幕边缘的瓦片。将此设置为0.0将立即请求任何给定视图中的所有瓦片。
skipLevelOfDetail Boolean true optional 优化选项。确定在遍历过程中是否应该应用跳过LOD级别。
baseScreenSpaceError Number 1024 optionalskipLevelOfDetailtrue时,必须达到的屏幕空间误差才能跳过的LOD级别。
skipScreenSpaceErrorFactor Number 16 optionalskipLevelOfDetailtrue时,定义要跳过的最小屏幕空间误差的乘数。 与skipLevels一起使用,以确定加载哪些瓦片。
skipLevels Number 1 optionalskipLevelOfDetailtrue时,定义加载瓦片时要跳过的最小级别数。当为0时,不会跳过任何级别。 与skipScreenSpaceErrorFactor结合使用,以确定加载哪些瓦片。
immediatelyLoadDesiredLevelOfDetail Boolean false optionalskipLevelOfDetailtrue时,只有满足最大屏幕空间错误的瓦片才会被下载。 忽略跳过的因素,只加载所需的瓦片。
loadSiblings Boolean false optionalskipLevelOfDetailtrue时,确定在遍历过程中是否总是下载可见瓦片的同级。
clippingPlanes ClippingPlaneCollection optional ClippingPlaneCollection用于选择性地禁用渲染tileset。
classificationType ClassificationType optional 确定是否地形,3D Tiles或两者都将被分类这个tileset。有关限制的详细信息,请参见Cesium3DTileset#classificationType
ellipsoid Ellipsoid Ellipsoid.WGS84 optional 决定地球大小和形状的椭球体。
pointCloudShading Object optional 构造PointCloudShading对象的选项,以根据几何误差和光照来控制点衰减。
imageBasedLightingFactor Cartesian2 new Cartesian2(1.0, 1.0) optional 从地球,天空,大气和恒星天空盒缩放漫反射和基于图像反射的光照。
lightColor Cartesian3 optional 用来给模型阴影的阳光的颜色和强度。
luminanceAtZenith Number 0.2 optional 太阳在天顶的亮度单位为千坎德拉每平方米,用于该模型的程序环境地图。
sphericalHarmonicCoefficients Array.<Cartesian3> optional 三阶球谐函数系数用于基于图像的光照漫反射颜色。
specularEnvironmentMaps String optional 一个指向KTX文件的URL,该文件包含镜面反射光照和复杂的镜面反射贴图的立方体映射。
debugHeatmapTilePropertyName String optional 要作为热力图着色的瓦片变量。所有渲染的瓦片将相对于彼此的指定变量值着色。
debugFreezeFrame Boolean false optional 仅供调试。确定是否仅使用上一帧中的瓦片进行渲染。
debugColorizeTiles Boolean false optional 仅供调试。当为true时,为每个瓦片分配随机颜色。
debugWireframe Boolean false optional 仅供调试。当为true时,将每个瓦片的内容渲染为一个线框。
debugShowBoundingVolume Boolean false optional 仅供调试。当为true时,为每个瓦片渲染包围体。
debugShowContentBoundingVolume Boolean false optional 仅供调试。当为true时,为每个瓦片的内容渲染包围体。
debugShowViewerRequestVolume Boolean false optional 仅供调试。当为true时,为每个瓦片渲染查看器请求体。
debugShowGeometricError Boolean false optional 仅供调试。当为true时,绘制标签以指示每个瓦片的几何误差。
debugShowRenderingStatistics Boolean false optional 仅供调试。当为true时,绘制标签以指示每个瓦片的指令、点、三角形和要素的数量。
debugShowMemoryUsage Boolean false optional 仅供调试。如果为true,则绘制标签以指示每个瓦片使用的纹理和几何内存(以兆字节为单位)。
debugShowUrl Boolean false optional 仅供调试。如果为true,则绘制标签以指示每个瓦片的url。
异常情况:
示例:
var tileset = scene.primitives.add(new Cesium.Cesium3DTileset({
     url : 'http://localhost:8002/tilesets/Seattle/tileset.json'
}));
// skipLevelOfDetail优化的常用设置。
var tileset = scene.primitives.add(new Cesium.Cesium3DTileset({
     url : 'http://localhost:8002/tilesets/Seattle/tileset.json',
     skipLevelOfDetail : true,
     baseScreenSpaceError : 1024,
     skipScreenSpaceErrorFactor : 16,
     skipLevels : 1,
     immediatelyLoadDesiredLevelOfDetail : false,
     loadSiblings : false,
     cullWithChildrenBounds : true
}));
// dynamicScreenSpaceError优化的常见设置。
var tileset = scene.primitives.add(new Cesium.Cesium3DTileset({
     url : 'http://localhost:8002/tilesets/Seattle/tileset.json',
     dynamicScreenSpaceError : true,
     dynamicScreenSpaceErrorDensity : 0.00278,
     dynamicScreenSpaceErrorFactor : 4.0,
     dynamicScreenSpaceErrorHeightFalloff : 0.25
}));
参考:

成员变量

触发事件以指示加载了遇到屏幕空间误差的所有瓦片。此视图的tileset已完全加载。

此事件在场景渲染后的帧结束时触发。

Default Value: new Event()
示例:
tileset.allTilesLoaded.addEventListener(function() {
    console.log('All tiles are loaded');
});
参考:
readonlyasset : Object
获取tileset的资产对象属性,该属性包含关于tileset的元数据。

请参考 3D Tiles规范中的asset schema reference以获得完整的属性集。

readonlydeprecatedbasePath : String
tileset JSON文件中非绝对路径相对的基本路径。

Deprecated: true

baseScreenSpaceError : Number
在跳过LOD级别之前必须达到的屏幕空间误差。

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: 1024
tileset的包围球。
示例:
var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
    url : 'http://localhost:8002/tilesets/Seattle/tileset.json'
}));
tileset.readyPromise.then(function(tileset) {
    // 将相机设置为查看新添加的tileset
    viewer.camera.viewBoundingSphere(tileset.boundingSphere, new Cesium.HeadingPitchRange(0, -0.5, 0));
});
readonlyclassificationType : ClassificationType
确定是否地形,3D Tiles或两者都将被分类这个tileset。

此选项仅适用于包含批量三维模型、几何数据或矢量数据的tilesets。 即使在未定义的情况下,矢量数据和几何数据也必须作为分类渲染,并将默认渲染在地形和其他3D Tiles tilesets上。

当批量启用3D模型tileset时,glTF有一些要求/限制:

  • POSITION 和 _BATCHID 语义是必需的。
  • 具有相同批处理id的所有索引必须占用索引缓冲区的连续部分。
  • 所有的着色器和技术都被忽略。生成的着色器通过模型-视图-投影矩阵简单地将位置相乘。
  • 唯一支持的扩展是CESIUM_RTC和WEB3D_quantized_attributes。
  • 只支持一个节点。
  • 每个节点只支持一个网格。
  • 每个网格只支持一个图元。

Default Value: undefined
实验功能说明:

This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.

ClippingPlaneCollection用于选择性地禁用渲染tileset。
colorBlendAmount : Number
定义当Cesium3DTileset#colorBlendModeMIX时用于线性插值的在源颜色和要素颜色的值。 0.0的值表示源颜色,1.0的值表示要素颜色,中间的值表示源颜色和特征颜色的混合。
Default Value: 0.5
定义如何设置来自Cesium API的每个要素颜色或声明式样式与来自原始要素的源颜色混合,例如glTF材质或瓦片中的每个点颜色。
Default Value: Cesium3DTileColorBlendMode.HIGHLIGHT
cullRequestsWhileMoving : Boolean
优化选项。不要请求那些可能因为相机的移动而没有使用的瓦片。
Default Value: true
cullRequestsWhileMovingMultiplier : Number
优化选项。用于移动时剔除请求的乘法器(multiplier)。 较大的是更有积极性的剔除,较小的是不那么有积极性的剔除。
Default Value: 60.0
debugColorizeTiles : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,为每个瓦片分配随机颜色。 这对于可视化哪些要素属于哪些瓦片非常有用,特别是在附加细化的情况下,来自父瓦片的要素可能与来自子瓦片的要素交织在一起。

Default Value: false
debugFreezeFrame : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

确定是否仅使用上一帧中的瓦片进行渲染。这有效地将tileset“冻结”到前一帧,因此可以缩小并查看渲染了什么。

Default Value: false
debugShowBoundingVolume : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,为每个可见瓦片渲染包围体。如果瓦片有内容包围体或为空,则包围体为白色;否则,它是红色的。 不符合屏幕空间误差且仍在对其后代进行细化的瓦片是黄色的。

Default Value: false
debugShowContentBoundingVolume : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,为每个可见瓦片的内容渲染包围体。 如果瓦片有内容包围体,则包围体为蓝色;否则就是红色的。

Default Value: false
debugShowGeometricError : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,绘制标签以指示每个瓦片的几何误差。

Default Value: false
debugShowMemoryUsage : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

如果为true,则绘制标签以指示每个瓦片的几何形状和纹理内存使用情况。

Default Value: false
debugShowRenderingStatistics : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,绘制标签来指示每个瓦片的指令、点、三角形和要素的数量。

Default Value: false
debugShowUrl : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

如果为true,则绘制标签以指示每个瓦片的url。

Default Value: false
debugShowViewerRequestVolume : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,为每个瓦片渲染查看器请求体。

Default Value: false
debugWireframe : Boolean
此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,将每个瓦片的内容渲染为线框。

Default Value: false
dynamicScreenSpaceError : Boolean
优化选项。是否应该根据动态屏幕空间误差来改善tileset。较远的瓦片比较近的瓦片将以较低的细节渲染。 这通过渲染更少的瓦片和发出更少的请求来提高性能,但是可能会导致远处的瓦片的视觉质量略有下降。 该算法偏向于"street views",即相机接近tileset的地平面并查看地平线。此外,结果更准确的紧密拟合包围体,如盒和区域。
Default Value: false
dynamicScreenSpaceErrorDensity : Number
确定用于调整动态屏幕空间误差的密度的标量,类似于Fog。 增加这个值的效果是增加所有瓦片的最大屏幕空间误差,但是是以非线性的方式。 误差从0.0开始,以指数方式增加,直到达到一个中点,然后渐进地接近1.0。 这样做的效果是,在较近的瓦片中保持较高的细节,在较远的瓦片中保持较低的细节,所有超过一定距离的瓦片的误差都大致为1.0。

动态误差在[0.0,1.0]范围内,乘以dynamicScreenSpaceErrorFactor,得到最终的动态误差。 然后,这个动态误差将从瓦片的实际屏幕空间误差中减去。

增加dynamicScreenSpaceErrorDensity会使误差中点更靠近相机。这类似于将雾移近相机。

Default Value: 0.00278
dynamicScreenSpaceErrorFactor : Number
用于增加瓦片的屏幕空间误差的因子,用于动态屏幕空间误差。 随着这个值的增加,渲染时对瓦片的请求就会减少,而在远处瓦片的细节就会减少。如果设置为0,该功能将被禁用。
Default Value: 4.0
dynamicScreenSpaceErrorHeightFalloff : Number
密度开始下降的tileset的高度的比率。如果相机低于此高度,则应用完整计算的密度,否则密度将下降。这就产生了街景级别更高密度的效果。

有效值介于0.0和1.0之间。

Default Value: 0.25
获取描述地球形状的椭球体。
readonlyextras : *
返回tileset JSON顶层的extras属性,其中包含应用程序特定的元数据。 返回undefined如果extras不存在。
参考:
foveatedConeSize : Number
优化选项。当Cesium3DTileset#foveatedScreenSpaceError为true时使用,以控制决定哪些瓦片被延迟的圆锥大小。 圆锥内的瓦片立即被加载。位于圆锥外部的瓦片可能会根据它们位于圆锥外部的距离和屏幕空间误差而延迟。 这是由Cesium3DTileset#foveatedInterpolationCallbackCesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation控制的。 将此设置为0.0意味着圆锥将是由相机位置及其视图方向形成的直线。将此设置为1.0意味着圆锥将包含相机的整个视场,关闭效果。
Default Value: 0.3
获取一个函数,该函数将更新一个瓦片的中心屏幕空间误差。
foveatedMinimumScreenSpaceErrorRelaxation : Number
优化选项。当Cesium3DTileset#foveatedScreenSpaceError为true时使用,用于控制位于中心凹锥体外的瓦片起始屏幕空间误差松弛。 根据提供的Cesium3DTileset#foveatedInterpolationCallback,屏幕空间误差将从这个值开始上升到Cesium3DTileset#maximumScreenSpaceError
Default Value: 0.0
foveatedScreenSpaceError : Boolean
优化选项。通过临时提高屏幕边缘周围的屏幕空间误差来优先加载屏幕中心的图像块。 加载Cesium3DTileset#foveatedConeSize所确定的屏幕中心的所有瓦片后,屏幕空间误差将恢复正常。
Default Value: true
foveatedTimeDelay : Number
优化选项。当Cesium3DTileset#foveatedScreenSpaceError为true时, 用于控制相机停止移动后延迟的瓦片开始加载之前等待的时间(以秒为单位)。 这个时间延迟可以防止在相机移动时请求屏幕边缘的瓦片。将此设置为0.0将立即请求任何给定视图中的所有瓦片。
Default Value: 0.2
imageBasedLightingFactor : Cartesian2
Cesium增加了来自地球、天空、大气和星空盒的光线。 这个笛卡儿是用来衡量最终漫反射和镜面反射光照的贡献,从这些来源到最后的颜色。 0.0的值将禁用这些光源。
Default Value: Cartesian2(1.0, 1.0)
immediatelyLoadDesiredLevelOfDetail : Boolean
当为true时,只下载满足最大屏幕空间误差的瓦片。 忽略跳过的因素,只加载所需的瓦片。

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: false
initialTilesLoaded : Event
触发事件以指示加载了遇到屏幕空间误差的所有瓦片。加载初始视图中的所有瓦片完成时触发此事件一次。

此事件在场景渲染后的帧结束时触发。

Default Value: new Event()
示例:
tileset.initialTilesLoaded.addEventListener(function() {
    console.log('Initial tiles are loaded');
});
参考:
用来给模型阴影的阳光的颜色和强度。

例如,通过设置model.imageBasedLightingFactor = new Cartesian2(0.0, 0.0)来禁用额外的光源会使模型更暗。 在这里,增加光源的强度将使模型更亮。

Default Value: undefined
触发事件以指示加载新瓦片的进度。当请求一个新瓦片时,当请求的瓦片已完成下载时,当下载的瓦片已处理并准备渲染时,将触发此事件。

正在处理的瓦片请求的数量numberOfPendingRequests,和正在处理的瓦片的数量numberOfTilesProcessing被传递给事件监听器。

此事件在场景渲染后的帧结束时触发。

Default Value: new Event()
示例:
tileset.loadProgress.addEventListener(function(numberOfPendingRequests, numberOfTilesProcessing) {
    if ((numberOfPendingRequests === 0) && (numberOfTilesProcessing === 0)) {
        console.log('Stopped loading');
        return;
    }
    console.log('Loading: requests: ' + numberOfPendingRequests + ', processing: ' + numberOfTilesProcessing);
});
loadSiblings : Boolean
确定在遍历过程中是否总是下载可见瓦片的同级。 这可能有助于确保当查看器向左/向右转向时,瓦片已经可用。

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: false
luminanceAtZenith : Number
太阳在天顶的亮度单位为千坎德拉每平方米,用于该模型的程序环境地图。 当Cesium3DTileset#specularEnvironmentMapsCesium3DTileset#sphericalHarmonicCoefficients未定义时使用。
Default Value: 0.2
maximumMemoryUsage : Number
可用于缓存瓦片的最大GPU内存(以MB为单位)。 这个值是根据加载的瓦片的几何、纹理和批处理表纹理来估计的。对于点云,这个值还包括每个点的元数据。

未在视图中的瓦片将被卸载以执行此操作。

如果降低这个值导致卸载瓦片,瓦片将在下一帧卸载。

如果瓦片的大小大于maximumMemoryUsage需要满足所需的屏幕空间误差,由Cesium3DTileset#maximumScreenSpaceError决定, 对于当前视图,那么加载瓦片的内存使用将超过maximumMemoryUsage。 例如,如果最大值是256 MB,但是需要300 MB的瓦片来满足屏幕空间误差,那么可能会加载300 MB的瓦片。当这些瓦片离开视图时,它们将被卸载。

Default Value: 512
参考:
maximumScreenSpaceError : Number
用于驱动细化级别的最大屏幕空间误差。这个值有助于确定何时对其后代进行细分,因此在平衡性能和视觉质量方面起着重要作用。

瓦片的屏幕空间误差大致相当于在瓦片的位置渲染一个半径等于瓦片的geometric error的球体时绘制的像素宽度。 如果该值超过maximumScreenSpaceError,则瓦片将细化为它的后代。

根据tileset的不同,maximumScreenSpaceError可能需要调整以达到正确的平衡。 较高的值提供更好的性能和较低的视觉质量。

Default Value: 16
一个4x4变换矩阵,变换整个tileset。
Default Value: Matrix4.IDENTITY
示例:
// 从地球表面调整tileset的高度。
var heightOffset = 20.0;
var boundingSphere = tileset.boundingSphere;
var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
选择控制点大小基于几何误差和圆顶(eye dome)光照。
preferLeaves : Boolean
优化选项。首选加载子代。
Default Value: false
preloadFlightDestinations : Boolean
优化选项。当相机飞行时,在相机的飞行目的地预加载瓦片。
Default Value: true
preloadWhenHidden : Boolean
tileset.showfalse时预加载瓦片。加载瓦片,就好像瓦片是可见的,但不渲染它们。
Default Value: false
progressiveResolutionHeightFraction : Number
如果介于(0.0,0.5]之间,则将优先考虑屏幕空间错误或高于屏幕空间错误的图块,以降低 progressiveResolutionHeightFraction*screenHeight 的屏幕分辨率, 这可以在下载全分辨率瓦片时,快速得到一个图层。
Default Value: 0.3
readonlyproperties : Object
获取tileset的属性字典对象,该对象包含关于每个要素属性的元数据。

请参考 3D Tiles规范中的properties schema reference以获得完整的属性集。

示例:
console.log('Maximum building height: ' + tileset.properties.height.maximum);
console.log('Minimum building height: ' + tileset.properties.height.minimum);
参考:
readonlyready : Boolean
true时,加载tileset的根瓦片,tileset准备渲染。 在解析Cesium3DTileset#readyPromise之前,将其设置为true
Default Value: false
readonlyreadyPromise : Promise.<Cesium3DTileset>
获取将在加载tileset的根瓦片并准备渲染tileset时解析的约定(promise)。

此约定在帧的末尾解析,然后在第一个帧中渲染tileset。

示例:
tileset.readyPromise.then(function(tileset) {
    // tile.properties is not defined until readyPromise resolves.
    var properties = tileset.properties;
    if (Cesium.defined(properties)) {
        for (var name in properties) {
            console.log(properties[name]);
        }
    }
});
根瓦片。
确定tileset是否从每个光源投射或接收阴影。

启用阴影会影响性能。投下阴影的tileset必须被渲染两次,一次是在相机上,一次是在光的视点。

只有当Viewer#shadowstrue时,才会渲染阴影。

Default Value: ShadowMode.ENABLED
确定是否显示tileset。
Default Value: true
skipLevelOfDetail : Boolean
优化选项。确定在遍历过程中是否应该应用详细跳越级别。

置换-细化(replacement-refinement)遍历的常用策略是将树的所有级别存储在内存中,并要求在父级细化之前加载所有子级。 通过这种优化,可以完全跳过树的级别,并且可以在父级旁边渲染子级。在使用这种优化时,tileset需要的内存要少得多。

Default Value: true
skipLevels : Number
常量定义在加载瓦片时要跳过的最小级别数。当为0时,不会跳过任何级别。 例如,如果一个瓦片是1级的,那么只有当瓦片的级别大于2时才会加载它。

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: 1
skipScreenSpaceErrorFactor : Number
定义要跳过的最小屏幕空间误差的乘数。 例如,如果一个瓦片的屏幕空间误差为100,那么就不会加载瓦片, 除非它们是子代(leaves)或者有一个屏幕空间误差<= 100 / skipScreenSpaceErrorFactor

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: 16
specularEnvironmentMaps : String
一个指向KTX文件的URL,该文件包含高光照明和复杂的镜面反射贴图的立方体映射。
演示Demo:
参考:
sphericalHarmonicCoefficients : Array.<Cartesian3>
三阶球谐函数系数用于基于图像的光照漫反射颜色。当undefined时,使用大气颜色计算漫射辐照度。

有9个Cartesian3系数。 系数的顺序是:L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22

这些值可以通过使用Google's Filament projectcmgen工具对环境地图进行预处理得到。 这还将生成一个KTX文件,该文件可以提供给Cesium3DTileset#specularEnvironmentMaps
演示Demo:
参考:
使用3D Tiles Styling language定义的样式应用于tileset中的每个要素。

赋值undefined以移除样式,当没有应用样式时,将恢复tileset的视觉外观为其默认值。

Cesium3DTileset#tileVisible事件引发之前,将样式应用于瓦片, 因此tileVisible中的代码可以在样式应用后手动设置要素的属性(例如颜色和显示)。 当分配一个新样式时,任何手动设置的属性都会被覆盖。

Default Value: undefined
示例:
tileset.style = new Cesium.Cesium3DTileStyle({
   color : {
       conditions : [
           ['${Height} >= 100', 'color("purple", 0.5)'],
           ['${Height} >= 50', 'color("red")'],
           ['true', 'color("blue")']
       ]
   },
   show : '${Height} > 0',
   meta : {
       description : '"Building id ${id} has height ${Height}."'
   }
});
参考:
指示瓦片的内容未能加载而触发的事件。

如果没有事件监听器,错误消息将被记录到控制台。

传递给监听器的错误对象包含两个属性:

  • url:失败瓦片的url。
  • message:错误消息。
Default Value: new Event()
示例:
tileset.tileFailed.addEventListener(function(error) {
    console.log('An error occurred loading tile: ' + error.url);
    console.log('Error: ' + error.message);
});
指示加载了瓦片内容而触发的事件。

加载的Cesium3DTile被传递给事件监听器。

在渲染帧时,此事件在tileset遍历期间触发,以便对瓦片的更新在同一帧中生效。 不要在事件监听器期间创建或修改Cesium实体(entities)或图元(primitives)。

Default Value: new Event()
示例:
tileset.tileLoad.addEventListener(function(tile) {
    console.log('A tile was loaded.');
});
readonlytilesLoaded : Boolean
true时,满足屏幕空间误差的所有瓦片都被加载。此视图的tileset已完全加载。
Default Value: false
参考:
指示已卸载瓦片内容而触发的事件。

卸载的Cesium3DTile被传递给事件监听器。

在渲染帧时,此事件在瓦片的内容被卸载之前立即触发,以便事件监听器能够访问瓦片的内容。 不要在事件监听器期间创建或修改Cesium实体(entities)或图元(primitives)。

Default Value: new Event()
示例:
tileset.tileUnload.addEventListener(function(tile) {
    console.log('A tile was unloaded from the cache.');
});
参考:
此事件为帧中的每个可见瓦片触发一次。这可以用来手动设计一个tileset。

可见的Cesium3DTile被传递给事件监听器。

在渲染帧时,此事件在tileset遍历期间触发,以便对瓦片的更新在同一帧中生效。 不要在事件监听器期间创建或修改Cesium实体(entities)或图元(primitives)。

Default Value: new Event()
示例:
tileset.tileVisible.addEventListener(function(tile) {
    if (tile.content instanceof Cesium.Batched3DModel3DTileContent) {
        console.log('A Batched 3D Model tile is visible.');
    }
});
// 应用一个红色的样式,然后为每一个其他的要素手动设置随机的颜色时,瓦片变得可见。
tileset.style = new Cesium.Cesium3DTileStyle({
    color : 'color("red")'
});
tileset.tileVisible.addEventListener(function(tile) {
    var content = tile.content;
    var featuresLength = content.featuresLength;
    for (var i = 0; i < featuresLength; i+=2) {
        content.getFeature(i).color = Cesium.Color.fromRandom();
    }
});
readonlytimeSinceLoad : Number
返回时间(以毫秒为单位),因为tileset已加载并首次更新。
readonlytotalMemoryUsageInBytes : Number
tileset使用的GPU内存总量(以字节为单位)。 这个值是根据加载的瓦片的几何形状、纹理和批处理表纹理来估计的。对于点云,这个值还包括每个点的元数据。
参考:
readonlyurl : String
指向tileset JSON文件的url。

内置方法

staticCesium.Cesium3DTileset.loadJson(tilesetUrl)Promise.<Object>
提供一个钩子来覆盖用于请求tileset json的方法,该方法在从远程服务器获取tileset时非常有用。
Name Type Description
tilesetUrl Resource | String 要获取的json文件的url。
返回值:
使用获取的json数据解析的约定(promise)。
销毁此对象持有的WebGL资源。销毁一个对象允许WebGL资源的确定性释放,而不是依赖于垃圾收集器来销毁这个对象。

对象一旦被摧毁,就不应该被使用;调用除isDestroyed之外的任何函数都会导致DeveloperError异常。 因此,将返回值(undefined)赋给对象,如示例所示。
异常情况:
  • DeveloperError : 这个对象被销毁了。即:destroy()被调用。
示例:
tileset = tileset && tileset.destroy();
参考:
hasExtension(extensionName)Boolean
如果tileset JSON文件在extensionsUsed中列出了扩展名,则true;否则,false
Name Type Description
extensionName String 要检查的扩展名。
返回值:
如果tileset JSON文件在extensionsUsed中列出了扩展名,则true;否则,false
isDestroyed()Boolean
如果该对象被销毁,则返回true;否则,false。

对象一旦被摧毁,就不应该被使用;调用除isDestroyed之外的任何函数都会导致DeveloperError异常。
返回值:
如果该对象被销毁,则返回true;否则,false
参考:
将tileset的Cesium3DTileset#style标记为dirty,这将强制所有要素在下一帧中重新评估样式,每个要素都是可见的。
trimLoadedTiles()
卸载上一帧没有选中的所有瓦片。 这可以用来显式地管理瓦片缓存并减少下面加载的瓦片的总数。 Cesium3DTileset#maximumMemoryUsage.

瓦片卸载发生在下一帧,以保持所有的WebGL删除调用在渲染循环。

类型定义

foveatedInterpolationCallback(p, q, time)Number
优化选项。当Cesium3DTileset#foveatedScreenSpaceError真时用作回调,用于控制在圆锥体中心凹外的瓦片的屏幕空间误差上升多少, 在Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxationCesium3DTileset#maximumScreenSpaceError之间插值。
Name Type Description
p Number 要插入的起始值。
q Number 要插入的结束值。
time Number 插值时间一般在[0.0, 1.0]范围内。
返回值:
插值。
Default Value: Math.lerp

其他API

Cesium中文API文档手册(v1.63.1版本)参考:《Cesium中文API文档手册(v1.63.1版本)

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)