Cesium基础知识-3DTilese加载OSGB模型

本文介绍了一种使用Cesium加载osgb格式3D地景数据的方法,并通过代码示例展示了如何调整模型的高度和位置,以及如何设置加载参数来优化显示效果。
  1. /加载osgb文件
  2. function CreateOSGB3Dtiles() {
  3.     var palaceTileset = new Cesium.Cesium3DTileset({
  4.         //加载倾斜示范数据
  5.         url: '../Apps/SampleData/OSGB&3Dtiles/3dtiles/tileset.json',
  6.         //控制切片的加载数量,增加性能
  7.         maximumScreenSpaceError: 2,
  8.         maximumNumberOfLoadedTiles: 100000,
  9.     })
  10.     palaceTileset.readyPromise.then(function (palaceTileset) {
  11.         //下面是只改变高度
  12.         viewer.scene.primitives.add(palaceTileset);
  13.  &nbs
Cesium加载3D Tiles模型,可参考如下方法。 ### 基本加载方式 可以使用`Cesium.Cesium3DTileset`来加载3D Tiles模型。示例代码如下: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); var tileset = new Cesium.Cesium3DTileset({ url: '../Apps/SampleData/OSGB&3Dtiles/3dtiles/tileset.json', // 控制切片的加载数量,增加性能 maximumScreenSpaceError: 2, maximumNumberOfLoadedTiles: 100000 }); viewer.scene.primitives.add(tileset); viewer.zoomTo(tileset); ``` 上述代码中,首先创建了一个Cesium Viewer实例,接着使用`Cesium.Cesium3DTileset`构造函数来加载3D Tiles模型,通过`url`指定模型数据的路径,还可设置`maximumScreenSpaceError`和`maximumNumberOfLoadedTiles`来控制切片的加载数量以提升性能。最后将加载的`tileset`添加到场景的图元中,并将视角缩放至该模型。 ### 加载完成后处理 在模型加载完成时可以进行一些额外的操作,例如修改样式、获取特征数据等。以下代码展示了在模型加载完成时,通过`Cesium3DTileStyle`对`tileset`进行样式修改,同时获取特征数据: ```javascript tileset.allTilesLoaded.addEventListener(() => { tileset.style = new Cesium.Cesium3DTileStyle({ color: { evaluateColor: (feature) => { // 这里可以收集feature return feature.color; } } }); }); ``` 此代码通过监听`allTilesLoaded`事件,当所有瓦片加载完成后,为`tileset`设置样式,在`evaluateColor`函数中可以对每个特征进行操作,比如获取其颜色。 ### 加载倾斜示范数据并调整高度 以下是加载倾斜示范数据(如OSGB模型)并调整其高度的示例: ```javascript function CreateOSGB3Dtiles() { var palaceTileset = new Cesium.Cesium3DTileset({ // 加载倾斜示范数据 url: '../Apps/SampleData/OSGB&3Dtiles/3dtiles/tileset.json', // 控制切片的加载数量,增加性能 maximumScreenSpaceError: 2, maximumNumberOfLoadedTiles: 100000 }); palaceTileset.readyPromise.then(function (palaceTileset) { // 下面是只改变高度 viewer.scene.primitives.add(palaceTileset); var heightOffset = 0.0; // 高度 var boundingSphere = palaceTileset.boundingSphere; var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center); var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0); var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset); var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()); palaceTileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); viewer.zoomTo(palaceTileset, new Cesium.HeadingPitchRange(0.5, -0.2, palaceTileset.boundingSphere.radius * 1.0)); }); } CreateOSGB3Dtiles(); ``` 这段代码定义了一个`CreateOSGB3Dtiles`函数,同样使用`Cesium.Cesium3DTileset`加载3D Tiles模型,在`readyPromise`的回调函数中,对模型的高度进行了调整,通过计算偏移量并更新`modelMatrix`来实现,最后将视角缩放至模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值