Cesium3DTileset

new SuperMap3D.Cesium3DTileset(options)

3D Tiles tileset, 用于流式传输大规模异构3D地理空间数据集。
Name Type Description
options Object 具有以下属性的对象:
Name Type Default Description
isSuperMapiServer Boolean false optional tileset.json 文件来自 isSuperMapiServer。
show Boolean true optional 确定是否显示瓦片组。
modelMatrix Matrix4 Matrix4.IDENTITY optional 一个 4x4 变换矩阵,用于变换瓦片组的根瓦片。
shadows ShadowMode ShadowMode.ENABLED optional 确定瓦片组是否从每个光源投射或接收阴影。
maximumScreenSpaceError Number 16 optional 最大屏幕空间误差用于驱动细节细化级别。
maximumMemoryUsage Number 512 optional 瓦片组可使用的最大内存容量(MB)。
cullWithChildrenBounds Boolean true optional 优化选项。是否使用瓦片的子边界卷积的联合来剔除瓦片。
dynamicScreenSpaceError Boolean false optional 优化选项。减少距离摄像头较远的磁贴的屏幕空间误差。
dynamicScreenSpaceErrorDensity Number 0.00278 optional 用于调整动态屏幕空间误差的密度,与雾密度类似。
dynamicScreenSpaceErrorFactor Number 4.0 optional 用于增加计算出的动态屏幕空间误差的系数。
dynamicScreenSpaceErrorHeightFalloff Number 0.25 optional 瓦片集的高度比,在此高度上密度开始下降。
skipLevelOfDetail Boolean true optional 优化选项。确定在遍历过程中是否要跳过细节级别。
baseScreenSpaceError Number 1024 optional 当skipLevelOfDetail为true时,必须达到的屏幕空间误差阈值,才能跳过细节级别。
skipScreenSpaceErrorFactor Number 16 optionalskipLevelOfDetailtrue时,一个乘数,定义最小的屏幕空间误差以跳过。与skipLevels一起使用,以确定加载哪些瓷砖。
skipLevels Number 1 optionalskipLevelOfDetailtrue时,一个常量,定义加载纹理时跳过的最小层数。当其值为0时,不跳过任何层。与skipScreenSpaceErrorFactor一起使用,以确定加载哪些纹理。
immediatelyLoadDesiredLevelOfDetail Boolean false optionalskipLevelOfDetailtrue时,只有满足最大屏幕空间错误的瓦片才会被下载。跳过因素被忽略,只加载所需的瓦片。
loadSiblings Boolean false optionalskipLevelOfDetailtrue时,决定在遍历过程中是否总是下载可见瓦片的同级瓦片。
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时,绘制标签以指示每个瓦片所使用的纹理和几何内存(以兆为单位)。
Throws:
Examples:
var tileset = scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{ }));
// Common setting for the skipLevelOfDetail optimization
var tileset = scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{
     skipLevelOfDetail : true,
     baseScreenSpaceError : 1024,
     skipScreenSpaceErrorFactor : 16,
     skipLevels : 1,
     immediatelyLoadDesiredLevelOfDetail : false,
     loadSiblings : false,
     cullWithChildrenBounds : true
}));
// Common settings for the dynamicScreenSpaceError optimization
var tileset = scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{
     dynamicScreenSpaceError : true,
     dynamicScreenSpaceErrorDensity : 0.00278,
     dynamicScreenSpaceErrorFactor : 4.0,
     dynamicScreenSpaceErrorHeightFalloff : 0.25
}));
See:

Members

allTilesLoaded : Event

触发此事件以指示在此帧中满足屏幕空间误差的所有瓦片都已加载。对于这个视图,瓦片集已完全加载。

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

Default Value: new Event()
Example:
tileset.allTilesLoaded.addEventListener(function() {
    console.log('All tiles are loaded');
});
See:

readonlyasset : Object

获取瓦片集的资产对象属性,其中包含有关瓦片集的元数据。

参见asset schema 在3D Tiles规范中,用于完整的属性集。

readonlybasePath : String

tileset.json中非绝对路径所相对于的基路径。

baseScreenSpaceError : Number

在跳过细节级别之前必须达到的屏幕空间错误。

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: 1024

readonlyboundingSphere : BoundingSphere

The tileset's bounding sphere.
Example:
var tileset = viewer.scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{ }));

tileset.readyPromise.then(function(tileset) {
    // Set the camera to view the newly added tileset
    viewer.camera.viewBoundingSphere(tileset.boundingSphere, new SuperMap3D.HeadingPitchRange(0, -0.5, 0));
});

