首页 / 专利库 / 电脑图像 / 着色器 / 顶点着色器 / 一种三维海底环境实时动态渲染方法和渲染系统

一种三维海底环境实时动态渲染方法和渲染系统

阅读:512发布:2020-05-17

专利汇可以提供一种三维海底环境实时动态渲染方法和渲染系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种三维海底环境实时动态 渲染 方法以及实现该方法的渲染系统,其中三维海底环境实时动态渲染方法包括:1、根据待渲染海底区域的数字高程模型数据建立obj模型;实时获取所述海底区域的地面图像,生成地形法线纹理贴图;设置纹理环绕方式和过滤方式;利用OpenGL将地形法线纹理贴图加载到obj模型上,实现海底地面的渲染;2、根据 水 刻蚀 纹理图片渲染刻蚀,并根据 光源 空间渲染光束;3、设置气泡的纹理数据和透明度;生成新的气泡并设置气泡属性将生存期超过预设的生存期 阈值 的气泡和高度超过预设海深阈值的气泡删除;根据气泡的 位置 和速度进行 碰撞检测 ,并更新碰撞后气泡的属性。该方法能够快速绘制海底环境,且绘制效果逼真。,下面是一种三维海底环境实时动态渲染方法和渲染系统专利的具体信息内容。

1.一种三维海底环境实时动态渲染方法,其特征在于,包括步骤:
(1)根据待渲染海底区域的数字高程模型数据建立obj模型;
实时获取所述海底区域的地面图像,生成地形法线纹理贴图;
设置纹理环绕方式和过滤方式;利用OpenGL将地形法线纹理贴图加载到obj模型上,实现海底地面的渲染;
(2)渲染刻蚀:获取待渲染海底区域当前时刻之前连续n个时刻的静态刻蚀纹理图片,所述静态水刻蚀纹理图片中相邻图片的时间差小于预设的时间间隔△t;对所述水刻蚀纹理图片进行高斯滤波,利用滤波后的水刻蚀纹理图片生成水刻蚀法线纹理图片;
设置纹理环绕方式和过滤方式;利用OpenGL计时器将水刻蚀法线纹理图片加载到待渲染海底区域的水域部分,实现水刻蚀的动态渲染;
渲染光束:在OpenGL主程序中渲染一个全屏的矩形;在片段着色器中,从近裁剪面开始,光线行进视景体,沿着视线方向对水刻蚀纹理图片进行采样,将当前采样点投影到光源空间,用得到的x,y分量作为光束纹理坐标采样刻蚀图;所述x,y分量为当前片元的窗口相对坐标;采样值作为本采样点对片元的强度贡献,并加入指数衰减,计算最终的片元强度;
所述光线上位置p处的片元强度S(p)为:S(p)=I+I*α(P1,p)·β(p,e)·c;
其中,P1为光线的起始点,I为光线照射到海面上的光强,e为观察点的位置,c为海水的散射系数,α(P1,p)为光强从起始点到p处的衰减系数;β(p,e)为光强度从眼睛位置到p处光线位置的衰减系数;
(3)设置气泡的纹理数据和透明度;生成新的气泡并设置气泡属性,所述气泡属性包括:气泡位置、大小、生存期、速度;将生存期超过预设的生存期阈值的气泡和高度超过预设海深阈值的气泡删除;根据气泡的位置和速度进行碰撞检测,并更新碰撞后气泡的属性。
2.根据权利要求1所述的三维海底环境实时动态渲染方法,其特征在于,所述步骤(1)中还包括对obj模型的优化和简化;
所述优化为:对建立的obj模型调整数据比例进行优化;
所述简化为合并obj模型文件中重复的顶点、法线和材质。
3.根据权利要求1所述的三维海底环境实时动态渲染方法,其特征在于,所述步骤(1)中纹理环绕方式为重复纹理图像,所述纹理过滤方式为多级渐远纹理。
4.根据权利要求1所述的三维海底环境实时动态渲染方法,其特征在于,所述步骤(1)中生成地形法线纹理贴图方法为:采用PS的滤镜插件将纹理贴图转法线贴图。
5.一种三维海底环境实时动态渲染系统,其特征在于,包括:地形渲染模、刻蚀和光束渲染模块、气泡模拟模块;
所述地形渲染模块根据海底区域的数字高程模型数据和地面图像,实现海底地面的渲染;
所述刻蚀和光束渲染模块根据水刻蚀纹理图片渲染刻蚀,并根据光源来渲染光束;
所述气泡模拟模块用于气泡的生成和删除,并根据气泡的位置和速度进行碰撞检测,并更新碰撞后气泡的属性。
6.根据权利要求5所述的三维海底环境实时动态渲染系统,其特征在于,所述地形渲染模块、刻蚀和光束渲染模块、气泡模拟模块为配有AMD Radeon HD8210图形卡的计算机。

