Class: Cesium3DTileset

Cesium3DTileset

new Cesium3DTileset(options)

一个 3D Tiles 瓦片集, 用于流式传输大规模异构 3D 地理空间数据集。

此对象通常不直接实例化,使用 Cesium3DTileset.fromUrl
Name Type Description
options Cesium3DTileset.ConstructorOptions

描述初始化选项的对象

Throws:

瓦片集必须是 3D Tiles 版本 0.0 或 1.0。

Type
DeveloperError
Examples
try {
  const tileset = await SuperMap3D.Cesium3DTileset.fromUrl(
     "Seattle/tileset.json"
  );
  scene.primitives.add(tileset);
} catch (error) {
  console.error(`Error creating tileset: ${error}`);
}
// 开启相机与瓦片集的碰撞检测。
try {
  const tileset = await SuperMap3D.Cesium3DTileset.fromUrl(
     "http://localhost:8002/tilesets/Seattle/tileset.json",
     { enableCollision: true }
  );
  scene.primitives.add(tileset);
} catch (error) {
  console.error(`Error creating tileset: ${error}`);
}
// skipLevelOfDetail 优化的常见设置
const tileset = await SuperMap3D.Cesium3DTileset.fromUrl(
  "http://localhost:8002/tilesets/Seattle/tileset.json", {
     skipLevelOfDetail: true,
     baseScreenSpaceError: 1024,
     skipScreenSpaceErrorFactor: 16,
     skipLevels: 1,
     immediatelyLoadDesiredLevelOfDetail: false,
     loadSiblings: false,
     cullWithChildrenBounds: true
});
scene.primitives.add(tileset);
// dynamicScreenSpaceError 优化的常见设置
const tileset = await SuperMap3D.Cesium3DTileset.fromUrl(
  "http://localhost:8002/tilesets/Seattle/tileset.json", {
     dynamicScreenSpaceError: true,
     dynamicScreenSpaceErrorDensity: 2.0e-4,
     dynamicScreenSpaceErrorFactor: 24.0,
     dynamicScreenSpaceErrorHeightFalloff: 0.25
});
scene.primitives.add(tileset);

Members

allTilesLoadedEvent

用于指示本帧中所有满足屏幕空间误差的瓦片已加载的事件。此时瓦片集在此视图中已完全加载。

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

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

readonly assetobject

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

有关完整的属性集,请参阅 3D Tiles 规范中的 asset 模式参考。

backFaceCullingboolean

是否剔除背面几何。当为 true 时,背面剔除由 glTF 材质的 doubleSided 属性决定;当为 false 时,背面剔除被禁用。

Default Value:
true

(deprecated, readonly) basePathstring

瓦片集 JSON 文件中非绝对路径的相对基础路径。

baseScreenSpaceErrornumber

在跳过细节层次之前必须达到的屏幕空间误差。

仅当 Cesium3DTileset#skipLevelOfDetailtrue 时使用。

Default Value:
1024

readonly boundingSphereBoundingSphere

瓦片集的边界球体。

Example
const tileset = await SuperMap3D.Cesium3DTileset.fromUrl("http://localhost:8002/tilesets/Seattle/tileset.json");

viewer.scene.primitives.add(tileset);

// 设置相机查看新添加的瓦片集
viewer.camera.viewBoundingSphere(tileset.boundingSphere, new SuperMap3D.HeadingPitchRange(0, -0.5, 0));

cacheBytesnumber

用于缓存瓦片的 GPU 内存量(以字节为单位)。此内存使用量是根据加载瓦片的几何、纹理和批处理表纹理估算的。对于点云,此值还包括每个点的元数据。

不在视图中的瓦片会被卸载以强制执行此限制。

如果减少此值导致卸载瓦片,则瓦片会在下一帧被卸载。

如果当前视图需要超过 cacheBytes 大小的瓦片才能满足由 Cesium3DTileset#maximumScreenSpaceError 确定的所需屏幕空间误差,则加载的瓦片的内存使用量将超过 cacheBytes 最多 maximumCacheOverflowBytes。 例如,如果 cacheBytes 为 500000,但需要 600000 字节的瓦片才能满足屏幕空间误差,则可能会加载 600000 字节的瓦片(如果 maximumCacheOverflowBytes 至少为 100000)。 当这些瓦片移出视图时,它们会被卸载。

Default Value:
536870912
See:

readonly classificationTypeClassificationType

确定地形、3D Tiles 或两者是否将被此瓦片集分类。

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

当为批处理 3D 模型和 glTF 瓦片集启用时,glTF 有一些 要求/限制:

  • glTF 不能包含变形目标、蒙皮或动画。
  • glTF 不能包含 EXT_mesh_gpu_instancing 扩展。
  • 只有带有 TRIANGLES 的网格才能用于对其他资产进行分类。
  • 网格必须是水密的。
  • 需要 POSITION 语义。
  • 如果同时存在 _BATCHID 和索引缓冲区,则具有相同批处理 ID 的所有索引必须占据索引缓冲区的连续部分。
  • 如果存在 _BATCHID 但没有索引缓冲区,则具有相同批处理 ID 的所有位置必须占据位置缓冲区的连续部分。

