一种碰撞范围确定方法和相关装置与流程

文档序号:22075908发布日期:2020-09-01 19:01阅读:212来源:国知局
一种碰撞范围确定方法和相关装置与流程

本申请涉及数据处理领域,特别是涉及一种碰撞范围确定方法和相关装置。



背景技术:

在三维场景中,需要确定场景中各类对象所对应模型的碰撞范围。由此在三维场景中进行对象操控交互时,可以根据模型间碰撞范围,实现合理的碰撞效果,提高真实感。

计算碰撞范围的相关技术中,主要采用对三维空间进行空间划分后,通过遍历模型的所有组成部分与所划分出空间之间的关联来确定模型的碰撞范围。

当一个对象的模型越复杂,构成该模型的组成部分例如三角形面片的数量就会越多,这种遍历方式的耗时就越多,严重影响确定效率。



技术实现要素:

为了解决上述技术问题,本申请提供了一种碰撞范围确定方法,可以通过高度信息与网格平面结合的方式,避免了遍历三维模型的所有面片,从而节省了确定时间,提高了确定效率。

本申请实施例公开了如下技术方案:

第一方面,本申请实施例提供了一种碰撞范围确定方法,所述方法包括:

根据待处理模型确定对应的网格平面;所述网格平面包括多个网格区域;

通过将所述待处理模型向所述网格平面投影,得到所述待处理模型相对于所述网格平面的高度信息;其中,所述网格区域所对应的高度信息用于标识所述待处理模型中子模型的高度,所述子模型为所述待处理模型处于所述网格区域的投影空间中的部分;

根据所述网格平面和所述高度信息,确定所述待处理模型的碰撞范围。

第二方面,本申请实施例提供了一种碰撞范围确定装置,所述装置包括第一确定单元、投影单元和第二确定单元:

所述第一确定单元,用于根据待处理模型确定对应的网格平面;所述网格平面包括多个网格区域;

所述投影单元,用于通过将所述待处理模型向所述网格平面投影,得到所述待处理模型相对于所述网格平面的高度信息;其中,所述网格区域所对应的高度信息用于标识所述待处理模型中子模型的高度,所述子模型为所述待处理模型处于所述网格区域的投影空间中的部分;

所述第二确定单元,用于根据所述网格平面和所述高度信息,确定所述待处理模型的碰撞范围。

第三方面,本申请实施例提供了一种用于碰撞范围确定的设备,所述设备包括处理器以及存储器:

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行第一方面中所述的碰撞范围确定方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行第一方面中所述的碰撞范围确定方法。

由上述技术方案可以看出,根据待处理模型可以确定包括多个网格区域的网格平面。通过将待处理模型向网格平面投影,得到待处理模型相对于的网格平面的高度信息,也就是说,将三维模型通过投影向二维转换时,可以在投影过程中获取待处理模型处于各个网格区域的投影空间中部分的高度,根据网格平面和高度信息已经可以确定出待处理模型的碰撞范围,而不必遍历待处理模型中的全部组成部分,从而降低了复杂模型对确定碰撞范围的影响,提高了确定碰撞范围的效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种实际应用场景中碰撞范围确定方法的示意图;

图2为本申请实施例提供的一种碰撞范围确定方法的流程图;

图3为本申请实施例提供的一种碰撞范围确定方法的示意图;

图4为本申请实施例提供的一种碰撞范围确定方法的示意图;

图5为本申请实施例提供的一种碰撞范围确定方法的示意图;

图6为本申请实施例提供的一种实际应用场景中碰撞范围确定方法的流程图;

图7为本申请实施例提供的一种碰撞范围确定装置的结构框图;

图8为本申请实施例提供的一种用于信息处理的设备的结构图;

图9为本申请实施例提供的一种服务器的结构图。

具体实施方式

下面结合附图,对本申请的实施例进行描述。

随着计算机技术的不断发展,三维模型在越来越多的领域得到了广泛的应用,例如三维游戏、现实场景模拟等。其中,为了使三维模型更加真实,相关人员可以确定出三维模型的碰撞体积,以便当三维模型之间发生碰撞时可以准确模拟出真实的碰撞情况。

其中,三维模型主要是由一个个面片所构成的。在相关技术中,为了确定出三维模型的碰撞范围,需要通过立体方格覆盖三维模型的每一个面片,然后遍历每一个面片在其所在方格中所处的立体位置,最后将所有面片的位置组合得到该三维模型的碰撞范围。这种方法需要在三维层面上遍历三维模型的每一个面片,耗时较长,确定效率较低。

为了解决上述技术问题,本申请提供了一种碰撞范围确定方法,可以避免遍历三维模型的所有面片,从而节省了确定时间,提高了确定效率。

