Cesium支持多种服务来源的高精度影像地图数据的加载和渲染。图层支持排序和透明混合。每个图层的亮度(brightness),对比度(contrast),gamma,hue,and saturation都可以动态修改。
可以在Viewer构造时传参进行设置
baseLayerPicker 底图图层控件显隐
imageryProviderViewModels 可选底图图组(baseLayerPicker:true)
terrainProviderViewModels 可选地形组(baseLayerPicker:true)
imageryProvider 底图设置(baseLayerPicker:false)
terrainProvider 地形设置(baseLayerPicker:false)
在地球构造后可通过viewersceneimageryLayers(ImageryLayerCollection类)来控制
Terrain 是Unity自带的地形编辑器工具。
在 Hierarchy面板 中右键-> 3D Object -> Terrain ,创建一个Terrain(地形)
同时会在 Assets 文件夹中创建一个默认名为 New Terrain 的文件, 用于保存 Terrain 的相关数据 。后缀为 " asset " 。
Settings 是 Terrain 的参数设置面板。
由于每一次改变地形,unity 默认都会自动生成光照贴图,导致性能减弱。
可以在 windows 菜单-> rendering -> lighting setting ->取消勾选最下面的 auto Generate
使用:
从调色板 Brushes 中选择一个画笔,然后单击左键并将其拖动到 Terrain对象上 以 提高地形高度 直到最大高度 Terrain Height 。在按住Shift键的同时单击左键并拖动以 降低地形高度 降低地形高度直到0。
使用:
使用“ Set Height” 工具绘画时,单击左键在 Terrain 上拖动,它将降低当前高于 目标高度 的地形区域,并升高低于 目标高度 的区域。
注意:
作用:
“ Smooth Height” 工具可以平均附近区域,使景观柔和并减少突然变化的外观;它不会显着提高或降低地形高度。
使用包含高频图案的画笔绘画后,平滑处理特别有用。这些笔刷图案倾向于将尖锐的锯齿状边缘引入到景观中,但是您可以使用 “Smooth Height” 工具来软化该粗糙度。
使用:
使用 “ Smooth Height” 工具绘画时,单击左键在 Terrain 上拖动,
作用:
使用 “Paint Texture” 工具将诸如草,雪或沙之类的 纹理 添加到 Terrain 中。它使我们可以将平铺纹理的区域直接绘制到 Terrain上 。在 Inspector 面板中,单击“ 绘制地形” 图标,然后选择从 “ Brushes ” 工具列表中 绘制纹理 。
使用:
注意:
作用:
选择工具后,Unity会突出显示所选“地形”图块周围的区域,指示您可以在其中放置新的连接图块的空间。
使用:
左键单击区域,将自动生成一片空白的 Terrain ,并在 Assets 文件夹中生成一个新的 assets 文件。
注意:
作用:
如果使用 “Brushes” 来创建自定义画笔,该 “纹理” 表示具有特定地质特征(例如山丘)的高度图,则 Stamp Terrain 很有用。
使用:
1使用 Stamp Terrain 工具,您可以选择现有的画笔并单击以选用它。在 Terrain 中每次单击都会引发 Terrain 中出现所选笔刷形状的 “ Stamp Height ” 。要将 Stamp Height 乘以百分比,请移动 Opacity 滑块以更改其值。例如, Stamp Height 为200, Opacity 为50%,则将每个 Stamp 的高度设置为100。
2 Max <–> Add 让我们选择是将 Stamp 的高度添加到地形的当前高度,还是取两者中的最大高度。
作用:
将树刷入到 Terrain 里面。
添加树:
点击 Edit Trees … -> Add Tree -> 选择
使用:
Settings:
作用:
一个 地形 可能有草丛和其他小物体(例如岩石)。用 Paint Details 来刷细节。
添加细节物体和草:
最初,地形没有可用的草或细节。在检查器中,单击“ 编辑细节”按钮以显示带有“ 添加草纹理”和“ 添加细节网格”选项的菜单。单击任一选项以打开一个窗口,您可以在其中选择资产以添加到地形以进行绘制。
使用:
添加窗口:
注意:
注意:
⚠️本文在cesium 1520下测试
cesium目前支持的格式有下面的两种地形格式,分别是:
在 heightmap 10 terrain format 说明页面上,官方明确指出这种格式已经废弃了,推荐使用 quantized-mesh ,关于两种格式的对比,推荐阅读 这篇文章 。
在Cesium 1520下测试, Cesium 还是支持 HeightMap 格式的,未来的Release版本有可能还会继续支持。
鉴于历史原因,项目之前一直使用 HeightMap ,最近才迁移成 Quantized-Mesh ,但构建离线的地形服务流程基本一致。
基本的构建流程为:
如果没有Docker环境,首先安装docker环境,建议安装Docker for Mac / Windows,不推荐使用Docker Toolbox。
这里以构建 Quantized-Mesh 为例,首先获取image。
在一个新的容器中执行。
合并tiffs,生成vrt文件。
创建一个terrain文件夹存储切割后的瓦片,运行ctb-tile生成瓦片,这个步骤可能时间较长,可以出去喝杯咖啡。
创建Cesium layerjson描述文件。
到此,cesium Quantized-Mesh 的地形瓦片就生成完毕。
最后在程序中使用:
注:使用Node编写server的时候,需要额外的header设置。
选取一个43的矩形区域作为数据源:
采用的流程都是先将上述12个tif合并成一个vrt文件,然后使用ctb-tile来进行切割。从最终得到的数据集的大小来看,Quantized-Mesh更节省空间,运行时会更节省内存:
效果对比:
在实际的开发过程中,基本上会用到上图所示的Cesium API中各个类,我们可以把它按照以下分类进行记忆。
imageryLayers 影像数据
terrainProvider 地形数据
dataSources 矢量数据
entities 几何实体集合(用于空间数据可视化)
Widgets 组件,即Viewer初始化界面上的组件
Camera 相机
Event 事件,鼠标事件、实体选中事件等
primitives 图元集合(几何体和外观)
postProcessStages 场景后期处理
环境对象,大气圈、天空盒、太阳、月亮等
Event事件,更新、渲染事件等
Camera类属性
位置、方位角、俯仰角、翻滚角
三维矩阵、四元数、四维矩阵、转换等
相对高度是指两个地点的绝对高度之差,即选某一指定参考平面为基准面,物体重心在空中距离指定参考平面的垂直距离。相对高度的起点是不固定的。
相对高度是什么及怎么算
相对高度算法
绝对高度就是从最高点到海平面的距离 例如海拔3000M 绝对高度就是3000米
相对高度就是改变了比较的参照物 例如a地海拔2000 b地3000 两地的相对高度就是1000米
专业解释:指两个地点的绝对高度之差。表示地面某个地点高出另一个地点的垂直距离,叫相对高度。相对高度的起点是不固定的。
相对高度最大值如何求
首先确定图中绝对高度(海拔)的两个极值,即最高海拔区域和最低海拔区域。最高海拔为500~600。最低海拔为200~300。交叉相减得出图中最高与最低的相对高度范围为200~400。也就是说:相对高度的最大值无限接近400(但不能等于400)。只要在200~400之间,且接近400的区间,如399~400、390~400都可以属于“相对高度最大值”。当然,要看选项如何给。
陡崖的相对高度算法
三条等高线重叠(看陡崖,两侧各有三条,到陡崖处成一条),所以n=3;等高距d=100
所以(n-1)×d≤△H<(n+1)×d即(3-1)×100≤△H<(3+1)×100
200≤△H<400
地理相对高度计算方法例如山峰高出邻近河谷的高度,相对高度是地势起伏大小的指标:
例如甲山低于乙山的高度,(如:甲山100米,乙山50米,则乙山低于甲山50米)
相对高度是相邻两个地点的海拔差 。相对高度是指选某一指定参考平面为基准面,物体重心在空中距离指定参考平面的垂直距离;
常用领域:
在建筑规范中,相对高度指计算处的高度z与建筑物总高度H的比值,即z/H。
在地图中,人们观察两山之间的高度,人们常用等高线来表示地形的高低起伏。
以上就是关于cesium 影像图层 ImageryLayer全部的内容,包括:cesium 影像图层 ImageryLayer、10.Unity2018中的地形——Terrain(一)、build cesium offline terrain等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)