菜单
  

     
    图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,汽车前进的步长不能及时变小,需要缓慢下降,即会出现鼠标往回移动时,汽车可能会向前移动一小步。这其实与汽车速度设置有关。
  1. 上一篇:MATLAB雷达有源干扰建模与仿真+文献综述
  2. 下一篇:Multisim在电子电路分析中的应用研究
  1. FHA和PHA的交叉验证技术在...

  2. HFSS法拉第笼对频率选择表面性能的影响

  3. 小波分析用于图像增强的研究MATLAB仿真

  4. 灰色建模技术的通信运行指标预测

  5. 基于多指标决策的通信网...

  6. Verilog的汉明码(15,11)编解码器的设计与仿真

  7. AT89C51单片机IIC总线的监控...

  8. g-C3N4光催化剂的制备和光催化性能研究

  9. 中国传统元素在游戏角色...

  10. NFC协议物理层的软件实现+文献综述

  11. 上市公司股权结构对经营绩效的影响研究

  12. 江苏省某高中学生体质现状的调查研究

  13. C++最短路径算法研究和程序设计

  14. 巴金《激流三部曲》高觉新的悲剧命运

  15. 浅析中国古代宗法制度

  16. 高警觉工作人群的元情绪...

  17. 现代简约美式风格在室内家装中的运用

  

About

优尔论文网手机版...

主页:http://www.youerw.com

关闭返回