Flash物理引擎 王成
description
Transcript of Flash物理引擎 王成
什么是物理引擎?
主讲人 : 盛大创新院 王成
一个能模拟物理世界而又不和具体的应用场景相关的框架。
控制的对象:刚体或柔体手段:平移、旋转、碰撞和连接
定义
物理引擎都能做哪些事情
物理引擎都做出了哪些游戏?
1 、切割类游戏2 、探索解谜类游戏3 、道具摆放类游戏4 、绘制类游戏5 、反弹类游戏6 、平衡类游戏
主流物理引擎类游戏切割类游戏
1 、智慧齿轮之刃 2 Mechanism II
3 、冰破维京船 Ice Breaker
主流物理引擎类游戏探索解谜类游戏
主流物理引擎类游戏道具摆放类游戏
主流物理引擎类游戏绘制类游戏
主流物理引擎类游戏反弹类游戏
1 、点火 Pyroll
2 、炮打笑面人 Roly-Poly Cannon
主流物理引擎类游戏平衡类游戏
物理游戏对物理引擎的使用
1 、世界2 、弹力3 、摩擦力4 、重力5 、连接关系
目前物理引擎类游戏存在的问题
都是单机游戏…不成系列…
主流的 Flash物理引擎都有哪些?
主流物理引擎
• 2D Flash物理引擎– Box2DFlash 2.10alpha– APE 0.5alpha– Flade– FOAM 0.1alpha– Fisix 0.5alpha– Motor 2release– Ffilmation 1.3.3
• 3D Flash物理引擎– WOW– JIGLib
Box2DFlash & APE 比较
• 资源消耗– 机器人资源消耗比较
测试环境: Core2 Duo 3G , 2G内存, StageSize : 640*480
APE_24 APE_30Box2D_24 Box2D_30
Box2DFlash & APE 比较
• 资源消耗– 多刚体资源消耗比较
测试环境:Core2 Duo 3G , 2G内存 StageSize : 640*480刚体数量: 50矩形, 50圆
APE1 APE2
Box2D100
Box2DFlash & APE 比较
• 碰撞检测流程
• Box2DFlash:• BroadPhase:初测阶段,构建 pairManager。• NarrowPhase:精测阶段,根据 pairManager的分布情况构建碰撞对象岛 (Island),之后对岛进行约束分析 , 做出碰撞响应。
• APE• 没有初测阶段的前期处理,直接对 Group进行碰撞检测。
Box2DFlash & APE 比较
• 碰撞检测
Box2dflash :Box2d使用 CCD(连续碰撞检测 ) 来防止静态物体被穿
透。对于动态物体,引擎会查找扫描中的新碰撞,并为这些碰撞计算碰撞时间 (TOI),物体会先被移动到它的第一个 TOI,然后继续模拟,直到时间步结束。
APE :速度快会穿
透, constraintCollisionCycles 、 multisample多次模拟 .
Box2DFlash & APE 比较
• 碰撞响应
Box2dflash :Baumgarte算法,算法复杂度最低,存在稳定性的问
题。APE :
一锤子买卖,没有积分处理,效果不理想。
Box2DFlash & APE 比较
• 功能比较• 表一:功能比较表
Box2DFlash APE
多场景 支持 不支持模型 模型多、功能
强大有基本模型,复杂模型需要自己实现
渲染 无渲染模型 有渲染模型碰撞精确度 比较精确 有时存在视觉 bug
单位 MKS Pixel
Ffilmation
• 1 、设计理念• 不是纯粹的物理引擎,而是针对 2.5D游戏的 lib
• 2 、优点• 功能强大:以 XML构建地图和场景,包含灯光和投影
• 3 、缺陷• 缺乏网络交互模块• 性能消耗严重• 存在破面
Ffilmation_example1_light Ffilmation_example2Ffilmation_example3_4lights
如何对物理引擎进行扩展?
• 形状扩展• 建立自己的几何模型• 处理新增的几何模型和旧有的几何模型之间的碰撞检测关系
• 连接扩展• 根据自己的需求重新实现刚体间速度和位置的约束
我们该如何使用?
• 一、如果需求比较复杂,需要使用较多复杂的物理模型则选用Box2D较好,或者对 Box2D进行扩展和改进;如果项目较小,只需要使用一些常规的简单物理模型,则直接使用 APE,或者对 APE进行扩展。
• 二、如考虑向其他语言或平台的延伸以及和GIS平台的对接,显然 Box2D 更具优势。
• 三、 Ffilmation 怎么办 ? 关注、观望 或者 改造!
• 四、做联机的物理游戏。
THANK YOU!
Q&A