colorBlendAmount : Number

Cesium3DTileset#colorBlendModeMIX时,定义用于在线性插值源颜色和特征颜色之间的值。值为0.0时结果是源颜色,值为1.0时结果是特征颜色,任何中间值的结果都是源颜色和特征颜色的混合。
Default Value: 0.5

colorBlendMode : Cesium3DTileColorBlendMode

定义了从SuperMap3D API或声明性样式设置的每个特征颜色如何与原始特征的源颜色混合,例如glTF材质或瓦片中的每个点的颜色。
Default Value: Cesium3DTileColorBlendMode.HIGHLIGHT

debugColorizeTiles : Boolean

这个属性仅用于调试;它没有针对生产环境进行优化。

当为true时,为每个瓦片分配一个随机颜色。这对于可视化哪些模型属于哪些瓦片非常有用,特别是对于加性细化,其中来自父瓦片的模型可能与来自子瓦片的模型交错在一起。

Default Value: false

debugColorizeTiles : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

为true时,会为每个切图随机分配一种颜色。 这对于可视化哪些特征属于哪些瓦片非常有用,尤其是在进行加法细化时,父瓦片的特征可能会与子瓦片的特征交错在一起。

Default Value: false

debugFreezeFrame : Boolean

这个属性仅用于调试;它没有针对生产环境进行优化。

决定是否只使用上一帧的瓦片进行渲染。这样实际上“冻结”了瓦片集到上一帧,所以可以缩小并看到渲染了什么。

Default Value: false

debugFreezeFrame : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

决定是否只使用最后一帧的瓦片进行渲染。这有效地“冻结”了前一帧的瓦片,因此可以缩小并查看渲染的内容。

Default Value: false

debugShowBoundingVolume : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,为每个可见瓦片渲染边界体积。如果瓦片的内容具有明确的边界体积,则边界体积为白色;否则,它为红色。未达到最终分辨率的瓦片为黄色。

Default Value: false

debugShowBoundingVolume : Boolean

该属性仅用于调试,未针对生产使用进行优化。

当为true时,为每个可见瓦片渲染边界体积。如果瓦片具有内容边界体积,则边界体积为白色;否则,它是红色。不符合屏幕空间误差但仍在细化其后代的瓦片是黄色。

Default Value: false

debugShowContentBoundingVolume : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,为每个瓦片的内容渲染一个蓝色的边界体。

Default Value: false

debugShowContentBoundingVolume : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,为每个可见贴图的内容渲染边界体积。如果瓦片具有内容边界体积,则边界体积为蓝色;否则就是红色。

Default Value: false

debugShowGeometricError : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

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

Default Value: false

debugShowGeometricError : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

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

Default Value: false

debugShowMemoryUsage : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,绘制标签以指示每个瓦片的几何和纹理内存使用情况。

Default Value: false

debugShowMemoryUsage : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,绘制标签以指示每个瓦片的几何体和纹理内存使用情况。

Default Value: false

debugShowRenderingStatistics : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

当为true时,绘制标签以指示每个瓦片的命令、点、三角形和特征的数量。

Default Value: false

debugShowRenderingStatistics : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

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

Default Value: false

debugShowViewerRequestVolume : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

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

Default Value: false

debugShowViewerRequestVolume : Boolean

此属性仅用于调试;它没有针对生产使用进行优化。

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

Default Value: false

debugWireframe : Boolean

这个属性仅用于调试;它没有针对生产环境进行优化。

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

Default Value: false

debugWireframe : Boolean

该属性仅用于调试,未针对生产使用进行优化。

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

Default Value: false

dynamicScreenSpaceError : Boolean

优化选项。瓦片集是否应该基于动态屏幕空间误差进行细化。更远的瓦片将比更近的瓦片以较低的细节渲染。这通过渲染较少的瓦片和减少请求来提高性能,但可能会导致远处瓦片的视觉效果略有下降。 该算法偏向于“街景视图”,即相机靠近瓦片集的地面平面并朝地平线看。此外,对于紧密拟合的边界体积,如盒子和区域,结果更准确。
Default Value: false

dynamicScreenSpaceErrorDensity : Number

一个标量,用于确定用于调整动态屏幕空间误差的密度,类似于Fog。增加这个值的效果是增加所有瓦片的最大屏幕空间误差,但以非线性方式。 误差从0.0开始,并在达到中点之前呈指数增长,然后接近1.0。这样做的效果是在较近的瓦片中保持高细节,在较远的瓦片中保持较低的细节,所有超过一定距离的瓦片大致都有一个1.0的误差。