此外,点或实例化 3D 模型不支持分类。

接收分类的 3D Tiles 或地形必须是不透明的。

Default Value:
undefined

clippingPlanesClippingPlaneCollection

The ClippingPlaneCollection used to selectively disable rendering the tileset.

colorBlendAmountnumber

定义当 Cesium3DTileset#colorBlendModeMIX 时,用于在源颜色和要素颜色之间进行线性插值的值。 值为 0.0 时结果为源颜色,值为 1.0 时结果为要素颜色,中间的任何值都会导致源颜色和要素颜色的混合。

Default Value:
0.5

定义从 SuperMap3D API 或声明式样式设置的每要素颜色如何与原始要素的源颜色混合,例如 glTF 材质或瓦片中的每点颜色。

Default Value:
Cesium3DTileColorBlendMode.HIGHLIGHT

cullRequestsWhileMovingboolean

优化选项。不要请求因相机移动而可能在返回时未使用的瓦片。此优化仅适用于静止的瓦片集。

Default Value:
true

cullRequestsWhileMovingMultipliernumber

优化选项。移动时用于剔除请求的乘数。值越大,剔除越积极;值越小,剔除越不积极。

Default Value:
60.0

customShaderCustomShader undefined

应用于瓦片集中所有瓦片的自定义着色器。仅用于 使用 Model 的内容。将自定义着色器与 Cesium3DTileStyle 一起使用可能会导致未定义的行为。

Default Value:
undefined

debugColorizeTilesboolean

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

当为 true 时,为每个瓦片分配随机颜色。这对于可视化哪些要素属于哪些瓦片非常有用,尤其是在 additive 细化中,父瓦片的要素可能与子瓦片的要素交错。

Default Value:
false

debugFreezeFrameboolean

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

确定是否仅使用上一帧的瓦片进行渲染。这有效地将瓦片集"冻结"到上一帧,因此可以缩小并查看渲染的内容。

Default Value:
false

debugShowBoundingVolumeboolean

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

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

Default Value:
false

debugShowContentBoundingVolumeboolean

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

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

Default Value:
false

debugShowGeometricErrorboolean

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

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

Default Value:
false

debugShowMemoryUsageboolean

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

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

Default Value:
false

debugShowRenderingStatisticsboolean

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

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

Default Value:
false

debugShowUrlboolean

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

当为 true 时,绘制标签以指示每个瓦片的 URL。

Default Value:
false

debugShowViewerRequestVolumeboolean

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

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

Default Value:
false

debugWireframeboolean

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

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

Default Value:
false

deprecated disableCollisionboolean

是否关闭相机碰撞或拾取的碰撞检测。当此值为 true 时,如果 ScreenSpaceCameraController#enableCollisionDetection 为 true,相机将被允许进入或低于瓦片集表面。

Default Value:
true

dynamicScreenSpaceErrorboolean

优化选项。对于街道级地平线视图,使用离相机较远的低分辨率瓦片。这减少了加载的数据量并改善了瓦片集加载时间,同时远处的视觉质量略有下降。

当相机靠近瓦片集的地平面并看向地平线时,此优化效果最强。此外,对于紧密拟合的边界体积(如盒子和区域),结果更准确。

Default Value:
true

dynamicScreenSpaceErrorDensitynumber

类似于 Fog#density,此选项控制 Cesium3DTileset#dynamicScreenSpaceError 优化适用的相机距离。值越大,越靠近相机的瓦片会受到影响。此值必须非负。

此优化通过像钟形曲线一样随相机距离降低瓦片屏幕空间误差(SSE)来工作。这具有选择远离相机的低分辨率瓦片的效果。在相机附近,不进行调整。对于更远的瓦片,SSE 最多减少 Cesium3DTileset#dynamicScreenSpaceErrorFactor(以误差像素为单位)。

增加密度会使钟形曲线变窄,从而影响更靠近相机的瓦片。这类似于将雾移近相机。

当密度为 0 时,优化对瓦片集没有影响。

Default Value:
2.0e-4

dynamicScreenSpaceErrorFactornumber

控制地平线瓦片 Cesium3DTileset#dynamicScreenSpaceError 优化强度的参数。值越大,加载的分辨率越低的瓦片,从而以略微降低视觉质量为代价提高运行性能。此值必须非负。

更具体地说,此参数表示对远离相机的瓦片的屏幕空间误差(SSE)的最大调整(以像素为单位)。有关此优化如何工作的更多详细信息,请参见 Cesium3DTileset#dynamicScreenSpaceErrorDensity

当 SSE 因子设置为 0 时,优化对瓦片集没有影响。

Default Value:
24.0

dynamicScreenSpaceErrorHeightFalloffnumber

瓦片集高度的比率,用于确定 Cesium3DTileset#dynamicScreenSpaceError 优化的"街道级"。当相机低于此高度时,动态屏幕空间误差优化将产生最大效果,在此值以上会逐渐减弱。有效值在 0.0 和 1.0 之间。

Default Value:
0.25

readonly ellipsoidEllipsoid

获取描述地球形状的椭球体。

