基于OGRE的实时光照及降雨天气仿真

2016-01-27 08:08凌志明王毅刚陶玲君

凌志明,王毅刚,陶玲君

(1.杭州电子科技大学图形图像研究所,浙江 杭州 310018;

2.杭州电子科技大学数字媒体与艺术设计学院,浙江 杭州 310018)



基于OGRE的实时光照及降雨天气仿真

凌志明1,王毅刚1,陶玲君2

(1.杭州电子科技大学图形图像研究所,浙江 杭州 310018;

2.杭州电子科技大学数字媒体与艺术设计学院,浙江 杭州 310018)

摘要:针对目前气象效果仿真存在的实时性差及不支持全天候的问题,提出一种基于OGRE三维渲染引擎的实时光照及降雨天气仿真方法。通过网络编程获取来自Web气象接口的实时气象数据并进行数据解析,从而根据解析获得的有效气象数据进行匹配分析天气条件集合,最后进行实时气候状况的绘制及更新。在实时降雨天气的绘制过程中,通过着色器语言对全天候的光照进行真实模拟,动态计算当前时刻的光照强度,实时绘制风场作用下的降雨天气效果,实现了实时降雨条件下的虚拟场景仿真,仿真结果满足了实时性的要求。

关键词:OGRE;气象仿真;光照模拟;降雨天气仿真

0引言

实时三维场景绘制已被广泛应用于大型3D游戏、交互仿真、城市规划等领域,三维虚拟场景是基于虚拟现实技术、地理信息技术、多媒体技术、计算机图形学等,以真实场景为原型,将地理空间信息及其属性信息相结合,模拟构建的三维可视化模型数字景观[1]。为了使现实场景能更逼真、高精度地展现于三维场景中,实时气候效果的模拟变得十分重要。文献[2]提出了一个基于图像的室外场景的天气模拟技术框架,仅以二维图像作为现实场景的展示,三维立体感及真实感不强。文献[3]通过双锥体实现了雨雪天气的模拟,其运行效率比普通粒子系统要快,但缺乏与环境的交互。国内研究学者实现了一种基于Google Earth的城市天气可视化方法[4],在Google Earth的城市背景下,用实时天气动画的方式模拟了实时的天气效果,但该方法未实现将气象效果应用到真正三维虚拟场景中,可复用性不高。文献[5]则提出一种新的大规模城市场景高效建模及实时绘制方法,将分页式的场景剔除技术引入城市场景的图形绘制流水线中,实现了雨、雪等不同气象条件下大规模复杂城市场景的实时绘制,但并未达到与现实世界中的当前气象条件的同步,24 h全天候不同光照条件下的场景仿真也未实现。文献[6]采用3D GIS数据库,实现了基于粒子系统的雨雪天气的仿真,其研究重点为粒子系统的加速渲染。文献[7]使用GPU加速技术实现了一个下雨的演示示例。

三维场景仿真是虚拟现实的重要组成部分,当前三维虚拟现实场景中的室外场景绘制与研究都已得到了较大的进展,但大都还不支持对24 h的天气情况进行仿真。目前为止,针对实时光照及降雨条件下的三维室外现实场景的真实感实时绘制还存在实时性差及不支持全天候的问题。本文提出一种基于面向对象图形渲染引擎(Object-oriented Graphics Render Engine,OGRE)的实时光照及降雨场景仿真方法,有效地解决了以上的问题,对于现实世界降雨天气的模拟效果良好。

1实时气象场景绘制流程

本文首先描述网络实时气象数据的获取,简介通过SkyX接口建立基本气象模型,再重点对动态光照纹理混合的实现进行阐述,最后对风场作用下的降雨天气绘制做表述。实时气象场景绘制的基本流程如图1所示。

图 1 实时气象场景绘制的基本流程

以OGRE引擎的SkyX插件提供的基本气象元素为基础,首先建立天气条件集合,然后通过网络编程获取来自Web气象接口的实时气象数据并进行数据解析,再根据解析获得的有效气象数据进行匹配分析现有的天气条件集合,最后进行实时气候状况的绘制及更新。在实时气象场景的绘制过程中,采用OpenGL着色语言(OpenGL Shading Language,GLSL)动态计算当前时刻的光照强度,并与当前时刻场景纹理进行混合,实现实时气象条件下的现实场景仿真。

2实时网络气象数据获取

从公共气象开放接口获取实时气象数据。为了获取请求接口后返回的实时气象数据,使用MFC网络编程中的网络会话类创建并初始化一个网络会话,并获取网络接口返回的JSON格式的气象数据,步骤如下:

1)通过网络会话访问提供应用程序编程接口的URL,若访问失败(未联网等情况)则需要捕获抛出的异常并处理,返回信息调用本地默认气象数据;

2)查询信息状态字,若返回成功则读取服务器应答信息;

3)释放超文本传送协议文件对象,关闭网络会话实例并重置网络连接标识。

