[flash开发者交流][2010.03.28]flash物理引擎(王成)

24
什什什什什什什主主主 : 主主主主主 主主

Upload: shanda-innovation-institute

Post on 18-Nov-2014

1.250 views

Category:

Technology


10 download

DESCRIPTION

 

TRANSCRIPT

Page 1: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

什么是物理引擎?

主讲人 : 盛大创新院 王成

Page 2: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

一个能模拟物理世界而又不和具体的应用场景相关的框架。

控制的对象:刚体或柔体手段:平移、旋转、碰撞和连接

定义

Page 3: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

物理引擎都能做哪些事情

Page 4: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

物理引擎都做出了哪些游戏?

1 、切割类游戏2 、探索解谜类游戏3 、道具摆放类游戏4 、绘制类游戏5 、反弹类游戏6 、平衡类游戏

Page 5: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

主流物理引擎类游戏切割类游戏

1 、智慧齿轮之刃 2 Mechanism II

3 、冰破维京船 Ice Breaker

Page 6: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

主流物理引擎类游戏探索解谜类游戏

Page 7: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

主流物理引擎类游戏道具摆放类游戏

Page 8: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

主流物理引擎类游戏绘制类游戏

Page 9: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

主流物理引擎类游戏反弹类游戏

1 、点火 Pyroll

2 、炮打笑面人 Roly-Poly Cannon

Page 10: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

主流物理引擎类游戏平衡类游戏

Page 11: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

物理游戏对物理引擎的使用

1 、世界2 、弹力3 、摩擦力4 、重力5 、连接关系

Page 12: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

目前物理引擎类游戏存在的问题

都是单机游戏…不成系列…

Page 13: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

主流的 Flash物理引擎都有哪些?

Page 14: [Flash开发者交流][2010.03.28]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

Page 15: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

Box2DFlash & APE 比较

• 资源消耗– 机器人资源消耗比较

测试环境: Core2 Duo 3G , 2G内存, StageSize : 640*480

APE_24 APE_30Box2D_24 Box2D_30

Page 16: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

Box2DFlash & APE 比较

• 资源消耗– 多刚体资源消耗比较

测试环境:Core2 Duo 3G , 2G内存 StageSize : 640*480刚体数量: 50矩形, 50圆

APE1 APE2

Box2D100

Page 17: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

Box2DFlash & APE 比较

• 碰撞检测流程

• Box2DFlash:• BroadPhase:初测阶段,构建 pairManager。• NarrowPhase:精测阶段,根据 pairManager的分布情况构建碰撞对象岛 (Island),之后对岛进行约束分析 , 做出碰撞响应。

• APE• 没有初测阶段的前期处理,直接对 Group进行碰撞检测。

Page 18: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

Box2DFlash & APE 比较

• 碰撞检测

Box2dflash :Box2d使用 CCD(连续碰撞检测 ) 来防止静态物体被穿

透。对于动态物体,引擎会查找扫描中的新碰撞,并为这些碰撞计算碰撞时间 (TOI),物体会先被移动到它的第一个 TOI,然后继续模拟,直到时间步结束。

APE :速度快会穿

透, constraintCollisionCycles 、 multisample多次模拟 .

Page 19: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

Box2DFlash & APE 比较

• 碰撞响应

Box2dflash :Baumgarte算法,算法复杂度最低,存在稳定性的问

题。APE :

一锤子买卖,没有积分处理,效果不理想。

Page 20: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

Box2DFlash & APE 比较

• 功能比较• 表一:功能比较表

Box2DFlash APE

多场景 支持 不支持模型 模型多、功能

强大有基本模型,复杂模型需要自己实现

渲染 无渲染模型 有渲染模型碰撞精确度 比较精确 有时存在视觉 bug

单位 MKS Pixel

Page 21: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

Ffilmation

• 1 、设计理念• 不是纯粹的物理引擎,而是针对 2.5D游戏的 lib

• 2 、优点• 功能强大:以 XML构建地图和场景,包含灯光和投影

• 3 、缺陷• 缺乏网络交互模块• 性能消耗严重• 存在破面

Ffilmation_example1_light Ffilmation_example2Ffilmation_example3_4lights

Page 22: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

如何对物理引擎进行扩展?

• 形状扩展• 建立自己的几何模型• 处理新增的几何模型和旧有的几何模型之间的碰撞检测关系

• 连接扩展• 根据自己的需求重新实现刚体间速度和位置的约束

Page 23: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

我们该如何使用?

• 一、如果需求比较复杂,需要使用较多复杂的物理模型则选用Box2D较好,或者对 Box2D进行扩展和改进;如果项目较小,只需要使用一些常规的简单物理模型,则直接使用 APE,或者对 APE进行扩展。

• 二、如考虑向其他语言或平台的延伸以及和GIS平台的对接,显然 Box2D 更具优势。

• 三、 Ffilmation 怎么办 ? 关注、观望 或者 改造!

• 四、做联机的物理游戏。

Page 24: [Flash开发者交流][2010.03.28]flash物理引擎(王成)

THANK YOU!

Q&A