说明书全文

一种三维海底环境实时动态渲染方法和渲染系统

技术领域

[0001] 本发明属于计算机图像仿真领域,具体涉及一种利用计算机对海底环境进行三维实时动态渲染的方法和渲染系统。

背景技术

[0002] 人类对于海洋的探测已经不满足于二维,构建逼真的三维海底动态环境成为对海洋信息及场景要素进行计算机直观可视化和三维展示的空间基础。在此基础上,可以开展海洋信息数据处理与分析,海洋作业展示,海洋现象仿真等各方面的科研活动与虚拟操作。三维的动态海底环境可视化对电影和游戏,海底勘测,灾害救援具有重要作用。
[0003] 目前,对于整个海底环境的动态可视化是不全面的,且绘制速度较慢。在地形方面,地形的模拟分为真实地形与模拟地形两种。模拟地形一般不能真实地反映海底地形的情况,而真实地形的建立一般采用数字高程模型(Digital Elevation Model,DEM)方法,所获得的数据类型不统一。通常通过所使用的系统决定数据变换的方法,将地形数据转换成系统可以识别的类型,但通常这种变换只适合一种系统,无法通用且工作量大,不易实现。在与地形,光线交互方面,将海面光线分割成多个锥体,并对锥体的光强积分计算,积分运算会耗费大量的时长。在光束方面,一般只考虑光线衰减,而没考虑到光线的折射与地形对光线的影响。将刻蚀图技术引入水下光照的渲染,结合FFT水面的周期性对刻蚀图进行改进,利用光线行进技术渲染水下光束,这种FFT水面的周期性渲染降低了绘制的效率,且无法动态实现海底环境的可视化。
[0004] 上述可视化方法在仿真过程中,数据处理过程复杂,处理效率低。

发明内容

