毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

基于OpenGVS的虚拟汽车驾驶模拟系统的开发(11)

时间:2016-12-27 21:24来源:毕业论文
图4.12 汽车贴地行驶 4.4.2 汽车与房子碰撞检测 OpenGVS提供了两个物体之间的碰撞检测函数int GV_geo_inq_obi_collision( GV_Obi object1, GV_Obi object2, G_Boolean * collision_


 
图4.12    汽车贴地行驶
4.4.2  汽车与房子碰撞检测
OpenGVS提供了两个物体之间的碰撞检测函数int GV_geo_inq_obi_collision( GV_Obi object1, GV_Obi object2, G_Boolean * collision_out ); OpenGVS中每个物体都会有一个包围盒,两个物体之间的碰撞检测实际上是检测物体的包围盒是否碰撞,如果有交集说明碰撞了,否则没有碰撞。当场景中物体数目很多时,这种方法不适合用于通用碰撞检测;但是对于特定的物体之间的碰撞,检测速度很快。
在本系统中,汽车和房子都是两个特定的物体,每要前进一步,先用碰撞检测函数检测前进以后是否会发生碰撞,如果有碰撞则汽车不前进,将当前没有碰撞的位置赋给汽车;否则,继续前进。
其关键代码为:
GV_geo_inq_obi_collision( vehicle, farmhouse,&collision ); //检测车与房子是否碰撞
    if(collision)//如果碰撞
    {
        GV_obi_set_position( vehicle, &vehicle_pos );//将当前的位置赋给汽车
        GV_obi_set_rotation( vehicle, &vehicle_rot );//将当前的姿态角赋给汽车
        return status;
    }
这个函数是在GV_user_proc()函数中调用的,所以可以实时响应。
图4.13    汽车与房子碰撞
结  论
本课题研究虚拟汽车驾驶模拟系统的开发,在开发过程中是利用OpenGVS开发平台开发的。建立一个人机交互式的界面,人可以通过键盘切换驾驶视角,通过移动鼠标来控制汽车的行驶,有较好的立体感,达到了虚拟现实的作用。取得的具体成果有以下几个(一)实现了一个可视化的人机交互平台;(二)可以在OpenGVS中导入一个地形数据库及三文模型;(三)场景的渲染;(四)通过鼠标可以控制汽车行驶及通过键盘切换驾驶视角;(五)汽车可以贴地行驶并撞上障碍物时可以停止。
尽管本课题取得了一些成果,但不可否认,本课题还是存在着一些问题的。主要体现在两个方面,第一,由于调入的地形数据库是一个整体,所以我只能通过加入一个房子实体来验证物体与物体间的碰撞,但是汽车还是可以穿过树及栅栏,这是不符合实际的;第二,在实现汽车与房子的碰撞过程中,存在bug,汽车前进的步长不能及时变小,需要缓慢下降,即会出现鼠标往回移动时,汽车可能会向前移动一小步。这其实与汽车速度设置有关。 基于OpenGVS的虚拟汽车驾驶模拟系统的开发(11):http://www.youerw.com/tongxin/lunwen_1612.html
------分隔线----------------------------
推荐内容