动态误差在范围[0.0, 1.0)内,并且会乘以dynamicScreenSpaceErrorFactor以产生最终的动态误差。然后,这个动态误差会从瓦片的实际屏幕空间误差中减去。

增加dynamicScreenSpaceErrorDensity的效果是将误差中点移向相机。这类似于将雾移向相机。

Default Value: 0.00278

dynamicScreenSpaceErrorFactor : Number

用于增加瓦片的屏幕空间误差的因子,用于动态屏幕空间误差。随着这个值的增加,请求用于渲染的瓦片会减少,远处的瓦片将具有更低的细节。如果设置为零,该功能将被禁用。
Default Value: 4.0

dynamicScreenSpaceErrorHeightFalloff : Number

瓦片集高度的比率,在此高度处密度开始下降。如果相机低于这个高度,则应用计算出的完整密度,否则密度会下降。这在街景视图中产生更高的密度效果。

有效值在0.0到1.0之间。

Default Value: 0.25

immediatelyLoadDesiredLevelOfDetail : Boolean

当为true时,只有满足最大屏幕空间误差的瓦片才会被下载。跳过的因素被忽略,只加载所需的瓦片。

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: false

loadProgress : Event

触发的事件,用于指示加载新瓦片的进度。当请求新瓦片时、请求的瓦片下载完成时,以及下载的瓦片已被处理并准备好渲染时,都会触发此事件。

待处理瓦片请求的数量,numberOfPendingRequests,以及正在处理的瓦片数量,numberOfTilesProcessing,都会传递给事件监听器。

在场景渲染完毕后的帧末尾触发此事件。

Default Value: new Event()
Example:
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

maximumMemoryUsage : Number

可用于瓦片的GPU内存的最大量(以MB为单位)。这个值是从加载瓦片的几何体、纹理和批处理表纹理估算出来的。对于点云,这个值还包括每个点的元数据。

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

如果减小这个值导致卸载瓦片,这些瓦片将在下一帧被卸载。

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

Default Value: 512
See:

maximumScreenSpaceError : Number

用于驱动细节层次细化的最大屏幕空间误差。这个值有助于确定瓦片何时细化到其后代,因此在平衡性能与视觉质量方面起着重要作用。

一个瓦片的屏幕空间误差大致相当于如果一个半径等于瓦片几何误差的球体在瓦片位置渲染时所绘制的像素宽度。 如果这个值超过了maximumScreenSpaceError,瓦片会细化到其后代。

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

Default Value: 16

modelMatrix : Matrix4

一个 4x4 变换矩阵,用于变换整个瓦片集。
Default Value: Matrix4.IDENTITY
Example:
// Adjust a tileset's height from the globe's surface.
var heightOffset = 20.0;
var boundingSphere = tileset.boundingSphere;
var cartographic = SuperMap3D.Cartographic.fromCartesian(boundingSphere.center);
var surface = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
var offset = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
var translation = SuperMap3D.Cartesian3.subtract(offset, surface, new SuperMap3D.Cartesian3());
tileset.modelMatrix = SuperMap3D.Matrix4.fromTranslation(translation);

readonlyproperties : Object

获取瓦片集的属性字典对象,其中包含有关每个特征属性的元数据。

参见properties schema 在3D Tiles规范中,用于完整的属性集。

Example:
console.log('Maximum building height: ' + tileset.properties.height.maximum);
console.log('Minimum building height: ' + tileset.properties.height.minimum);
See:
  • Cesium3DTileFeature#getProperty
  • Cesium3DTileFeature#setProperty

readonlyready : Boolean

为true时,瓦片集的根瓦片被加载,tile集就可以渲染了。在Cesium3DTileset#readyPromise被解析之前,这被设置为true
Default Value: false

readonlyreadyPromise : Promise.<Cesium3DTileset>

获取将在加载瓦片集的根瓦片并且瓦片集准备呈现时解析的promise。

这个Promise在第一帧渲染前的帧结束时解决。

Example:
tileset.readyPromise.then(function(tileset) {
    // tile.properties is not defined until readyPromise resolves.
    var properties = tileset.properties;
    if (SuperMap3D.defined(properties)) {
        for (var name in properties) {
            console.log(properties[name]);
        }
    }
});

shadows : ShadowMode

决定瓦片集是否从每个光源投射或接收阴影。

启用阴影会对性能产生影响。一个投射阴影的瓦片集必须渲染两次,一次从相机视角,另一次从光源视角。

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

Default Value: ShadowMode.ENABLED

show : Boolean

确定是否显示瓦片组。
Default Value: true

skipLevelOfDetail : Boolean

