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#skipLevelOfDetail 为
true 时使用。
- 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
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#colorBlendMode 为
MIX 时,用于在源颜色和要素颜色之间进行线性插值的值。
值为 0.0 时结果为源颜色,值为 1.0 时结果为要素颜色,中间的任何值都会导致源颜色和要素颜色的混合。
- Default Value: 0.5
colorBlendModeCesium3DTileColorBlendMode
定义从 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,允许相机碰撞或拾取的碰撞检测。当此值为 true 且 ScreenSpaceCameraController#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#foveatedInterpolationCallback
和 Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation
被延迟加载。
将此值设置为 0.0 意味着锥体将是由相机位置及其观察方向形成的线。将此值设置为 1.0 意味着锥体包含相机的整个视野,实际上禁用了该效果。
- Default Value: 0.3
foveatedInterpolationCallbackCesium3DTileset.foveatedInterpolationCallback
获取或设置一个回调函数,用于控制如何提高 foveated 圆锥外瓦片的屏幕空间误差,在 Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation
和 Cesium3DTileset#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#skipLevelOfDetail 为
true 时使用。
- Default Value: false
initialTilesLoadedEvent
用于指示本帧中所有满足屏幕空间误差的瓦片已加载的事件。此事件在初始视图中的所有瓦片加载完成时触发一次。
此事件在场景渲染后的帧末尾触发。
- Default Value: new Event()
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#skipLevelOfDetail 为
true 时使用。
- Default Value: false
maximumCacheOverflowBytesnumber
将用于缓存瓦片的最大额外 GPU 内存量(以字节为单位)。
如果当前视图需要超过 cacheBytes 加上 maximumCacheOverflowBytes 大小的瓦片才能满足由 Cesium3DTileset#maximumScreenSpaceError
确定的所需屏幕空间误差,则 Cesium3DTileset#memoryAdjustedScreenSpaceError 将被调整,直到满足调整后屏幕空间误差所需的瓦片使用量小于
cacheBytes 加上 maximumCacheOverflowBytes。
- Default Value: 536870912
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.show 为 false 时预加载瓦片。像瓦片集可见一样加载瓦片,但不渲染它们。
- Default Value: false
progressiveResolutionHeightFractionnumber
优化选项。如果在 (0.0, 0.5] 之间,将优先加载屏幕空间误差达到或超过 progressiveResolutionHeightFraction*screenHeight
降低屏幕分辨率的瓦片。这有助于在全分辨率瓦片继续加载的同时快速加载一层瓦片。
- Default Value: 0.3
readonly propertiesobject
获取瓦片集的属性字典对象,其中包含每个要素属性的元数据。
有关完整的属性集,请参阅 3D Tiles 规范中的属性模式参考。
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#shadows 为 true 时才会渲染阴影。
- 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#skipLevelOfDetail 为
true 时使用。
- Default Value: 1
skipScreenSpaceErrorFactornumber
定义要跳过的最小屏幕空间误差的乘数。
例如,如果瓦片的屏幕空间误差为 100,则不会加载任何瓦片,除非它们是叶瓦片或屏幕空间误差 <= 100 / skipScreenSpaceErrorFactor。
仅当 Cesium3DTileset#skipLevelOfDetail 为
true 时使用。
- 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
tileUnloadEvent
用于指示瓦片内容已卸载的事件。
已卸载的 Cesium3DTile 会传递给事件监听器。
此事件在帧渲染过程中瓦片内容即将卸载之前立即触发,以便事件监听器可以访问瓦片的内容。不要在事件监听器中创建或修改 SuperMap3D 实体或图元。
- Default Value: new Event()
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.
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 assetIdnumber SuperMap3D ion 资产 ID。
optionsCesium3DTileset.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 urlResource | string 指向 tileset JSON 文件的 URL。
optionsCesium3DTileset.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 tilesetUrlResource | string 要获取的 JSON 文件的 URL
Returns:
Type Description Promise.<object> 解析为获取的 JSON 数据的 Promise -
destroy()
-
销毁此对象持有的 WebGL 资源。销毁对象允许确定性地 释放 WebGL 资源,而不是依赖垃圾回收器来销毁此对象。
一旦对象被销毁,就不应使用它;调用除isDestroyed之外的任何函数将导致DeveloperError异常。因此, 如示例中所示,将返回值 (undefined) 分配给对象。Throws:
-
此对象已被销毁,即已调用 destroy()。
- Type
- DeveloperError
Example
tileset = tileset && tileset.destroy(); -
-
getHeight(cartographic, scene){number|undefined}
-
获取给定制图位置的加载表面高度。此函数仅考虑已加载瓦片的网格,不一定是瓦片集可用的最详细瓦片。当对激光点云进行采样时,此函数始终返回 undefined。
Name Type Description cartographicCartographic 要查找高度的制图位置。
sceneScene 可视化发生的场景。
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 passOptionsobject 通道选项
Returns:
Type Description function 瓦片遍历函数 -
hasExtension(extensionName){boolean}
-
如果瓦片集 JSON 文件在 extensionsUsed 中列出了该扩展,则为
true;否则为false。Name Type Description extensionNamestring 要检查的扩展的名称。
Returns:
Type Description boolean 如果瓦片集 JSON 文件在 extensionsUsed 中列出了该扩展,则为 true;否则为false。 -
isDestroyed(){boolean}
-
如果此对象已被销毁,则返回 true;否则,返回 false。
如果此对象已被销毁,则不应使用它;调用除isDestroyed之外的任何函数将导致DeveloperError异常。Returns:
Type Description boolean 如果此对象已被销毁,则返回 true;否则,返回false。 -
makeStyleDirty()
-
将瓦片集的
Cesium3DTileset#style标记为脏,这会强制所有 要素在下次可见时重新评估样式。 -
trimLoadedTiles()
-
卸载上一帧未被选择的所有瓦片。这可以用于 显式管理瓦片缓存并将加载的瓦片总数减少到
Cesium3DTileset#cacheBytes以下。瓦片卸载发生在下一帧,以保持所有 WebGL 删除调用 在渲染循环内。
Type Definitions
-
ConstructorOptionsObject
-
Cesium3DTileset 构造函数的初始化选项
Properties:
Name Type Default Description showboolean true 可选 决定是否显示 tileset。
modelMatrixMatrix4 Matrix4.IDENTITY 可选 一个 4x4 变换矩阵,用于变换 tileset 的根瓦片。
modelUpAxisAxis Axis.Y 可选 加载瓦片内容模型时被视为向上的轴。
modelForwardAxisAxis Axis.X 可选 加载瓦片内容模型时被视为向前的轴。
shadowsShadowMode ShadowMode.ENABLED 可选 决定 tileset 是否投射或接收来自光源的阴影。
maximumScreenSpaceErrornumber 16 可选 用于驱动细节层次细化的最大屏幕空间误差。
cacheBytesnumber 536870912 可选 如果缓存包含当前视图不需要的瓦片,瓦片缓存将被裁剪到的大小(以字节为单位)。
maximumCacheOverflowBytesnumber 536870912 可选 如果当前视图需要的瓦片超过
Cesium3DTileset#cacheBytes,允许的额外内存(以字节为单位)上限。cullWithChildrenBoundsboolean true 可选 优化选项。是否使用子瓦片边界体积的并集来剔除瓦片。
cullRequestsWhileMovingboolean true 可选 优化选项。不要请求因相机移动而可能在返回时未使用的瓦片。此优化仅适用于静止的 tileset。
cullRequestsWhileMovingMultipliernumber 60.0 可选 优化选项。移动时用于剔除请求的乘数。值越大,剔除越积极;值越小,剔除越不积极。
preloadWhenHiddenboolean false 可选 当
tileset.show为false时预加载瓦片。像 tileset 可见一样加载瓦片,但不渲染它们。preloadFlightDestinationsboolean true 可选 优化选项。在相机飞行时预加载相机飞行目的地的瓦片。
preferLeavesboolean false 可选 优化选项。优先加载叶瓦片。
dynamicScreenSpaceErrorboolean true 可选 优化选项。对于街道级地平线视图,使用离相机较远的低分辨率瓦片。这减少了加载的数据量并改善了 tileset 加载时间,同时远处的视觉质量略有下降。
dynamicScreenSpaceErrorDensitynumber 2.0e-4 可选 类似于
Fog#density,此选项控制Cesium3DTileset#dynamicScreenSpaceError优化适用的相机距离。值越大,越靠近相机的瓦片会受到影响。dynamicScreenSpaceErrorFactornumber 24.0 可选 控制地平线瓦片
Cesium3DTileset#dynamicScreenSpaceError优化强度的参数。值越大,加载的分辨率越低的瓦片,从而以略微降低视觉质量为代价提高运行性能。dynamicScreenSpaceErrorHeightFalloffnumber 0.25 可选 tileset 高度的比率,用于确定"街道级"相机视图的位置。当相机低于此高度时,
Cesium3DTileset#dynamicScreenSpaceError优化将产生最大效果,在此值以上会逐渐减弱。progressiveResolutionHeightFractionnumber 0.3 可选 优化选项。如果在 (0.0, 0.5] 之间,将优先加载屏幕空间误差达到或超过
progressiveResolutionHeightFraction*screenHeight降低屏幕分辨率的瓦片。这有助于在全分辨率瓦片继续加载的同时快速加载一层瓦片。foveatedScreenSpaceErrorboolean true 可选 优化选项。通过临时提高屏幕边缘瓦片的屏幕空间误差来优先加载屏幕中心的瓦片。一旦屏幕中心的所有瓦片(由
Cesium3DTileset#foveatedConeSize确定)加载完成,屏幕空间误差将恢复正常。foveatedConeSizenumber 0.1 可选 优化选项。当
Cesium3DTileset#foveatedScreenSpaceError为 true 时使用,用于控制决定哪些瓦片被延迟加载的圆锥大小。圆锥内的瓦片立即加载。圆锥外的瓦片根据它们离圆锥的距离和屏幕空间误差可能被延迟加载。这由Cesium3DTileset#foveatedInterpolationCallback和Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation控制。设置为 0.0 表示圆锥将是由相机位置及其视图方向形成的直线。设置为 1.0 表示圆锥包含相机的整个视场,禁用此效果。foveatedMinimumScreenSpaceErrorRelaxationnumber 0.0 可选 优化选项。当
Cesium3DTileset#foveatedScreenSpaceError为 true 时使用,用于控制圆锥外瓦片的起始屏幕空间误差松弛值。屏幕空间误差将从该值开始,基于提供的Cesium3DTileset#foveatedInterpolationCallback增加到Cesium3DTileset#maximumScreenSpaceError。foveatedInterpolationCallbackCesium3DTileset.foveatedInterpolationCallback Math.lerp 可选 优化选项。当
Cesium3DTileset#foveatedScreenSpaceError为 true 时使用,用于控制圆锥外瓦片的屏幕空间误差增加程度,在Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation和Cesium3DTileset#maximumScreenSpaceError之间进行插值foveatedTimeDelaynumber 0.2 可选 优化选项。当
Cesium3DTileset#foveatedScreenSpaceError为 true 时使用,用于控制相机停止移动后等待多长时间(以秒为单位)才开始加载延迟的瓦片。此时间延迟可防止相机移动时请求屏幕边缘的瓦片。设置为 0.0 将立即请求任何给定视图中的所有瓦片。skipLevelOfDetailboolean false 可选 优化选项。确定遍历期间是否应应用细节层次跳过。
baseScreenSpaceErrornumber 1024 可选 当
skipLevelOfDetail为true时,必须达到的屏幕空间误差,然后才能跳过细节层次。skipScreenSpaceErrorFactornumber 16 可选 当
skipLevelOfDetail为true时,定义要跳过的最小屏幕空间误差的乘数。与skipLevels一起使用,以确定要加载哪些瓦片。skipLevelsnumber 1 可选 当
skipLevelOfDetail为true时,定义加载瓦片时要跳过的最小级别数。当为 0 时,不跳过任何级别。与skipScreenSpaceErrorFactor一起使用,以确定要加载哪些瓦片。immediatelyLoadDesiredLevelOfDetailboolean false 可选 当
skipLevelOfDetail为true时,只会下载满足最大屏幕空间误差的瓦片。跳过因素被忽略,只加载所需的瓦片。loadSiblingsboolean false 可选 当
skipLevelOfDetail为true时,确定在遍历时是否始终下载可见瓦片的兄弟瓦片。clippingPlanesClippingPlaneCollection 可选 用于选择性禁用 tileset 渲染的
ClippingPlaneCollection。classificationTypeClassificationType 可选 确定此 tileset 将对地形、3D Tiles 还是两者进行分类。有关限制和局限性的详细信息,请参见
Cesium3DTileset#classificationType。ellipsoidEllipsoid Ellipsoid.WGS84 可选 确定地球大小和形状的椭球体。
pointCloudShadingobject 可选 用于构造
PointCloudShading对象的选项,以控制基于几何误差和光照的点衰减。lightColorCartesian3 可选 为模型着色时的光源颜色。当
undefined时,使用场景的光源颜色。imageBasedLightingImageBasedLighting 可选 用于管理此 tileset 的基于图像的光照的属性。
backFaceCullingboolean true 可选 是否剔除背面几何。当为 true 时,背面剔除由 glTF 材质的 doubleSided 属性决定;当为 false 时,背面剔除被禁用。
enableShowOutlineboolean true 可选 是否为使用 CESIUM_primitive_outline 扩展的模型启用轮廓。可以设置为 false 以避免加载时对几何的额外处理。当为 false 时,showOutlines 和 outlineColor 选项被忽略。
showOutlineboolean true 可选 是否显示使用 CESIUM_primitive_outline 扩展的模型的轮廓。当为 true 时,显示轮廓。当为 false 时,不显示轮廓。
outlineColorColor Color.BLACK 可选 渲染轮廓时使用的颜色。
vectorClassificationOnlyboolean false 可选 指示仅应使用 tileset 的矢量瓦片进行分类。
vectorKeepDecodedPositionsboolean false 可选 矢量瓦片是否应在内存中保留解码的位置。这与
Cesium3DTileFeature.getPolylinePositions一起使用。featureIdLabelstring | 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 优先。
instanceFeatureIdLabelstring | number "instanceFeatureId_0" 可选 用于拾取和样式化的实例要素 ID 集的标签。如果 instanceFeatureIdLabel 设置为整数 N,它会自动转换为字符串 "instanceFeatureId_N"。如果同时存在每个图元和每个实例的要素 ID,则实例要素 ID 优先。
showCreditsOnScreenboolean false 可选 是否在屏幕上显示此 tileset 的 credits。
splitDirectionSplitDirection SplitDirection.NONE 可选 应用于此 tileset 的
SplitDirection分割。enableCollisionboolean false 可选 当
true时,启用相机或 CPU 拾取的碰撞检测。当此值为true且ScreenSpaceCameraController#enableCollisionDetection为 true 时,相机将被阻止进入 tileset 表面下方。disableCollisionboolean true 可选 是否关闭相机碰撞或拾取的碰撞检测。当此值为
true且ScreenSpaceCameraController#enableCollisionDetection为 true 时,相机将被允许进入或低于 tileset 表面。已弃用。projectTo2Dboolean false 可选 是否将 tileset 准确投影到 2D。如果为 true,tileset 将被准确投影到 2D,但会使用更多内存。如果为 false,tileset 将使用更少的内存,并且仍会在 2D / CV 模式下渲染,但其投影位置可能不准确。此设置在 tileset 创建后无法更改。
enablePickboolean false 可选 使用 WebGL 1 时是否允许使用
pick进行碰撞和 CPU 拾取。如果使用 WebGL 2 或更高版本,此选项将被忽略。如果使用 WebGL 1 且此值为 true,pick操作将正常工作,但会使用更多内存。如果使用 WebGL 1 且此值为 false,模型将使用更少的内存,但pick将始终返回undefined。此设置在 tileset 加载后无法更改。asynchronouslyLoadImageryboolean false 可选 覆盖在 tileset 上的影像加载是否应异步进行。如果为
true,则瓦片内容将显示其原始纹理,直到影像纹理加载完成。如果为false,则瓦片内容在影像准备就绪之前不会显示。debugHeatmapTilePropertyNamestring 可选 要着色为热图的瓦片变量。所有渲染的瓦片将根据彼此的指定变量值进行着色。
debugFreezeFrameboolean false 可选 仅用于调试。确定是否仅使用上一帧的瓦片进行渲染。
debugColorizeTilesboolean false 可选 仅用于调试。当为 true 时,为每个瓦片分配随机颜色。
enableDebugWireframeboolean false 可选 仅用于调试。在 WebGL1 中,此值必须为 true 才能使 debugWireframe 工作。此设置在 tileset 创建后无法更改。
debugWireframeboolean false 可选 仅用于调试。当为 true 时,将每个瓦片的内容渲染为线框。
debugShowBoundingVolumeboolean false 可选 仅用于调试。当为 true 时,渲染每个瓦片的边界体积。
debugShowContentBoundingVolumeboolean false 可选 仅用于调试。当为 true 时,渲染每个瓦片内容的边界体积。
debugShowViewerRequestVolumeboolean false 可选 仅用于调试。当为 true 时,渲染每个瓦片的查看器请求体积。
debugShowGeometricErrorboolean false 可选 仅用于调试。当为 true 时,绘制标签以指示每个瓦片的几何误差。
debugShowRenderingStatisticsboolean false 可选 仅用于调试。当为 true 时,绘制标签以指示每个瓦片的命令、点、三角形和要素的数量。
debugShowMemoryUsageboolean false 可选 仅用于调试。当为 true 时,绘制标签以指示每个瓦片使用的纹理和几何内存(以兆字节为单位)。
debugShowUrlboolean false 可选 仅用于调试。当为 true 时,绘制标签以指示每个瓦片的 URL。
-
foveatedInterpolationCallback(p, q, time){number}
-
优化选项。当
Cesium3DTileset#foveatedScreenSpaceError为 true 时用作回调,以控制如何提高凹视锥外瓦片的屏幕空间误差, 在Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation和Cesium3DTileset#maximumScreenSpaceError之间进行插值。Name Type Description pnumber 要插值的起始值。
qnumber 要插值的结束值。
timenumber 插值的时间,通常在
[0.0, 1.0]范围内。- Default Value: Math.lerp
Returns:
| Type | Description |
|---|---|
| number | 插值后的值。 |