enableCollisionboolean

如果 true,允许相机碰撞或拾取的碰撞检测。当此值为 trueScreenSpaceCameraController#enableCollisionDetection 为 true 时,相机将被阻止进入或低于瓦片集表面。如果瓦片集包含具有大量顶点的瓦片,这可能会对性能产生影响。

Default Value:
false

examineVectorLinesFunctionfunction

用于在流式传输时检查矢量线的函数。

readonly extensionsobject

Gets the tileset's extensions object property.

readonly extras*

返回瓦片集 JSON 顶层的 extras 属性,其中包含应用程序特定的元数据。 如果 extras 不存在,则返回 undefined

featureIdLabelstring

用于拾取和样式化的要素 ID 集的标签。

对于 EXT_mesh_features,这是要素 ID 的 label 属性,或者当未指定时为 "featureId_N"(其中 N 是 featureIds 数组中的索引)。EXT_feature_metadata 没有 label 字段,因此此类 要素 ID 集始终标记为 "featureId_N",其中 N 是所有要素 ID 列表中的索引,要素 ID 属性列在 要素 ID 纹理之前。

如果 featureIdLabel 设置为整数 N,它会自动转换为 字符串 "featureId_N"。如果同时存在每个图元的要素 ID 和 每个实例的要素 ID,则实例要素 ID 优先。

foveatedConeSizenumber

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时使用,用于控制确定哪些瓦片被延迟加载的锥体大小。 在此锥体内的瓦片会立即加载。锥体外部的瓦片可能会根据它们离锥体的距离以及 Cesium3DTileset#foveatedInterpolationCallbackCesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation 被延迟加载。 将此值设置为 0.0 意味着锥体将是由相机位置及其观察方向形成的线。将此值设置为 1.0 意味着锥体包含相机的整个视野,实际上禁用了该效果。

Default Value:
0.3

foveatedInterpolationCallbackCesium3DTileset.foveatedInterpolationCallback

获取或设置一个回调函数,用于控制如何提高 foveated 圆锥外瓦片的屏幕空间误差,在 Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxationCesium3DTileset#maximumScreenSpaceError 之间进行插值。

foveatedMinimumScreenSpaceErrorRelaxationnumber

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时使用,用于控制凹视锥体外瓦片的起始屏幕空间误差松弛值。 基于提供的 Cesium3DTileset#foveatedInterpolationCallback,屏幕空间误差将从该值开始增加,直到 Cesium3DTileset#maximumScreenSpaceError

Default Value:
0.0

foveatedScreenSpaceErrorboolean

