APP下载

船舶集控室虚拟仿真系统的设计与实现

2013-09-25沈浩生张均东

图学学报 2013年4期
关键词:顶点虚拟现实像素

沈浩生, 张均东, 曾 鸿

(1. 大连海事大学轮机工程学院,辽宁 大连 116026)

船舶集控室虚拟仿真系统的设计与实现

沈浩生, 张均东, 曾 鸿

(1. 大连海事大学轮机工程学院,辽宁 大连 116026)

在分析现有虚拟现实技术与船舶集控室的基础上,采用3D-MAX与XNA分别实现了三维模型的建立与虚拟场景的漫游和交互,应用 C#语言编写了集控室的二维模拟软件,通过UDP协议实现了三维虚拟场景与二维模拟软件之间的通讯。根据光照效果的数学模型,采用高级着色语言(HLSL)开发了一种基于GPU的着色器,降低了GPU与CPU之间的传输负荷,增强了虚拟场景真实感。

虚拟现实;虚拟集控室;XNA;高级着色语言

随着虚拟现实技术的迅猛发展,该项技术被越来越多的应用在船舶行业。文献[1]采用Creator软件与视景驱动引擎 Vega实现了对船用多级离心泵的虚拟拆装。文献[2]采用Multigen Creator、GL Studio和Vega Prime开发了一种船舶机舱虚拟仿真系统。文献[3]基于Catia和Virtools开发了某艇机舱的虚拟漫游系统。上述文献中存在着在模型渲染阶段着色效果不佳的问题,影响了场景的真实感,使用户在体验时的沉浸感减弱。

本文采用三维建模软件 3D-MAX与三维引擎XNA建立了某船集控室的虚拟仿真系统,可实现漫游与交互功能;采用 C#语言建立了与三维场景相对应的二维模拟软件;基于 UDP通讯协议实现了三维场景与二维模拟软件互操作的功能。针对上述文献中场景真实感不强的问题,采用Microsoft推出的高级着色语言(High Level Shader Language, HLSL)开发了基于GPU的着色器,使场景的真实感增强。

1 虚拟集控室的搭建

目前虚拟现实系统主要被分成4大类:桌面虚拟现实系统(Desktop VR)、沉浸式虚拟现实系统(Immersive VR)、增强虚拟现实系统(Aggrandize VR)、分布式虚拟现实系统(Distributed VR)[4]。这些虚拟现实系统提供给用户的沉浸感、交互性、构想性不尽相同,且成本也有所差距。考虑到本文中所设计的集控室虚拟仿真系统所面向的用户为广大船舶院校的学员,为了使学员都能够参与到学习中来且亲自动手操作,本文中所设计的虚拟集控室采用桌面虚拟现实系统(Desktop VR),虽然桌面虚拟现实系统相对于其它几种虚拟现实系统其沉浸感有所减弱,但它的成本相对较低且已经满足了虚拟现实技术的基本要求。

1.1 系统框架

本文中所开发的集控室虚拟仿真系统由二维模拟软件与三维虚拟场景两部分构成。首先,利用3D-MAX提供的文件输出接口,三维模型经过处理后可以导出XNA所识别的.X格式的文件,然后将该文件加载到XNA程序中进行实时渲染。在XNA中通过视图变换、投影变换与碰撞检测以此来实现用户的漫游功能,通过三维拾取来实现用户与虚拟场景的交互功能。然后利用C#编程语言编写与三维场景相对应的二维模拟软件,完成整个系统的逻辑功能。通过UDP协议实现这两个应用程序之间的通讯,能够实现它们之间的互操作功能。该系统的框架图,如图1所示。

图1 虚拟集控室系统框图

1.2 三维虚拟场景设计

1.2.1 三维场景模型建立

本文中所设计的虚拟集控室以大连海事大学开发的DMS-2011C型轮机全任务模拟器为建模依据,整个集控室的配电板共有 22屏,集控台7台,其中配电板11屏为低压配电板,另外11屏为中压配电板,其中集控台包含主机遥控操作台、机舱参数显示台、监测报警控制台、辅助设备操作台、阀门遥控控制台[5]。为了使建模更加有条理性,给出整个三维场景的层次结构,如图2所示。

图2 集控室场景结构图

三维模型文件的大小对于整个程序的加载速度与实时性具有重要的影响,如果将三维模型的每个部分都做的非常细致,虽然模型较为美观,但是这样会显著增加模型的面片数,使模型文件过大,影响了程序的实时性。但是,如果三维模型做的不细致,虽然会使程序运行较为流畅,但是会影响整个场景的真实感,使用户的沉浸感减弱。因此,怎样把握二者之间的关系会影响整个三维场景的实时渲染效率。下面给出本文在建模过程中的解决上述问题的具体方法:

1) 通过删除模型之间的重叠面、模型底部看不见的面和物体之间相交的面可以减少模型的面片数。还可以利用 3D-MAX里面自带的模型简化命令“MultiRes”,通过调节保留百分比,可以自动缩减面片数,但是不要缩减的过多,否则会影响模型效果[6]。

2) 在建模过程中尽量减少使用布尔运算,布尔运算会大大增加模型的面片数,可以使用Alpha贴图代替布尔运算,这需要制作一张纹理,也就是alpha贴图,这个纹理是一张灰度图,其中黑色表示完全透明,灰色表示介于透明和不透明之间,而白色表示完全不透明,通过这张贴图可以实现场景中物体部分透明的效果,本文的三维场景中集控台与配电板的散热孔就是根据此方法制作的。

3) 需要重点表现的物体应做的尽量细致,如车钟、万转开关和同步表等,其它如配电板柜体和集控室地面等可以适当的减少它们的面片数。

4) 当对三维场景中的物体进行贴图的时候,应使贴图的像素值与多边形的像素值相适应,否则如果纹理像素值过大,会导致“像素抖动”,看上去使人晕眩,如果纹理像素值过小,会导致“锯齿”。

为了方便对三维场景的编程,需要在3D-MAX中对其中的原件进行统一命名,整个场景的物体大体上可以分成两部分,一部分是不可交互的物体如地面、墙壁、配电板柜体等,另一部分是可交互的原器件,它又分为两类,一类是指示灯、组合灯等,另一类是万转开关、按钮、组合开关、旋钮等。图3为在3D-MAX中虚拟集控室的渲染效果图。

图3 3D-MAX中渲染效果图

1.2.2 在XNA中漫游与交互的实现

将在3D-MAX中制作的模型导出成XNA所识别的.X格式的文件后将该文件导入到XNA程序中,然后在XNA中提供摄像机以使用户能够对场景进行观察与漫游,本文中提供了两种摄像机,分别是第一人称摄像机与第三人称摄像机,通过添加三维拾取功能来使用户与虚拟场景进行交互,再通过添加碰撞检测使整个虚拟场景的漫游效果更加真实。图4为文本中所设计的三维场景的流程图[7]。

图4中Initialize方法用于初始化变量以及与Game1对象相关的其他对象。图形设备对象将在这里实例化,并可以在Initialize方法中利用该对象初始化依赖于其设置的其他对象。碰撞检测、三维拾取和摄像机的实时控制都是在 Update方法中执行,三维模型的实时渲染在Draw方法中执行。

1.2.3 二维模拟软件与通讯协议的实现

图4 3D程序流程图

本文采用C#编程语言在.NET框架平台下完成了对二维模拟软件的开发,整个虚拟集控室的数学模型与逻辑控制都是在这里实现的,它能够能实现发电机组的手动启/停和自动启/停、手动调频调载、自动调频调载、自动分级卸载和主配电板上动态显示电压、频率和电流数据等功能。图5为本文中所设计的二维模拟软件的组合起动屏界面。

图5 二维模拟软件界面

并车操作是船舶轮机人员必须熟练掌握得船舶操纵技术之一,所谓并车操作是:船舶主电站通常设有3台发电机组,根据船舶不同运行工况所需电量,可以单机运行,也可以两台或3台发电机并联运行,待并发电机投入电网参加并联运行的操作称为并车操作。在船舶上普遍采用的为准同步并车,即要求带并机组和运行机组两者的电压、频率和相位都调整到十分接近的时候,才允许合上待并发电机主开关。手动准同步并车是并车操作的一种,它的操作流程图,如图6所示[11]。

图6 并车操作流程图

具体操作步骤如下:

1) 手动模式需首先将同步屏“电站管理模式”开关转到“手动”位置,然后在发电机及旁控制箱(本地)或配电板上柴发控制屏(遥控)起动带并发电机。

2) 将同步屏“同步选择(SYN SELECT)开关转到待并机位置,作频差、相位检测。此时在同步屏上观察同步表、频率指示表和电压指示表,发电机并电条件要求在待并发电机与电网电压一致,待并机频率最大超前(同步表FAST方向)0.1HZ,待并机相位角最大允许提前 100°。如果不满足以上要求,则需要同步屏上通过相应发电机调速手柄调整待并机原动机转速从而调整发电机频率,直到满足并车条件,即可进行并车操作。本文所设计二维模拟软件的并车屏如图7所示。

图7 并车屏界面

从图7可以看出,两台发电机的电压都稳定在400V,频率稳定在50.18Hz,满足并车操作的条件,可以执行并车操作。

本文用于二维模拟软件与三维虚拟场景之间的传输层协议采用的是用户数据报协议(UDP协议),UDP协议提供的是一种无连接的数据传输服务,无连接就是在使用 UDP协议传输数据时不需要建立和释放连接,从而省去了TCP协议中的3步“握手”过程,从而减少了数据传输的开销和时延,提高了数据传输的实时性[8],这样正好满足了本文对二维模拟软件与三维虚拟场景之间数据传输的实时性要求。本文利用 C#来实现基于UDP协议的通讯功能的具体步骤如下:

1) 实例化UdpClient类的一个对象,用这个对象来表示默认远程主机。UdpClient类实际上是对套接字Socket类的一种封装,这种封装使用户在编写协议时候效率更高。在创建UdpClient实例的时候,选用带有远程主机名与端口号作为参数的构造方法。

2) 在发送数据报时,需要调用 UdpClient对象的Send()方法,由于在上一步已经知道了远程主机的 IP地址与端口号,因此,选用带有 3个参数的 Send()方法,该方法为 UdpClient.Send(byte[] dgram, int bytes, IpEndPoint endpoint),其中第1个参数为所要发送的数据,第 2个参数为数据的长度,第 3个参数为一个IpEndPoint对象,其中包含远程主机的IP地址与端口号。

3) 在接受数据时,需要在本地应用程序中创建一个新的线程进行侦听,当有数据传输到本地时就需要调用 UdpClient对象的 Receive()方法,该方法用于在本地的指定的端口上接受来自远程主机的数据[9]。

2 基于GPU的着色器的开发

在DirectX 8之前,GPU采用固定的方式来实现3D图形的渲染,即所谓的“固定功能流水线(Fixed Pipeline)”,应用固定功能流水线时程序首先设定世界变换、视图变换、投影变换矩阵以及光源和材质。设备使用预先设定好的参数,采用内置的固定的算法对每一个顶点进行处理,在整个处理过程中设置的参数不变,因此,它的像素处理能力很差,表现效果有限,在 DirectX 8发布后提出了可编程流水线(Programmable Pipeline),它使得用户能够通过编写自定义的着色器来访问复杂的图形硬件功能,能够实现许多固定功能流水线所不能实现的功能,使3D图像的渲染效果更加优秀。用户需要为着色器中的顶点着色器与像素着色器编写代码,以实现所需要得渲染效果。XNA中处理着色器的过程如图 8所示[10],图中的顶点着色器为视野中的每个顶点运行世界变换、视图变换、投影变换等功能,像素着色器为每个可见物体中的每个可见像素运行一次。

图8 着色器渲染流程图

基于上述可编程流水线的优点,本文采用微软公司推出的高级着色语言(HLSL)开发了基于GPU的着色器,实现了 XNA自定义的效果BasicEffect类中无法实现的局部光照效果,该BasicEffect类实际上是用来模拟固定功能流水线的类。下面以本文中实现的镜面高光发射光照来说明基于GPU的着色器的开发过程。

这个公式一共被分成4个部分,第1个部分表示环境光照,第2个部分表示漫反射光照,第3个部分表示镜面高光反射。其中Ai表示环境光强度,Ac表示环境光颜色,Di表示漫反射颜色,Dc表示漫反射颜色,Si表示高光反射强度,Sc表示高光反射颜色,N表示顶点的法线向量,L表示光线的方向向量,R表示入射光线的反射向量,V表示观察点位置。如图9所示,图9为该光照模型的向量表示图。

其中R的计算方法如公式2所示:

公式1中的n表示物体表面的光泽度,n越大说明物体表面越光滑,反光越强。如图 10所示,图10说明n对光泽效果的影响。

图9 光照模型向量表示图

图10 n对光泽效果影响对比图

下面根据上述的数学模型,应用HLSL语言来编写着色器文件,关键代码如下所示:

上述代码中,VS为自定义的顶点着色器(VertexShader),PS为自定义的像素着色器(PixelShader)。在顶点着色器中matrixWorldViewProj为世界变换矩阵、视图变换矩阵、投影变换矩阵的连乘积,通过将模型的顶点位置坐标 Pos与matrixWorldViewProj相乘可以将顶点位置转换到正确的位置上。matrixWorld为世界变换矩阵,N为模型顶点的法线向量,通过将N与matrixWorld相乘可以将顶点的法向向量转换到世界坐标系中。入射光线L与视点位置vectorEye由主程序给出具体值。在像素着色器中,首先,对顶点的法线向量N、入射光线向量L和视线向量V进行归一化,使之成为单位向量,dot(x,y)函数用于计算法线向量与入射光线的点积,saturate(x)函数用于将函数内的值限制在[0,1]区间之内,这是为了保证由dot(x,y)函数计算出来的值大于0,pow(x,y)会函数返回xy的值,按照公式(2)可以计算出反射向量 Reflect,最后,按照公式(1)计算会返回一个 float4类型具有COLOR语义的值,作为视图中可见物体的每个顶点的像素值。同时,本文中所实现的着色器是按照逐像素光照模型定义的,即在像素着色器中计算顶点的颜色,它相对于逐顶点光照模型来说,它对模型的渲染效果要好,但是它的计算量相对比较大,因此,选择逐顶点光照模型还是逐像素光照模型就要根据虚拟场景中的具体模型数量,渲染效果要求而定。图 11为本文中根据上述光照模型进行渲染的局部效果图。

图11 最终渲染效果图

3 结 论

本文构建了虚拟集控室,并在XNA中实现了虚拟集控室的交互与漫游,利用 C#编程语言编写了二维模拟软件,通过编写 UDP协议实现了二者之间的即时通讯,本文中所设计的虚拟集控室能够模拟并车、自动调频调载等功能,适用于船舶有关院校对船员的培训工作。以镜面高光反射为例子展示了一种基于 GPU的着色器开发方法,通过自定义着色器增强了整个场景的真实性,给用户更好的视觉体验。

[1]陈 波, 程向新, 刘新建, 等. 虚拟现实技术在轮机拆装培训中的应用[R]. 2010 Third International Conference on Education Technology and Training(ETT 2010). 2011:11-27.

[2]童大鹏, 秦福星, 田 野, 等. 船舶机舱虚拟仿真系统的设计与实现[J]. 船电技术, 2011, (1):41-44.

[3]曾鲁山, 曾凡明, 刘金林. 基于CATIA和VIRTOOLS技术的虚拟机舱漫游研究[J]. 中国舰船研究, 2008,3(5):62-64, 80.

[4]李 敏, 韩 丰. 虚拟现实技术综述[J]. 软件导刊,2010, 9(6):142-144.

[5]Smierzchalski R. Simulation system for marine engine control room [R]. 11th Biennial Baltic Electronics Conference, 2008:281-284.

[6]孙 倩. 基于3DS MAX的三维建模机器在Virtools环境中的应用[J]. 中国科技信息, 2008, (12):94-95.

[7]Aaron Reed. learning XNA 4.0 [M]. USA:O’Reilly Media, 2011:20.

[8]赵 飞, 叶 震. UDP协议与TCP协议的对比分析与可靠性改进[J]. 计算机技术与发展, 2006, (09):219-221.

[9]刘 鹏, 刘 艳. UDP协议使用与分析[J]. 电脑知识与技术, 2010, 6(13):3319-3320, 3380.

[10]Qin Haining, Xu Dong. The real-time dynamic shadow realization of shadow volume based on The HLSL [R]. Advances in Intelligent and Soft Computing, 2011:655-671.

[11]吴志良. 船舶电站及其自动化系统[M]. 大连:大连海事大学出版社, 2010:73-75.

Design and Realization of a Virtual Simulation System for a Ship Engine Control Room

Shen Haosheng, Zhang Jundong, Zeng Hong
( Marine Engineering College, Dalian Maritime University, Dalian Liaoning 116026, China )

On the basis of analyzing the present virtual reality technology and the ship engine control room, the paper implements the establishment of the three-dimension model by using 3D-MAX and the roam and interaction in virtual scene by using XNA, compiles the two-dimension simulation software by adopting C#, implements the communication between three-dimension virtual scene and two-dimension based on UDP protocol. According to the mathematical model of lighting effect, the paper implements one kind of shader based on GPU by using High level Shader Language (HLSL) which lowers the transmission burden between GPU and CPU and enhances the sense of reality of virtual scene.

virtual reality; virtual engine control room; XNA; high level shader language

TP 391.9

A

2095-302X (2013)04-0126-06

2012-10-18;定稿日期:2012-12-26

大连海事大学青年科学基金项目(51209025)

沈浩生(1989-),男,黑龙江省海林人,硕士研究生,主要研究方向为虚拟现实与建模仿真等。E-mail:shen7231591@126.com

猜你喜欢

顶点虚拟现实像素
像素前线之“幻影”2000
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
虚拟现实技术在中学校园中的应用
“像素”仙人掌
ÉVOLUTIONDIGAE Style de vie tactile
风口上的虚拟现实
虚拟现实技术向科幻小说借灵感
高像素不是全部
浅谈虚拟现实