可以理解的是,该方法可以应用于处理设备上,该处理设备为能够进行模型分析的处理设备,例如可以为具有模型分析功能的终端设备或服务器。该方法可以通过终端设备或服务器独立执行,也可以应用于终端设备和服务器通信的网络场景,通过终端设备和服务器配合执行。其中,终端设备可以为计算机、个人数字助理(personaldigitalassistant,简称pda)、平板电脑等设备。服务器可以理解为是应用服务器,也可以为web服务器,在实际部署时,该服务器可以为独立服务器,也可以为集群服务器。同时,在硬件环境上,本技术已经实现的环境有:arm架构处理器、x86架构处理器;在软件环境上,本技术已经实现的环境有:android平台、windowsxp及以上操作系统或linux操作系统。

为了便于理解本申请的技术方案,下面将结合实际应用场景,对本申请实施例提供的碰撞范围确定方法进行介绍。

参见图1,图1为本申请实施例提供的一种碰撞范围确定方法的应用场景示意图,在该实际应用场景中,处理设备为服务器101,该服务器101能够对图1所示的一个房屋的三维模型进行碰撞范围的确定,该房屋三维模型具有地台、屋子和屋檐三个组成部分。

可以理解的是,三维模型的碰撞范围是一个立体的范围,为了能够对立体的范围进行表达,同时避免对三维模型的每一个面片都进行分析,在本实际应用场景中,可以通过对三维模型进行整体分析,获取该三维模型各个部分的底面信息和高度信息,进而结合获得三维模型的碰撞范围。

首先,我们需要确定出该三维模型所对应的底面部分。如图1所示,服务器101可以先根据该房屋三维模型确定出一个网格平面,该网格平面可以如图中所示位于三维模型的底部,也可以位于三维模型的其他部分。其中,在该网格平面上分布有多个网格区域,服务器101可以通过将该三维模型向网格平面进行投影的方式,将该三维模型转化为该网格平面上的二维图像,该图像能够反映出该三维模型的各个部分在该网格平面上的投影情况。如图1所示,通过投影,能够将房屋三维模型转化为该网格平面上的一张俯视图,由该俯视图可以看出,三维模型在网格区域a中投影到的部分为部分地台和屋檐。

在获取到底面后,为了形成立体的碰撞范围,服务器101还要确定出该三维模型在各个网格区域中的高度信息。可以理解的是,用于服务器101是向网格平面对模型进行投影,因此在投影过程中,服务器101能够得到该三维模型相对于该网格平面的高度信息。

经过上述步骤,在完成投影后,服务器101能够得到包括含有高度信息的网格区域的网格平面。其中,一个网格区域所对应的高度信息可以标识出该三维模型的一部分模型的高度,该部分模型称为该三维模型的一个子模型,该子模型是指该三维模型处于该网格区域的投影空间中的部分,网格区域的投影空间是指该网格区域垂直于网格平面的方向所延伸出的空间区域。

如图1所示,网格区域a所对应的投影空间为投影空间a,在该投影空间中,包含有该房屋三维模型的部分地台和屋檐,这部分地台和屋檐就构成了该三维模型在投影空间a中的子模型a。在对三维模型进行投影时,服务器101能够得到网格区域a所对应的高度信息,分别为底面高度a、地台高度b、屋檐底部高度c和屋檐顶部高度d,结合该网格区域a以及该高度信息,服务器101即可确定出该三维模型在投影空间a中所对应的碰撞范围,即这部分地台和屋檐所对应的碰撞范围。

同理,服务器101可以根据每一个网格区域以及其所对应的高度信息,确定出该三维模型位于每一个网格区域的投影空间中的子模型所对应的碰撞范围,将所有子模型的碰撞范围进行结合,即可得到该房屋三维模型所对应的碰撞范围。

由此可见,在确定该房屋三维模型的碰撞范围时,服务器101无需遍历该三维模型的每一个面片,只需将三维模型整体向网格平面进行投影,通过得到的各个网格区域的高度信息,即可还原出该房屋三维模型的各个子模型所对应的碰撞范围,所有子模型的碰撞范围能够结合得到该房屋模型的整体碰撞范围,从而在一定程度上降低了碰撞范围的确定时间,提高了确定效率。

接下来,将结合附图,对本申请实施例提供的一种碰撞范围方法进行介绍。

参见图2,图2展示了一种碰撞范围确定方法的流程图,该方法包括:

s201:根据待处理模型确定对应的网格平面。

在三维技术普及的当下,如何使三维模型更加真实已经成为了相关人员研究的热门问题。其中,能否对三维模型碰撞情况进行准确模拟是影响三维模型真实度的重要因素。例如,当游戏玩家所操控的三维游戏人物在游戏地图中行走时,可能会遇到各种游戏中的三维建筑。此时,为了使游戏更加真实,游戏服务器可以根据游戏人物的碰撞范围和建筑的碰撞范围,来模拟游戏人物与建筑物的碰撞情况。

