基于Cesium的三维模型平移旋转实现
2020-11-10张玉茜
张玉茜
摘要:三维地理信息的不断发展与应用升级,带来了三维地理信息数据可视化效果的飞速提升,三维可视化方法也是目前的研究热点之一。现以开源三维地图框架Cesium为基础,探讨了Cesium的技术特性,研究了Cesium框架下的坐标转换机制,提出了三维模型平移旋转算法,最终在Cesium中实现了三维模型的平移旋转等功能,并在实际项目中进行应用,增加了模型的管理便利性,提升了三维模型的可视化效果。
关键词:Cesium;三维;地理信息;模型;平移旋转
0 引言
随着计算机技术的不断发展,B/S框架下的三维地理信息正逐渐完善,所能展现的功能也越来越丰富,随着国家“实景三维中国建设”项目的启动,三维地理信息产业得到了发展的机遇。而传统桌面端的三维可视化已经不能满足互联网世界的需求,通过网页进行三维模型与三维地形的三维可视化与模型管理正火速崛起。
目前国内外基于Cesium进行三维可视化的研究有:乐世华等基于Cesium框架,综合使用ajax技术与nginx反向代理技术等实现了流域的虚拟场景搭建,能够实现三维浏览、信息查询等功能[1];马洪成等基于Cesium、PostgreSQL、Tomcat、GeoServer等实现了大数据平台的计算模型与数据挖掘结果三维展示的任务[2];周文辉等以Cesium为三维开发框架,针对倾斜摄影三维模型进行功能开发,将倾斜摄影萨内模型转为3D Tiles格式,并实现了数据浏览、属性查询和绘制等功能,扩展了Cesium的应用面[3];韩昕熠等基于Cesium进行功能开发,设计了违建电子沙盘的系统框架与数据处理流程,实现了多媒体信息展示[4]。此外,还有许多优秀的应用[5-7]。本文在之前学者研究的基础上,以开源三维地理框架Cesium为基础,进行三维模型平移转换关键技术的研究,实现了三维模型的平移旋转等功能。
1 簡介
Cesium是一个开源的三维地理信息代码库,其基于JavaScript语言,具有跨浏览器、跨平台、高精度、高性能、支持CZML数据等特性。Cesium基于WebGL底层框架进行开发,并在WebGL的基础上做了许多算法优化,能够更加流畅地海量加载三维模型数据与全球的遥感影像数据和地形数据,能够实现真正的二三维一体化。因为其优秀的特性,Cesium在全球获得了广泛的关注,Cesium API内容丰富详尽,拥有不少优秀的应用,像国内超图的WebGL引擎也是基于Cesium改造。
3D Tiles是一种专门应用于大规模三维地理数据的流式传输大规模异构和海量渲染而设计的一种格式,由Cesium在2016年推出。3D Tiles是在gltf格式的基础上,使用LOD(Levels of Detail)技术,具有适应性强、灵活度高等优点,能够流畅地展示大规模三维模型、点云数据、地形数据等。
2 关键技术研究
2.1 坐标转换
在Cesium中,需要进行地理坐标系与笛卡儿空间直角坐标系(Cartesian3)之间的转换才能在前端进行可视化展示。地理坐标系以地球质心为坐标原点、以经纬度为单位表示,Cesium中的地理坐标为WGS-84坐标系(World Geodetic System 1984),如图1(a)所示;笛卡儿空间直角坐标系的单位以米表示,如图1(b)所示。
在Cesium中没有具体的经纬度对象,将地理坐标转换为笛卡儿空间直角坐标系(Cartesian3),其原理为将地理坐标系中的经度(longtitude)、纬度(latitude)以及高度(altitude)转换为笛卡儿空间直角坐标系的x、y、z。
2.2 转换矩阵
三维模型平移转换原理为:根据前后经纬度和高度计算变换矩阵——平移矩阵;根据三维模型的边界球体中心点的笛卡儿坐标得到经纬度坐标;根据经纬度和高度0,得到地面笛卡儿坐标;根据经纬度和需要的高度,得到偏移后的笛卡儿坐标;计算坐标变换,得到新的笛卡儿坐标。旋转原理为:通过转换矩阵,将原始坐标值与变换矩阵相乘,得到旋转后新的坐标值。(x,y,z)为初始点坐标,a、b、c为模型在X轴、Y轴、Z轴上平移的距离,得到的结果为(x′,y′,z′)。三维模型平移转换矩阵如公式(1)所示。
x′y′z′1=1 0 0 a0 1 0 b0 0 1 c0 0 0 1×xyz1 (1)
β为模型旋转角度,三维模型绕X轴旋转矩阵如公式(2)所示,绕Y轴旋转矩阵如公式(3)所示,绕Z轴旋转矩阵如公式(4)所示。
x′y′z′ 1=1 0 0 00 cos β -sin β 00 sin β cos β 00 0 0 1×xyz1 (2)
x′y′z′ 1=cos β 0 sin β 0 0 1 0 0-sin β 0 cos β 0 0 0 0 1×xyz1 (3)
x′y′z′ 1=cos β -sin β 0 0sin β cos β 0 0 0 0 1 0 0 0 0 1×xyz1 (4)
3 平移旋转实现
将三维模型进行切片处理,转换为3D Tiles格式数据,通过Cesium的Marix4下的multiply方法进行矩阵计算,具体调用为Cesium.Matrix4.multiply(left,right,result),其中left为第一个矩阵,right为第二个矩阵,计算结果存储到result中,平移旋转结果如图2所示。
4 结语
本文通过研究三维坐标系统下经纬度转换原理与三维模型平移转换关键技术,使用开源三维地理信息框架Cesium实现了三维模型的平移转换功能,能够将三维模型进行位置的微调,提高可视化的效果与显示精度,在三维模型展示、卫星遥测等方向有着广泛的应用前景。
[参考文献]
[1] 乐世华,张煦,张尚弘,等.基于Cesium的WebGIS流域虚拟场景搭建[J].水利水电技术,2018,49(5):90-96.
[2] 马洪成,钱建国,杨戈.基于Cesium的三维电网WebGIS开发与实现[J].测绘与空间地理信息,2018,41(11):73-76.
[3] 周文辉,徐景涛,单英娜,等.基于Cesium的电站倾斜摄影模型Web发布与三维浏览[J].大坝与安全,2019(2):11-15.
[4] 韩昕熠,陈晓宁,李俊燕,等.基于Cesium框架的违建电子沙盘搭建[J].北京测绘,2019,33(5):494-497.
[5] 王逸凯,徐萌,罗建松,等.基于Cesium的WebGIS倾斜三维平台的实现[J].测绘与空间地理信息,2019(4):88-89.
[6] HE B,MO W X,HU J X,et al.Development of power grid Web3D GIS based on Cesium[C]// 2016 IEEE PES Asia-Pacific Power and Energy Engineering Conference(APPEEC),2016:12-17.
[7] LAMMERS M.Interactive Visualization of Near Real-Time and Production Global Precipitation Mission Data Online Using CesiumJS[C]// AGU Fall Meeting Abstracts,2016.
收稿日期:2020-08-06
作者简介:張玉茜(1982—),女,山东济南人,软件工程硕士,高级工程师,从事大数据研究及测绘地理信息工作。