一种基于阴影映射的大批量矢量数据渲染方法与流程
- 国知局
- 2024-12-06 13:08:43
本发明涉及三维渲染,尤其是指一种基于阴影映射的大批量矢量数据渲染方法。
背景技术:
1、将渲染矢量数据到三维地形是指将二维矢量数据映射到三维地形模型上,常用于地理信息系统(gis)、3d可视化和虚拟环境建模,用来展示现实地理特征在三维空间中的形态。
2、目前常见的渲染矢量数据到三维地形的方法有以下三种:
3、1、光栅化:将矢量数据光栅化到一张纹理上,再将这张纹理与地形的纹理进行融合。光栅化是目前技术中实现最简单、效果居中的方案,其优点是不会有额外的顶点开销,计算成本较小;缺点是矢量边缘和精度都会被光栅化的纹理大小所影响,产生锯齿走样,受地形细节层次影响会产生错位。
4、2、几何渲染方法:在矢量数据的两个顶点之间插值加密一部分点,并且这部分点通过射线求交,计算出地形的高度,然后利用带高度的矢量顶点数据构建网格数据,渲染为独立的模型。几何渲染方法的优点是实现简单,交互效果最好;缺点是由于地形的起伏复杂度可能导致悬浮和穿模,插值导致顶点数量成倍增加,计算资源消耗大。
5、3、体积阴影法:将二维矢量在地形表面的正射投影区域作为矢量渲染的最终区域,需要先将矢量数据构建为二维网格,再上下拉伸成一个阴影体,然后逐像素计算每个像素是否在阴影体内,将位于阴影体内的像素存储到模板缓冲区当中,最后在后处理过程中根据模板缓冲区的值渲染指定的像素区域。体积阴影法的优点是可以达到像素级的精度,可以完美贴合在地形表面,不被地形细节层次和起伏度的影响;缺点是阴影体产生额外的顶点数量和内存占用,逐像素的判断是否在阴影体内产生大量的算法开销。
6、综上所述,现有的矢量数据渲染方法在渲染大批量矢量数据时,计算成本和渲染质量无法达到平衡。
技术实现思路
1、为此,本发明所要解决的技术问题在于克服现有技术中在渲染大批量矢量数据时,计算成本和渲染质量无法达到平衡的问题。
2、为解决上述技术问题,本发明提供了一种基于阴影映射的大批量矢量数据渲染方法,包括:
3、将矢量数据发布为矢量瓦片地图服务;
4、在虚幻引擎中请求矢量瓦片地图服务,得到矢量瓦片的二进制数据;将矢量瓦片的二进制数据解析为几何数据,并将几何数据的坐标系转换至虚幻引擎坐标系;将转换至虚幻引擎坐标系的几何数据构建为网格体数据;
5、利用虚幻引擎计算网格体数据每个像素的深度值,并写入虚拟纹理中;
6、基于虚拟纹理中每个像素的深度值进行后处理渲染。
7、优选地,利用geoserver软件将矢量数据发布为矢量瓦片地图服务。
8、优选地,所述利用geoserver软件将矢量数据发布为矢量瓦片地图服务,包括:
9、获取需要渲染的矢量shp数据,在geoserver中新建工作区,新建数据源,将矢量shp数据导入到geoserver存储仓库;
10、在geoserver的图层页面新建图层,选择存储仓库中导入的矢量shp数据添加至图层;
11、在每个图层的tile caching选项中,将瓦片格式选择为mapbox-vector-tile,并设置图层信息;
12、保存图层后发布为矢量瓦片地图服务。
13、优选地,所述矢量瓦片地图服务包括tms或wmts。
14、优选地,所述在虚幻引擎中请求矢量瓦片地图服务,得到矢量瓦片的二进制数据,包括:
15、在虚幻引擎中导入cesium for unreal插件,在cesium for unreal插件的栅格解析架构上添加用于矢量瓦片解析的vector overlay provider,以便访问矢量瓦片地图服务;
16、实时获取相机视图矩阵,基于相机视图矩阵,利用cesium for unreal插件计算当前地图层级以及矢量瓦片行列号;
17、将矢量瓦片行列号传递到vector overlay provider中,拼接为用于请求矢量瓦片地图服务的url地址,根据所述url地址请求矢量瓦片地图服务,得到矢量瓦片的二进制数据。
18、优选地,将矢量瓦片的二进制数据解析为几何数据,并将几何数据的坐标系转换至虚幻引擎坐标系,包括:
19、新增一个vectorloader类加载矢量瓦片的二进制数据,使用gdal库或pbr库对每个矢量瓦片的二进制数据进行解析,将解析后的结果返回为几何数据;
20、将几何数据的坐标系转换至虚幻引擎坐标系。
21、优选地,所述将转换至虚幻引擎坐标系的几何数据构建为网格体数据,包括:
22、基于umeshcomponent和fvectormeshsceneproxy类,在构建网格体数据时传递场景渲染的命令;
23、构建用于将所有矢量瓦片的几何数据合并为一个网格体数据的createmesh()函数,所述createmesh()函数的输入为几何数据,输出为网格体数据;利用createmesh()函数将几何数据构建为网格体数据。
24、优选地,所述利用虚幻引擎计算网格体数据每个像素的深度值,并写入虚拟纹理中,包括:
25、计算平行投影场景下网格体数据在预设视角下每个像素的深度值,包括:
26、获取网格体数据每个像素的深度值,构建网格体数据的深度图;
27、通过正交投影矩阵计算每个像素的投影坐标,并判断在预设视角下每个像素的深度是否被裁剪;如果当前像素的深度没有被裁剪,则将当前像素的深度值更新为1,否则更新为0;
28、创建虚拟纹理,并将网格体数据中每个像素更新后的深度值写入虚拟纹理中。
29、优选地,所述计算平行投影场景下网格体数据在预设视角下每个像素的深度值,包括:
30、构建customdepthrenderpass文件,继承于虚幻引擎5.4的功能customrenderpass,用于计算平行投影场景下网格体数据在预设视角下每个像素的深度值。
31、优选地,所述基于虚拟纹理中每个像素的深度值进行后处理渲染,包括:
32、设置后处理材质的参数;
33、对虚拟纹理中所有像素的深度值进行判断,如果当前像素的深度值为1,则基于后处理材质对当前像素对应的像素进行渲染,否则不作处理。
34、本发明的上述技术方案相比现有技术具有以下有益效果:
35、本发明所述的一种基于阴影映射的大批量矢量数据渲染方法,将矢量瓦片解析为几何数据,再将几何数据合并为网格体数据,利用虚幻引擎对网格体数据进行渲染,通过生成深度图来确定场景中物体的阴影部分,将阴影映射(shadow mapping)技术应用于电子地图矢量数据的渲染中,直接渲染当前相机下的深度值。本发明生成的深度图与场景复杂度和矢量数据的数量无关,与几何渲染与体积阴影的方法相比较,不产生额外的顶点数据,也不需要逐像素判断是否位于阴影内,减少了对计算资源的占用,不仅提高了渲染效率,实现了对大批量矢量数据的渲染,并且有效地利用深度图将矢量数据投影到地形表面上,确保了地图显示的精确性和一致性,避免了悬浮、穿模等问题,为地理信息系统的高效运行提供了有力保障。
本文地址:https://www.jishuxx.com/zhuanli/20241204/343287.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表