由此可见,三维模型的碰撞范围是三维模型的重要属性之一,该碰撞范围是指在发生三维模型碰撞时,三维模型在空间中所占据的体积范围。在相关技术中,三维模型的碰撞范围是基于组成该三维模型的面片生成的。处理设备需要先需要用立体网格覆盖三维模型的每一个面片,然后根据每一个面片到对应立体网格的距离来确定面片的位置,最后将所有面片的位置进行组合得到三维模型的碰撞范围。这种方法需要遍历三维模型的每一个面片,而随着三维模型的精细度原来越高,一个三维模型所拥有的面片数量也在呈指数倍增长,因此采用这种方法会导致三维模型碰撞范围的确定时间较长,确定效率过低。

为了避免遍历三维模型的每一个面片,在本申请实施例中,可以通过将三维模型向二维平面进行投影的方式,将三维模型转化为某一平面的二维图像,并在投影过程中,确定出该二维图像的各个部分所对应的三维模型的高度信息,最后结合投影得到的二维图像与高度信息,来确定出该三维模型在空间中的碰撞范围。由于该投影过程是对三维模型整体进行投影,因此省去了遍历全部面片的时间,只需要关注能够在二维图像中产生高度信息的三维模型部分即可,在一定程度上降低了碰撞范围确定的时间。

为了能够实现向二维平面的投影,处理设备首先要确定出一个投影方向。在得到待处理模型后,处理设备可以根据待处理模型,确定出对应的网格平面,该网格平面即为此次投影所对应的二维平面。可以理解的是,由于是对待处理模型进行整体投影,投影得到的二维平面和高度信息是与投影方向所对应的,因此不管是从哪个方向对待处理模型进行投影,其所确定出的碰撞范围都是该待处理模型的碰撞范围。基于此,在本申请实施例中,并不对网格平面的位置进行限定。在本申请实施例中,处理设备可以将待处理模型的底面坐在的平面作为网格平面,将该模型向该网格平面进行投影。

为了使该网格平面能够准确的体现出待处理模型各个部分的投影情况,处理设备可以在网格平面中划分出多个网格区域,每一个网格区域占据该网格平面的部分面积。通过网格平面中所包括的多个网格区域的组合,即可体现出整个待处理模型的投影情况。例如,在图1所示的网格区域中包括网格区域a,该网格区域a中包括该房屋模型中的部分屋檐与地台模型;在另一个网格区域中,又可以包括该房屋模型的部分屋子和地台模型等。通过多个网格区域的结合,即可体现出整个房屋三维模型在网格平面的投影情况。

s202:通过将待处理模型向网格平面投影,得到待处理模型相对于网格平面的高度信息。

在对待处理模型进行投影的过程中,为了能够基于网格平面上的网格区域确定出碰撞范围,处理设备需要获取能够将二维平面转化为三维空间中碰撞范围的信息值。可以理解的是,由于投影是以垂直于网格平面的方向进行的,因此在投影的过程中,处理设备能够获取到该待处理模型与该垂直方向相交的每一个面相对于网格平面的高度信息。

其中,由于待处理模型在不同的网格区域所能够投影到的部分可能是不同的,因此经投影得到的每一个网格区域所对应的高度信息也可能有所不同。网格区域所对应的高度信息用于标识待处理模型中子模型的高度,该子模型为待处理模型处于该网格区域的投影空间中的部分。网格区域的投影空间是指网格区域以自身所包含的区域面积为基准,在垂直于网格平面的方向上所延伸出的空间,该空间经过该网格区域。

可以理解的是,处理设备对待处理模型的投影过程可以视为将待处理模型所包括的所有子模型投影到对应的网格区域的过程,因此,在投影结束时,每一个网格区域中可以包括所对应子模型具有的与投影方向相交的面的高度信息。

如图1所示,网格区域a对应的投影空间a以该网格区域为底,以垂直于网格平面的方向向上延伸出的空间,该空间中包括有房屋三维模型的部分屋檐和地台,这部分屋檐和地台即为该房屋三维模型的子模型。在投影过程中,这部分子模型与投影方向相交的面为屋檐上表面、屋檐下表面、地台上表面和底面,因此该网格区域中可以包括四个高度信息。

可以理解的是,在待处理模型中的面可以包括多种方向,当面与投影方向垂直时,处理设备可以直接得到该面的高度信息;当面与投影方向不垂直时,由于网格区域往往远小于待处理模型,因此可以将该面能够投影到网格区域的部分的平均高度近似看做该网格区域所对应的高度信息。

s203:根据网格平面和高度信息,确定待处理模型的碰撞范围。

在投影结束后,处理设备可以得到一个包括具有高度信息的网格区域的网格平面。其中,网格区域可以理解为碰撞范围的“底”,高度信息可以理解为碰撞范围的“高”,通过底与高的组合,处理设备即可依据一个包括有高度信息的二维网格平面,确定出三维的碰撞范围。

