物理引擎破碎效果的讨论

snowarrow 2011-06-22 04:08:21
想请教一下游戏中箱体炸成碎片飞溅的效果,是如何实现的。
愤怒的小鸟使用的Box2D作为它的物理引擎。
玩过愤怒的小鸟的人,可能都知道除了创意外,物理效果是其一大亮点。
小鸟飞出去后,击中玻璃,玻璃会发生破裂效果。
我想知道这个效果是box2d计算出来的,还是在击中后直接播放了玻璃破碎的动画?

我对物理引擎的了解不多,直观的想法是,对游戏中的每一个精灵(可能对应图片或者动画),物理引擎为它建立对应的抽象物理数据,再根据该物体(box2d中好像是刚体,无弹性的)的一些数据变化,算出新的物理数据。然后精灵根据物理引擎计算出的新数据,更新自己的动画,从而实现了物理现象和游戏展现的映射。
不知道这个理解是否确切?
那么,玻璃破碎的效果,或者箱体炸开,木屑飞溅的场景,到底是以什么思路实现的呢?因为如果对整个玻璃映射到物理世界中的某一形状的刚体,那么被小鸟击中玻璃上的某一点,倒是可以在该点计算力,但是,作为一个整体的刚体如何破碎,该用何种办法模拟?然后,最不明白的是,刚体破碎成好多小块的时候,怎么在游戏中展现出来??因为我可能就只有一个整体的刚体的图像,而根据物理引擎计算出来的破碎效果,不可能在游戏中被提前准备好(因为,可能击中不同的位置,造成不同的破碎效果)。
那么,折中的话,就只能播放预先设定好的爆炸动画了,这样也就不会有那么丰富的,逼真的效果了。
但是作为同样使用Box2D的愤怒的小鸟来说,看起来好像是真的计算出来的效果一样,我仔细想了想,感觉可能是碎片是提前做好的,只是碎片的运动方向是实时计算的。
不知道大家的看法怎样? [em20]
...全文
244 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowarrow 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dizuo 的回复:]
2d游戏中的爆炸动画基本上都是基于图像实现的,比较低级的是一系列连续爆炸的图片一张一张播放。
3d中可以爆炸,火焰,云雾等现象 是通过粒子系统模拟。
PS:愤怒的小鸟看上去不像是图像,感觉是矢量图啊。。。
[/Quote]
我也感觉是矢量图,但是和爆炸有什么关系?也要动态生成啊
至善者善之敌 2011-06-22
  • 打赏
  • 举报
回复
不懂,帮顶
赵4老师 2011-06-22
  • 打赏
  • 举报
回复
任何多边形都可以用有限个三角形拼接而成。
ryfdizuo 2011-06-22
  • 打赏
  • 举报
回复
2d游戏中的爆炸动画基本上都是基于图像实现的,比较低级的是一系列连续爆炸的图片一张一张播放。
3d中可以爆炸,火焰,云雾等现象 是通过粒子系统模拟。
PS:愤怒的小鸟看上去不像是图像,感觉是矢量图啊。。。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