面向可视化仿真的雾的动态仿真方法与流程

文档序号:16686305发布日期:2019-01-22 18:21阅读:189来源:国知局
面向可视化仿真的雾的动态仿真方法与流程
本申请涉及计算机仿真领域,具体涉及一种面向可视化仿真的,可用于虚拟现实的雾的动态仿真方法。
背景技术
:虚拟现实技术(vr)是一种根据人的意志和需求,创建虚拟环境和虚拟世界的计算机仿真技术。当前,这一技术被广泛运用在游戏、仿实景军事训练、航空航天、工业仿真等领域。vr技术是一种具有交互式和沉浸式的三维动态视景仿真技术,是一种以人为核心的技术。因此,要使人在虚拟环境中的感觉仿佛置身于实际场景中,就必须要求虚拟场景的模拟逼真,接近真实。尤其是对于利用vr技术进行模拟训练的使用者,环境的逼真性更是影响训练效果的重要因素。雾作为生活环境中最常出现的天气现象,势必要在虚拟场景中出现。例如,在航空领域,直升机一般不会在有雾的天气下飞行,但是需要直升机飞行员具有在雾天应急飞行的能力,此时若采用vr技术进行模拟训练,就要求模拟环境中不仅要出现雾,甚至对雾的模拟精度作了一定的要求。现有的雾仿真模拟方法中,大致分为两类,一类是基于视觉效果的简单模拟,例如unity引擎中自带的雾模拟系统,其核心计算原理是根据离主摄像机的距离远近,以线性或指数等函数计算公式,进行模糊渲染,远处模糊度高,近处模糊度低,以此让第一人称视角的使用者产生雾感。这类雾模拟方法的优点在于计算方式简单,渲染速度快,但是与雾的生消机理和运动规律无关,这对于一些需要模拟出符合生消机理和运动规律的场合是不适用的。另一类是基于纯物理模型的烟雾模拟,这类模拟方法多采用流体力学中的n-s方程(纳维-斯托克斯方程,用于描述粘性不可压缩流体动量守恒的运动方程)建立烟雾的流动方程,找出烟雾的流动规律并用于建模,但是这类纯物理模型仅限于扩散范围小的“烟”进行模拟,例如香烟的烟头的烟扩散模拟。对于大面积的雾模拟,这类方法可能导致计算量过大,加大对计算机渲染的压力,因此这类方法还没有成熟应用在雾仿真的技术。可见,对于大区域雾的模拟方法,现有技术倾向于在视觉上简单建模而不考虑雾的实际生消运动原理;对于小范围的烟,则出现以n-s方程呈现烟的运动规律的模拟方法,但是该方法不适用于大区域雾的模拟。技术实现要素:为了至少部分的解决上述已有技术存在的不足,本发明提供了一种面向可视化仿真的雾的动态仿真建模方法,相比于现在应用于雾的可视化仿真方法而言,兼具真实性和轻量化性的优点,易于理解和操作。根据本发明的一方面,提供一种面向可视化仿真的雾的动态仿真方法,包括如下步骤:s1:获取基础建模数据,所述基础建模数据包括地形模型以及所述地形模型所模拟的地区的地形数据,所述地形数据包括所述地形模型所模拟的地区的海平面高度下的温度t0、空气密度ρ0、绝对湿度和气压p0;s2:将所述地形模型的地面以上500米范围内的区域三维划分为n个区域单元块,n为500-2500;s3:根据步骤s1中获取的基础建模数据,计算各单元块的状态参数数据,包括:各单元块的空间的温度t、空气密度ρ、绝对湿度和气压p;s4:在各单元块内放置产生粒子贴图的雾粒子生成器和控制粒子贴图释放效果的数据接收反馈器;s5:设置各单元块的风向和风速的初始值,之后变更某一单元块的风向和风速的值,利用相邻、相近的单元块的数据接收反馈器依次改变相邻、相近的单元块的风向和风速的值,达到控制雾生消的目的。进一步地,步骤s2具体为:以上疏下密的单元格划分方式,将所述地形模型的地面以上500米范围以内的区域三维划分为密集模拟区域和非密集模拟区域,密集模拟区域为离地面10-100m以内的高度区域,非密集模拟区域为密集模拟区域以上500米范围以内的高度区域。进一步地,步骤s3中具体为:通过以下公式,计算出在不同高度下的单元块的空间的温度t、空气密度ρ、和气压p,,并根据地形调整各单元块的空间的湿度,温度计算公式:t=t0-(6×h),气压计算公式:空气密度计算公式:t=t+273.15其中,h为单元块距离海平面的高度,根据地形调整单元块的空间的湿度具体为:人为设定步骤s1中海平面高度的绝对湿度结合绝对湿度与高度变化的对应表,插值获取各个高度下的单元块的空间的绝对湿度进一步地,步骤s4具体为:在每个单元块的空间的正中间布置一个粒子发生器,在粒子发生器中准备一个雾粒子的贴图,在每个单元块的空间中布置一个数据接收反馈器,粒子发生器和数据接收反馈器由unity引擎中的粒子系统实现,粒子发生器为粒子系统产生粒子贴图的模块,数据接收反馈器为控制unity引擎中粒子贴图释放效果的相关参数的c#脚本代码,数据接受反馈器由脚本代码控制粒子系统的参数面板达到控制粒子释放效果的目的,控制粒子释放效果包括:控制粒子的释放与否、粒子释放的速率,检测相邻、相近的单元块的空间的状态参数数据变化,存储着本单元块的空间的状态参数数据并可修改本单元块的状态参数数据等。进一步地,步骤s5具体为:设置各单元块的风向和风速的初始值;通过数据接收反馈器修改单元块a的空间的风向和风速,使单元块a的空间的风向和风速满足生消雾的要求;修改完毕后,数据接收反馈器关闭1s-3s;单元块a的相邻、相近的单元块的空间的数据接收反馈器检测到单元块a的空间的风向和风速发生改变,脚本将自身的风向和风速进行修改;以此类推,随着参数的修改,各单元块的空间的数据接收反馈器储存的状态参数已经满足生消雾的条件,随即控制粒子发生器释放雾粒子的贴图。雾消散的过程同理:在生成雾的过程中,若调整单元块a的风速、风向参数,使其不满足雾生成的条件,则重复上述过程,各单元块粒子发生器依次停止释放雾粒子,达到雾消散过程模拟。本发明的有益效果在于:本发明的方法引入了影响雾产生和消失的物理因素,即温度、湿度、风速、风向等,弥补了目前在雾的可视化仿真中仅仅依靠距离进行模糊渲染来模拟雾的缺陷;本方法将有限元的思想引入可视化仿真,采用对有限个单元空间的控制,来控制整体的雾可视化仿真的效果,相比于单纯依靠流体力学n-s方程的模拟方法更简便、更轻量化。附图说明图1示出了本发明的面向可视化仿真的雾的动态仿真方法的步骤流程图。图2示出了本发明的划分单元和粒子发生器。图3为本发明的粒子发生器和数据接收反馈器的作用逻辑流程图。具体实施方式下面将结合本申请实施方式中的附图,对本申请的实施方式中的技术方案进行清楚、完整的描述。本发明提供了一种面向可视化仿真的雾的动态仿真建模方法,包括如下步骤:s1,获取包括地形模型以及该地形模型所模拟的地区的地形数据的基础建模数据,地形数据主要包括所模拟的地区的海平面的状态参数数据,包括海平面高度下的温度、空气密度、绝对湿度、气压;s2,将该地形模型的地面以上500米范围内的区域三维划分为有限个区域单元块,单元块的数量根据仿真需求可以设置500至2500个;s3,根据步骤s1中获取的基础建模数据,计算各个区域单元块的状态参数数值,包括:各区域单元块的空间的温度、空气密度、湿度、气压;s4,在每个区域单元块内放置一个雾粒子生成器和一个数据接收反馈器;s5,设置各单元块的风速和风向的初始值(通常设置风向为空值,风速值为0),之后根据仿真用户的要求,变更某一单元块的风向和风速的值,利用相邻、相近的单元块的数据接收反馈器依次改变相邻、相近的单元块的风向和风速的值,达到控制雾生消的目的。下面通过具体实施例来说明本发明的仿真方法,如图1所示。本实例所使用的物理引擎为unity,编译环境为visualstudio2017,是基于三维仿真建模引擎unity的一个雾的可视化仿真建模的实例。s1:先获取必须的基础三维地形模型和该地形模型所模拟的地区的地形数据,此处包括已经在unity中生成的地形模型以及该地形模型所模拟的地区的经度和纬度,以此获取该地区的海平面的状态参数数据,包括海平面高度下的温度t0、空气密度ρ0、绝对湿度和气压p0。s2:以步骤s2中的基础三维地形模型的底面为底,以其上500米(建模单位:米)的空间为高建立一个大的长方体方块。图1示出了步骤s2中的划分单元,其将研究对象划分为密集模拟区域和非密集模拟区域,密集模拟区域一般为近地10到100m以内的高度;对于非密集模拟区域,选用高较长的长方形单元;对于密集模拟区域,选用高较短的长方形单元;二者共同构成完整的划分结果。在本实例中,整体的长方体方块的大小为100×100×500(单位:米)。将这个长方体方块进行划分:在距离底面高10m以上的部分,按照10×10×10(单位:米)的单元块进行划分;在距离底面高10m以下的部分,按照10×10×1(单位:米)的单元块进行划分,最终组成一个上疏下密的划分模型。s3:根据步骤s1中获取的海平面高度下的温度t0、空气密度ρ0、绝对湿度和气压p0,通过现有的高度和各个参数的关系公式,计算出在不同高度下的单元块的空间的温度t、空气密度ρ、和气压p,,并根据地形调整各单元块的空间的绝对湿度具体计算公式如下:温度计算公式:t=t0-(6×h)气压计算公式:空气密度计算公式:t=t+273.15其中,h为单元块距离海平面的高度。根据地形调整单元块的湿度具体步骤为:人为设定地面(即,海平面高度)的湿度,设定值为步骤s1中获取的绝对湿度(单位:克每立方米),通常设定值为11克每立方米。基于上述设定的海平面高度的绝对湿度,结合绝对湿度与高度变化的对应表,插值获取各个高度下的单元块的空间的湿度经验表格如下:海拔高度(m)绝对湿度海拔高度(m)绝对湿度011.0030003.6810007.6440002.5420005.3050001.7725004.42至此,各个单元块的空间的初始状态数据计算完毕。s4:在每个单元块的空间的正中间布置一个粒子发生器(如图2所示),在粒子发生器中准备一个雾粒子的贴图,在每个单元块的空间中布置一个数据接收反馈器。粒子发生器和数据接收反馈器可以由unity引擎中的粒子系统实现。粒子发生器,即,粒子系统产生粒子贴图的模块,数据接收反馈器,即,控制unity引擎中粒子贴图释放效果的相关参数的c#脚本代码。数据接受反馈器由脚本代码控制粒子系统的参数面板达到控制粒子释放效果的目的。例如,控制粒子的释放与否、粒子释放的速率,检测相邻或相近的单元空间的状态参数数据变化,存储着本单元空间的状态参数数据并可修改本单元的状态参数数据等。图3示出了粒子发生器和数据接收反馈器的作用逻辑流程图。s5:开始进行雾的可视化模拟。在本实例中,风速和风向初始时设置为无风状态,风速和风向不满足产生雾的最低物理条件要求,因此初始时各个单元块的空间的粒子发生器不会释放雾粒子的贴图。通过数据接收反馈器修改网格东南角的一个单元块a的空间的风向和风速。本实例中,假设使该单元块的空间的风向和风速满足产生雾的要求,即假设使单元块a的空间的风速变为2m/s,风向为东南风,修改参数完毕后,数据接收反馈器关闭1s-3s;相邻及相近的单元块的空间的数据接收反馈器检测到单元块a的空间的风向和风速发生改变,脚本将自身的风向修改为东南风,风速设定为2m/s,以此类推。随着参数的修改,单元块的空间的数据接收反馈器储存的状态参数已经满足生成雾的条件(这一判定由数据接收反馈器对应的c#脚本作出,判断依据为实际雾的生成原理中所要求达到的状态参数值),随即控制粒子发生器释放雾粒子的贴图。具体粒子释放的速率等参数,由状态参数的数值情况决定,由数据接收反馈器通过控制unity引擎粒子系统的面板参数达到控制粒子释放效果的目的。雾消散的过程同理:在生成雾的过程中,若调整单元块a的风速、风向参数,假设使其不满足雾生成的条件,即假设设置该空间的风速变为0m/s,风向为空,则重复上述过程,各单元块粒子发生器依次停止释放雾粒子,达到雾消散过程模拟。在本实例中,由步骤s1至步骤s4是针对雾模拟的准备工作,步骤s5是对雾生消渲染的控制。通过采用本发明公开的上述技术方案,可以弥补目前在雾的可视化仿真中仅仅依靠距离进行模糊渲染来模拟雾的缺陷,将有限元的思想引入可视化仿真,采用对有限个单元空间的控制,来控制整体的雾可视化仿真的效果,相比于单纯依靠流体力学n-s方程的模拟方法更简便、更轻量化。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1