公开/公告号CN103279968A
专利类型发明专利
公开/公告日2013-09-04
原文格式PDF
申请/专利权人 四三九九网络股份有限公司;
申请/专利号CN201310168448.X
发明设计人 丁志琨;
申请日2013-05-09
分类号G06T13/00;
代理机构北京市盛峰律师事务所;
代理人赵建刚
地址 361008 福建省厦门市厦门火炬高新区软件园二期望海路2号楼202室
入库时间 2024-02-19 20:12:27
法律状态公告日
法律状态信息
法律状态
2015-11-18
授权
授权
2013-10-09
实质审查的生效 IPC(主分类):G06T13/00 申请日:20130509
实质审查的生效
2013-09-04
公开
公开
技术领域
本发明属于移动终端技术领域,具体涉及一种检测移动端设备上GPU渲染 动画像素碰撞的方法和装置。
背景技术
GPU渲染,就是像素渲染或像素填充,通过GPU渲染,可以提高图形显示 效果,同时,降低CPU负担。尤其对于智能手机等移动终端,已广泛采用GPU 渲染技术。
电脑等终端设备,动画碰撞检测方式主要包括:(一)矩形碰撞检测方式: 每个物体记录一个能够将自己框住的最小矩形的左上角坐标和矩形长宽,通过 判断两个物体的矩形与矩形之间是否发生重叠,从而判断这两个物体是否发生 碰撞。该种方法具有碰撞检测精度低的问题。(二)像素碰撞检测方式:通过判 断两个对象的像素是否发生重叠,从而判断判断两个对象是否碰撞。由于已精 确到像素级,所以,具有碰撞检测精度高的优点,但由于碰撞检测算法通常较 复杂,所以,对硬件要求较高。
但是,对于移动端的GPU渲染动画,虽然画面显示效果大幅度提升,但是, 由于动画被GPU渲染,无法获取对象的像素,因此,无法采用上述的像素碰撞 检测方式,而通常只能采用矩形碰撞检测方式,所以,具有碰撞检测不准确的 问题,对于各类游戏,会导致玩家游戏体验差的问题。
发明内容
针对现有技术存在的缺陷,本发明提供一种检测移动端设备上GPU渲染动 画像素碰撞的方法和装置,能够有效提高碰撞检测精度,从而提高玩家游戏体 验。
本发明采用的技术方案如下:
本发明提供一种检测移动端设备上GPU渲染动画像素碰撞的方法,包括以 下步骤:
S1,获取GPU渲染动画生成过程中所使用的各个对象的序列图以及配置文 件;其中,每个对象的序列图包括多个帧位图;通过所述配置文件定位各个对 象的帧位图;
S2,单独存储获取到的所述各个对象的序列图以及配置文件;
S3,当需要检测对象A和对象B是否发生像素碰撞时,获取当前时刻对象 A对应的变换矩阵A以及位置A,还获取对象B对应的变换矩阵B以及位置B; 然后通过读取所述配置文件,获取当前帧对象A的帧位图A和当前帧对象B的 帧位图B;
S4,结合帧位图A、变换矩阵A和位置A,生成模拟的原生位图A;结合 帧位图B、变换矩阵B和位置B,生成模拟的原生位图B;
S5,比对原生位图A和原生位图B的像素,从而检测原生位图A和原生位 图B是否发生像素碰撞,进而直接检测得到对象A和对象B在当前时刻是否发 生像素碰撞。
优选的,S1中,每个对象的各个帧位图存储在一张图片上;所述配置文件 由多个配置表组成,每一个所述配置表用于记录一个对象的各个帧位图的位置 信息。
优选的,每一个帧位图被最小矩形框包围;所述配置表记录各个帧位图名 称、最小矩形框角坐标、最小矩形框长度值和最小矩形框宽度值。
优选的,所述变换矩阵A用于:通过对所述对象A的帧位图A进行变换矩 阵A运算,得到在显示屏幕上显示的对象A的图片;
所述变换矩阵B用于:通过对所述对象B的帧位图B进行变换矩阵B运算, 得到在显示屏幕上显示的对象B的图片。
优选的,所述变换矩阵A用于对对象A的帧位图A进行缩放操作和旋转操 作;所述变换矩阵B用于对对象B的帧位图B进行缩放操作和旋转操作。
优选的,S5具体包括以下步骤:
S51,原生位图A中的对象A被最小矩形A包围,原生位图B中的对象B 被最小矩形B包围,首先对原生位置A和原生位图B进行矩形碰撞检测,判断 最小矩形A和最小矩形B是否有重叠;如果没有重叠,则得到对象A和对象B 没有发生碰撞的结论;如果有重叠,则执行S52;
S52,对最小矩形A和最小矩形B的重叠区域进行像素碰撞检测,得出对 象A和对象B是否发生像素碰撞的结论。
本发明提供一种检测移动端设备上GPU渲染动画像素碰撞的装置,包括:
获取模块,用于获取GPU渲染动画生成过程中所使用的各个对象的序列图 以及配置文件;其中,每个对象的序列图包括多个帧位图;通过所述配置文件 定位各个对象的帧位图;
存储模块,用于单独存储所述获取模块获取到的所述各个对象的序列图以 及配置文件;
检测模块,用于检测对象A和对象B是否发生像素碰撞;
其中,所述检测模块包括:
获取子模块,用于获取当前时刻对象A对应的变换矩阵A以及位置A,还 获取对象B对应的变换矩阵B以及位置B;然后通过读取所述配置文件,获取 当前帧对象A的帧位图A和当前帧对象B的帧位图B;
模拟子模块,用于结合帧位图A、变换矩阵A和位置A,生成模拟的原生 位图A;结合帧位图B、变换矩阵B和位置B,生成模拟的原生位图B;
检测子模块,用于比对原生位图A和原生位图B的像素,从而检测原生位图 A和原生位图B是否发生像素碰撞,进而直接检测得到对象A和对象B在当前时刻 是否发生像素碰撞。
本发明的有益效果如下:
本发明提供的检测移动端设备上GPU渲染动画像素碰撞的方法和装置,显 卡上显示GPU渲染动画,由存储器单独保存原生序列图,通过CPU将原生序 列图模拟生成原生位图,通过判断两个原生位图是否发生像素碰撞,最终推导 出两个对象物是否发生像素碰撞,因此,能够有效提高碰撞检测精度,从而提 高玩家游戏体验。
附图说明
图1为本发明提供的检测移动端设备上GPU渲染动画像素碰撞的方法流程 示意图;
图2为本发明提供的检测移动端设备上GPU渲染动画像素碰撞的装置结构 示意图。
具体实施方式
以下结合附图对本发明进行详细说明:
如图1所示,本发明提供一种检测移动端设备上GPU渲染动画像素碰撞的 方法,包括以下步骤:
S1,获取GPU渲染动画生成过程中所使用的各个对象的序列图以及配置文 件;其中,每个对象的序列图包括多个帧位图;通过所述配置文件定位各个对 象的帧位图;
为方便存储,可以将每个对象的各个帧位图存储在一张图片上;配置文件 由多个配置表组成,每一个配置表用于记录一个对象的各个帧位图的位置信息。 其中,每一个帧位图被最小矩形框包围;配置表可以记录各个帧位图名称、最 小矩形框角坐标、最小矩形框长度值和最小矩形框宽度值,通过最小矩形框角 坐标、最小矩形框长度值和最小矩形框宽度值三个信息,可以定义得到唯一一 个矩形,从而实现通过配置表定位所需帧位图的目的。
S2,单独存储获取到的所述各个对象的序列图以及配置文件。
所存储的各个对象的序列图为原生图片,没有经过GPU渲染。
S3,当需要检测对象A和对象B是否发生像素碰撞时,获取当前时刻对象 A对应的变换矩阵A以及位置A,还获取对象B对应的变换矩阵B以及位置B; 然后通过读取所述配置文件,获取当前帧对象A的帧位图A和当前帧对象B的 帧位图B。
例如,对于对象A,配置文件共存储编号为1-10共10个帧的帧位图,每一 个帧位图均对应一个播放时刻,例如:第1分钟、第2分钟...第10分钟。当动 画展示到第3分钟播放时刻时,通过查找配置文件,即可查找到第3帧的帧位 图为所需的帧位图。
但是,由于所存储的帧位图需要经过一定的处理才被显示到屏幕上,变换 矩阵A和变换矩阵B即是该种作用。具体的,通过对对象A的帧位图A进行变 换矩阵A运算,得到在显示屏幕上显示的对象A的图片;通过对所述对象B的 帧位图B进行变换矩阵B运算,得到在显示屏幕上显示的对象B的图片。进一 步的,变换矩阵用于对帧位图进行缩放操作或旋转操作。
S4,结合帧位图A、变换矩阵A和位置A,生成模拟的原生位图A;结合 帧位图B、变换矩阵B和位置B,生成模拟的原生位图B;
由于帧位图需要经过变换矩阵的处理,才会被显示到屏幕上。因为,为了 准确的在后台模拟还原帧位图的实际显示效果,需要在后台对帧位图进行相应 操作,从而得到模拟的原生位图,因此,所得到的模拟原生位图与屏幕上显示 的位图相比,除没有进行GPU渲染外,其他表现形式完全相同。从而达到通过 判断两个原生位图是否碰撞,而得到屏幕上显示的对象物是否发生碰撞的效果。
S5,比对原生位图A和原生位图B的像素,从而检测原生位图A和原生位 图B是否发生像素碰撞,进而直接检测得到对象A和对象B在当前时刻是否发 生像素碰撞。
本步骤具体包括以下步骤:
S51,原生位图A中的对象A被最小矩形A包围,原生位图B中的对象B 被最小矩形B包围,首先对原生位置A和原生位图B进行矩形碰撞检测,判断 最小矩形A和最小矩形B是否有重叠;如果没有重叠,则得到对象A和对象B 没有发生碰撞的结论;如果有重叠,则执行S52;
S52,对最小矩形A和最小矩形B的重叠区域进行像素碰撞检测,得出对 象A和对象B是否发生像素碰撞的结论。
在比对两个原生位图时,首先采用矩形碰撞检测方法,如果没有发生矩形 碰撞,则可以毫无疑义的得出两个位图没有发生碰撞的结论。只有当发生矩形 碰撞时,才进行像素碰撞检测。通过该种方式,可以简化碰撞检测的复杂度, 提高碰撞检测的效率。
如图2所示,本发明还提供一种检测移动端设备上GPU渲染动画像素碰撞 的装置,包括:
获取模块,用于获取GPU渲染动画生成过程中所使用的各个对象的序列图 以及配置文件;其中,每个对象的序列图包括多个帧位图;通过所述配置文件 定位各个对象的帧位图;
存储模块,用于单独存储所述获取模块获取到的所述各个对象的序列图以 及配置文件;
检测模块,用于检测对象A和对象B是否发生像素碰撞;
其中,所述检测模块包括:
获取子模块,用于获取当前时刻对象A对应的变换矩阵A以及位置A,还 获取对象B对应的变换矩阵B以及位置B;然后通过读取所述配置文件,获取 当前帧对象A的帧位图A和当前帧对象B的帧位图B;
模拟子模块,用于结合帧位图A、变换矩阵A和位置A,生成模拟的原生 位图A;结合帧位图B、变换矩阵B和位置B,生成模拟的原生位图B;
检测子模块,用于比对原生位图A和原生位图B的像素,从而检测原生位 图A和原生位图B是否发生像素碰撞,进而直接检测得到对象A和对象B在当 前时刻是否发生像素碰撞。
本发明提供的检测移动端设备上GPU渲染动画像素碰撞的方法和装置,显 卡上显示GPU渲染动画,由存储器单独保存原生序列图,通过CPU将原生序 列图模拟生成原生位图,通过判断两个原生位图是否发生像素碰撞,最终推导 出两个对象物是否发生像素碰撞,因此,能够有效提高碰撞检测精度,从而提 高玩家游戏体验。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰, 这些改进和润饰也应视本发明的保护范围。
机译: 用于降低在GPU上执行广相碰撞检测的复杂度的系统和方法
机译: 用于降低在GPU上执行广相碰撞检测的复杂度的系统和方法
机译: 渲染像素的方法,渲染像素的设备以及显示装置