APP下载

基于OpenGL的建筑虚拟现实展示系统研究与设计

2018-11-22王妙婷

微型电脑应用 2018年11期
关键词:虚拟环境虚拟现实动画

王妙婷

(陕西财经职业技术学院 经济与金融管理学院, 咸阳 712000))

0 引言

随着现代信息技术的不断发展,信息技术开始被广泛的应用在各个领域,并引领者现代人们的生活。其中,虚拟现实技术作为信息技术应用的一个重要方面,具有沉浸性、体验性和漫游性等特点,从而受到各方面的重视。如伍朝辉(2016)结合虚拟现实的优势[1],将虚拟现实技术应用到交通方面,通过应用极大提高了交通规划的效率。与此同时,对建筑设计来讲,如何提高建筑规划设计的效率,并通过这种虚拟的方式对设计效果进行修改,是当前虚拟现实技术在建筑领域应用的关键。但是对虚拟现实技术来讲,单纯的虚拟现实技术虽然可以产生沉浸感,但是在实际的展示过程中,很难达到人们满意的结果。对此,人们提出将虚拟现实技术应用到建筑设计中,如肖健(2016)则提出了在建筑设计领域中应用OpenGL虚拟仿真的价值和意义[2];黄珍[3]、朱耀麟[4]等则给出了虚拟仿真软件在建筑中应用的实例,从而为当前虚拟现实技术的应用提供了借鉴。本文结合上述的需求,提出一种基于OpenGL软件的建筑虚拟仿真展示平台,并对该平台进行了详细的阐述和设计。

1 系统设计原则

结合虚拟建筑展示的相关要求,同时根据系统设计的目的,在对本系统的设计中主要依据以下几个原则:

第一,真实性。作为对建筑物的一种虚拟展示,在对本系统的设计中,对各种建筑实体模型和建筑虚拟环境的构建都要与实际的建筑环境有较好的相似性,从而使得用户在进入到该平台的时候,能够身临其境。因此,在对该虚拟平台进行构建的过程中,要尽量保证建筑场景的真实感。

第二,实用性。在对平台的设计中,界面要友好,同时各种功能操作方便,同时对硬件各方面的要求要低,以此更好的支持建筑设计、施工等的利用。

第三,系统设计需要预留功能扩展接口,进而方便对系统进行二次开发。对此,本系统在开发的过程中,引入OpenGL开发软件和C#语言,并借助.NET体系完成对类的继承和重新,进而实现对不同功能的扩展。

第四,协作性。考虑到该系统使用的不同角色,在对该系统进行设计的过程中,则需要采用多用户协作管理的方式,包括远程访问数据库和不同的使用权限等。

2 系统整体设计

2.1 系统功能设计

在对该平台进行设计的过程中,需要为用户提供建筑虚拟环境创建、虚拟场景管理、场景交互等。因此,结合该设计的目标,将该系统整体功能设计为如图1所示。

图1 系统功能模块设计

在虚拟场景的创建模块中,主要包括3d文件导入、真实感模型、虚拟环境创建等功能。而在3D模型导入阶段,主要是导入外部的建筑三维立体模型。真实感模型主要对构建的三维立体模型的材质、透明度和纹理等进行设置,进而完成对虚拟仿真模型的渲染。虚拟环境的创建主要是对建筑设计或者是施工中的场景进行构建,包括走廊、施工场地、天空等等一系列环境的模拟;

虚拟场景管理模块则主要包括虚拟场景的渲染、漫游控制等。其中渲染控制主要是对部分试题的仿真数据的模式进行选择,进而根据其中的参数对环境进行不同方式的渲染。比如在设计中需要设计下雨天气下的建筑施工环境,则需要设置不同的天气参数。而在漫游控制中还包括视角控制和动态虚拟控制。视角控制是对三维坐标视角进行实时转换、缩放等,而动态虚拟控制则对构建的工序、吊塔等进行控制。

虚拟场景的交互主要是获取相应的仿真数据,并对场景进行控制和信息交换;

数据管理部分主要是对结构化和非结构化的数据进行管理,从而更好的对系统数据进行维护;

权限管理主要对不同的使用权限进行划分,进而让系统各归其位,不同角色拥有不同的功能。

2.2 整体架构设计

根据上述的功能模块,将该系统的整体架构设计,如图2所示。

