SuperAPI AI 工具集

cesiumjs-3d-tiles

前端与建站

查看项目

更新于 10-15 11:30

技能介绍

CesiumJS 3D Tiles 是 CesiumJS 面向三维瓦片数据的技能说明,版本基线为 CesiumJS v1.144,使用 ES module 导入和异步工厂方法。

【加载瓦片集】 必须使用异步工厂方法,不要直接调用构造函数。对于公开/无需令牌的示例,优先使用基于 URL 的瓦片集(如 CesiumGS 示例瓦片集)。fromIonAssetId、createOsmBuildingsAsync 和 Google Photorealistic 3D Tiles 需要外部授权,仅在调用方明确要求且运行时已配置时使用。

【关键构造选项】 maximumScreenSpaceError 默认 16,用于 LOD 质量阈值(像素);cacheBytes 默认 536870912,为瓦片缓存裁剪目标;maximumCacheOverflowBytes 默认 536870912,为额外缓存余量;shadows 默认 ShadowMode.ENABLED;modelMatrix 默认 Matrix4.IDENTITY;clippingPlanes 与 clippingPolygons 默认 undefined;enableCollision 默认 false;pointCloudShading 默认 undefined;classificationType 默认 undefined(TERRAIN、CESIUM_3D_TILE 或 BOTH);dynamicScreenSpaceError 默认 true;foveatedScreenSpaceError 默认 true;preloadFlightDestinations 默认 true;featureIdLabel 默认 "featureId_0";backFaceCulling 默认 true;edgeDisplayMode 默认 EdgeDisplayMode.SURFACES_ONLY。

【Mapbox Vector Tiles 作为运行时 3D Tiles(实验性,1.142+)】 MVTDataProvider 加载 {z}/{x}/{y} 的 Mapbox Vector Tile .mvt/.pbf 模板,将瓦片负载转换为运行时 3D Tiles。适用于矢量数据本身已分块并希望使用 3D Tiles 样式、元数据拾取与 LOD 的场景。URL 模板必须包含 {z}、{x}、{y} 占位符;空的 204/404 瓦片按缺失处理;运行时矢量 glTF 内容使用草案 EXT_mesh_polygon 与 3DTILES_content_gltf_vector 支持,属实验路径。1.144+ 支持矢量瓦片贴地渲染,以及通过继承 UrlTemplate3DTilesDataProvider 支持自定义矢量瓦片格式。

【瓦片集事件与渲染就绪】 fromUrl 在瓦片集元数据可用时即 resolve,并不意味着当前相机视图的瓦片已渲染完成。initialTilesLoaded 仅对首次加载视图触发,allTilesLoaded 和 tilesLoaded 与视图相关。在 zoomTo、flyTo、setView 或交互式相机移动后,需要重新检查就绪状态,不要用固定延迟替代该语义条件。loadProgress 用于加载 UI,tileLoad/tileUnload 用于缓存活动,tileFailed 用于诊断。

【声明式样式】 通过 Cesium3DTileStyle 赋值到 tileset.style,表达式用 ${PropertyName} 引用要素属性。样式 DSL 约束:不支持 defined(),使用会导致渲染错误;引用数据中不存在的属性会中断样式求值并触发 Cesium 错误面板,应始终以 ["true", "..."] 作为最后条件兜底;重置样式可赋值为 undefined。

【颜色混合模式】 通过 Cesium3DTileColorBlendMode 设置 HIGHLIGHT、REPLACE、MIX;colorBlendAmount 仅在 MIX 时使用。

【边缘显示模式(实验性,1.142+)】 edgeDisplayMode 控制由草案 glTF 扩展 EXT_mesh_primitive_edge_visibility 提供的边缘,可取 SURFACES_ONLY、SURFACES_AND_EDGES、EDGES_ONLY。

【要素拾取与属性】 Scene.pick 返回 Cesium3DTileFeature,修改在所属瓦片被逐出缓存前持续有效。支持 getPropertyIds、getProperty、setProperty、show 等。继承式元数据(3D Tiles 1.1 / EXT_structural_metadata)可通过 getPropertyInherited 按 batch table、content、tile、subtree、group、tileset 的顺序查找。

【裁剪】 ClippingPlaneCollection 使用瓦片集局部坐标系中的半空间平面裁剪;ClippingPolygonCollection 使用任意多边形裁剪,仅支持 WebGL 2,也可应用于 globe。

【点云着色】 pointCloudShading 支持 attenuation、geometricErrorScale、maximumAttenuation、eyeDomeLighting、eyeDomeLightingStrength、eyeDomeLightingRadius、backFaceCulling(需要点法线)、normalShading,并可在运行时调整。

【体素原语】 VoxelPrimitive 从 Cesium3DTilesVoxelProvider 渲染体积数据,形状包括 BOX、CYLINDER、ELLIPSOID。可配合 CustomShader 与可选的 viewerVoxelInspectorMixin 检查器;着色器编写细节参见 cesiumjs-custom-shader 技能。

【I3S 数据提供器】 I3SDataProvider 可加载 Esri I3S 场景图层(3D Objects、IntegratedMesh、Building Scene Layer),并支持 geoidTiledTerrainProvider 选项。

【Gaussian Splats】 作为标准 3D Tiles 加载,CesiumJS 自动处理 KHR_gaussian_splatting。

【分类】 通过 classificationType 将瓦片集几何作为分类叠加到地形或其他瓦片集上,取值 TERRAIN、CESIUM_3D_TILE 或 BOTH。

【高度调整】 可基于 tileset.boundingSphere.center 转换为 Cartographic,再计算表面位置并进行偏移。

适用场景:三维地理空间可视化、城市建筑与 CAD 模型展示、点云与体素数据渲染、矢量瓦片三维化、多源三维数据(ion、Google、OSM、I3S、Gaussian Splats)集成。限制:部分能力标注为实验性(MVT、边缘显示、矢量 glTF),裁剪多边形仅支持 WebGL 2,部分数据源需要外部授权或运行时配置。