处理设备可以依据网格平面上每一个网格区域所对应的高度信息,在网格区域的投影空间中确定出子模型所对应的碰撞范围,而所有子模型的碰撞范围组合起来即为待处理模型的碰撞范围。如图1所示,在网格区域a中,通过网格区域a所对应的高度a和高度b,能够确定出网格区域a投影空间中对应的部分地台的碰撞范围,通过高度c和高度d,能够确定出部分屋檐的碰撞范围;在其他网格区域的投影空间中,又可以确定出其它部分屋檐、地台或者屋子的碰撞范围,将这些子模型的碰撞范围相结合,即可确定出整个房屋三维模型的碰撞范围。

由上述技术方案可以看出,根据待处理模型可以确定包括多个网格区域的网格平面。通过将待处理模型向网格平面投影,得到待处理模型相对于的网格平面的高度信息,也就是说,将三维模型通过投影向二维转换时,可以在投影过程中获取待处理模型处于各个网格区域的投影空间中部分的高度,根据网格平面和高度信息已经可以确定出待处理模型的碰撞范围,而不必遍历待处理模型中的全部组成部分,从而降低了复杂模型对确定碰撞范围的影响,提高了确定碰撞范围的效率。

可以理解的是,对待处理模型进行投影的方式可以包括多种。为了使范围确定速度更快,在投影过程中,处理设备可以通过将待处理模型绘制成二维图像的方式,从降维角度上节省范围确定的时间。在一种可能的实现方式中,处理设备可以通过一个虚拟相机,从相对于网格平面的俯视角度对待处理模型进行拍摄,从而绘制出待处理图像在网格平面上对应的二维图像。

首先,处理设备要确保该虚拟相机能够拍摄到全部的待处理模型。处理设备可以以相对于网格平面的俯视角度,根据虚拟相机获取包括该待处理模型的相机视野。其中,相机视野是指该虚拟相机在进行二维图像转化时所需要转化的区域范围,该相机视野需要能够涵盖整个待处理模型。如图3所示,图3中的相机视野能够在俯视角度上涵盖整个房屋三维模型。随后,处理设备可以利用虚拟相机,通过对该相机视野在网格平面上进行图像绘制,得到携带有高度信息的模型二维图像,该模型二维图像即为待处理模型在网格平面上的投影。如图1所示,图1中展示了一种从俯视角度获取得到的房屋模型二维图像。可以理解的是,该虚拟相机为一种正交相机,即通过该虚拟相机对待处理模型每一个部分进行图像绘制时,都确保虚拟相机的视野方向垂直于网格平面。

可以理解的是,在进行图像绘制时,可能会出现一个网格区域中只有部分面积能够被待处理模型所投影到。而在进行碰撞范围的确定时,由于是根据网格区域以及所包括的高度信息来确定的,因此该网格区域所确定出的碰撞范围可能要大于处于该网格区域投影空间中的子模型实际的碰撞范围,即碰撞范围的确定可能会存在一定误差。

可以理解的是,由于待处理模型的碰撞范围是由一个个子模型的碰撞范围所组成的,而子模型的是由网格区域的投影空间所决定的,因此当每一个网格区域的投影空间所包括的子模型占整个待处理模型的比例越小,即每一个网格区域在投影得到的模型二维图像中的占比越小,在一定程度上对待处理模型的碰撞范围的确定也就更加精确。其中,像素是模型二维图像中一种不可分割的组成单位,一个像素在模型二维图像中占据一个小方格,因此,若将网格区域的大小设定为模型二维图像中像素的大小,在一定程度上可以使每一个被投影到的网格区域都尽可能的被模型二维图像所占满,从而降低确定出的碰撞范围误差。

基于此,为了使处理设备确定出的碰撞范围更加精细,在一种可能的实现方式中,处理设备可以根据采样率来确定网格区域的大小,使得一个网格区域对应模型二维图像中的一个像素,即实现了模型二维图像的光栅化。其中,采样率是指在网格平面的相同区域面积中,所包括的网格区域的数量。相同区域面积中所包括的网格区域数量越多,采样率就越高。光栅化是指图像转化为由栅格组成的图像的过程,一个栅格对应于图像中的一个像素。在本申请实施例中,栅格即为网格区域。可以理解的是,获取待处理模型高度信息的方式可以包括多种。在一种可能的实现方式中,当一个网格区域赌赢模型二维图像中的一个像素时,处理设备可以通过对相机视野进行图像绘制的过程中,根据像素着色器(pixelshader)确定模型二维图像中像素对应的高度信息。其中,像素着色器是在每一个像素光栅化处理期间在物理卡的gpu上执行的一种程序,该程序能够检测出空间中的每一个像素在空间中的坐标,通过该程序,在投影过程中,处理设备能够确定出待处理模型中每一个能够被投影到模型二维平面的像素在空间中的坐标值,进而能够确定出每一个网格区域所对应像素的高度信息。