取到气象数据后,对其进行解析得到有效的天气信息,处理后绘制在窗口左上方,信息显示的内容有网络状态、地区、风向、风力、当前温度、当前湿度、气象数据获取时间、当前时间等,为后续的实时天气绘制做准备。

3建立气象模型

3.1 动态光照模拟

实时天气仿真中,场景中的物体受光照变化的影响很关键,这关系到全天候气象条件下仿真效果的真实度。现实世界中,一天内太阳光照的变化是由地球自转引起的,四季光照变化是由地球公转引起的。在虚拟世界里,对现实世界的仿真通常以地表物体模型为基本单位,若采用地球自转公转模型来模拟太阳光照较为复杂。目前,三维场景仿真中对天空光的处理通常采用设定环境光为常量的手段,这种方法虽简单,但无法真实表达现实世界中昼夜更迭时的光照变化,也无法很好地模拟阴晴条件下物体表面的光照强度变化。

动物学科英语隶属于科技英语,但它是更具专业性的科技英语,涉及的知识面更加狭窄,与动物学联系更加紧密。因此,在进行动物学科英语互译时,不但要注意科技英语的文体、修辞、语法等特点,还要紧密结合相关专业知识,力求做出符合原文语言特点、本族语言特点以及动物学相关知识的完美译文。此外,通过上述介绍可以得知,概念语法隐喻一般包括语义层次上的及物性隐喻和词汇语法层次上的名词化、形容词化等现象,下面将主要从以下两个方面来探讨动物学科英语的翻译。

采用GLSL控制光照来模拟24 h全天候太阳对地球的动态光照变化,如图2所示,对真实世界太阳与地球的相对运动做抽象与简化处理,在虚拟场景中模拟真实世界太阳的“东升西落”,并且参照物纹理颜色在太阳运动过程中受与其相关的环境光影响。在OGRE的渲染过程中,根据太阳纹理贴图在天空穹中的假定运动轨迹为基准,建立以地平面东西走向为X轴,垂直于地平面向上的方向为Y轴的二维坐标系,太阳运动轨迹方程为:

(1)

图2 虚拟场景中太阳轨迹变化

式中,Fdistance为当前时刻太阳距地平面的垂直距离,dy为虚拟场景中太阳距地平面的垂直距离,k为小于0的常数,p为与曲线离心率相关的常数,Xtime为当前时间参数。

由式(1)可得,Fdistance与以正午为分界点的太阳光照强度(LightIntensity)非线性相关,将其二者间的关系简化为:

Fdistance∝Lintensity

(2)

环境光光照公式为:

Lcolor=Aintensity·Acolor·Amaterial

(3)

式中,Aintensity为环境光的光照强度,Acolor为环境光的颜色,Amaterial为环境光颜色材质,环境光颜色材质通常取常数。

在GLSL的片段着色器中,采用环境光与纹理颜色混合的方式模拟受动态变化的环境光影响的片元色,方法实现的步骤如下:

1)查找使用指定坐标的灰度图纹理,并将其设为环境色变量;

2)根据式(2)将式(3)中的光照强度与环境色做混合,作为该像素的当前环境光值;

3)查找使用指定坐标的模型纹理,与步骤2计算得到的环境光做混合,作为片元色,交由GPU处理并显示该像素。

3.2 雨粒子受风力作用的模拟

文献[8]提出了一种交互式的大规模雪场景的实时绘制方法。文献[9]实现了采用OpenGL粒子系统的实时雨模拟。对这两种方法进行了整合及简化,采用OGRE的粒子系统模拟雨粒子受风力影响下的实时降雨天气效果。

在风力影响下,动态调整粒子脚本参数,实现在不同风力及风向条件下的粒子运动轨迹。雨滴在降落过程中受力示意图如图3所示,图3中,坐标系为OGRE中的世界坐标系,v为雨滴的雨落朝向,雨滴在降落过程中受竖直向下的重力f影响,将风场简化为水平方向的对雨滴的作用力f1,风场作用力在其他方向的分量将其分解到除f1外的其他力中。f2和f3分别为与重力反方向的空气阻力及与风力反方向的空气阻力和,在这4个力的作用下某时刻雨滴产生与竖直方向夹角为α的射线运动轨迹,则有:

(4)

图3 雨滴降落过程中 的受力分析

1)根据降雨等级定义最大粒子数;

2)根据风向设置粒子系统的公用方向向量,确定降雨时雨滴大致朝向;

3)将风力等级变换为式;

4)中雨滴朝向与竖直方向夹角α。

通过以上步骤,将下雨天气数据转换为虚拟场景里的粒子行为属性,从而真实地模拟实时下雨天气场景。

3.3 实验结果

采用本文的绘制流程及方法,在Intel Core 2 CPU E8400 3.00 GHz,2 GB内存,512 MB显存的PC机上实现了系统,以杭州某地的现实场景为例,搭建简化的三维场景,同时获取杭州市实时气象数据进行处理,如表1所示。系统平均帧率达到了132 FPS,仿真效果如图4、图5所示。

