汽车驾驶模拟器的研究方法及步骤一、虚拟现实建模方法1、几何建模2、运动建模(1)物体位置物体位置包括物体的移动、旋转和缩放。
在视景仿真中,不仅需要一个全局性的绝对坐标,每个三维对象都需要建立一个相对坐标。
对每个对象都给予一个坐标系统,称之为对象坐标系统,这个坐标系统原点的位置随物体的移动而改变。
在虚拟驾驶系统中就是通过控制一个汽车局部坐标系的运动和变化来模拟汽车的运动过程。
(2)碰撞检测在视景仿真系统中,经常需要检查对象A是否与对象B碰撞。
碰撞检测需要计算两个物体的相对位置。
许多视景仿真系统在实时计算中都是采用OBB包围盒检测法,运用这种方法可以节省时间,但降低了精确性。
3、物理建模虚拟对象物理建模包括定义对象的质量、重量、惯性、表面纹理、光滑或粗糙、硬度、形状改变模式(橡皮带或塑料)等,这些特性与几何建模和行为规则结合起来,形成了更真实的虚拟物理模型。
4、行为建模在虚拟驾驶系统中,行为建模主要包括两个方面,一方面是对驾驶员所操纵的汽车的行为进行约束,建立汽车操纵模型,使其符合汽车自身的运动和驾驶人员的操作步骤;另一方面是对场景中非受控物体的行为进行建模,使其的运动符合自然规律,比如场景中自动运行的汽车、路旁的行人等。
5、模型分割二、虚拟驾驶系统各模块功能分析和开发方案确定1、汽车虚拟驾驶系统的构成汽车虚拟驾驶系统主要由虚拟驾驶操作输入系统、汽车动力学模型、运动仿真模型、实时操纵模型、场景管理管理平台、视景和声音渲染输出以及汽车数据模型库、场景模型库和声音模型库等组成。
其中汽车动力学模型、运动仿真模型、实时操纵模型和虚拟驾驶场景管理平台是汽车虚拟驾驶系统的核心子系统。
系统的工作过程如下:在系统初始化时,根据用户的需求从汽车数据模型库中将用于仿真的车辆数据模型调入到动力学模型中,同时选择运行的三维场景,通过模型解析模块把它从场景数据库中调入场景管理平台;在仿真过程中,驾驶人员通过虚拟驾驶操作输入系统进行模拟驾驶操作,人机交互接口将油门、制动、换档和转向等动力学操作信息以及发动机启动、喇叭鸣笛等按钮操作状态送入汽车动力学模型和实时操纵模型中;经过仿真计算后,汽车运动仿真数据被送入运动摄像机模块中控制场景内摄像机的运动,同时汽车的行驶姿态还受到地面因素的影响;然后,场景管理控制模块根据此时摄像机的运动状态,通过视景渲染模块将三维场景在投影屏幕上实时反映出来,模拟视景变化,形成行车体感,并且通过虚拟仪表输出此时的汽车运行参数。
另外,为了增强虚拟驾驶的沉浸感,系统还安装有音响系统,根据驾驶人员的操作和汽车运行的状态,从声音模型库中调出相应的声音特效,如汽车的发动机轰鸣声、喇叭鸣笛声、紧急制动等通过声音渲染模块输出。
2、虚拟驾驶操作输入系统模拟驾驶输入系统是用来模拟汽车驾驶舱中的驾驶操作机构,它配备了方向盘、档位操纵杆、离合器踏板、制动踏板、油门踏板以及其他辅助装置。
在驾驶模拟过程中,驾驶员可以根据渲染场景的变化和仪表的显示,操纵输入系统中的方向盘、离合器、制动器、油门和档位操纵杆等部件,人机交互模块将这些操作信息送入汽车动力学模型计算后,对场景中运动摄像机的位置和方向做出相应的调整,并将仿真结果输出到显示屏上,从而对驾驶过程进行模拟。
3、虚拟驾驶场景管理平台虚拟驾驶场景管理平台各子模块的功能如下:1)人机交互接口模块:该模块将各种驾驶操作输入信号经数据转换为数字信号,送入汽车动力学模块中进行计算,形成控制场景运动和渲染的信号,是驾驶操作系统、场景管理平台和汽车动力学模型之间的桥梁。
2)运动摄像机模块:该模块根据汽车动力学模块的计算结果,模拟出符合汽车运动特性的运动摄像机,并输入到场景管理控制模块中。
3)场景管理控制模块:该模块有机地整合了场景管理平台中的其余模块,并且和汽车的动力学模块结合起来,通过处理消息函数,完成场景调入、人机交互、声效处理和视景渲染等内容。
4)视景、声效和操作界面渲染模块:视景渲染模块根据汽车动力学模型计算好的运动摄像机控制参数和位置信息,通过一系列变换后将虚拟场景渲染到显示投影设备上,并提供给驾驶者,实现虚拟汽车运动时相对于周围环境运动画面的连续显示,以形成行车效果。
声效输出模块可以根据当前的汽车运行状态和操作人员的输入,模拟输出此时汽车运行时发出的各种声音,例如:发动机的轰鸣声、喇叭鸣笛、汽车运行的风声等。
操作界面渲染模块主要实现汽车驾驶辅助信息和虚拟仪表的显示。
5)模型解析模块:虚拟驾驶系统中的场景模型经过3D建模软件制作后存为某种固定的格式,该模块将模型从这种格式中解析出来,并且进行必要的优化,提高场景检索速度,提升渲染质量。
可使用DirectX、OpenGL等提供的函数库设计来设计视景渲染、三维模型解析、运动摄像机、人机交互和声音处理等基础类库,构建汽车虚拟驾驶场景管理平台。
4、场景和声效数据库5、汽车动力学仿真模块模拟汽车运动的汽车动力学仿真模块包括汽车数据模型、汽车动力学模型、汽车运动仿真和操纵模型等几个方面。
6、虚拟驾驶系统的软硬件平台VC++6.0软件平台结合C++和DriectX9.0函数库进行虚拟驾驶系统研究和开发。
采用3D Max 7.0作为整个系统中场景建模和动画建模工具,场景中的贴图和纹理采用Photoshop图像处理软件来编辑。
虚拟驾驶系统场景管理平台设计一、场景管理平台系统功能模块针对虚拟驾驶所应用的场景管理平台可具备以下的两大部分功能模块。
(1)核心模块该模块完成场景管理平台所需要的一些最基本的处理功能,这是平台中最重要的一部分,又可以分为以下一些子模块:①几何运算模块:该模块的功能是实现图像显示过程中基本的二维和三维几何代数运算。
模块中主要定义了二维、三维矢量,变换矩阵以及它们之间的代数运算关系。
这些基本的几何运算是三维引擎最基础的技术。
②视景渲染模块:该模块是实现视景图形渲染的核心模块,它从数据库中提取相应的场景数据,根据当前摄像机所处的方位实现基本图元的绘制、光照材质处理、纹理映射以及三维特效等,构造出三维场景。
三维渲染引擎的好坏,在很大程度上取决于视景图形渲染模块的质量。
渲染方法分为软件渲染和硬件渲染两种,软件渲染方式主要有DirectX和OpenGL 两种实现方式。
③摄像机控制模块:该模块完成对场景的漫游和显示。
它按照人类的正常视觉对场景进行处理,通过可见范围计算裁剪掉视域外的内容,然后通过摄像机的视口变换和投影变换把裁剪后场景投影到屏幕空间。
④碰撞检测模块:碰撞检测是三维图形引擎中不可缺少的一部分,应该根据具体的应用选择不同的碰撞检测算法。
在虚拟驾驶过程中,为了增强驾驶的真实性,场景中行驶的汽车需要进行地形检测、固定物体碰撞检测以及活动物体碰撞检测等。
常用的检测算法有包围盒检测和射线/多边形检测等。
⑤模型解析模块:该模块将模型从数据库存储格式中解析出来,并且渲染过程进行优化处理,提高场景检索速度,提升渲染质量。
⑥声音处理模块:该模块完成场景管理平台中的声音和音效处理。
在虚拟驾驶过程中,根据汽车的运动状态和驾驶人员的各项操作,汽车将发出的发动机轰鸣声、紧急制动声、喇叭鸣笛声、风声、与物体碰撞发出的碰撞声以及外围环境声音等。
⑦人机交互模块:该模块主要在操作人员的输入、汽车动力学模型与虚拟场景建立起一个互动的桥梁,能够根据人员的操作来实现视景的实时渲染改变,并且通过力反馈设备将场景中的某些信息反馈给操作人员。
⑧系统管理模块:该模块是场景管理平台的核心,它创建整个平台程序的窗口并控制程序流。
在程序运行过程中,系统管理模块将场景管理平台中其余的模块有机地整合起来,通过处理消息函数,调用相应的模块完成场景调入、用户输入、声效处理和视景渲染等。
(2)非核心模块这些模块为虚拟驾驶场景管理平台扩展性的部分,包括以下几个模块:①立体显示模块:为了提高虚拟驾驶系统的沉浸感,可根据双目立体投影算法为系统增加立体显示模块,通过主动立体投影或者被动立体投影,实现场景的立体显示。
②辅助功能模块:该模块为场景管理平台提供一些辅助功能。
对于不同的应用领域,这些辅助功能会有所不同,但其运行过程由主程序来控制,程序根据触发事件的不同,把不同的消息发送到与该事件相关的模块进行处理。
如在虚拟驾驶过程中可以为驾驶人员提供显示汽车的运行状态信息、标志信息以及场景的提示信息等。
③网络通信模块:该模块主要为场景管理平台提供网络通信、数据传输以及联网控制等功能。
场景管理平台使用的网络传输协议主要是TCP/IP或IPX协议。
通过网络技术,还可以进一步实现多通道投影和多人网路联合仿真。
④各种特效模块:该模块为具体的虚拟现实提供一些特效,如雨滴、雪花、汽车尾气、喷泉等粒子系统,汽车的后视镜以及虚拟仪表等。
实现该模块要根据不同的特效采用适当的算法,特效的实现通常比较消耗系统资源,因此实现时要在特效效果和渲染复杂度中取一个平衡。
⑤运动录制模块:该模块能够记录摄像机的运动轨迹,用于仿真结束后对驾驶人员的操纵过程进行分析。
二、人及交互控制场景系统输入控制包括由驾驶者控制汽车运动的基本操作,包括对方向盘、油门、离合、刹车和档位转换等,以及触及点火开关、转向指示灯按钮、喇叭鸣笛按钮等辅助性操作,还有就是针对软件运行过程中的某些设置功能的键盘和鼠标操作。
读入的汽车运动控制信息,通过汽车的动力学模型运算后,交互控制视觉场景的显示。
画面输出除了视景的变化外,同时输出经过汽车动力模型计算后产生的汽车运行信息,包括当前速度、档位、点火开关状态、鸣笛状态、转向指示状态等。
如果仅仅依赖windows的消息机制,系统的实时性则难以达到要求,由于DirectInput 直接与设备驱动进行通讯,具有底层输入获取的处理能力,其能够立即响应硬件的中断,不需要经过windows系统的消息机制,保证信号处理的实时性,所以本程序利用DirectInput 组件提供的输入接口功能,实现控制信号的输入。
输入设备包括三个设备:鼠标、键盘和专用的驾驶模拟游戏杆。
利用了主板上的键盘和鼠标输入接口,使输入信号以系统能识别的键盘鼠标兼容的数据形式输入系统,由DirectInput获取并处理,游戏杆采用最新的罗技公司生产的针对赛车类游戏的专业G25型游戏杆,它可以提供包括对方向盘、油门、离合、刹车和档位的操作,通过DirectInput接口将驾驶操纵信号输入到场景管理平台中。
1、操作设备输入的设置和初始化DirectInput组件由支持COM接口的DirectInput对象和每一种提供数据的输入设备对象组成。
DirectInput对象在程序中表征DirectInput子系统,用于查询和管理输入系统。
创建DirectInput对象之后,可以使用该对象的接口方法查询系统中的可用输入设备,并为程序中需要使用的每一个设备创建一个DirectInputDevice对象。