免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
游戏物理引擎1 Body2 Shape3 Joints物理引擎的工作流程就是对渲染场景的每一帧进行物理模拟,再对具有物理特性的模拟实体进行状态与受力分析。然后,进行碰撞检测,找出运动实体间相互的约束信息,并通过牛顿力学原理计算出每个实体新的位移和速度,从而更新实体的方位,获得新的虚拟场景。基本处理步骤如下: 物理模拟。以牛顿力学定理为基础,根据实体对象的物理属性,计算各种力对实体的作用,从而确定其运动状态。 计算各个实体对象所受的合力(Force)和(Torque)。合力采用向量叠加法计算,合力矩可用平行轴定理来计算。 进行碰撞检测。根据实体的运动状态检测他们之间的交互情况。一般的碰撞检测分为两个检测阶段:粗略检测阶段主要是利用物体的包围盒(AAB/BOBB/Sphere),配合一种空间划分法(BSP/OCTree)来进行粗略的层次碰撞检测。目的是快速过滤掉没有发生碰撞的物体。如果物体的包围体发生碰撞,那么就进入到精细检测阶段进行更精细的判断。精细检测一半是基于三角形的碰撞。由于3D游戏世界中的物体模型都是有三角形网格组成的,因此在精细检测阶段可以找到确切的碰撞点坐标和碰撞法线。 如果有碰撞发生,响应碰撞并进行碰撞处理。一般用冲量定理来计算刚体碰撞后的速度。另外,物理引擎不知道也不必关心它进行模拟的对象是如何显示的。它根据对象的物理而非图形描述对这些对象的运动和交互过程进行模拟,该抽象化了的描述信息可以用于生成“追踪”模拟的显示。对象物理特性的图形显示则交给图形渲染系统来进行处理。Box2D是一款为2D游戏设计的刚体模拟物理库。程序开发人员可以在游戏中通过使用这个库,达到让物体遵守令人信服的轨迹,让虚拟世界的交互性体验更深。从游戏的角度来看,一个物理引擎的应用就是让动画程序运行时产生,而非预先记录设定。相比于花钱让一个动画师指挥者演员们跑来跑去记录轨迹,还不如请出牛顿先生作为指挥官。1 Body实体(Body)是物理引擎中可相互交互的基本对象。它包含了质量,质心位置和密度等属性。开发人员可以应用一个力,力矩或者脉冲到这个实体上。实体可以有静态的和动态的。静态实体自始至终都不动,并且不与其他静态实体相互碰撞。实体是形状的内在支撑。实体承载着具体的外形在世界中来回移动。在Box2D引擎中,实体所指的一直都是刚体。这意味着附着在同一个实体上的两个形状,绝不会发生相对位移而是保持着相对静止状态。在具体项目实施当中,开发人员通常需要保存一个指向他所创建的实体的指针。因为这样能够保证在后续部分之中他能够继续访问到这个实体的位置信息以便传递给图形绘制系统。不仅如此,保存指向实体的指针也让开发人员也可以在实体完成任务后轻松的把它从世界之中销毁掉。2 Shape形状(Shape)定义了一个Body所应该拥有的外形特征,可以使用多边形,矩形或者圆形之中的任意一个。形状同时也用来定一个实体的质量。这一功能让开发人员能够通过给定密度,Box2D将会计算出形状的面积从而求解出实体的质量属性。同时,形状还拥有摩擦力等属性。形状还可以带有碰撞过滤信息,能够防止某些特定的游戏物体发生碰撞。形状总是由一个实体所拥有,开发人员可以同时附加多个形状到一个实体上面。形状是一个抽象类,因此在Box2D中可以实现很多种具体的形状。只要开发人员下足够的功夫,是能够实现自定义的形状和相应的碰撞检测算法的。3 Joints关节(Joints),两个刚体的链接部位,它可以影响和约束不同缸体之间的行为和运动方式。在游戏中的典型应用有滑轮,链条和合页等。通过各种巧妙的不同组合,各种关节能够拼凑出很多有趣的运动方式。一些关节提供有属性的限制指,因此开发人员能够控制运动的幅度。而有一些关节提供有马达,这些马达能够驱动关节以一定的速度运转知道这个力量或者是力矩消失。关节的马达能够通过很多种方式应用上。例如开发人员可以使用这个马达去模拟关节的摩擦:把关节的速率调为0,并且提供一个小的但是明显的最大动力值。然后这个马达将会试图保持关节运动直到负荷过强。Distance Joint最简单的一种关节就是远程关节,它指的是两个实体上的两个点之间的距离是常量的。当开发人员指定一个远程关节的时候,连接的两个物体必须已经摆放就绪。然后通过在世界坐标系中指定两个锚点,第一个锚点连接着实体1,而第二个锚点连接实体2。这些点将约束这两个实体之间的距离,如图1所示:图1 远程关节Revolute Joint转动关节强制将两个实体绑定到一个公共的锚点上,通常我们也叫做合页(hinge point)。转动关节只有一个自由活动的角度:绕着两个实体相对转动。它也叫做关节角度。如图2所示:图 2 转动关节Prismatic Joint柱状关节,这是一种能够允许两个实体之间沿着某个轴做相对位移的关节,并且能够防止他们之间有相对的旋转。总而言之他们只能在某一个方向上做自由运动。如图3所示:图 3 柱状关节柱状关节的定义和转动关节有点相似,只用填充它们的支点偏移量和力矩的力。转动关节有个隐面的轴,垂直于屏幕,而柱状关节需要一个平行于屏幕的轴,这个轴固定在两个实体之间和实体的运动保持相对静止。和转动关节相像,当使用Initialize()方法初始化柱状关节时,关节点的位置偏移量保持为0。Pulley Joint滑轮关节用来创建一个理想化的滑轮。滑轮的两根绳子端点绑定在一个静态的实体上,绳子绕过若干个动态的实体,当其中一个上升的时候其他的则在下降,绳子的总长度根据初始化时给出的值来决定。图 4 滑轮关节开发人员可以提供一个比例来模拟滑轮,这将导致其中一个滑轮一边扩大快于其他,在同一时间的约束力量是在一个较小的比另一边。开发人员可以通过这一原理来创建机械杠杆。当滑轮的一边完全展开式可能会遇到一些麻烦:在另一边将绳子的长度将会变成0。在这一点上,约束方程变成奇异方程,不能被解出。因此,滑轮的联合约束的最大长度可以达到任何一个位置。此外,开发人员还要控制游戏时长的原因,就是因为这个最大长度。Gear Joint如果开发人员需要创建一个精密的机械仪器,齿轮将成为一个重要的部件。原则上开发人员可以在Box2D中通过组合多个形状来模拟齿轮的“齿”。这种方法其实并不高效而且很容易让人感觉乏味。因为他们需要把齿轮的“齿”一根一根很仔细的连接起来。Box2D又一个更简单的创建齿轮部件的方法:齿轮关节。图5 齿轮关节为创建一个齿轮关节,开发人员需要两个使用转动关节或者柱状关节连接到地面的实体,开发人员可以随意组合这几种关节,而且Box2D需要在地面创建的时候同时也创建出了转
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026微创光电面试题及答案
- 2026小生初面试题及答案
- 砂石生产合同协议书
- 2026-2031年中国MLCC行业市场调查研究及发展前景预测报告
- 2025-2026学年河北省石家庄市井陉矿区三下数学期末试题含答案解析
- 阿坝州茂县社会工作服务岗位招募考试真题2025
- 广东省湛江航运集团有限公司招聘笔试真题2025
- 2025-2026学年江西省上饶市弋阳县四年级数学下学期期末检测模拟试题含答案
- 医院一季度护理带教培训工作总结
- 辽宁省阜新市2026-2027学年高三下学期第六次检测物理试卷(含答案解析)
- 2026年秋季新学期第一次全体教师大会上校长讲话刷屏了:“教育从来都是一地鸡毛但别忘了当初为什么来!”
- 北京经济技术开发区经海第二幼儿园招聘笔试备考试题及答案详解
- 2026年领导干部网络学法用法法律知识竞赛考试题库及答案
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- (高清版)JTST 325-2024 水下深层水泥搅拌桩法施工质量控制与检验标准
- 开平牵牛生化制药有限公司年产400吨生化原料扩建工程项目环境影响报告书
- 风力发电机基础的施工方法
- 洛阳香江万基铝业有限公司马行沟铝土矿矿产资源开采与生态修复方案
- 三年级混合计算练习题
- 海上风电施工简介
- GB/T 19165-2003日光温室和塑料大棚结构与性能要求
评论
0/150
提交评论