前言
3D Tiles 是Cesium专用格式.用来处理大数据模型的.就是那种很大的,加载缓慢的,提高其加载效率;主要包括:
- 建筑物数据集
- CAD(或者BIM)模型
- 点云
- 摄影测量模型
api翻译
Cesium3DTileset
new Cesium.Cesium3DTileset(options)
一种用于流式处理大量异构三维地理空间数据集的三维分片图
名称 | 作用 |
---|---|
url | json地址 |
show | 是否显示 |
modelMatrix | 一个4x4转换矩阵,用于转换tileset的根图块 |
shadows | 阴影展示的形式 |
maximumScreenSpaceError | 用于驱动细节细化级别的最大屏幕空间错误 |
maximumMemoryUsage | tileset可以使用的最大内存量(MB) |
cullWithChildrenBounds | 优化选项。是否使用其子对象边界体积的联合来剔除瓷砖 |
cullRequestsWhileMoving | 优化选项。不要请求可能因为相机的移动而返回时未使用的磁贴 |
cullRequestsWhileMovingMultiplier | 优化选项。移动时剔除请求时使用的乘数。较大的是更具侵略性的剔除,较小的是不具侵略性的剔除 |
preloadWhenHidden | 预负荷一直到tileset.show is false.负荷一直延伸到可见的时间,但不归还 |
preloadFlightDestinations | 优化选项。当相机正在飞行时,在相机的飞行目的地预加载磁贴 |
preferLeaves | 优化选项。最好先装树叶 |
dynamicScreenSpaceError | 优化选项。减少离相机较远的磁贴的屏幕空间错误 |
dynamicScreenSpaceErrorDensity | 密度用于调整动态屏幕空间误差,类似于雾密度 |
dynamicScreenSpaceErrorFactor | 用于增加计算的动态屏幕空间误差的系数 |
dynamicScreenSpaceErrorHeightFalloff | 密度开始下降时的蒂勒塞特高度的比率 |
progressiveResolutionHeightFraction | 优化选项。如果介于(0.0,0.5)之间,将首先优先考虑屏幕空间误差或高于屏幕空间误差的瓷砖,以降低屏幕分辨率。这有助于在继续加载全分辨率磁贴时快速放下磁贴层 |
foveatedScreenSpaceError | 优化选项。通过临时提高屏幕边缘周围的瓷砖的屏幕空间错误,将在屏幕中心加载瓷砖的优先级排序。加载Cesium3dtileset FoveatedConesize确定的屏幕中心的所有磁贴后,屏幕空间错误恢复正常。 |
foveatedConeSize | 优化选项。当sium3dtileset foveatedscreenspaceerror为true时使用,以控制确定延迟哪一个图块的圆锥体大小。此圆锥体内的瓷砖将立即加载。锥体外的平铺可能会根据它们在锥体外的距离及其屏幕空间错误而延迟。这由cesium3dtileset foveatedInterpolationCallback和cesium3dtileset foveatedMinimumScreenspace错误松弛控制。将此值设置为0.0表示圆锥体将是由相机位置及其视图方向形成的线。将此设置为1.0意味着圆锥体包含相机的整个视场,禁用效果 |
foveatedMinimumScreenSpaceErrorRelaxation | 优化选项。当sium3dtileset foveatedscreenspaceerror为true时使用,以控制凹锥外瓷砖的起始屏幕空间错误松弛。根据提供的cesium3dtileset foveatedInterpolationCallback,屏幕空间错误将从tileset值到esium3dtileset maximumScreenspace错误开始引发 |
foveatedInterpolationCallback | 优化选项。当sium3dtileset foveatedscreenspaceerror为true时使用,以控制在凹锥体外的贴片的屏幕空间误差增加多少,在cesium3dtileset foveatedscreenspaceerrorrelaxy和cesium3dtileset maximumscreenspaceerror之间插入 |
foveatedTimeDelay | 优化选项用於当摄像机停止移动后,在确定起始装载之前,传送传送传送传送传送传送传送传送传送传送传送这一延迟的预防要求在摄像机移动时绕过屏幕的边缘,将此设置为0.0将立即请求任何给定视图中的所有图块 |
skipLevelOfDetail | 优化选项。确定遍历期间是否应应用细节级别跳过 |
baseScreenSpaceError | 当skiplevelofdetail为真时,在跳过详细级别之前必须达到的屏幕空间错误 |
skipScreenSpaceErrorFactor | 当skiplevelofdetail为真时,定义要跳过的最小屏幕空间错误的乘数。与skiplevels一起用于确定要加载的瓷砖 |
skipLevels | 当skiplevelofdetail为真时,一个定义加载图块时要跳过的最小级别数的常量。为0时,不跳过任何级别。与skipscreenspaceErrorFactor结合使用,以确定要加载的瓷砖 |
immediatelyLoadDesiredLevelOfDetail | 当skiplevelofdetail为真时,将只下载满足最大屏幕空间错误的磁贴。跳过因子被忽略,只加载所需的分片 |
loadSiblings | 当skiplevelofdetail为true时,确定遍历期间是否始终下载可见分片的同级 |
clippingPlanes | 用於选择性可拆卸分层的剪切平面 |
classificationType | 确定地形、三维图块或两者都将按此图块集分类。有关限制和限制的详细信息,请参阅cesium3dtileset ClassificationType |
ellipsoid | 决定球体大小和形状的椭球体 |
pointCloudShading | 基于几何误差和照明构建一个指向密封对象控制点衰减的选项 |
imageBasedLightingFactor | 缩放来自地球、天空、大气和星空盒的漫反射和镜面反射基于图像的照明 |
lightColor | 用来遮蔽模型的阳光的颜色和强度 |
luminanceAtZenith | 太阳在天顶的亮度,单位为千克烛光每平方米,用于此模型的程序环境地图 |
sphericalHarmonicCoefficients | 三阶球面谐波系数用于图像光的漫反射颜色 |
specularEnvironmentMaps | KTX文件的一个URL,其中包含镜面照明和卷积镜面mipmap的立方体映射 |
debugHeatmapTilePropertyName | 要着色为heatmap的tile变量。所有渲染的瓷砖将根据彼此指定的变量值着色。 |
debugFreezeFrame | 仅用于调试。确定是否只应使用最后一帧的瓷砖进行渲染 |
debugColorizeTiles | 仅用于调试。如果为真,则为每个图块指定随机颜色 |
debugWireframe | 仅用于调试。如果为真,则将每个图块的内容渲染为线框 |
debugShowBoundingVolume | 仅用于调试。如果为true,则渲染每个平铺的边界体积。 |
debugShowContentBoundingVolume | 仅用于调试。如果为真,则渲染每个图块内容的边界体积 |
debugShowViewerRequestVolume | 仅用于调试。如果为true,则为每个图块呈现查看器请求卷。 |
debugShowGeometricError | 仅用于调试。如果为true,则绘制标签以指示每个图块的几何错误。 |
debugShowRenderingStatistics | 仅用于调试。如果为真,则绘制标签以指示每个图块的命令、点、三角形和特征的数量。 |
debugShowMemoryUsage | 仅用于调试。如果为真,则绘制标签以指示每个图块使用的纹理和几何内存(兆字节)。 |
debugShowUrl | 仅用于调试。如果为true,则绘制标签以指示每个图块的URL。 |
常用的几个属性
readyPromise
获取将在加载tileset的根图块并且tileset准备好呈现时解决的承诺。这一承诺是在第一帧之前的帧结束时解决的
eg:
在tileset加载完毕后,执行的操作
tileset.readyPromise.then(function(tileset) {
// tile.properties is not defined until readyPromise resolves.
var properties = tileset.properties;
if (Cesium.defined(properties)) {
for (var name in properties) {
console.log(properties[name]);
}
}
});
代码
var tileset = new Cesium.Cesium3DTileset({
url: './modle/3dtitlesmodle/tileset.json',//路径,这里的json我是用的官方自带的例子,网上不好找数据
show: true, //是否显示
shadows: Cesium.ShadowMode.ENABLED, //阴影展示的形式
});
//当tileset加载完毕后执行
tileset.readyPromise.then(function (tileset) {
//把模型加入到primitives中,在三维地球上显示
viewer.scene.primitives.add(tileset);
//定位到模型处
viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.0, -0.5, tileset.boundingSphere.radius * 2.0));
}).otherwise(function (error) {
console.log(error);
});