esium3DTileset.fromUrl 是 Cesium 中加载 3D Tiles 数据集的核心方法,用于从 URL 加载倾斜摄影、BIM、点云等三维模型数据。其参数主要分为 URL 路径 和 配置选项对象,以下是详细总结:
一、基本语法
const tileset = Cesium.Cesium3DTileset.fromUrl(url, options);
二、参数详解
1. url(必填)
类型:String | Resource
说明:3D Tiles 数据集的根目录 URL(通常指向 tileset.json 文件,或包含该文件的目录)。
示例:
"https://example.com/tilesets/building/tileset.json" // 直接指向 tileset.json
"https://example.com/tilesets/terrain/" // 指向包含 tileset.json 的目录
2. options(可选,配置对象)
包含加载、渲染、优化等相关配置,常用属性如下:
类别 | 属性名 | 类型 | 说明 |
---|---|---|---|
基础配置 | show | Boolean | 是否显示 tileset,默认 true 。 |
modelMatrix | Matrix4 | 模型矩阵,用于调整 tileset 的位置、旋转、缩放(默认使用 identity 矩阵)。 | |
maximumScreenSpaceError | Number | 最大屏幕空间误差(控制细节层级 LOD),值越小精度越高但性能消耗越大,默认 16 。 | |
加载控制 | maximumMemoryUsage | Number | 最大内存占用(MB),超出后会卸载远处瓦片,默认 512 。 |
loadSiblings | Boolean | 是否加载同级瓦片(用于平滑过渡),默认 true 。 | |
preloadAncestors | Boolean | 是否预加载父级瓦片,默认 true 。 | |
preloadDescendants | Boolean | 是否预加载子级瓦片(提前加载高细节),默认 false 。 | |
渲染控制 | cullWithChildrenBounds | Boolean | 是否用子瓦片边界裁剪父瓦片,优化渲染性能,默认 true 。 |
dynamicScreenSpaceError | Boolean | 是否动态调整屏幕空间误差(根据相机距离),默认 false 。 | |
skipLevelOfDetail | Boolean | 是否跳过细节层级(强制加载最高精度),默认 false (会降低性能)。 | |
样式与交互 | style | Cesium3DTileStyle | 瓦片样式(控制颜色、显隐等),支持基于属性的条件样式。 |
debugShowBoundingVolume | Boolean | 是否显示瓦片包围盒(调试用),默认 false 。 | |
debugShowContentBoundingVolume | Boolean | 显示内容包围盒,默认 false 。 | |
网络配置 | requestWaterMask | Boolean | 是否请求水面掩膜(用于与地形融合),默认 false 。 |
requestVertexNormals | Boolean | 是否请求顶点法线(用于光照计算),默认 false 。 | |
headers | Object | 加载瓦片时的 HTTP 请求头,如跨域认证信息。 |
三、常用配置示例
const tileset = Cesium.Cesium3DTileset.fromUrl( "https://example.com/tilesets/building/tileset.json", { maximumScreenSpaceError: 8, // 提高精度(值越小精度越高) maximumMemoryUsage: 1024, // 增加内存限制(MB) modelMatrix: Cesium.Matrix4.fromTranslation( new Cesium.Cartesian3(100, 200, 0) // 平移 tileset ), style: new Cesium.Cesium3DTileStyle({ color: { conditions: [ ["${height} > 50", "color('#ff0000')"], // 高度>50的瓦片显红色 ["true", "color('#ffffff')"] // 其他显白色 ] } }), debugShowBoundingVolume: true // 调试时显示包围盒 } );// 添加到场景viewer.scene.primitives.add(tileset);
四、注意事项
url 需指向正确的 tileset.json 路径,否则会加载失败。
性能与精度需平衡:maximumScreenSpaceError 过小会导致加载瓦片过多,影响帧率;过大则模型模糊。
样式配置(style)依赖瓦片本身的属性(如 height、type 等),需与瓦片数据中的属性匹配。
网络相关配置(如 headers)用于处理跨域、认证等场景,需根据服务器要求设置。
通过合理配置这些参数,可优化 3D Tiles 的加载效率、渲染效果和交互体验。