掌桥专利:专业的专利平台
掌桥专利
首页

基于压平多边形的三维场景局部区域动态压平方法及装置

文献发布时间:2023-06-19 11:19:16


基于压平多边形的三维场景局部区域动态压平方法及装置

技术领域

本发明属于空间信息领域,具体涉及一种基于压平多边形的三维场景局部区域动态压平方法及装置。

背景技术

三维模型是三维可视化的重要数据基础,其精确性与三维场景的可视化效果密切相关,精细模型能提高三维可视化的质量,而低质量模型的存在则有碍观感甚至影响应用效果。精细模型一般采用人工建模或lidar建模,但由于生产成本较高,一般只针对重点目标采用精细建模方法。倾斜摄影是全要素三维建模方法,生产成本低,生产速度快,可以实现大场景包含几何结构和纹理的批量三维重建,但是受目前技术的限制,对树木、电杆等细小零散目标的建模效果差,容易导致大量低质量模型的产生。

可以采用专业修模软件移除低质量模型,以改善可视化的效果。移除操作本质上是对原有模型的二次建模,需要重新采集数据(如纹理图像)才能实现对移除区域的三维重建。目前一些修模软件如MeshMixer,wish3D等则提供了模型的局部压平功能,无需重新采集数据,直接将低质量模型(如树木)压平到地面,间接实现移除低质量模型的要求。但该方法存在以下问题:(1)压平需要专业用户操作,也需要专业的修模软件支持,除了增加额外的工作量,对于普通用户来说基本不可行。(2)修模软件压平本质上是对三维模型的物理破坏,将反映模型质量高低的“1-N”问题变成体现模型有无的“0-1”问题,导致虚拟场景和实际场景新的不一致,由于其操作不可逆,在部分应用中是不可接受的。

发明内容

发明目的:本发明提出一种基于压平多边形的三维场景局部区域动态压平方法及装置,对压平区的限制性较低,不局限于水平面,可以为任意斜面,且具有较强的交互性,可便捷的查看实际压平效果并进行动态调整。

技术方案:本发明提出一种基于压平多边形的三维场景局部区域动态压平方法,具体包括以下步骤:

(1)在用户坐标系中定义压平多边形确定压平区:根据待压平目标定义压平多边形,使压平多边形紧密贴合待压平目标的压平区;

(2)根据压平多边形创建压平相机,设置观察矩阵、投影矩阵及视口矩阵;

(3)使用压平相机生成压平多边形深度图;

(4)将压平相机的观察矩阵、投影矩阵以及压平多边形深度图传入GPU可编程流水线;

(5)在GPU的顶点着色器中,判断压平多边形与顶点的包含关系,将位于压平多边形里面且高于压平多边形的顶点进行移位压平。

进一步地,所述步骤(2)包括以下步骤:

(21)计算压平多边形包围盒:所述的压平多边形包围盒是包含压平多边形所有顶点的最小轴对齐立方体,其中上底面Z值bTop等于所有顶点Z值的最大值,下底面Z值bBottom等于所有顶点Z值的最小值,修正bTop=max(bTop,bBottom+f),其中f为任意大于0的值;

(22)设置压平相机观察矩阵:通过压平多边形包围盒的上下底面中心确定直线L,选择L上任一高于包围盒的空间点,作为观察坐标系原点O,定义观察坐标系的X、Y和Z轴分别与用户坐标系的X、Y和Z轴方向一致,建立观察坐标系,根据观察坐标系设置压平相机观察矩阵;

(23)设置压平相机投影矩阵:将压平多边形包围盒设置为压平相机的观察空间,然后根据正交投影类型和压平相机的观察空间设置压平相机的投影矩阵;

(24)设置压平相机视口矩阵:设置压平相机的视口宽度W和高度H,其中W和H均大于0;根据视口宽度和高度设置压平相机的视口矩阵。

进一步地,所述步骤(3)包括以下步骤:

(31)将压平多边形分解为三角网;

(32)输出压平多边形深度图:关闭颜色缓存,开启深度缓存,将分解得到的三角网输入到GPU中,生成压平多边形深度图。

进一步地,所述步骤(5)包括以下步骤:

(51)在顶点着色器中,根据压平相机的观察矩阵、投影矩阵,将用户坐标系中的顶点坐标V0(x0,y0,z0)变换到压平相机纹理空间,设变换后的坐标为V1(x1,y1,z1);

(52)若x1和y1都在[0,1]的范围内,用坐标(x1,y1)采样压平多边形深度图,获得深度值z2,如果z2<1.0,则根据压平相机的观察矩阵、投影矩阵将坐标(x1,y1,z2)逆变换到用户坐标系,得到坐标(x3,y3,z3):若z3

(53)用V0参加正常的渲染流程。

基于相同的发明构思,本发明还提供一种基于压平多边形的三维场景局部区域动态压平装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的基于压平多边形的三维场景局部区域动态压平方法。