3 系统部分功能实现

3.1 实现关键技术

OpenGL(Open Graphics Library),是一个可灵活调用的开放式底层图形库,具有非常强大的功能,并被广泛的应用在三维图像跨平台编程接口中[5-6]。在OpenGL软件中,拥有独立的操作窗口,并结合其应用程序,可灵活的在各种操作平台上进行移植。与此同时,OpenGL软件可与Visual C++接口连接,bi进实现相关的计算和图形算法,以确保算法运行的可靠性和稳定性。正是由于OpenGL软件自身的优势,使得其被广泛的用在三维演示系统接口的编程之中。OpenGL工作原理如图3所示。

图2 系统整体架构设计

图3 OpenGL软件工作流程

在图3中可以看出,客户端程序首先从OpenGL中调用不同的文件函数,包括glu32.dll、opengl32.dll,然后在将请求传递给Win32 DDI,最后通过驱动程序将虚拟仿真结果显示出来。在本文的实现中,用户通过调用OpenGL客户端,然后与服务器进行交互,并通过其中的调用文件完成对虚拟建筑的仿真模拟。

3.2 3D文件导入

在实际的三维图形程序构建中,考虑到OpenGL的建模功能不齐全,所以在对三维建筑模型进行设计的过程中,需要借助相应的三维软件进行建模,进而更好的实现对虚拟常见的搭建。对此对比当前的三维软件,本文则提出一种采用3dMAX对三维建筑模型进行构建[7-13]。具体则是将构建的带3dMAX的三维模型文件导入到OpenGL中,从而减少了传统OpenGL软件构建三维模型的工作量。

3.3 3D动画显示和渲染

在完成3D文件的导入之后,还需要对三维立体模型进行模拟,进而实现动画。在本文系统中,则引入OpenGL双缓存技术完成对动画的显示[14-16]。即当前台在缓存显示画面的时候后台缓存则生成下一帧的画面,而当画面在生成以后,通过交换缓冲的方式,将画面展示出来。与此同时,前台缓存开始进入到下一帧画面的生成。由此通过上述步骤的反复循环,完成对画面的连续性展示。上述的过程,如图4所示。

在图4中看出,程序首先是启动动画画面,然后显示建筑虚拟仿真开始和结束的时间;其次,判断开始时间和结束时间,如开始时间Ts大于结束时间Es,那么动画结束,反之则继续;第三,对每个实体动画进行判断,如果Ts大于Es,那么此时动画画面不变换,并等待下一帧动画,如果小于,在判断动画是否已经结束,如果没有结束,那么计算相应的变换矩阵,并结合该变化矩阵对模型进行渲染,如结束,则乘以最后的变换矩阵,并让模型处在最后的这个坐标位置当中;第四,计算插值系数n,并根据插值系数计算变换矩阵,从而更好的变化不同的模型位置;第五,根据现实列表进行实体绘制,并使用auxSwapBuffers(void)命令,对新位置的模型进行生成;第六,对下一轮的实体模型进行绘制和显示,并每间隔一定时间重新进行绘制和显示。在第二帧完成后的每帧开始时,将开始时间设定为Ts+=alterTime,并继续进行第二步循环。

图4 基于OpenGL的动画生成流程图

4 界面展示

通过上述的设计,模拟建筑天气参数为夜晚,进而可以得到动画界面,如图5所示。

5 总结

通过上述的设计可以看出,通过3dmax三维建模软件的建模,然后将3dmax文件导入到OpenGL,并通过OpenGL的渲染,实现了对不同场景下的建筑虚拟环境的构建,进而通过这种动画的场面,为人们提供了一种具有沉浸感和真实性的建筑环境,以此更好的提高了建筑设计和施工的效率,为当前信息技术在建筑领域的灵活应用提供了新的参考。

图5 虚拟夜间建筑场景

猜你喜欢

虚拟环境虚拟现实动画
前庭刺激对虚拟环境三维空间定向的影响及与空间能力的相关关系
如何通过虚拟环境有效管理Python第三方库
做个动画给你看
动画发展史
虚拟现实技术在中学校园中的应用
我的动画梦
动画批评融入动画教育的思考
虚拟环境下大数据智能并行聚类方法研究
风口上的虚拟现实
虚拟现实技术向科幻小说借灵感