《物理引擎的研究与实现》论文.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《物理引擎的研究与实现》论文,物理实验研究论文,中学物理实验研究论文,物理研究性学习论文,物理研究性论文,物理论文,物理小论文,高中物理教学论文,初中物理教学论文,初中物理论文

班 班级 高二(1) 学 研究性学习结题论文 题 目 物理引擎的研究与实现 年 级 高 二 班 级 1 班 课题组长 谭承志 王智贺 导师姓名 范金来 《物理引擎的研究与实现》 Research and Implementation of the physics engine 研究论文暨结题报告 关键字:物理引擎 C# WPF 游戏开发 碰撞 Keywords: Physics Engine C# WPF GameDevelopment Collision 作者:谭承志 王智贺 前言 物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。为每个游戏使用物理引擎并不是完全必要的简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现。Havok 老牌的君王有不少游戏和软件都选择了他做物理引擎,比如HALO3,失落星球,HL2, 细胞分裂,指环王OnlineHavok对PS2、XBOX、GameCube、PC多种游戏平台都有支持。也是世界顶级游戏公司Valve(Half Life的公司),Pandemci,Remedy等的合作伙伴。这个物理引擎曾经支持过各种类型的游戏,包括racing game,first-persion shooter,MMOGs,adventure games,puzzle games等等。Hovak还曾经负责电影Matrix的部分效果处理。NovodeX --- AGEIA PhysX 新兴的王者,已经有超过60个游戏工作室、公司和研究机构采用了NovodeX的技术。Bullet 开源的霸主, 图1:程序运行截图 我们为这个物理引擎设计了一下交互功能,要了解这个程序就首先从使用介绍。 图2:界面 打开TPDT.PhysicsEngine.exe首先看到的是上图的程序界面,红色框内的是各种设置与控制功能。 暂停/继续:可以令游戏循环暂停或者继续。 添加矩形/圆形物体:可以用鼠标在窗口内拖出一个矩形或圆形。 物体设置:点击选择一个物体后,可以单击此按钮进入物体设置窗口,可以编辑物体的位置,质量,恢复系数。 图3:物体设置窗口 物体交互:点击选择一个物体后,可以单击此按钮,然后在窗口上拖出一条向量,该向量就会被添加到此物体的速度向量上,从而实现交互。 环境设置:点击此按钮,可以打开环境设置窗口,设置重力加速度,万有引力常数,计算方法,与世界比例。 图4:环境设置窗口 测试模式:可以绘制出物体的移动轨迹与碰撞检测框,用作研究。清除轨迹可以删去轨迹。 当单击一个物体后,右上角的黄色框内会显示出选中物体的相关物理即时数据,如所受合力、瞬时速度、位置坐标、质量与世界时间。 最后,最直观的最重要的部分就是画面中央的即时画面,我们制作的物理引擎可以模拟出基础牛顿力学,万有引力与碰撞。而其中最难实现的就是碰撞。接下来我们将针对碰撞检测和处理进行详细的说明。 碰撞检测和处理 5.2.1碰撞检测 要模拟碰撞首先就要能捕获它,在我们的程序当中为了兼顾性能和准确性,我们使用了三种检测方案,包括圆形检测框,AABB包围盒以及SAT分离轴算法。 圆形检测框,以矩形对角线或圆本身的直径为圆形检测框的直径,若两物体圆形检测框发生相交即有可能碰撞进入下一步检测。 AABB包围盒(Axis-aligned bounding box),包围盒算法是一种求解离散点集最优包围空间的方法。基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。 SAT分离轴(Separating Axis Theorem)算法,在平面中,对于任意的凸多边形,都有许许多多的边,将所有边都看作轴,对于每一个轴,只要两个检测碰撞的物体在某一轴上的投影没有重合,即未碰撞,反之发生了碰撞。这基本上可以得到很精确的结果。 前两种算法是为了保证能高排除大多数不可能碰撞的物体,从而节省性能避免复杂的SAT计算。这种设计当初是为了用于角运动多变的情况,但后来由于难度的增加,调试的困难,我们就放弃了角运动的模拟,所以换句话说这种设计已经用不上了,但为了统一性和以后方便继续开发,就保留了这种检测模式。 5.2.1碰撞处理 捕获到碰撞后,还要对碰撞进行分析,找出相关物理量,并作出相应反应。我们在这里推了很多算法,但大多数都因为各种bug而废弃了,最后我们组采用了,回溯法,就是作出物体相对速度的方向,

文档评论(0)

xingkongwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档