关于游戏中的运动模糊的一点思考

  今天在玩“每天酷跑”的时候,吃到吸铁石,忽然注意到,它的金币虽然移动的很快,却不会出现“卡”的现象;而我以前用Unity3D作的一个小游戏在iPhone上显示的帧率是30,可是缺感受卡,而在电脑上,帧率是100多,却不卡。当时没太想明白,以为莫名其妙啊,30fps的游戏是不会卡的才对。这几天看了《Real-Time Rendering 3rd》中运动模糊的相关内容,再结合“每天酷跑”和“Doodle Jump”,大概理解这类游戏是如何提高视觉效果的。算法

  播放电影的帧率通常是每秒24帧,咱们以为很流畅,即便电影中出现了很快移动的物体,好比一辆车飞驰而过,咱们没有以为怪异,由于每帧的图像是模糊的,模糊的程度和物体运动速度相关。然而,游戏中每帧画面倒是清晰的,若是30fps的画面中,物体移动很快,这个时候看了就会以为有卡顿的现象,由于缺乏了运动模糊;若帧率提升到60fps或者更高,这个时候看着就会明显舒服不少,由于中间部分变得连贯了,模糊的部分由咱们人眼完成了,相似于真实场景中有物体快速从眼前移动的状况。若是游戏中没有高速移动的物体,那么30fps和60fps看不出差距;如有高速移动的物体,根据《Real-Time Rendering 3rd》的描述,带运动模糊的30fps的效果和不带运动模糊的60fps的效果是差很少的。学习

  在《Real-Time Rendering 3rd》中描述了几种主流的运动模糊的方法,其中“veolocity buffer”的方法是使用比较普遍的,书中也提到了对其改进的相关算法,改进后的效果仍是比较不错的。这种方法在大型3D游戏中使用无可厚非,好比文中提到的“杀戮地带2”,可是若是只是“每天酷跑”或者“Doodle Jump”这类小游戏,须要用到这种技巧吗?仍是说提升帧率就能够了?在大型3D游戏中,提升一倍帧率,开销会增大不少,因此须要采用运动模糊;可是在小游戏中,提升帧率不失为一个好办法。根据截图观察来看,“每天酷跑”和“Doodle Jump”的帧率必定不止30fps(多是60fps),由于若是只是30fps,以这两个游戏的速度必定会出现卡顿现象,不信的童鞋能够拿Unity3D或者其余引擎作一个场景,让一个物体快速移动,速度能够选用“每天酷跑”里导弹的速度,30fpf时会以为画面怪怪的,可是提升帧率后就正常了。优化

  “每天酷跑”和“Doodle Jump”的游戏截图以下,由于“每天酷跑”吃到吸铁石之后我忙着截图,没注意跳,就挂了,因此只截了一个图;“Doodle Jump”在跳的不一样速度的地方分别截图:spa

    

  由截图能够看出,“每天酷跑”即便是在吃了磁铁道具能够吸金币的状况下,截图依旧是清晰的;“Doodle Jump”不论跳起到哪一个阶段,截图都是清晰的。而在游戏中感受这种快速移动是很流畅的,丝毫感觉不到30fps时候的那种快速移动的卡顿,因此必定是采用了提升帧率的方案来提升视觉效果。(感谢5楼评论的“鎏”童鞋,cocos2d的默认帧率是60fps,我以前用的是unity3d,默认帧率是30fps,才会有了卡顿的问题。看来这些游戏应该不是通过了优化,并且引擎给他们设置了一个很合理的帧率)
3d

 

  有些看着很简单,一直认为是正确的东西,其实不必定是正确的,好比我以前就认为30fps的游戏不会卡,由于电影每秒24帧就不会卡。可是,很明显事实不是这样的,在本身作游戏的时候出现30fps还感受卡的怪异现象,当时去网上搜了却没有解决,以后经过一系列学习才把问题解决了。这说明理论知识是很重要的,对分析问题颇有帮助,若是不是学习了运动模糊,可能我一直都不知道问题到底出在哪里。另外一方面,在本身没有动手作过的状况下,千万不要盲目的认为这很简单,由于极可能人家用了多种技巧,只是我不知道而已。因此,注重理论积累,多动手实践,遇到问题勤于思考,才能让自身水平不断提升。blog

相关文章
相关标签/搜索