可以理解的是,由于待处理模型的形状往往具有各种凸出和凹陷的部分,因此同一待处理模型的不同部分可能会处于不同的高度层中。例如,在图1所示的房屋模型中,屋檐部分和地台部分所处的高度层就有所不同。为了能够更加细致的确定出待处理模型的碰撞范围,处理设备可以进一步的对待处理模型的各个部分所包括的高度层进行分析。

其中,屋檐部分的高度层由屋檐底部高度c和屋檐顶部高度d组成,地台部分的高度层由地面高度a和地台高度b组成。由此可见,为了确定出待处理模型各个部分所包括的高度层,处理设备可以通过确定每一个高度层的上下表面高度来进行。

在一种可能的实现方式中,处理设备所得到的网格区域对应的高度信息包括上表面标识或下表面标识,其中,高度信息的上表面标识用于标识该高度信息在子模型中对应的位置属于上表面,高度信息的下表面标识用于标识高度信息在子模型中对应的位置属于下表面。其中,面片的上下表面属性是在进行投影时,根据面片的相对朝向来决定的,面片的相对朝向是指该面片相对于投影方向的朝向。例如,在图1中,当投影方向为由上到下进行垂直投影时,高度d的面片对于该投影方向来说就是上表面,高度c的面片对于投影方向来说就是下表面。

在获得高度层的上下表面标识后,处理设备可以通过遍历网格区域所对应的高度信息,根据上表面标识和下表面标识,对高度信息进行高度层划分。其中,一个高度层可以由一个具有下表面标识的高度信息和一个具有上表面标识的高度信息划分得到,在该子模型中,该高度层所占据的部分是实体的,及当该子模型发生碰撞时,若其他三维模型在与该子模型接触的部分处于该高度层中,则该三维模型无法穿过该子模型。通过遍历,处理设备可以获取所有网格区域中所包含的高度层,进而组合得到待处理模型整体所包括的高度层情况。由此,处理设备可以根据网格平面中网格区域划分得到的高度层,来确定待处理模型的碰撞范围。

例如,在图1中,网格区域a所对应的高度信息c可以具有下表面标识,高度信息d可以具有上表面标识。服务器101基于该标识,能够划分得到网格区域a对应的子模型中屋檐部分所处的高度层。当其他三维模型,例如一个人物三维模型在经过该房屋三维模型时,处理设备可以判断该人物三维模型的高度是否有处于该屋檐高度层的部分,若有,说明该人物三维模型会与屋檐发生碰撞。

可以理解的是,由于不同待处理模型的复杂程度不同,在部分复杂程度较高的待处理模型中,可能会包括多个高度层。例如,如图1所示,在网格区域a对应的子模型中,就包括地台和屋檐两个高度层。其中,可能存在部分高度层之间间距过小,导致在确定待处理模型与其他三维模型的碰撞情况时,该三维模型的每一个部分都无法穿过上述高度层之间的间距。此时,对于该三维模型来说,该高度层之间的间距可以视为不存在,即两个高度层实际上可以视作一个高度层,该高度层中既包括原有的两高度层的高度,也包括中间间距的高度。通过这种合并得到的高度层与原有的两高度层,在此次碰撞情况确定中,所实际表现出的待处理模型的碰撞范围是相同的。

因此,为了进一步简化待处理模型的碰撞范围,提高碰撞范围确定的效率,在一种可能的实现方式中,处理设备可以通过遍历网格区域所对应的高度信息,根据上表面标识和下表面标识划分出多个待定高度层,该待定高度层是指待处理模型本身所具有的高度层。随后,处理设备可以确定相邻待定高度层之间的间距,然后将间距小于阈值的相邻待定高度层合并为一个高度层,将间距大于或等于阈值的相邻高度层确定为不同高度层。其中,阈值可以为在确定待处理模型的碰撞情况时,可能会与该待处理模型发生碰撞的最小高度部分的高度。

可以理解的是,网格区域所包括的高度信息中的下表面标识和上表面标识的数量可能并不是相同的。例如,如图4所示,图4为一个立方体三维模型的侧视图,在该立方体内部有一部分做了镂空处理,镂空部分被该立方体的侧面所围住,因此依然属于该立方体的碰撞范围。因此,在进行投影时,在网格区域中可以包括高度e、高度f和高度g三个高度信息,其中高度e和高度f都属于上表面,因此具有上表面标识;高度g属于下表面,因此具有下表面标识。

在进行碰撞范围确定时,处理设备可以将单独的具有上/下表面标识的高度信息与相邻的高度层进行合并,从而能够更加合理的确定出待处理模型的碰撞范围。在图4中,由于高度f和高度g能够组成一个高度层,高度e为单独的上表面高度层,因此处理设备可以将高度e、f、g组成同一高度层,该高度层的上表面高度为高度e,下表面高度为高度g。

可以理解的是,在不同的碰撞场景中,阈值的确定方式也可以有所区别。在一种可能的实现方式中,当碰撞场景为游戏内的模型碰撞时,为了使游戏玩家的游戏体验更加真实,处理设备可以从模拟游戏玩家所操控对象的碰撞真实性出发,根据待处理模型所对应游戏中被控对象的大小来确定阈值。例如,如图5所示,在投影结束后,处理设备在某一网格区域中可以得到h0-h6七个高度信息。其中,h0-h6各自具有“up”或“down”的表面标识,“up”表示该高度信息具有上表面标识,“down”表示该高度信息具有下表面标识。

在确定出高度信息后,处理设备可以先按照高低顺序对高度信息进行排序,然后从下至上遍历所有的高度信息,形成了layer0-layer2三个高度层。其中,由于h6为单独的上表面,因此与h5和h4共同组成一个高度层。在该图中,被控对象为玩家操控的一个游戏小人,该游戏小人从头到脚的高度为参考高度,处理设备可以将该参考高度设定为阈值。

由图可知,layer0和layer1之间的间距要大于该阈值,而layer1与layer2之间的间距要小于该阈值。因此,该游戏小人只能够在layer0和layer1之间通过,并不能在layer1和layer3之间通过。由此可见,对于该游戏小人来说,layer1和layer2等同于一层。因此,处理设备可以对高度层进行合并,最终得到如图所示的layer1和layer2两个高度层。

可以理解的是,根据高度层来确定碰撞范围的方式可以包括多种。在一种可能的实现方式中,由于处理设备在上述过程中已经获得了各个网格区域中所包括的高度层,该网格区域的面积可以视为一个柱状结构的“底”,而高度层则可以视作一个柱状结构的“高”。通过“底”和“高”的结合,即可确定出一个柱状结构。基于此,处理设备可以根据网格平面中网格区域划分得到的高度层,基于该网格区域生成符合高度层的柱状结构。该柱状结构能够体现出该网格区域对应的子模型的碰撞范围,而所有子模型的碰撞范围相组合,即可构成待处理模型的碰撞范围。因此,处理设备可以根据生成的柱状结构,确定待处理模型的碰撞范围。

例如,在图1中,服务器101能够根据网格区域a对应的高度层,生成该网格区域的柱状结构,该柱状结构中包括部分屋檐和地台。在其他网格区域的柱状结构中,可以包括部分屋子、屋檐或者地台。服务器101可以将全部的柱状结构进行组合,即可得到一个完成的房屋三维模型的碰撞范围。

此外,可以理解的是,在待处理模型中,可能包括一部分模型发生碰撞的可能性较低。例如,当待处理模型为一种楼房模型时,在楼房的最高层外侧可以挂有一个广告灯牌,而其他的三维模型,例如车辆模型、人物模型等,很难达到该灯牌的高度,与该灯牌发生碰撞。因此,在确定楼房的碰撞范围时,处理设备可以直接将该灯牌舍去,不计入楼房的碰撞范围,在确保碰撞范围有效性的前提下进一步提高了碰撞范围的确定效率。

因此,在一种可能的实现方式中,处理设备在根据网格平面和高度信息,确定待处理模型的碰撞范围之前,可以通过高度范围对待处理模型相对于网格平面的高度信息进行过滤,保留所标识高度处于该高度范围的高度信息。该高度范围是根据待处理模型所可能产生的碰撞来确定的,通过这种过滤方式,处理设备可以将不必要的高度信息舍去,从而利用更少的高度信息即可确定出一个有效的碰撞范围。

可以理解的是,本申请实施例中的碰撞范围是由一个个网格区域中子模型的碰撞范围所组成的,子模型的碰撞范围是由该网格区域以及其所具有的高度信息来确定的,因此,处理设备可以根据每一个网格区域独立生成其所对应的子模型碰撞范围,并不会收到其他网格区域的干扰。由此可见,不同网格区域中的信息处理是可以并行进行的。

图形处理器(graphicsprocessingunit,简称gpu)是由数量众多的计算单元和超长的流水线组成,适合处理大量的类型统一的数据。gpu擅长的是图形类的或者是非图形类的高度并行数值计算,它可以容纳上千个没有逻辑关系的数值计算线程。gpu的优势是无逻辑关系数据的并行计算,因此恰好适合进行本申请实施例所提供的碰撞范围确定方法中每一个网格区域信息的并行处理。因此,为了进一步提高碰撞范围的确定效率,在一种可能的实现方式中,该碰撞范围确定方法可以通过处理设备中的图形处理器来执行。

而在相关技术中,三维模型面片的遍历是通过中央处理器(centralprocessingunit,简称cpu)串行处理来实现的,因此当待处理模型较复杂,面片数量较多时,要耗费大量的时间来进行碰撞范围的确定。通过本申请所提供的方法独有的并行处理特性,结合gpu的并行处理功能,能够进一步拉开与相关技术的效率差距。

接下来,将结合一种实际应用场景,对本申请实施例提供的碰撞范围确定方法进行介绍。参见图6,图6为一种实际应用场景中碰撞范围确定方法的示意图。在该实际应用场景中,处理设备为一种包括gpu的服务器,待处理模型为游戏中的一种建筑物模型。

s601:开始生成。

服务器在获取待处理模型后,开始生成待处理模型的碰撞范围。

s602:俯视相机绘制。

服务器可以通过虚拟相机,从俯视方向上对待处理模型进行绘制,得到对应的模型二维图像。首先,服务器可以根据待处理模型的大小,来确定虚拟相机的采样率,根据采样率来确定网格区域的大小。在本实际应用场景中,俯视角度下待处理模型的大小为20m*20m,服务器可以将网格区域设定为0.5m,从而创造出一个包括40*40数量的网格区域的网格平面。其中,该网格区域的大小与最终生成的模型二维图像的像素大小相同。

s603:着色器中获取高度信息。

服务器在从俯视角度用虚拟相机进行模型二维图像绘制的过程中,可以通过像素着色器,获取每一个网格区域所对应子模型的高度信息。

s604:判断是否在高度范围内。

服务器可以对该获取到的高度信息进行过滤,将不在预设高度范围内的高度信息通过步骤s605进行舍弃,若在预设高度范围内,则进入步骤s606,存储该高度信息。

可以理解的是,为了使gpu能够通过并行的方式确定碰撞范围,服务器需要保障每一个网格区域中都具有其在建立碰撞范围时所需的相关数据。基于此,服务器可以通过原子操作,即针对每一个网格区域进行独立操作,来记录并保存其所对应的高度信息以及高度信息中的表面标识。其中,服务器可以通过高度数组heightarray来保存每个网格区域(即每个像素)index的高度信息,用计数数组countarray来保存对应的网格区域(像素)的高度数量。当服务器获取到某个网格区域的一个高度信息height时,服务器通过原子操作将这个网格区域已记录的高度数量加1,数组如下:

interlockedadd(countarray[index],1,originalcount)

随后,服务器可以根据这个网格区域index和这个网格区域index已经累加的高度数量originalcount来确定获得的高度信息需要写到高度数组的哪个位置,数组如下:

heightarray[index+originalcount]=height

s607:确定分层。

通过位置确定,服务器可以将该网格区域index所包括的高度信息进行排序,从而能够对该网格区域所对应的分层关系进行计算。

s608:判断相邻层是否能够通过角色。

在确定出高度层后,服务器可以根据玩家所控的游戏角色大小,判断相邻高度层之间是否能够通过该角色,若能,则进入步骤s610将相邻高度层确定为独立两层;若不能,则进入步骤s609,将相邻高度层合并为一层。

通过每一个网格区域所确定出的高度层,服务器能够确定出每一个网格区域所对应的柱状结构,该柱状结构能够体现出该网格区域对应的子模型的碰撞范围。最后,通过每一个子模型碰撞范围的结合,即可确定出该待处理模型整体的碰撞范围。

基于上述实施例提供的一种碰撞范围确定方法,本申请实施例还提供了一种碰撞范围确定装置700。参见图7,图7为本申请实施例提供的一种碰撞范围确定装置的结构框图。装置700包括第一确定单元701、投影单元702和第二确定单元703:

第一确定单元701,用于根据待处理模型确定对应的网格平面;网格平面包括多个网格区域;

投影单元702,用于通过将待处理模型向网格平面投影,得到待处理模型相对于网格平面的高度信息;其中,网格区域所对应的高度信息用于标识待处理模型中子模型的高度,子模型为待处理模型处于网格区域的投影空间中的部分;

第二确定单元703,用于根据网格平面和高度信息,确定待处理模型的碰撞范围。

在一种可能的实现方式中,投影单元702具体用于:

以相对于网格平面的俯视角度,根据虚拟相机获取包括待处理模型的相机视野;

通过对相机视野在网格平面上进行图像绘制,得到携带高度信息的模型二维图像。

在一种可能的实现方式中,网格区域的大小是根据采样率确定的,使得一个网格区域对应模型二维图像中的一个像素。

在一种可能的实现方式中,投影单元702具体用于:

通过对相机视野进行图像绘制的过程中,根据像素着色器确定模型二维图像中像素对应的高度信息。

在一种可能的实现方式中,网格区域所对应的高度信息包括上表面标识或下表面标识,高度信息的上表面标识用于标识高度信息在子模型中对应的位置属于上表面,高度信息的下表面标识用于标识高度信息在子模型中对应的位置属于下表面;

第二确定单元703具体用于:

通过遍历网格区域所对应的高度信息,根据上表面标识和下表面标识对高度信息进行高度层划分;