优化选项。确定在遍历过程中是否要跳过细节级别。

替换细化遍历的通用策略是将树的所有级别存储在内存中,并要求在父节点可以细化之前加载所有子节点。通过这种优化,可以完全跳过树的某些级别,并且可以与父节点一起渲染子节点。 使用这种优化时,瓦片集需要的内存显著减少。

Default Value: true

skipLevels : Number

定义加载瓦片时要跳过的最小级别数的常量。当它为0时,不跳过任何级别。例如,如果一个瓦片是1级,除非它们在大于2级的级别上,否则不会加载任何瓦片。

仅当Cesium3DTileset#skipLevelOfDetailtrue时使用。

Default Value: 1

skipScreenSpaceErrorFactor : Number

定义最小屏幕空间误差的乘数以跳过。例如,如果一个瓦片的屏幕空间误差为100,除非它们是叶子节点或有屏幕空间误差<= 100 / skipScreenSpaceErrorFactor,否则不会加载任何瓦片。

仅当 Cesium3DTileset#skipLevelOfDetailtrue 时使用。

Default Value: 16

style : Cesium3DTileStyle

类定义的样式 3D Tiles Styling language, 应用于瓦片集中的每个特征。

指定undefined来删除样式,这将在没有应用样式时将标题集的视觉外观恢复为默认值。

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

Default Value: undefined
Example:
tileset.style = new SuperMap3D.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}."'
   }
});
See:

readonlytilesLoaded : Boolean

为true时,所有满足此帧屏幕空间错误的瓦片都被加载。这个视图的标题集是完全加载的。
Default Value: false
See:

tileUnload : Event

事件被触发以指示瓦片的内容已被卸载。

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

这个事件会在渲染框架时卸载tile的内容之前立即触发,这样事件监听器就可以访问tile的内容。在事件监听器期间,不要创建或修改SuperMap3D实体或原语。

Default Value: new Event()
Example:
tileset.tileUnload.addEventListener(function(tile) {
    console.log('A tile was unloaded from the cache.');
});
See:

tileVisible : Event

该事件对帧中的每个可见瓦片触发一次。 该事件可用于手动设置瓦片集的样式。

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

该事件在渲染帧时的瓦片集遍历过程中触发,以便瓦片的更新在同一帧中生效。 在事件监听期间,请勿创建或修改 SuperMap3D 实体或基元。

Default Value: new Event()
Examples:
tileset.tileVisible.addEventListener(function(tile) {
    if (tile.content instanceof SuperMap3D.Batched3DModel3DTileContent) {
        console.log('A Batched 3D Model tile is visible.');
    }
});
// Apply a red style and then manually set random colors for every other feature when the tile becomes visible.
tileset.style = new SuperMap3D.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 = SuperMap3D.Color.fromRandom();
    }
});

readonlytimeSinceLoad : Number

返回自瓦片集加载并首次更新以来的时间,以毫秒为单位。

readonlytotalMemoryUsageInBytes : Number

瓦片集使用的GPU内存总量,以字节为单位。这个值是从加载瓦片的几何体、纹理和批处理表纹理估算出来的。对于点云,这个值还包括每个点的元数据。
See:

readonlyurl : String

指向一个tileset.json文件的URL,或者是包含tileset.json文件的目录。

Methods

destroy()undefined

销毁该对象持有的 WebGL 资源。销毁对象可以确定性地释放 WebGL 资源,而不是依赖垃圾回收器来销毁该对象。

一旦对象被销毁,就不应再使用;调用除isDestroyed之外的任何函数都将导致DeveloperError 异常。因此,请按照示例中的方法将返回值(undefined)赋值给对象。
Returns:
Throws:
Example:
tileset = tileset && tileset.destroy();
See:

isDestroyed()Boolean

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

如果该对象已被破坏,则不应使用;调用任何函数,除了isDestroyed将导致DeveloperError异常。
Returns:
如果该对象已被销毁,则为 true;否则为 false
See:

makeStyleDirty()

将瓦片集的Cesium3DTileset#style标记为已更改,这将强制所有特征在下一帧可见时重新评估样式。

trimLoadedTiles()

Unloads all tiles that weren't selected the previous frame. This can be used to explicitly manage the tile cache and reduce the total number of tiles loaded below Cesium3DTileset#maximumMemoryUsage.

Tile unloads occur at the next frame to keep all the WebGL delete calls within the render loop.

update()

ViewerWidget渲染场景时调用,以获取渲染此原语所需的绘制命令。

不要直接调用这个函数。这只是为了列出场景渲染时可能传播的异常: