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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

随着虚拟现实技术的迅猛发展,该项技术被 越来越多的应用在船舶行业。 文献[1]采用 Creator 软件与视景驱动引擎 Vega 实现了对船用多级离 心泵的虚拟拆装。文献[2]采用 Multigen Creator、 GL Studio 和 Vega Prime 开发了一种船舶机舱虚 拟仿真系统。文献[3]基于 Catia 和 Virtools 开发
第 4 期
沈浩生等:船舶集控室虚拟仿真系统的设计与实现
127
维场景相对应的二维模拟软件;基于 UDP 通讯 协议实现了三维场景与二维模拟软件互操作的 功能。针对上述文献中场景真实感不强的问题, 采用 Microsoft 推出的高级着色语言(High Level Shader Language, HLSL)开发了基于 GPU 的着色 器,使场景的真实感增强。
图 3 3D-MAX 中渲染效果图
在 XNA 中漫游与交互的实现 将在 3D-MAX 中制作的模型导出成 XNA 所 识别的.X 格式的文件后将该文件导入到 XNA 程 序中,然后在 XNA 中提供摄像机以使用户能够 对场景进行观察与漫游,本文中提供了两种摄像 机,分别是第一人称摄像机与第三人称摄像机, 通过添加三维拾取功能来使用户与虚拟场景进 行交互,再通过添加碰撞检测使整个虚拟场景的 漫游效果更加真实。图 4 为文本中所设计的三维 场景的流程图[7]。 图 4 中 Initialize 方法用于初始化变量以及与 Game1 对象相关的其他对象。 图形设备对象将在 这里实例化, 并可以在 Initialize 方法中利用该对 象初始化依赖于其设置的其他对象。碰撞检测、 三维拾取和摄像机的实时控制都是在 Update 方 1.2.2
2013 年 7 月 第 34 卷 第 4 期
图 学 学 报
JOURNAL OF GRAPHICS
July 2013 Vol.34 No.4
船舶集控室虚拟仿真系统的设计与实现
沈浩生, 张均东, 曾 鸿
(1. 大连海事大学轮机工程学院,辽宁 大连 116026)
摘 要:在分析现有虚拟现实技术与船舶集控室的基础上,采用 3D-MAX 与 XNA 分别实现了三维模型的建立与虚拟场景的漫游和交互,应用 C#语言编写了集控室的二维模 拟软件,通过 UDP 协议实现了三维虚拟场景与二维模拟软件之间的通讯。根据光照效果的 数学模型,采用高级着色语言(HLSL)开发了一种基于 GPU 的着色器,降低了 GPU 与 CPU 之间的传输负荷,增强了虚拟场景真实感。 关 键 词:虚拟现实;虚拟集控室;XNA;高级着色语言 中图分类号:TP 391.9 文献标识码:A 文 章 编 号:2095-302X (2013)04-0126-06
Hale Waihona Puke 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 )
第 4 期
沈浩生等:船舶集控室虚拟仿真系统的设计与实现
129
是并车操作的一种,它的操作流程图,如图 6 所 示[11]。
正好满足了本文对二维模拟软件与三维虚拟场 景之间数据传输的实时性要求。本文利用 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]。

图 4 3D 程序流程图
二维模拟软件与通讯协议的实现 本文采用 C#编程语言在.NET 框架平台下完 成了对二维模拟软件的开发,整个虚拟集控室的 数学模型与逻辑控制都是在这里实现的,它能够 能实现发电机组的手动启/停和自动启/停、手动 调频调载、自动调频调载、自动分级卸载和主配 电板上动态显示电压、频率和电流数据等功能。 图 5 为本文中所设计的二维模拟软件的组合起动 屏界面。 1.2.3
1.2 三维虚拟场景设计 1.2.1 三维场景模型建立 本文中所设计的虚拟集控室以大连海事大 学开发的 DMS-2011C 型轮机全任务模拟器为建 模依据,整个集控室的配电板共有 22 屏,集控 台 7 台,其中配电板 11 屏为低压配电板,另外 11 屏为中压配电板, 其中集控台包含主机遥控操 作台、机舱参数显示台、监测报警控制台、辅助 设备操作台、阀门遥控控制台[5]。为了使建模更 加有条理性,给出整个三维场景的层次结构,如 图 2 所示。
法中执行,三维模型的实时渲染在 Draw 方法中 执行。
主程序Main 建立Gamel类对象 调用Initialize方法
是 根据需要调用指定方法
是否需要调用方法 LoadGrahpicsContent和 UnloadGraphicsContent 否 调用Upadate方法 调用Draw方法
是否固定循环周期 是 延期等待到达指定循环时间

了某艇机舱的虚拟漫游系统。上述文献中存在着 在模型渲染阶段着色效果不佳的问题,影响了场 景的真实感,使用户在体验时的沉浸感减弱。 本文采用三维建模软件 3D-MAX 与三维引 擎 XNA 建立了某船集控室的虚拟仿真系统,可 实现漫游与交互功能;采用 C#语言建立了与三


收稿日期: 2012-10-18;定稿日期: 2012-12-26 基金项目: 大连海事大学青年科学基金项目(51209025) 作者简介:沈浩生(1989-) ,男,黑龙江省海林人,硕士研究生,主要研究方向为虚拟现实与建模仿真等。E-mail:shen7231591@
图2
集控室场景结构图
图1
虚拟集控室系统框图
三维模型文件的大小对于整个程序的加载 速度与实时性具有重要的影响,如果将三维模型 的每个部分都做的非常细致,虽然模型较为美 观,但是这样会显著增加模型的面片数,使模型 文件过大,影响了程序的实时性。但是,如果三 维模型做的不细致,虽然会使程序运行较为流 畅,但是会影响整个场景的真实感,使用户的沉 浸感减弱。因此,怎样把握二者之间的关系会影 响整个三维场景的实时渲染效率。下面给出本文 在建模过程中的解决上述问题的具体方法: 1) 通过删除模型之间的重叠面、模型底部 看不见的面和物体之间相交的面可以减少模型 的面片数。还可以利用 3D-MAX 里面自带的模 型简化命令“MultiRes” ,通过调节保留百分比, 可以自动缩减面片数,但是不要缩减的过多,否 则会影响模型效果[6]。 2) 在建模过程中尽量减少使用布尔运算, 布尔运算会大大增加模型的面片数,可以使用 Alpha 贴图代替布尔运算, 这需要制作一张纹理, 也就是 alpha 贴图,这个纹理是一张灰度图,其 中黑色表示完全透明,灰色表示介于透明和不透 明之间,而白色表示完全不透明,通过这张贴图 可以实现场景中物体部分透明的效果,本文的三
128




2013 年
维场景中集控台与配电板的散热孔就是根据此 方法制作的。 3) 需要重点表现的物体应做的尽量细致, 如车钟、万转开关和同步表等,其它如配电板柜 体和集控室地面等可以适当的减少它们的面片 数。 4 ) 当对三维场景中的物体进行贴图的时 候,应使贴图的像素值与多边形的像素值相适 应,否则如果纹理像素值过大,会导致“像素抖 动” ,看上去使人晕眩,如果纹理像素值过小, 会导致“锯齿” 。 为了方便对三维场景的编程,需要在 3D-MAX 中对其中的原件进行统一命名, 整个场 景的物体大体上可以分成两部分,一部分是不可 交互的物体如地面、墙壁、配电板柜体等,另一 部分是可交互的原器件,它又分为两类,一类是 指示灯、组合灯等,另一类是万转开关、按钮、 组合开关、旋钮等。图 3 为在 3D-MAX 中虚拟 集控室的渲染效果图。
1
虚拟集控室的搭建
目前虚拟现实系统主要被分成 4 大类:桌面
虚拟现实系统(Desktop VR)、沉浸式虚拟现实系 统 (Immersive VR) 、 增 强 虚 拟 现 实 系 统 (Aggrandize VR) 、 分 布 式 虚 拟 现 实 系 统 (Distributed VR)[4]。这些虚拟现实系统提供给用 户的沉浸感、交互性、构想性不尽相同,且成本 也有所差距。考虑到本文中所设计的集控室虚拟 仿真系统所面向的用户为广大船舶院校的学员, 为了使学员都能够参与到学习中来且亲自动手 操作,本文中所设计的虚拟集控室采用桌面虚拟 现实系统(Desktop VR),虽然桌面虚拟现实系统 相对于其它几种虚拟现实系统其沉浸感有所减 弱,但它的成本相对较低且已经满足了虚拟现实 技术的基本要求。 1.1 系统框架 本文中所开发的集控室虚拟仿真系统由二维 模拟软件与三维虚拟场景两部分构成。首先,利 用 3D-MAX 提供的文件输出接口,三维模型经过 处理后可以导出 XNA 所识别的.X 格式的文件, 然后将该文件加载到 XNA 程序中进行实时渲染。 在 XNA 中通过视图变换、 投影变换与碰撞检测以 此来实现用户的漫游功能,通过三维拾取来实现 用户与虚拟场景的交互功能。然后利用 C#编程语 言编写与三维场景相对应的二维模拟软件,完成 整个系统的逻辑功能。 通过 UDP 协议实现这两个 应用程序之间的通讯,能够实现它们之间的互操 作功能。该系统的框架图,如图 1 所示。
图5
二维模拟软件界面
并车操作是船舶轮机人员必须熟练掌握得 船舶操纵技术之一,所谓并车操作是:船舶主电 站通常设有 3 台发电机组,根据船舶不同运行工 况所需电量,可以单机运行,也可以两台或 3 台 发电机并联运行,待并发电机投入电网参加并联 运行的操作称为并车操作。在船舶上普遍采用的 为准同步并车,即要求带并机组和运行机组两者 的电压、频率和相位都调整到十分接近的时候, 才允许合上待并发电机主开关。手动准同步并车
Abstract: 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. Key words: virtual reality; virtual engine control room; XNA; high level shader language
相关文档
最新文档