根据网格平面中网格区域划分得到的高度层,确定待处理模型的碰撞范围。

在一种可能的实现方式中,第二确定单元703具体用于:

通过遍历网格区域所对应的高度信息,根据上表面标识和下表面标识将高度信息划分出多个待定高度层;

确定相邻待定高度层间的间距;

将间距小于阈值的相邻待定高度层合并为一个高度层;

将间距大于或等于阈值的相邻待定高度层确定为不同高度层。

在一种可能的实现方式中,阈值是根据待处理模型所对应游戏中被控对象的大小确定的。

在一种可能的实现方式中,第二确定单元703具体用于:

根据网格平面中网格区域划分得到的高度层,基于网格区域生成符合高度层的柱状结构;

根据生成的柱状结构确定待处理模型的碰撞范围。

在一种可能的实现方式中,装置700还包括过滤单元:

过滤单元,用于通过高度范围对待处理模型相对于网格平面的高度信息进行过滤,保留所标识高度处于高度范围的高度信息。

在一种可能的实现方式中,装置700为包括图形处理器的处理设备。

本申请实施例还提供了一种用于碰撞范围确定的设备,下面结合附图对该设备进行介绍。请参见图8所示,本申请实施例提供了一种设备800,该设备800还可以是终端设备,该终端设备可以为包括手机、平板电脑、个人数字助理(personaldigitalassistant,简称pda)、销售终端(pointofsales,简称pos)、车载电脑等任意智能终端,以终端设备为手机为例:

图8示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图8,手机包括:射频(radiofrequency,简称rf)电路810、存储器820、输入单元830、显示单元840、传感器850、音频电路860、无线保真(wirelessfidelity,简称wifi)模块870、处理器880、以及电源890等部件。本领域技术人员可以理解,图8中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图8对手机的各个构成部件进行具体的介绍:

rf电路810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器880处理;另外,将设计上行的数据发送给基站。通常,rf电路810包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,简称lna)、双工器等。此外,rf电路810还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,简称gsm)、通用分组无线服务(generalpacketradioservice,简称gprs)、码分多址(codedivisionmultipleaccess,简称cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,简称wcdma)、长期演进(longtermevolution,简称lte)、电子邮件、短消息服务(shortmessagingservice,简称sms)等。

存储器820可用于存储软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

输入单元830可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元830可包括触控面板831以及其他输入设备832。触控面板831,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板831上或在触控面板831附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板831可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板831。除了触控面板831,输入单元830还可以包括其他输入设备832。具体地,其他输入设备832可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元840可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元840可包括显示面板841,可选的,可以采用液晶显示器(liquidcrystaldisplay,简称lcd)、有机发光二极管(organiclight-emittingdiode,简称oled)等形式来配置显示面板841。进一步的,触控面板831可覆盖显示面板841,当触控面板831检测到在其上或附近的触摸操作后,传送给处理器880以确定触摸事件的类型,随后处理器880根据触摸事件的类型在显示面板841上提供相应的视觉输出。虽然在图8中,触控面板831与显示面板841是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板831与显示面板841集成而实现手机的输入和输出功能。

手机还可包括至少一种传感器850,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板841的亮度,接近传感器可在手机移动到耳边时,关闭显示面板841和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路860、扬声器861,传声器862可提供用户与手机之间的音频接口。音频电路860可将接收到的音频数据转换后的电信号,传输到扬声器861,由扬声器861转换为声音信号输出;另一方面,传声器862将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出处理器880处理后,经rf电路810以发送给比如另一手机,或者将音频数据输出至存储器820以便进一步处理。

wifi属于短距离无线传输技术,手机通过wifi模块870可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了wifi模块870,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器880是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器880可包括一个或多个处理单元;优选的,处理器880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。

手机还包括给各个部件供电的电源890(比如电池),优选的,电源可以通过电源管理系统与处理器880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。

在本实施例中,该终端设备所包括的处理器880还具有以下功能:

根据待处理模型确定对应的网格平面;所述网格平面包括多个网格区域;

通过将所述待处理模型向所述网格平面投影,得到所述待处理模型相对于所述网格平面的高度信息;其中,所述网格区域所对应的高度信息用于标识所述待处理模型中子模型的高度,所述子模型为所述待处理模型处于所述网格区域的投影空间中的部分;

根据所述网格平面和所述高度信息,确定所述待处理模型的碰撞范围。

本申请实施例还提供一种服务器,请参见图9所示,图9为本申请实施例提供的服务器900的结构图,服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,简称cpu)922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在服务器900上执行存储介质930中的一系列指令操作。

服务器900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,和/或,一个或一个以上操作系统941,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的步骤可以基于图9所示的服务器结构。

本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行前述各个实施例所述的碰撞范围确定方法中的任意一种实施方式。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:read-onlymemory,缩写:rom)、ram、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1