表1 网络实时气象数据项

图4 24 h不同时段的光照变化场景

图5 不同风力及风向影响下降雨天气的渲染场景对比

图4分别为晴天早晨,多云中午及傍晚夜间不同时刻的光照变化渲染场景,图5为根据表1中的气象数据进行模拟的效果。对于图4,在多云天气等光线不充足的气候条件下,根据当前时间的不同,当Fdistance分别取[-1,1]区间的0.335、0.849、0.425、-0.147时,灰度纹理图按照与上述值对应的光照强度混合,即值越大,混合色亮度越高,反之则越低,再与模型的彩色纹理混合,因此产生不同时刻的光照模拟效果依次如图所示。对于图5,根据风力的实际单位风速与雨滴受力成正比的关系,当风力为2级时,f1取0.1 N,α取10°,风向为东南风,粒子运动的方向向量取(-0.1,-0.8,-0.1),则效果如图5左图所示,当风力为3级时,f1取0.24 N,α取30°,风向为南风,粒子运动方向向量取(0,-1.732,-1),视线方向均为(0,0,-1),效果如图5右图。实验说明,根据本文的方法,能良好解决天气仿真的全天性问题并能较真实地模拟实时性的降雨天气。

4结束语

本文实现了一种基于三维渲染引擎的实时光照及降雨天气仿真方法,通过获取当地实时的气象数据进行处理并建立实时气象效果的集合,对全天各个时刻的光照进行模拟,实现了风场作用下的降雨天气效果仿真,在3D游戏及虚拟漫游领域具有良好的应用前景。但在光照计算中并未考虑太阳的实际方向,降雨模拟时粒子的大小也并未根据相应降雨等级变化。在今后的工作中,将致力于模拟风场影响下的柔性物体实时动态仿真,例如树木在当前气候条件下的摆动及水面波纹的实时波动等,以求实现虚拟现实场景更加真实的绘制。

参考文献

[1]石敏,王俊铮,魏家辉.真实感三维虚拟场景构建与漫游方法[J].系统仿真学报,2014,26(9):1969-1974.

[2]李忠新,茅耀斌,王执铨.一种基于图像的室外场景天气模拟技术框架[J].计算机应用,2003,23(2):37-38.

[3]Wang N,Wade B.Rendering falling rain and snow[C]//ACM SIGGRAPH 2004 Sketches.New York:ACM,2004:14.

[4]唐慧强,薛丽.基于Google Earth的城市实时天气可视化系统[J].计算机工程与设计,2013,34(10):3675-3679.

[5]刘波,王章野,王丽英,等.大规模城市场景的高效建模及其实时绘制[J].计算机辅助设计与图形学学报,2008,20(9):1153-1162.

[6]李欢,樊红,冯浩.3D GIS环境下雨雪天气实时仿真[J].中国图象图形学报,2012,17(12):1548-1553.

[7]Tatarchuk N.Artist-directable real-time rain rendering in city environments[C]//ACM SIGGRAPH 2006 Courses.New York:ACM,2006:23-64.

[8]单翔宇,王章野,杨春燕,等.大规模雪场景的实时绘制[J].计算机辅助设计与图形学学报,2013,25(8):1138-1145.

[9]李苏军,吴玲达.基于粒子系统的实时雨模拟[J].计算机工程,2007,33(18):236-238.

Real-time Lighting and Rainfall Weather Simulation Based on OGRE

Ling Zhiming1,Wang Yigang1,Tao Lingjun2

(1.InstituteofGraphicsandImage,HangzhouDianziUniversity,HangzhouZhejiang310018,China;

2.SchoolofMediaandDesign,HangzhouDianziUniversity,HangzhouZhejiang310018,China)

Abstract:For weather effect simulation real-time performance is poor and does not support all-weather problems currently,this paper proposes a simulation approach of real-time lighting and rainfall weather based on three dimensional rendering engine object-oriented graphics render engine(OGRE).Through network programming to obtain real-time weather data from the Web weather interface and make data analysis,then take the effective collection of weather data to match weather conditions,making real-time weather rendering and the update lastly.In the real-time rendering process of rainfall weather,through the shading language to simulate the lighting under the condition of all-weather,calculate the light intensity dynamically,real-time rendering rainfall weather under the effect of wind field.Realized the virtual scene simulation in real-time rainfall,the simulation results met the real-time requirements.

Key words:object-oriented graphics render engine;weather simulation;lighting simulation;simulation of rainfall weather

中图分类号:TP391.9

文献标识码:A

文章编号:1001-9146(2015)05-0031-05

通信作者:

作者简介:凌志明(1988-),男,山东潍坊人,在读研究生,虚拟现实技术.王毅刚教授,E-mail:yigang.wang@hdu.edu.cn.

收稿日期:2015-01-16

DOI:10.13954/j.cnki.hdu.2015.05.007