一种点击测试方法和装置制造方法

文档序号:6487677阅读:125来源:国知局
一种点击测试方法和装置制造方法
【专利摘要】本发明实施方式提出一种点击测试方法和装置。方法包括:将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储设置后的点击测试对象像素点;捕获点击事件,并获取对应于该点击事件的点击坐标;基于点击坐标索引位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与点击事件相关的点击测试对象。本发明实施方式针对非规则物体或物体外形发生变化时,也可以准确执行点击测试。
【专利说明】一种点击测试方法和装置
【技术领域】
[0001]本发明实施方式涉及计算机【技术领域】,更具体地,涉及一种点击测试(Hit Test)方法和装置。
【背景技术】
[0002]点击测试(Hit Test)是计算机开发(比如,游戏程序开发)过程中经常会使用到的技术,用于判定鼠标的具体点击对象。通常情况下,点击测试会占用相当多的中央处理器(CPU)资源,因此期望能够使点击测试执行过程更加快速。
[0003]在现有技术的点击测试技术中,预先设计场景中被渲染物体的点击测试区域,该点击测试区域通常是一个矩形框边界。当触摸或点击事件到达被渲染物体列表时,依次对被渲染物体列表中的每个被渲染物体做点击测试判定,通常是判定该触摸或点击事件的坐标值是否在该物体预先设定好的点击测试区域之内。如果判定触摸或点击事件的坐标值在某物体预先设定好的点击测试区域之内,则返回该物体ID值。另外,当被渲染物体之间有重叠时,需要考虑物体的前后层次关系。在做判定前,需要先排序或构建场景中物体父子树形结构,从前往后做点击测试,并返回最先判定成功的物体ID。
[0004]在现有技术的点击测试技术中,通过预先设计好点击测试区域,可以大致模拟出物体的外形曲线。然而,当物体的外形非常不规则时,如果期望理想精确的点击测试结果需要引入较多的边界函数,甚至有些情况下是无法通过设计点击测试区域来完全精确描述物体外形,此时就难以精确执行非规则物体的点击测试。而且,在做点击测试时,物体点击测试区域越复杂,消耗的计算机资源越多,因此现有技术的点击测试技术同时还会占用大量的计算机资源。
[0005]另外,在现有技术的点击测试技术中,当物体外形发生变化时,特别是不规则形变时,点击测试区域无法及时更新,因此点击测试结果也并不准确。

【发明内容】

[0006]本发明实施方式提出一种点击测试方法,针对非规则物体或物体外形发生变化时,也可以准确执行点击测试。
[0007]本发明实施方式提出一种点击测试装置,针对非规则物体或物体外形发生变化时,也可以准确执行点击测试。
[0008]本发明实施方式的具体方案如下:
[0009]一种点击测试方法,该方法包括:
[0010]将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素
占.[0011]捕获点击事件,并获取对应于该点击事件的点击坐标;
[0012]基于所述点击坐标索引所述位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象。
[0013]一种点击测试装置,该装置包括标识值设置单元、点击事件捕获单元和点击测试单元,其中:
[0014]标识值设置单元,用于将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点;
[0015]点击事件捕获单元,用于捕获点击事件,并获取对应于该点击事件的点击坐标;
[0016]点击测试单元,用于基于所述点击坐标索引所述位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象。
[0017]从上述技术方案可以看出,在本发明实施方式中,将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储设置后的点击测试对象像素点;捕获点击事件,并获取对应于该点击事件的点击坐标;基于点击坐标索引位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与点击事件相关的点击测试对象。由此可见,应用本发明实施方式之后,通过索引位图数组中标识值的方式来实现点击测试,由于无需预先设计点击测试区域,因此针对非规则物体或物体外形发生变化时,也可以准确执行点击测试,从而能够提高点击测试的准确度。
[0018]而且,在本发明实施方式中,在通过位图数据保存各个像素点的标识值时,其保存的场景可以比原始的点击测试对象场景要小,从而可以节省存储空间,提高渲染效率和运算速度。
【专利附图】

【附图说明】
[0019]图1为根据本发明实施方式的点击测试方法流程图;
[0020]图2为根据本发明实施方式的点击测试对象示意图;
[0021]图3为根据本发明实施方式的位图数组存储示意图;
[0022]图4为根据本发明实施方式的点击测试装置结构图。
【具体实施方式】
[0023]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
[0024]在本发明实施方式中,为了解决非规则物体以及物体外形发生变化时的点击测试问题,通过实时渲染以获得位图数组的方法来实现点击测试。
[0025]在针对点击测试对象场景完成第一次渲染并输出渲染结果到屏幕之后,本发明实施方式优选还执行第二次渲染。在第二次渲染中,将点击测试对象的各个像素点颜色值替换为该点击测试对象的标识(ID)值,而且与点击测试无关的其它渲染特效将有选择地被关闭,以提高渲染效率。其中将点击测试对象的各个像素点颜色值替换为该点击测试对象的标识值之后,可以通过位图数组(比如二维数组)的形式保存这些像素点,然后基于点击事件的点击坐标获取对应的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值确定与点击事件相关的点击测试对象。
[0026]下面结合具体流程图对本发明实施方式进行详细阐述。
[0027]图1为根据本发明实施方式的点击测试方法流程图。
[0028]如图1所示,该方法包括:
[0029]步骤101:将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点。
[0030]通常情况下,与点击测试对象相关的数据包含:位置信息、颜色信息和形状信息等一系列数据。在通常的渲染过程中,通过将点击测试对象各个像素点的颜色信息数据转化为位图(Bit Map)数据,能够利用位图的形式呈现点击测试对象,这一过程可以称为第一次渲染。
[0031]一般情况下,在第一次渲染中,为了体现点击测试对象的空间感,渲染程序要需要判定哪些物体在前面、哪些物体在后面和哪些物体被遮挡等。渲染程序通过摄像机获取了需要渲染的范围之后,就要计算光源对物体的影响。
[0032]另外,使用了面积光源之后,渲染程序还要计算一种软阴影,场景中的光源如果使用了光源特效,渲染程序还将花费更多的系统资源来计算特效的结果。在这之后,渲染程序还要根据物体的材质来计算物体表面的颜色。材质的类型不同,属性不同,纹理不同都会产生各种不同的效果。
[0033]在本发明实施方式中,进一步将点击测试对象各个像素点的颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点。
[0034]比如,在一个实施方式中,假设点击测试对象场景像素为960X640,而且该点击测试对象场景中包含有多个点击测试对象。首先,将该点击测试对象场景中每个点击测试对象的像素点的颜色值都设置为其相应标识值,然后可以通过位图数组(优选为二维数组)A[m] [η]来存储该点击测试对象场景,其中m可以对应于点击测试对象场景坐标系中的横坐标,取值可以为O到959,n可以对应于点击测试对象场景坐标系中的纵坐标,取值可以为O到639。在这种实施方式中,点击测试对象场景的像素坐标系与二维数组A[m] [η]保持完全对应。
[0035]对于部分点击测试非像素级别要求的情形,第二次渲染场景的大小不需要跟第一次渲染出的场景相同,可以是1/2、1/4、1/8或更小。因为点击测试是边界敏感的,所以可以通过触摸点的等比例压缩到二次渲染时使用的缓冲区大小来做点击测试,从而提高渲染效率。
[0036]在另一个实施方式中,为了节省存储空间和加快运算速度,可以以与点击测试对象的像素坐标系成等比例压缩的形式,利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点。
[0037]比如,在一个实施方式中,假设点击测试对象场景像素为960X640,而且该点击测试对象场景中包含有多个点击测试对象。首先,将该点击测试对象场景中每个点击测试对象的像素点的颜色值都设置为相应标识值,然后通过二维数组A[m] [η]来存储该点击测试对象场景,其中m的取值可以为O到479,η的取值可以为O到319。在这种实施方式中,与二维数组A[m] [η]相当于将点击测试对象场景的像素坐标系缩小为1/4。
[0038]再比图,在一个实施方式中,假设点击测试对象场景像素为960X640,而且该点击测试对象场景中包含有多个点击测试对象。首先,将该点击测试对象场景中每个点击测试对象的像素点的颜色值都设置为相应标识值,然后通过二维数组A[m] [η]来存储该点击测试对象场景,其中m的取值可以为O到239,η的取值可以为O到159。在这种实施方式中,与二维数组A[m] [η]相当于将点击测试对象场景的像素坐标系缩小为1/8。
[0039]其中,在本发明实施方式中,可以将位图数组储存在内存划定的专门缓冲区中,也可以储存在一些存储介质中,这些具体的存储介质可以包括:软盘、光盘、DVD、硬盘、闪存、U盘、CF 卡、SD 卡、MMC 卡、SM 卡、记忆棒(Memory Stick)、xD 卡等。
[0040]在步骤101中将点击测试对象个像素点颜色值更改为该点击测试对象的标识值,并存储在缓冲区等存储介质中,可以用于第二次渲染。优选地,可以通过第二次渲染,可以执行具体的点击测试。其中,可以在第一次渲染执行之前执行步骤101,也可以在第一次渲染执行之后执行步骤101。
[0041]通常情况下,渲染到场景中物体的颜色最终由很多因素决定,这些因素包括:物体顶点颜色,光照及物体材质,纹理映射,混合方式等等。在第二次渲染之前,可以关闭光照、混合等特效。而且,在纹理映射时,为防止物体ID值被修改,只开启跟alpha通道操作相关的过程,这样物体最终输出到缓冲区的颜色只跟最初输入的物体的ID值相关。另外,对于透明物体,通过alpha测试的开关,仍然能满足透明物体边界的判定。
[0042]步骤102:捕获点击事件,并获取对应于该点击事件的点击坐标。
[0043]在完成第一次渲染之后可以显示出位图,此时可以捕获用户在所显示出位图上的点击事件,并获取对应于该点击事件的点击坐标。
[0044]在这里,可以通过各种感应技术感应到点击事件,并获取对应于该点击事件的点击坐标,比如触摸屏触摸、鼠标点击等等。
[0045]步骤103:基于所述点击坐标索引所述位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象。
[0046]在获取了点击坐标之后,可以基于点击坐标索引位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象。具体的:在位图数组中,查询位图数组标号与该点击坐标相对应的位图数组元素;从该位图数组元素中取出所存储的点击测试对象标识值;将该点击测试对象标识值所对应的点击测试对象,确定为与所述点击事件相关的点击测试对象。
[0047]当点击测试对象场景的像素坐标系与位图数组保持完全对应时,可以直接利用点击坐标索引位图数组的下标,从而获取对应于该点击坐标的位图数组元素。
[0048]当点击测试对象场景的像素坐标系与位图数组不保持完全对应,而是等比例压缩时,需要将点击坐标进行相应的等比例压缩之后再索引位图数组的下标,从而获取对应于该点击坐标的位图数组元素。
[0049]比如:图2为根据本发明实施方式的点击测试对象示意图;图3为根据本发明实施方式的位图数组存储示意图。[0050]如图2所示,该场景从下至上包括三个点击测试对象,分别为点击测试对象1、点击测试对象2和点击测试对象3。
[0051]其中点击测试对象I为椭圆物体,其ID值为I ;点击测试对象2为三角形物体,其ID值为2 ;点击测试对象3为不规则物体,其ID值为3。
[0052]由于不规则物体的边界函数很难用数学描述的,当点击发生后,要想精确判定具体是哪个点击测试对象被点击了是非常困难。
[0053]应用了本发明实施方式之后,将点击测试对象各个像素点的颜色值替换为该点击测试对象的ID值之后,然后在缓存区以位图数组A[m] [η]存储各个点击测试对象。在本实施方式中,可以得到图3所示的位图数组存储结果。在这个示范性实例中,点击测试对象场景的像素坐标系与位图数组保持完全对应。
[0054]此时,当判定点击坐标为(240,140)时,通过索引缓冲区数组[239] [139](因为数组下标从O开始,所以点击坐标的横竖坐标都需要相应减I)位置的值即可获知哪一个点击测试对象被点击。如图3所示,在缓存区中索引出索引缓冲区数组[239] [139]的元素值为3,即可知ID为3的点击测试对象被点击中,即点击测试对象3被点击。
[0055]在一个实施方式中,假设点击测试对象场景像素为960X640,而位图数组A[m][η]压缩存储了 1/4的点击测试对象场景,即位图数组m的取值可以为O到479 ;n的取值可以为O到319。二维数组A[m] [η]相当于将点击测试对象场景的像素坐标系缩小为1/4。
[0056]此时,当获取了点击事件的点击坐标之后,需要将横坐标和纵坐标分别缩小1/2,再索引缓冲区数组以判定点击测试对象标识值。比如,判定点击坐标仍然为(240,140),则通过索引缓冲区数组[119] [69]位置的值即可判定出哪一个点击测试对象被点击。
[0057]在一个实施方式中,假设点击测试对象场景像素为960X640,而位图数组A[m][η]压缩存储了 1/16的点击测试对象场景,即位图数组m的取值可以为O到119 ;n的取值可以为O到70。二维数组A[m] [η]相当于将点击测试对象场景的像素坐标系缩小为1/16。
[0058]此时,当获取了点击事件的点击坐标之后,需要将横坐标和纵坐标分别缩小1/4,再索引缓冲区数组以判定点击测试对象标识值。比如,判定点击坐标仍然为(240,140),则通过索引缓冲区数组[59] [34]位置的值即可判定出哪一个点击测试对象被点击。
[0059]以上以1/4、1/8、1/16等压缩比例方式详细描述了本发明实施方式。本领域人员可以意识到,这种具体比例仅仅是示范性的,并不用于对本发明实施方式进行限定。
[0060]基于上述详细分析,本发明实施方式还提出了一种点击测试装置。
[0061]图4为根据本发明实施方式的点击测试装置结构图。如图4所示,该装置包括标识值设置单元401、点击事件捕获单元402和点击测试单元403。其中:
[0062]标识值设置单元401,用于将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点;
[0063]点击事件捕获单元402,用于捕获点击事件,并获取对应于该点击事件的点击坐标;
[0064]点击测试单元403,用于基于所述点击坐标索引所述位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象。[0065]在一个实施方式中,标识值设置单元401,用于以与点击测试对象的像素坐标系成等比例压缩的形式,利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点。
[0066]在一个实施方式中,该装置进一步包括渲染单元404。
[0067]所述渲染单元,用于预先将点击测试对象的像素点渲染为位图,并显示所述位图;点击事件捕获单元403,用于捕获在所显示的位图上的点击事件,并获取对应于该点击事件的点击坐标。
[0068]在一个实施方式中,标识值设置单元401,用于将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并且关闭该点击测试对象的像素点颜色特性渲染属性值;利用位图数组存储所述设置后的点击测试对象像素点。其中,所关闭的点击测试对象的颜色特性渲染属性值具体可以包括:光照属性值、材质属性值或混合方式属性值,等等。
[0069]在一个实施方式中,点击测试单元403,用于在所述位图数组中,查询位图数组标号与该点击坐标相对应的位图数组元素;从该位图数组元素中取出所存储的点击测试对象标识值;将该点击测试对象标识值所对应的点击测试对象,确定为与所述点击事件相关的点击测试对象。
[0070]综上所述,在本发明实施方式中,将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储设置后的点击测试对象像素点;捕获点击事件,并获取对应于该点击事件的点击坐标;基于点击坐标索引位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与点击事件相关的点击测试对象。由此可见,应用本发明实施方式之后,通过索引位图数组中标识值的方式来实现点击测试,由于无需预先设计点击测试区域,因此针对非规则物体或物体外形发生变化时,也可以准确执行点击测试,从而提高点击测试的准确度。
[0071]而且,在本发明实施方式中,在通过位图数据保存各个像素点的标识值时,其保存的场景可以比原始的点击测试对象场景要小,从而可以节省存储空间,提高渲染效率和运算速度。
[0072]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种点击测试方法,其特征在于,该方法包括: 将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点; 捕获点击事件,并获取对应于该点击事件的点击坐标; 基于所述点击坐标索引所述位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象。
2.根据权利要求1所述的点击测试方法,其特征在于,所述利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点包括: 以与点击测试对象的像素坐标系成等比例压缩的形式,利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点。
3.根据权利要求1所述的点击测试方法,其特征在于,该方法进一步包括:预先将点击测试对象的像素点渲染为位图,并显示所述位图; 所述捕获点击事件为:捕获在所显示的位图上的点击事件。
4.根据权利要求1所述的点击测试方法,其特征在于,所述将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储设置后的点击测试对象像素点,包括: 将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并且关闭该点击测试对象的像素点颜色特性渲染属性值; 利用位图数组存储所述设置后的点击测试对象像素点。
5.根据权利要求4所述的点击测试方法,其特征在于,所述点击测试对象的颜色特性渲染属性值包括:光照属性值、材质属性值或混合方式属性值。
6.根据权利要求1所述的点击测试方法,其特征在于,所述基于点击坐标索引所述位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象包括: 在所述位图数组中,查询位图数组标号与该点击坐标相对应的位图数组元素; 从该位图数组元素中取出所存储的点击测试对象标识值; 将该点击测试对象标识值所对应的点击测试对象,确定为与所述点击事件相关的点击测试对象。
7.一种点击测试装置,其特征在于,该装置包括标识值设置单元、点击事件捕获单元和点击测试单元,其中: 标识值设置单元,用于将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点; 点击事件捕获单元,用于捕获点击事件,并获取对应于该点击事件的点击坐标; 点击测试单元,用于基于所述点击坐标索引所述位图数组,以获取对应于该点击坐标的位图数组元素,并基于获取的位图数组元素中的点击测试对象标识值,确定与所述点击事件相关的点击测试对象。
8.根据权利要求7所述的点击测试装置,其特征在于,标识值设置单元,用于以与点击测试对象的像素坐标系成等比例压缩的形式,利用与点击测试对象的像素点坐标具有对应关系的位图数组存储所述设置后的点击测试对象像素点。
9.根据权利要求7所述的点击测试装置,其特征在于,该装置进一步包括渲染单元,所述渲染单元,用于预先将点击测试对象的像素点渲染为位图,并显示所述位图; 点击事件捕获单元,用于捕获在所显示的位图上的点击事件,并获取对应于该点击事件的点击坐标。
10.根据权利要求7所述的点击测试装置,其特征在于, 标识值设置单元,用于将点击测试对象的像素点颜色值设置为该点击测试对象的标识值,并且关闭该点击测试对象的像素点颜色特性渲染属性值;利用位图数组存储所述设置后的点击测试对象像素点。
11.根据权利要求10所述的点击测试装置,其特征在于,所述点击测试对象的颜色特性渲染属性值包括:光照属性值、材质属性值或混合方式属性值。
12.根据权利要求7所述的点击测试装置,其特征在于, 点击测试单元,用于在所述位图数组中,查询位图数组标号与该点击坐标相对应的位图数组元素;从该位图数组元素中取出所存储的点击测试对象标识值;将该点击测试对象标识值所对应的点击测试对象,确定为与所述点击事件相关的点击测试对象。
【文档编号】G06F11/36GK103577322SQ201210280078
【公开日】2014年2月12日 申请日期:2012年8月8日 优先权日:2012年8月8日
【发明者】余洋 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1