[0005] 发明目的:针对现有技术中存在的问题,本发明公开了一种三维海底环境实时动态渲染方法,该方法能够快速绘制海底环境,且绘制效果逼真。
[0006] 技术方案:本发明一方面公开了一种三维海底环境实时动态渲染方法,包括:
[0007] (1)根据待渲染海底区域的数字高程模型数据建立obj模型;
[0008] 实时获取所述海底区域的地面图像,生成地形法线纹理贴图;
[0009] 设置纹理环绕方式和过滤方式;利用OpenGL将地形法线纹理贴图加载到obj模型上,实现海底地面的渲染;
[0010] (2)渲染刻蚀:获取待渲染海底区域当前时刻之前连续n个时刻的静态水刻蚀纹理图片,所述静态水刻蚀纹理图片中相邻图片的时间差小于预设的时间间隔△t;对所述水刻蚀纹理图片进行高斯滤波,利用滤波后的水刻蚀纹理图片生成水刻蚀法线纹理图片;
[0011] 设置纹理环绕方式和过滤方式;利用OpenGL计时器将水刻蚀法线纹理图片加载到待渲染海底区域的水域部分,实现水刻蚀的动态渲染;
[0012] 渲染光束:在OpenGL主程序中渲染一个全屏的矩形;在片段着色器中,从近裁剪面开始,光线行进视景体,沿着视线方向对水刻蚀纹理图片进行采样,将当前采样点投影到光源空间,用得到的x,y分量作为光束纹理坐标采样刻蚀图;所述x,y分量为当前片元的窗口相对坐标;采样值作为本采样点对片元的强度贡献,并加入指数衰减,计算最终的片元强度;所述光线上位置p处的片元强度S(p)为:S(p)=I+I*α(P1,p)·β(p,e)·c;
[0013] 其中,P1为光线的起始点,I为光线照射到海面上的光强,e为观察点的位置,c为海水的散射系数,α(P1,p)为光强从起始点到p处的衰减系数;β(p,e)为光强度从眼睛位置到p处光线位置的衰减系数;
[0014] (3)设置气泡的纹理数据和透明度;生成新的气泡并设置气泡属性,所述气泡属性包括:气泡位置、大小、生存期、速度;将生存期超过预设的生存期阈值的气泡和高度超过预设海深阈值的气泡删除;根据气泡的位置和速度进行碰撞检测,并更新碰撞后气泡的属性。
[0015] 所述步骤(1)中还包括对obj模型的优化和简化;
[0016] 所述优化为:对建立的obj模型调整数据比例进行优化;
[0017] 所述简化为合并obj模型文件中重复的顶点、法线和材质。
[0018] 所述步骤(1)中纹理环绕方式为重复纹理图像,所述纹理过滤方式为多级渐远纹理。
[0019] 所述步骤(1)中生成地形法线纹理贴图方法为:采用PS的滤镜插件将将纹理贴图转法线贴图。
[0020] 另一方面,本发明公开实现上述三维海底环境实时动态渲染方法的系统,包括:地形渲染模、刻蚀和光束渲染模块、气泡模拟模块;
[0021] 所述地形渲染模块根据海底区域的数字高程模型数据和地面图像,实现海底地面的渲染;
[0022] 所述刻蚀和光束渲染模块根据水刻蚀纹理图片渲染刻蚀,并根据光源来渲染光束;
[0023] 所述气泡模拟模块用于气泡的生成和删除,并根据气泡的位置和速度进行碰撞检测,并更新碰撞后气泡的属性。
[0024] 所述地形渲染模块、刻蚀和光束渲染模块、气泡模拟模块为配有AMD Radeon HD8210图形卡的计算机。
[0025] 有益效果:与现有技术相比,本发明公开的三维海底环境实时动态渲染方法具有以下优点:
[0026] (1)通过对真实的地形高程数据进行建模,获得的地形精确度高;
[0027] (2)在渲染之前进行数据模型转换,加载obj模型并进行简化模型,可以加快绘制速度;
[0028] (3)因为刻蚀图纹理生成需要大量的积分计算,需要额外的工作量,本发明通过视频纹理转换不仅更真实还可以节省时间,提高效率。附图说明
[0029] 图1为三维海底环境实时动态渲染方法的流程图
[0030] 图2为三维海底环境实时动态渲染系统的示意图;
[0031] 图3为刻蚀和光束示意图;
[0032] 图4为气泡模拟流程图。

具体实施方式