有益效果:与现有技术相比,本发明的有益效果:与传统的需要修改模型文件的压平方式相比,本发明无需修改三维模型,且具有较强的交互性,可便捷的查看实际压平效果并进行动态调整;同时本发明对压平区的限制性较低,不局限于水平面,可以为任意斜面,并且可以根据用户需要,采用不精确共面的空间多边形来定义压平区。

附图说明

图1为本发明的流程图;

图2为电杆未压平前的可视化效果图;

图3为交互式定义压平多边形图;

图4为压平相机设置示意图;

图5为电杆压平后的可视化效果图。

具体实施方式

下面结合附图对本发明作进一步详细说明。

本发明提供一种基于压平包围球的三维场景局部区域动态压平方法,如图1所示,具体包括以下步骤:

步骤1:在用户坐标系中定义压平多边形确定压平区:根据待压平目标定义压平多边形,使压平多边形紧密贴合待压平目标的压平区。

图2为电杆未压平前的可视化效果图,如图3所示,用屏幕取点方式获得压平多边形顶点的屏幕坐标,要求压平多边形紧密贴合待压平目标的压平区。压平区即模型要压平到底部的基准面,一般与地面一致,压平多边形是用户定义的近似压平区的空间多边形,然后借助于渲染相机视点下的视口矩阵、投影矩阵和视图矩阵,将屏幕坐标变换到用户坐标系。在3D渲染引擎库OpenGL中,可以使用gluUnProject函数实现。

步骤2:根据压平多边形创建压平相机,设置观察矩阵、投影矩阵及视口矩阵。

(2.1)计算压平多边形包围盒:如图4所示,压平多边形包围盒是包含压平多边形所有顶点的最小轴对齐立方体,其中上底面Z值bTop等于所有顶点Z值的最大值,下底面Z值bBottom等于所有顶点Z值的最小值,为避免上下底面共面导致包围盒失效,修正bTop=max(bTop,bBottom+f),其中f为调节因子,为任意大于0的值。由于压平多边形接近水平,若调节因子f=1,最终的bTop=bBottom+1。

(2.2)设置压平相机观察矩阵:如图4所示,通过压平多边形包围盒的上下底面中心确定直线L,选择L上任一高于包围盒的空间点,作为观察坐标系原点O,定义观察坐标系的X、Y和Z轴分别与用户坐标系的X、Y和Z轴方向一致,建立观察坐标系,根据观察坐标系设置压平相机观察矩阵。在3D渲染引擎库OpenGL中,可以使用gluLookAt函数根据观察坐标系信息自动设置观察矩阵。

(2.3)设置压平相机投影矩阵:将压平多边形包围盒设置为压平相机的观察空间,然后根据正交投影类型和压平相机的观察空间设置压平相机的投影矩阵。在3D渲染引擎库OpenGL中,可以使用gluOtho函数根据观察空间自动设置正交投影矩阵。

(2.4)设置压平相机视口矩阵:设置压平相机的视口宽度W和高度H,要求W和H均大于0,可直接以窗口的实际宽高为值;根据视口宽度和高度设置压平相机的视口矩阵。在3D渲染引擎库OpenGL中,可以使用glViewport函数自动设置视口矩阵。

步骤3:使用压平相机生成压平多边形深度图。

将压平多边形分解为三角网;输出压平多边形深度图:关闭颜色缓存,开启深度缓存,将分解得到的三角网输入到GPU中,基于FBO技术生成压平多边形深度图。

步骤4:将压平相机的观察矩阵、投影矩阵以及压平多边形深度图传入GPU可编程流水线。

步骤5:在GPU的顶点着色器中,判断压平多边形与顶点的包含关系,将位于压平多边形里面且高于压平多边形的顶点进行移位压平。

(5.1)正常渲染三维场景,在顶点着色器中,根据压平相机视图矩阵Mview、投影矩阵Mproject和视口矩阵Mviewport将顶点坐标V0(x0,y0,z0)转换到压平相机的纹理空间,此处可设置总变换矩阵M=Mview*Mproject*Mviewport,使用M矩阵对V0进行变换并归一化,得到变换后的坐标V1(x1,y1,z1)。

(5.2)若x1和y1都在[0,1]的范围内,用坐标(x1,y1)采样压平多边形深度图,获得深度值z2,如果z2<1.0,则表明该点在XY平面的投影被压平多边形覆盖,用M矩阵的逆阵对坐标(x1,y1,z2)变换,获得变换后的z坐标z3(x3,y3,z3):若z3

(5.3)用V0参加正常的渲染流程。最终效果如图5所示。

本发明还提供一种基于压平多边形的三维场景局部区域动态压平装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的基于压平多边形的三维场景局部区域动态压平方法。

相关技术
  • 基于压平多边形的三维场景局部区域动态压平方法及装置
  • 基于压平包围球的三维场景局部区域动态压平方法及装置
技术分类

06120112879318