优化选项。通过临时提高屏幕边缘瓦片的屏幕空间误差来优先加载屏幕中心的瓦片。一旦屏幕中心的所有瓦片(由 Cesium3DTileset#foveatedConeSize 确定)加载完成,屏幕空间误差将恢复正常。

Default Value:
true

foveatedTimeDelaynumber

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时使用,用于控制相机停止移动后等待多长时间(以秒为单位)才开始加载延迟的瓦片。此时间延迟可防止相机移动时请求屏幕边缘的瓦片。设置为 0.0 将立即请求任何给定视图中的所有瓦片。

Default Value:
0.2

imageBasedLightingImageBasedLighting

用于管理此瓦片集上基于图像的照明的属性。

readonly imageryLayersImageryLayerCollection

提供二维地理参考影像数据的ImageryLayer对象集合,这些影像将会渲染在该3D Tiles数据集之上。

影像将覆盖在glTF、B3DM、PNTS或GeoJSON类型的瓦片内容表面

See:
Example
var provider = new SuperMap3D.SuperMapImageryProvider({url : URL_CONFIG.ZF_IMG});
provider.readyPromise.then(function() {
   tileset.imageryLayers.addImageryProvider(provider);      
});

immediatelyLoadDesiredLevelOfDetailboolean

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

仅当 Cesium3DTileset#skipLevelOfDetailtrue 时使用。

Default Value:
false

initialTilesLoadedEvent

用于指示本帧中所有满足屏幕空间误差的瓦片已加载的事件。此事件在初始视图中的所有瓦片加载完成时触发一次。

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

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

instanceFeatureIdLabelstring

用于拾取和样式化的实例要素 ID 集的标签。

如果 instanceFeatureIdLabel 设置为整数 N,它会自动转换为 字符串 "instanceFeatureId_N"。 如果同时存在每个图元的要素 ID 和每个实例的要素 ID,则 实例要素 ID 优先。

lightColorCartesian3

为模型着色时的光源颜色。当 undefined 时,使用场景的光源颜色。

例如,通过设置 tileset.imageBasedLighting.imageBasedLightingFactor = new Cartesian2(0.0, 0.0) 禁用附加光源 会使瓦片集变得更暗。在这里,增加光源的强度会使瓦片集更亮。

Default Value:
undefined

loadProgressEvent

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

待处理的瓦片请求数量 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}`);
});

loadSiblingsboolean

确定在遍历时是否始终下载可见瓦片的兄弟瓦片。 这对于确保当查看者向左/向右转动时瓦片已经可用可能很有用。

仅当 Cesium3DTileset#skipLevelOfDetailtrue 时使用。

Default Value:
false

maximumCacheOverflowBytesnumber

将用于缓存瓦片的最大额外 GPU 内存量(以字节为单位)。

如果当前视图需要超过 cacheBytes 加上 maximumCacheOverflowBytes 大小的瓦片才能满足由 Cesium3DTileset#maximumScreenSpaceError 确定的所需屏幕空间误差,则 Cesium3DTileset#memoryAdjustedScreenSpaceError 将被调整,直到满足调整后屏幕空间误差所需的瓦片使用量小于 cacheBytes 加上 maximumCacheOverflowBytes

Default Value:
536870912
See:

maximumScreenSpaceErrornumber

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

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

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

Default Value:
16

modelMatrixMatrix4

一个 4x4 变换矩阵,用于变换整个瓦片集。

Default Value:
Matrix4.IDENTITY
Example
// 调整瓦片集相对于地球表面的高度。
const heightOffset = 20.0;
const boundingSphere = tileset.boundingSphere;
const cartographic = SuperMap3D.Cartographic.fromCartesian(boundingSphere.center);
const surface = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
const offset = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
const translation = SuperMap3D.Cartesian3.subtract(offset, surface, new SuperMap3D.Cartesian3());
tileset.modelMatrix = SuperMap3D.Matrix4.fromTranslation(translation);

outlineColorColor

渲染轮廓时使用的颜色。

Default Value:
Color.BLACK

pointCloudShadingPointCloudShading

用于基于几何误差和眼球穹顶照明控制点大小的选项。

preferLeavesboolean

优化选项。优先加载叶瓦片。

Default Value:
false

preloadFlightDestinationsboolean

优化选项。在相机飞行时获取相机飞行目的地的瓦片。

Default Value:
true

preloadWhenHiddenboolean

tileset.showfalse 时预加载瓦片。像瓦片集可见一样加载瓦片,但不渲染它们。

Default Value:
false

progressiveResolutionHeightFractionnumber

优化选项。如果在 (0.0, 0.5] 之间,将优先加载屏幕空间误差达到或超过 progressiveResolutionHeightFraction*screenHeight 降低屏幕分辨率的瓦片。这有助于在全分辨率瓦片继续加载的同时快速加载一层瓦片。

Default Value:
0.3

readonly propertiesobject

获取瓦片集的属性字典对象,其中包含每个要素属性的元数据。

有关完整的属性集,请参阅 3D Tiles 规范中的属性模式参考。

See:
Example
console.log(`Maximum building height: ${tileset.properties.height.maximum}`);
console.log(`Minimum building height: ${tileset.properties.height.minimum}`);

readonly resourceResource

用于获取瓦片集 JSON 文件的资源

readonly rootCesium3DTile

根瓦片。

shadowsShadowMode

决定瓦片集是否投射或接收来自光源的阴影。

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

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

Default Value:
ShadowMode.ENABLED

showboolean

决定是否显示瓦片集。

Default Value:
true

showCreditsOnScreenboolean

确定瓦片集的版权信息是否将显示在屏幕上

Default Value:
false

showOutlineboolean

是否显示使用 CESIUM_primitive_outline 扩展的模型的轮廓。 当为 true 时,显示轮廓。当为 false 时,不显示轮廓。

Default Value:
true

skipLevelOfDetailboolean

优化选项。确定遍历期间是否应应用细节层次跳过。

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

Default Value:
false

skipLevelsnumber

定义加载瓦片时跳过的最小层级数的常量。当为 0 时,不跳过任何层级。 例如,如果瓦片是第 1 级,那么只有层级大于 2 的瓦片才会被加载。

仅当 Cesium3DTileset#skipLevelOfDetailtrue 时使用。

Default Value:
1

skipScreenSpaceErrorFactornumber

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

仅当 Cesium3DTileset#skipLevelOfDetailtrue 时使用。

Default Value:
16

splitDirectionSplitDirection

应用于此瓦片集的 SplitDirection

Default Value:
SplitDirection.NONE

styleCesium3DTileStyle undefined

使用 3D Tiles 样式语言定义的样式,应用于瓦片集中的每个要素。

分配 undefined 以移除样式,这将恢复瓦片集的视觉外观到未应用样式时的默认状态。

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

使用始终为 "true" 的条件来指定所有未被现有条件覆盖的对象的颜色。否则,将使用默认颜色 SuperMap3D.Color.White。 同样,使用始终为 "true" 的条件来指定所有未被现有条件覆盖的对象的 show 属性。否则,将使用默认 show 值 true。

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}."'
   }
});

tileFailedEvent

用于指示瓦片内容加载失败的事件。

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

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

  • url:失败瓦片的 URL。
  • message:错误消息。

如果存在多个内容,此事件会针对每个有错误的内部内容触发一次。

Default Value:
new Event()
Example
tileset.tileFailed.addEventListener(function(error) {
    console.log(`An error occurred loading tile: ${error.url}`);
    console.log(`Error: ${error.message}`);
});

tileLoadEvent

用于指示瓦片内容已加载的事件。

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

此事件在帧渲染过程中的瓦片集遍历期间触发,以便对瓦片的更新在同一帧中生效。不要在事件监听器中创建或修改 SuperMap3D 实体或图元。

Default Value:
new Event()
Example
tileset.tileLoad.addEventListener(function(tile) {
    console.log('A tile was loaded.');
});

readonly tilesLoadedboolean

当为 true 时,所有满足当前帧屏幕空间误差的瓦片都已加载。此视图的瓦片集已完全加载。

Default Value:
false
See:

tileUnloadEvent

用于指示瓦片内容已卸载的事件。

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

此事件在帧渲染过程中瓦片内容即将卸载之前立即触发,以便事件监听器可以访问瓦片的内容。不要在事件监听器中创建或修改 SuperMap3D 实体或图元。

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

tileVisibleEvent

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

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

此事件在帧渲染过程中的瓦片集遍历期间触发,以便对瓦片的更新在同一帧中生效。不要在事件监听器中创建或修改 SuperMap3D 实体或图元。

Default Value:
new Event()
Examples
tileset.tileVisible.addEventListener(function(tile) {
    if (tile.content instanceof SuperMap3D.Model3DTileContent) {
        console.log('A 3D model tile is visible.');
    }
});
// 应用红色样式,然后在瓦片变为可见时为每隔一个要素手动设置随机颜色。
tileset.style = new SuperMap3D.Cesium3DTileStyle({
    color : 'color("red")'
});
tileset.tileVisible.addEventListener(function(tile) {
    const content = tile.content;
    const featuresLength = content.featuresLength;
    for (let i = 0; i < featuresLength; i+=2) {
        content.getFeature(i).color = SuperMap3D.Color.fromRandom();
    }
});

readonly timeSinceLoadnumber

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

readonly totalMemoryUsageInBytesnumber

The total amount of GPU memory in bytes used by the tileset. This value is estimated from geometry, texture, batch table textures, and binary metadata of loaded tiles.

See:

vectorClassificationOnlyboolean

指示仅应使用瓦片集的矢量瓦片进行分类。

Default Value:
false

vectorKeepDecodedPositionsboolean

矢量瓦片是否应在内存中保留解码的位置。 这与 Cesium3DTileFeature.getPolylinePositions 一起使用。

Default Value:
false

Methods

static fromIonAssetId(assetId, options){Promise.<Cesium3DTileset>}

从 SuperMap3D ion 资产 ID 创建一个 3D Tiles 瓦片集, 用于流式传输大规模异构 3D 地理空间数据集。

Name Type Description
assetId number

SuperMap3D ion 资产 ID。

options Cesium3DTileset.ConstructorOptions 可选

描述初始化选项的对象

See:
  • Cesium3DTileset#fromUrl
Throws:

当瓦片集资产版本不是 0.0、1.0 或 1.1 时, 或者当瓦片集包含不受支持的必需扩展时。

Type
RuntimeError
Returns:
Type Description
Promise.<Cesium3DTileset>
Example
// 加载 SuperMap3D ion 资产 ID 为 124624234 的 Cesium3DTileset
try {
  const tileset = await SuperMap3D.Cesium3DTileset.fromIonAssetId(124624234);
  scene.primitives.add(tileset);
} catch (error) {
  console.error(`Error creating tileset: ${error}`);
}

static fromUrl(url, options){Promise.<Cesium3DTileset>}

创建一个 3D Tiles 瓦片集, 用于流式传输大规模异构 3D 地理空间数据集。

Name Type Description
url Resource | string

指向 tileset JSON 文件的 URL。

options Cesium3DTileset.ConstructorOptions 可选

描述初始化选项的对象

See:
  • Cesium3DTileset#fromIonAssetId
Throws:

当瓦片集资产版本不是 0.0、1.0 或 1.1 时, 或者当瓦片集包含不受支持的必需扩展时。

Type
RuntimeError
Returns:
Type Description
Promise.<Cesium3DTileset>
Examples
try {
  const tileset = await SuperMap3D.Cesium3DTileset.fromUrl(
     "http://localhost:8002/tilesets/Seattle/tileset.json"
  );
  scene.primitives.add(tileset);
} catch (error) {
  console.error(`Error creating tileset: ${error}`);
}
// skipLevelOfDetail 优化的常见设置
const tileset = await SuperMap3D.Cesium3DTileset.fromUrl(
  "http://localhost:8002/tilesets/Seattle/tileset.json", {
     skipLevelOfDetail: true,
     baseScreenSpaceError: 1024,
     skipScreenSpaceErrorFactor: 16,
     skipLevels: 1,
     immediatelyLoadDesiredLevelOfDetail: false,
     loadSiblings: false,
     cullWithChildrenBounds: true
});
scene.primitives.add(tileset);
// Common settings for the dynamicScreenSpaceError optimization
const tileset = await SuperMap3D.Cesium3DTileset.fromUrl(
  "http://localhost:8002/tilesets/Seattle/tileset.json", {
     dynamicScreenSpaceError: true,
     dynamicScreenSpaceErrorDensity: 2.0e-4,
     dynamicScreenSpaceErrorFactor: 24.0,
     dynamicScreenSpaceErrorHeightFalloff: 0.25
});
scene.primitives.add(tileset);

static loadJson(tilesetUrl){Promise.<object>}

提供一个钩子来覆盖用于请求瓦片集 JSON 的方法 在从远程服务器获取瓦片集时很有用

Name Type Description
tilesetUrl Resource | string

要获取的 JSON 文件的 URL

Returns:
Type Description
Promise.<object> 解析为获取的 JSON 数据的 Promise

destroy()

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

一旦对象被销毁,就不应使用它;调用除 isDestroyed 之外的任何函数将导致 DeveloperError 异常。因此, 如示例中所示,将返回值 (undefined) 分配给对象。

See:
Throws:

此对象已被销毁,即已调用 destroy()。

Type
DeveloperError
Example
tileset = tileset && tileset.destroy();

getHeight(cartographic, scene){number|undefined}

获取给定制图位置的加载表面高度。此函数仅考虑已加载瓦片的网格,不一定是瓦片集可用的最详细瓦片。当对激光点云进行采样时,此函数始终返回 undefined。

Name Type Description
cartographic Cartographic

要查找高度的制图位置。

scene Scene

可视化发生的场景。

Returns:
Type Description
number | undefined 制图位置的高度,如果找不到则为 undefined。
Example
const tileset = await SuperMap3D.Cesium3DTileset.fromIonAssetId(124624234);
scene.primitives.add(tileset);

const height = tileset.getHeight(scene.camera.positionCartographic, scene);

getTraversal(passOptions){function}

获取瓦片遍历策略,根据通道类型和是否启用细节层次跳过。

Name Type Description
passOptions object

通道选项

Returns:
Type Description
function 瓦片遍历函数

hasExtension(extensionName){boolean}

如果瓦片集 JSON 文件在 extensionsUsed 中列出了该扩展,则为 true;否则为 false

Name Type Description
extensionName string

要检查的扩展的名称。

Returns:
Type Description
boolean 如果瓦片集 JSON 文件在 extensionsUsed 中列出了该扩展,则为 true;否则为 false

isDestroyed(){boolean}

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

如果此对象已被销毁,则不应使用它;调用除 isDestroyed 之外的任何函数将导致 DeveloperError 异常。

See:
Returns:
Type Description
boolean 如果此对象已被销毁,则返回 true;否则,返回 false

makeStyleDirty()

将瓦片集的 Cesium3DTileset#style 标记为脏,这会强制所有 要素在下次可见时重新评估样式。

trimLoadedTiles()

卸载上一帧未被选择的所有瓦片。这可以用于 显式管理瓦片缓存并将加载的瓦片总数减少到 Cesium3DTileset#cacheBytes 以下。

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

Type Definitions

ConstructorOptionsObject

Cesium3DTileset 构造函数的初始化选项

Properties:
Name Type Default Description
show boolean true 可选

决定是否显示 tileset。

modelMatrix Matrix4 Matrix4.IDENTITY 可选

一个 4x4 变换矩阵,用于变换 tileset 的根瓦片。

modelUpAxis Axis Axis.Y 可选

加载瓦片内容模型时被视为向上的轴。

modelForwardAxis Axis Axis.X 可选

加载瓦片内容模型时被视为向前的轴。

shadows ShadowMode ShadowMode.ENABLED 可选

决定 tileset 是否投射或接收来自光源的阴影。

maximumScreenSpaceError number 16 可选

用于驱动细节层次细化的最大屏幕空间误差。

cacheBytes number 536870912 可选

如果缓存包含当前视图不需要的瓦片,瓦片缓存将被裁剪到的大小(以字节为单位)。

maximumCacheOverflowBytes number 536870912 可选

如果当前视图需要的瓦片超过 Cesium3DTileset#cacheBytes,允许的额外内存(以字节为单位)上限。

cullWithChildrenBounds boolean true 可选

优化选项。是否使用子瓦片边界体积的并集来剔除瓦片。

cullRequestsWhileMoving boolean true 可选

优化选项。不要请求因相机移动而可能在返回时未使用的瓦片。此优化仅适用于静止的 tileset。

cullRequestsWhileMovingMultiplier number 60.0 可选

优化选项。移动时用于剔除请求的乘数。值越大,剔除越积极;值越小,剔除越不积极。

preloadWhenHidden boolean false 可选

tileset.showfalse 时预加载瓦片。像 tileset 可见一样加载瓦片,但不渲染它们。

preloadFlightDestinations boolean true 可选

优化选项。在相机飞行时预加载相机飞行目的地的瓦片。

preferLeaves boolean false 可选

优化选项。优先加载叶瓦片。

dynamicScreenSpaceError boolean true 可选

优化选项。对于街道级地平线视图,使用离相机较远的低分辨率瓦片。这减少了加载的数据量并改善了 tileset 加载时间,同时远处的视觉质量略有下降。

dynamicScreenSpaceErrorDensity number 2.0e-4 可选

类似于 Fog#density,此选项控制 Cesium3DTileset#dynamicScreenSpaceError 优化适用的相机距离。值越大,越靠近相机的瓦片会受到影响。

dynamicScreenSpaceErrorFactor number 24.0 可选

控制地平线瓦片 Cesium3DTileset#dynamicScreenSpaceError 优化强度的参数。值越大,加载的分辨率越低的瓦片,从而以略微降低视觉质量为代价提高运行性能。

dynamicScreenSpaceErrorHeightFalloff number 0.25 可选

tileset 高度的比率,用于确定"街道级"相机视图的位置。当相机低于此高度时,Cesium3DTileset#dynamicScreenSpaceError 优化将产生最大效果,在此值以上会逐渐减弱。

progressiveResolutionHeightFraction number 0.3 可选

优化选项。如果在 (0.0, 0.5] 之间,将优先加载屏幕空间误差达到或超过 progressiveResolutionHeightFraction*screenHeight 降低屏幕分辨率的瓦片。这有助于在全分辨率瓦片继续加载的同时快速加载一层瓦片。

foveatedScreenSpaceError boolean true 可选

优化选项。通过临时提高屏幕边缘瓦片的屏幕空间误差来优先加载屏幕中心的瓦片。一旦屏幕中心的所有瓦片(由 Cesium3DTileset#foveatedConeSize 确定)加载完成,屏幕空间误差将恢复正常。

foveatedConeSize number 0.1 可选

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时使用,用于控制决定哪些瓦片被延迟加载的圆锥大小。圆锥内的瓦片立即加载。圆锥外的瓦片根据它们离圆锥的距离和屏幕空间误差可能被延迟加载。这由 Cesium3DTileset#foveatedInterpolationCallbackCesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation 控制。设置为 0.0 表示圆锥将是由相机位置及其视图方向形成的直线。设置为 1.0 表示圆锥包含相机的整个视场,禁用此效果。

foveatedMinimumScreenSpaceErrorRelaxation number 0.0 可选

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时使用,用于控制圆锥外瓦片的起始屏幕空间误差松弛值。屏幕空间误差将从该值开始,基于提供的 Cesium3DTileset#foveatedInterpolationCallback 增加到 Cesium3DTileset#maximumScreenSpaceError

foveatedInterpolationCallback Cesium3DTileset.foveatedInterpolationCallback Math.lerp 可选

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时使用,用于控制圆锥外瓦片的屏幕空间误差增加程度,在 Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxationCesium3DTileset#maximumScreenSpaceError 之间进行插值

foveatedTimeDelay number 0.2 可选

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时使用,用于控制相机停止移动后等待多长时间(以秒为单位)才开始加载延迟的瓦片。此时间延迟可防止相机移动时请求屏幕边缘的瓦片。设置为 0.0 将立即请求任何给定视图中的所有瓦片。

skipLevelOfDetail boolean false 可选

优化选项。确定遍历期间是否应应用细节层次跳过。

baseScreenSpaceError number 1024 可选

skipLevelOfDetailtrue 时,必须达到的屏幕空间误差,然后才能跳过细节层次。

skipScreenSpaceErrorFactor number 16 可选

skipLevelOfDetailtrue 时,定义要跳过的最小屏幕空间误差的乘数。与 skipLevels 一起使用,以确定要加载哪些瓦片。

skipLevels number 1 可选

skipLevelOfDetailtrue 时,定义加载瓦片时要跳过的最小级别数。当为 0 时,不跳过任何级别。与 skipScreenSpaceErrorFactor 一起使用,以确定要加载哪些瓦片。

immediatelyLoadDesiredLevelOfDetail boolean false 可选

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

loadSiblings boolean false 可选

skipLevelOfDetailtrue 时,确定在遍历时是否始终下载可见瓦片的兄弟瓦片。

clippingPlanes ClippingPlaneCollection 可选

用于选择性禁用 tileset 渲染的 ClippingPlaneCollection

classificationType ClassificationType 可选

确定此 tileset 将对地形、3D Tiles 还是两者进行分类。有关限制和局限性的详细信息,请参见 Cesium3DTileset#classificationType

ellipsoid Ellipsoid Ellipsoid.WGS84 可选

确定地球大小和形状的椭球体。

pointCloudShading object 可选

用于构造 PointCloudShading 对象的选项,以控制基于几何误差和光照的点衰减。

lightColor Cartesian3 可选

为模型着色时的光源颜色。当 undefined 时,使用场景的光源颜色。

imageBasedLighting ImageBasedLighting 可选

用于管理此 tileset 的基于图像的光照的属性。

backFaceCulling boolean true 可选

是否剔除背面几何。当为 true 时,背面剔除由 glTF 材质的 doubleSided 属性决定;当为 false 时,背面剔除被禁用。

enableShowOutline boolean true 可选

是否为使用 CESIUM_primitive_outline 扩展的模型启用轮廓。可以设置为 false 以避免加载时对几何的额外处理。当为 false 时,showOutlines 和 outlineColor 选项被忽略。

showOutline boolean true 可选

是否显示使用 CESIUM_primitive_outline 扩展的模型的轮廓。当为 true 时,显示轮廓。当为 false 时,不显示轮廓。

outlineColor Color Color.BLACK 可选

渲染轮廓时使用的颜色。

vectorClassificationOnly boolean false 可选

指示仅应使用 tileset 的矢量瓦片进行分类。

vectorKeepDecodedPositions boolean false 可选

矢量瓦片是否应在内存中保留解码的位置。这与 Cesium3DTileFeature.getPolylinePositions 一起使用。

featureIdLabel string | number "featureId_0" 可选

用于拾取和样式化的要素 ID 集的标签。对于 EXT_mesh_features,这是要素 ID 的 label 属性,未指定时为 "featureId_N"(其中 N 是 featureIds 数组中的索引)。EXT_feature_metadata 没有 label 字段,因此此类要素 ID 集始终标记为 "featureId_N",其中 N 是所有要素 ID 列表中的索引,要素 ID 属性列在要素 ID 纹理之前。如果 featureIdLabel 是整数 N,它会自动转换为字符串 "featureId_N"。如果同时存在每个图元和每个实例的要素 ID,则实例要素 ID 优先。

instanceFeatureIdLabel string | number "instanceFeatureId_0" 可选

用于拾取和样式化的实例要素 ID 集的标签。如果 instanceFeatureIdLabel 设置为整数 N,它会自动转换为字符串 "instanceFeatureId_N"。如果同时存在每个图元和每个实例的要素 ID,则实例要素 ID 优先。

showCreditsOnScreen boolean false 可选

是否在屏幕上显示此 tileset 的 credits。

splitDirection SplitDirection SplitDirection.NONE 可选

应用于此 tileset 的 SplitDirection 分割。

enableCollision boolean false 可选

true 时,启用相机或 CPU 拾取的碰撞检测。当此值为 trueScreenSpaceCameraController#enableCollisionDetection 为 true 时,相机将被阻止进入 tileset 表面下方。

disableCollision boolean true 可选

是否关闭相机碰撞或拾取的碰撞检测。当此值为 trueScreenSpaceCameraController#enableCollisionDetection 为 true 时,相机将被允许进入或低于 tileset 表面。已弃用。

projectTo2D boolean false 可选

是否将 tileset 准确投影到 2D。如果为 true,tileset 将被准确投影到 2D,但会使用更多内存。如果为 false,tileset 将使用更少的内存,并且仍会在 2D / CV 模式下渲染,但其投影位置可能不准确。此设置在 tileset 创建后无法更改。

enablePick boolean false 可选

使用 WebGL 1 时是否允许使用 pick 进行碰撞和 CPU 拾取。如果使用 WebGL 2 或更高版本,此选项将被忽略。如果使用 WebGL 1 且此值为 true,pick 操作将正常工作,但会使用更多内存。如果使用 WebGL 1 且此值为 false,模型将使用更少的内存,但 pick 将始终返回 undefined。此设置在 tileset 加载后无法更改。

asynchronouslyLoadImagery boolean false 可选

覆盖在 tileset 上的影像加载是否应异步进行。如果为 true,则瓦片内容将显示其原始纹理,直到影像纹理加载完成。如果为 false,则瓦片内容在影像准备就绪之前不会显示。

debugHeatmapTilePropertyName string 可选

要着色为热图的瓦片变量。所有渲染的瓦片将根据彼此的指定变量值进行着色。

debugFreezeFrame boolean false 可选

仅用于调试。确定是否仅使用上一帧的瓦片进行渲染。

debugColorizeTiles boolean false 可选

仅用于调试。当为 true 时,为每个瓦片分配随机颜色。

enableDebugWireframe boolean false 可选

仅用于调试。在 WebGL1 中,此值必须为 true 才能使 debugWireframe 工作。此设置在 tileset 创建后无法更改。

debugWireframe boolean false 可选

仅用于调试。当为 true 时,将每个瓦片的内容渲染为线框。

debugShowBoundingVolume boolean false 可选

仅用于调试。当为 true 时,渲染每个瓦片的边界体积。

debugShowContentBoundingVolume boolean false 可选

仅用于调试。当为 true 时,渲染每个瓦片内容的边界体积。

debugShowViewerRequestVolume boolean false 可选

仅用于调试。当为 true 时,渲染每个瓦片的查看器请求体积。

debugShowGeometricError boolean false 可选

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

debugShowRenderingStatistics boolean false 可选

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

debugShowMemoryUsage boolean false 可选

仅用于调试。当为 true 时,绘制标签以指示每个瓦片使用的纹理和几何内存(以兆字节为单位)。

debugShowUrl boolean false 可选

仅用于调试。当为 true 时,绘制标签以指示每个瓦片的 URL。

foveatedInterpolationCallback(p, q, time){number}

优化选项。当 Cesium3DTileset#foveatedScreenSpaceError 为 true 时用作回调,以控制如何提高凹视锥外瓦片的屏幕空间误差, 在 Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxationCesium3DTileset#maximumScreenSpaceError 之间进行插值。

Name Type Description
p number

要插值的起始值。

q number

要插值的结束值。

time number

插值的时间,通常在 [0.0, 1.0] 范围内。

Default Value:
Math.lerp
Returns:
Type Description
number 插值后的值。