[0033] 下面结合附图和具体实施方式,进一步阐明本发明。
[0034] 如图1所示,本发明公开了一种三维海底环境实时动态渲染方法,包括如下步骤:
[0035] 步骤1、渲染海底地面,具体步骤为:
[0036] (1.1)根据待渲染海底区域的数字高程模型数据建立obj模型;
[0037] 数字高程模型(Digital Elevation Model,DEM)是高程z关于平面坐标x,y两个自变量的离散函数。高程模型最常见的表达是相对于海平面的海拔高度,或某个参考平面的相对高度。本发明利用tif格式的dem数据,可以最大限度地还原高程值。对dem数据的提取可以根据tif图片和空间分辨率的大小,比较完整地提取出像素值的大小及其图像坐标位置;像素值的大小表示海底地形的高程,图像坐标表示相对的位置信息。
[0038] 利用python根据dem数据生成obj模型,同时利用blend优化模型。dem数据可能存在数据变化不太明显的问题,导致之后的显示中效果不明显,可以通过调整数据的比例大小来优化模型。
[0039] 虽然obj规范非常简单,但它仍然有很大的空间来导出几何和网格/材质组合,这些组合并不总是最适合3D渲染引擎。进行简单的清理操作,减小文件大小,使加载和渲染模型更快。
[0040] (1.2)利用声纳实时获取所述海底区域的地面图像,生成地形法线纹理贴图;
[0041] 物体不同位置反射不同方向的光线,对于每一张地面的纹理图片,其表面上的所有法向量都是可以计算处理,并且存储在法线贴图里的。从法线贴图上进行采样得到对应的法线方向,这样更加接近现实。制作法线贴图主要有两种方法:一是采用高模烘焙,就是做个几百万面或者几千万甚至上亿面的高精度模型,再做一个几千面几万面的低模,把高模的细节信息烘焙到低模上就能得到一张法线贴图,但需要比较高的建模技能和大量的精;二是用纹理贴图转法线贴图,这种方法方便快捷。本发明使用第二种方法,利用ps的滤镜插件,直接在ps里可以完成。
[0042] (1.3)设置纹理环绕方式和过滤方式;利用OpenGL将地形法线纹理贴图加载到obj模型上,实现海底地面的渲染;
[0043] 本发明中纹理环绕方式为重复纹理图像,纹理过滤方式为多级渐远纹理。
[0044] 纹理环绕方式有重复纹理图像,镜像重复,用户指定的边缘颜色等,本发明选用重复纹理图像,纹理坐标被约束在(0,1)之间,超出的部分会重复纹理坐标的边缘。纹理贴图可以是线性的、方形的、长方形的,甚至是三维的形式,但是当它被映射到多边形或者物体表面,再变换到屏幕坐标系后,纹理上的独立纹素几乎不可能直接和屏幕上的最终画面像素直接对应起来。此种情况下通过多级渐远纹理(mipmap)技术,根据需要放大或缩小纹素。当视点变化时,为了降低渲染瑕疵,可以对纹理进行提前滤波,并且将滤波后的图像存储为连续的低分辨率的版本。
[0045] 基于OpenGL的渲染,主要需要利用顶点着色器,几何着色器和片段着色器;包括:设置光照:创建光源,设置光源的属性,包括位置,方向,颜色;设置亮度增益,散射增益。从obj文件加载数据;将地形法线纹理贴图加载到OpenGL的主程序程序中。建立Mesh对象;通过mesh绘制海底地面。准备着色器程序;通过顶点着色器,几何着色器,片段着色器最终实现海底地面的渲染。
[0046] 步骤2、渲染刻蚀和渲染光束,具体包括:
[0047] (2.1)渲染刻蚀:
[0048] 模拟刻蚀的难点是求光线与海底的交点,当海底为平面时,只需要利用线与面的求交公式就可以得到;当海底是凹凸不平时,传统的公式计算量非常巨大,本发明采用动态纹理的方法可以快速得到刻蚀图,减少计算量。将水刻蚀法线纹理投影到场景中的物体上,省去了对大量光线折射与反射的实时计算。
[0049] 获取待渲染海底区域当前时刻之前连续n个时刻的静态水刻蚀纹理图片,所述静态水刻蚀纹理图片中相邻图片的时间差小于预设的时间间隔△t,以使图片连贯。
[0050] 渲染刻蚀前须对水刻蚀法线纹理图片滤波,因为光子相对分散的区域会出现低采样(undersample),水刻蚀法线纹理图片往往噪声较大。本实施例采用基于GPU的高斯模糊来降低噪声,它是一种低通滤波,选择大小合适的模糊取值半径(radius)可以达到较为满意的效果。本实施例选用模糊半径为3,可以很好实现滤波的效果。
[0051] 利用滤波后的水刻蚀纹理图片生成水刻蚀法线纹理图片来增强视觉效果。本实施例中同样采用PS的滤镜插件将水刻蚀纹理图片转换为水刻蚀法线纹理图片。
[0052] 设置纹理环绕方式和过滤方式;利用OpenGL计时器将水刻蚀法线纹理图片加载到待渲染海底区域的水域部分,生成纹理资源,保持四边形的位置、纹理坐标数据不变,动态绑定不同纹理从而实现播放视频效果,实现水刻蚀的渲染,此部分同步骤(1.3),区别在于加载的是水刻蚀法线纹理图片。
[0053] (2.2)渲染光束:在OpenGL主程序中渲染一个全屏的矩形;在片段着色器中,从近裁剪面开始,光线行进视景体,沿着视线方向对水刻蚀纹理图片进行采样。采样的步长决定了仿真精度,步长值大,精度较低;步长值小,精度较高,但渲染速度低。本实施例中采样的步长值根据水刻蚀纹理的位置到视点的距离与光线总长度的比值来确定,将步长值限定在(0.01,1)的范围内。
[0054] 将当前采样点投影到光源空间,用得到的x,y分量作为光束纹理坐标采样刻蚀图;所述x,y分量为当前片元的窗口相对坐标;采样值作为本采样点对片元的强度贡献,并加入指数衰减,计算最终的片元强度;所述光线上位置p处的片元强度S(p)为:S(p)=I+I*α(P1,p)·β(p,e)·c;
[0055] 其中,P1为光线的起始点,I为光线照射到海面上的光强,e为观察点的位置,c为海水的散射系数,α(P1,p)为光强从起始点到p处的衰减系数;β(p,e)为光强度从眼睛位置到p处光线位置的衰减系数。如图3所示,为刻蚀和光束示意图。
[0056] 步骤3、设置气泡的纹理数据和透明度;本实施例中将气泡纹理设为全透明,使仿真效果更具有真实感;
[0057] 利用OpenGL的粒子系统生成新的气泡并设置气泡属性,所述气泡属性包括:气泡位置、大小、生存期、速度;本实施例中,设置气泡数量为500,气泡的初始位置在海底地面,初始速度为v0,在生存期为t时,速度为
[0058] 将生存期超过预设的生存期阈值的气泡和高度超过预设海深阈值的气泡删除;根据气泡的位置和速度进行碰撞检测,并更新碰撞后气泡的属性。本实施例中在顶点着色器中实现碰撞检测。由于无法立即更新顶点数据,气泡的位置和速度向量被保存在两个缓存当中,每次取时间较早的缓存来更新渲染。
[0059] 如图4所示,为气泡模拟的流程图。其中光栅化的工作是判断某一部分几何体所覆盖的屏幕空间。等到了屏幕空间信息以及输入的顶点数据之后,光栅化单元就可以直接对片元着色器中的每个可变变量进行线性插值,然后将结果值传递给片元着色器。片元着色器(即片段着色器)主要设置气泡的颜色,这里用来设置气泡颜色的透明度,透明度主要根据亮度和散射来设置,一开始的亮度为气泡的纹理图片的颜色,随着气泡的变化,在一定范围内变化。
[0060] 如图2所示,为实现上述三维海底环境实时动态渲染方法的渲染系统,包括:地形渲染模块1、刻蚀和光束渲染模块2、气泡模拟模块3;所述地形渲染模块根据海底区域的数字高程模型数据和地面图像,实现海底地面的渲染;所述刻蚀和光束渲染模块根据水刻蚀纹理图片渲染刻蚀,并根据光源来渲染光束;所述气泡模拟模块用于气泡的生成和删除,并根据气泡的位置和速度进行碰撞检测,并更新碰撞后气泡的属性。本实施例中,所述地形渲染模块、刻蚀和光束渲染模块、气泡模拟模块为配有AMD Radeon HD8210图形卡的计算机,具体配置为:
[0061] CPU:AMD E1_2100APU with Radeon(TM)HD Graphics 1.00GHz;
[0062] 内存:2GB内存;
[0063] 图形卡:AMD Radeon HD8210,
[0064] 显卡内存:1881MB。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