掌桥专利:专业的专利平台
掌桥专利
首页

虚拟对象的显示控制方法及装置、存储介质、电子设备

文献发布时间:2023-06-19 10:18:07


虚拟对象的显示控制方法及装置、存储介质、电子设备

技术领域

本公开涉及计算机技术领域,尤其涉及一种虚拟对象的显示控制方法与虚拟对象的显示控制装置、计算机可读存储介质及电子设备。

背景技术

随着互联网技术的发展,娱乐的方式变得多样化。同时,人们对于娱乐体验度的要求日益增高,尤其是对于游戏的体验度。为了增强游戏场景中的真实感,渲染时通常会考虑光照对虚拟对象的影响,因而基于光照的渲染技术在游戏中得到了应用。例如,全局光照技术,是指既考虑场景中直接来自光源的光照,又考虑经过场景中其他物体反射后的光照的一种渲染技术。

在相关技术中,常见的处理全局光照的模式有两种,一种是Ambient Cube全局光照技术,由于存储的颜色信息和阴影信息过少,导致虚拟对象的渲染效果差;另一种是基于三阶球谐函数的SHVolume的全局光照技术,存储的颜色信息和阴影信息比Ambient Cube全局光照技术多,虚拟对象的渲染效果好,但存储的数据占用的内存空间大,导致计算机的损耗严重。同时,由于动态虚拟对象的位置在实时变化,如果对任意位置均采用均匀网格进行渲染会造成计算机的损耗严重,性能的浪费量大。鉴于此,本领域亟需开发一种新的虚拟对象的显示控制方法及装置。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本公开的目的在于提供一种虚拟对象的显示控制方法、虚拟对象的显示控制装置、计算机可读存储介质及电子设备,进而至少在一定程度上克服由于相关技术的限制而导致的计算机损耗和性能浪费的问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本发明实施例的第一个方面,提供一种虚拟对象的显示控制方法,所述方法包括:获取第一虚拟对象在虚拟场景中的目标位置;从多个第一网格和多个第二网格中确定与所述目标位置对应的目标网格;其中,所述多个第一网格为对所述虚拟场景进行划分处理得到的网格,所述多个第二网格为根据第二虚拟对象对所述多个第一网格进行划分处理得到的网格;根据所述目标网格索引得到对应的目标渲染数据,并根据所述目标渲染数据对所述第一虚拟对象进行渲染。

在本发明的一种示例性实施例中,所述获取第一虚拟对象在虚拟场景中的目标位置,包括:确定虚拟场景中第一虚拟对象的包围盒,并根据所述包围盒确定所述第一虚拟对象在所述虚拟场景中的目标位置。

在本发明的一种示例性实施例中,所述根据第二虚拟对象对所述多个第一网格进行划分处理,包括:对第一待划分网格进行划分处理,其中,所述第一待划分网格为第二虚拟对象所在的所述第一网格。

在本发明的一种示例性实施例中,所述对所述第一待划分网格进行划分处理,包括:从所述第一待分网格中确定所述第一虚拟对象的寻路网格,以作为第二待划分网格;对所述第二待划分网格进行划分处理,其中,所述第二待划分网格为从所述第一待划分网格中确定的所述第一虚拟对象的寻路网格。

在本发明的一种示例性实施例中,所述目标网格与渲染数据之间通过映射关系进行索引;渲染数据存储于数据池;所述根据所述目标网格索引得到对应的渲染数据,包括:确定所述目标网格对应的标识信息;根据所述映射关系从所述数据池中确定与所述标识信息对应的渲染数据;根据与所述标识信息对应的渲染数据,对所述目标对象进行渲染。

在本发明的一种示例性实施例中,所述目标渲染数据包括与所述第一网格对应的第一渲染数据和/或与所述第二网格对应的第二渲染数据;所述根据所述目标渲染数据对所述第一虚拟对象进行渲染,包括:根据所述第一渲染数据和/或所述第二渲染数据对所述第一虚拟对象进行渲染。

在本发明的一种示例性实施例中,所述根据所述目标渲染数据对所述第一虚拟对象进行渲染,包括:根据所述目标渲染数据计算得到所述第一虚拟对象的其余网格对应的第三渲染数据;根据所述目标渲染数据和所述第三渲染数据对所述第一虚拟对象进行渲染。

在本发明的一种示例性实施例中,所述根据所述目标渲染数据计算得到所述第一虚拟对象所在其余网格的第三渲染数据,包括:利用三阶球谐函数对所述目标数据进行计算得到所述第一虚拟对象所在其余网格的第三渲染数据。

根据本发明实施例的第二个方面,提供一种虚拟对象的显示控制装置,所述装置包括:获取模块,被配置为获取第一虚拟对象在虚拟场景中的目标位置;确定模块,被配置为从多个第一网格和多个第二网格中确定与所述目标位置对应的目标网格;其中,所述多个第一网格为对所述虚拟场景进行划分处理得到的网格,所述多个第二网格为根据第二虚拟对象对所述多个第一网格进行划分处理得到的网格;渲染模块,被配置为根据所述目标网格索引得到对应的目标渲染数据,并根据所述目标渲染数据对所述第一虚拟对象进行渲染。

根据本发明实施例的第三个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意示例性实施例中的虚拟对象的显示控制方法。

根据本发明实施例的第四个方面,提供一种电子设备,包括:处理器和存储器;其中,存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现上述任意示例性实施例的虚拟对象的显示控制方法。

由上述技术方案可知,本发明示例性实施例中的虚拟对象的显示控制方法、虚拟对象的显示控制装置、计算机存储介质及电子设备至少具备以下优点和积极效果:

在本公开的示例性实施例提供的方法及装置中,首先按照非均匀网格的形式对虚拟场景进行了划分处理得到第一网格,然后根据第二虚拟对象对第一网格进行再次划分处理得到第二网格,然后根据第一网格和第二网格确定与第一虚拟对象对应的目标网格,最后确定目标网格的目标渲染数据,并根据渲染数据渲染第一虚拟对象。一方面,解决了无法区分重点区域和非重点区域的问题,降低了磁盘和内存的占用率;另一方面,根据第一虚拟对象的实时位置所在的网格对虚拟对象进行区分渲染,在保证渲染效果的基础上提高了渲染速度。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出本公开实施例中虚拟对象的显示控制方法的流程示意图;

图2示意性示出本公开实施例中不同等级的目标网格的俯视结构示意图;

图3示意性示出本公开实施例中渲染数据的结构示意图;

图4示意性示出相关技术中虚拟对象的显示控制效果示意图;

图5示意性示出本公开实施例中虚拟对象的显示控制效果示意图;

图6示意性示出本公开实施例中根据目标渲染数据对第一虚拟对象进行渲染的流程示意图;

图7示意性示出本公开实施例中对第一待划分网格进行划分处理的流程示意图;

图8示意性示出本公开实施例中根据目标网格索引得到对应的渲染数据的流程示意图;

图9示意性示出本公开实施例中标识信息状态更新前的二维空间示意图;

图10示意性示出本公开实施例中标识信息状态更新后的二维空间示意图;

图11示意性示出本公开实施例中一种虚拟对象的显示控制装置的结构示意图;

图12示意性示出本公开实施例中一种用于虚拟对象的显示控制方法的电子设备;

图13示意性示出本公开实施例中一种用于虚拟对象的显示控制方法的计算机可读存储介质。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。

在相关技术中,在渲染虚拟对象时使用的全局光照的模式有两种,分别是AmbientCube全局光照技术和基于三阶球谐函数的SHVolume的全局光照技术。

在Ambient Cube全局光照技术中,从存储颜色信息和阴影信息的数据池中可以获得6个方向的颜色信息和阴影信息,这6个方向分别是上、下、左、右、前以及后。

虽然通过Ambient Cube全局光照技术可以渲染虚拟对象中的全局光照,但是仅存储了6个方向的颜色信息和阴影信息,存储的数据量小,导致渲染的效果差。

在基于三阶球谐函数的SHVolume的全局光照技术中,三阶球谐函数是表示球面函数的一种方式,将球面函数表示为9个系数。渲染时颜色包含红色、绿色以及蓝色三个通道,每个通道都需要9个系数,所以一共需要从存储颜色信息和阴影信息的数据池中获取27个信息。

显然,相比于Ambient Cube全局光照技术,基于三阶球谐函数的SHVolume的全局光照技术获得了更多的数据,渲染的效果更好。

但是,基于三阶球谐函数的SHVolume的全局光照技术获取的数据不易压缩,导致占用的内存空间大,增加了性能的损耗。

同时,现有技术中的两种模式都基于的是均匀网格,对虚拟场景中的区域没有重点与非重点的区分。

随着虚拟场景的扩大,对场景中的区域没有重点和非重点的区分会增加内存的占用量,进而增加性能的损耗。

针对相关技术中存在的问题,本公开提出了一种虚拟对象的显示控制方法。图1示出了虚拟对象的显示控制方法的流程示意图,该方法的执行主体可以是服务器或者终端,并且该方法中各个步骤可以是由同一个执行主体执行也可以由不同的执行主体执行。如图1所示,虚拟对象的显示控制方法至少包括以下步骤:

步骤S110.获取第一虚拟对象在虚拟场景中的位置。

步骤S120.从多个第一网格和多个第二网格中确定与位置对应的目标网格;其中,多个第一网格为对虚拟场景进行划分处理得到的网格,多个第二网格为根据第二虚拟对象对多个第一网格进行划分处理得到的网格。

步骤S130.根据目标网格索引得到对应的目标渲染数据,并根据目标渲染数据对第一虚拟对象进行渲染。

在本公开的示例性实施例提供的方法及装置中,首先按照非均匀网格的形式对虚拟场景进行了划分处理得到第一网格,然后根据第二虚拟对象对第一网格进行再次划分处理得到第二网格,然后根据第一网格和第二网格确定与第一虚拟对象对应的目标网格,最后确定目标网格的目标渲染数据,并根据目标渲染数据渲染第一虚拟对象。一方面,解决了无法区分重点区域和非重点区域的问题,降低了磁盘和内存的占用率;另一方面,根据第一虚拟对象的实时位置所在的网格对虚拟对象进行区分渲染,在保证渲染效果的基础上提高了渲染速度。

下面对虚拟对象的显示控制方法的各个步骤进行详细说明。

在步骤S110中,获取第一虚拟对象在虚拟场景中的目标位置。

在本公开的示例性实施例中,虚拟场景指的是虚构的,在真实世界中并不存在的一种场景。通常存在于电影、电视剧等文艺作品和各类游戏中。

虚拟场景可以是电影中的虚拟场景,也可以是计算机动画中的虚拟场景,还可以是手机端游戏中的虚拟场景,还可以是电脑端游戏中的虚拟场景,本示例性实施例对此不做特殊限定。

第一虚拟对象指的是虚拟场景中的特定对象,第一虚拟对象可以是虚拟场景中的动态虚拟人物,例如,第一虚拟对象可以是游戏玩家操控的虚拟角色,也可以是虚拟场景中的动态虚拟生物,还可以虚拟场景中的动态虚拟道具,本示例性实施例对此不做特殊限定。

目标位置指的是表示第一虚拟对象所在位置的三维坐标信息,可以是第一虚拟对象中心点的三维坐标信息,也可以是第一虚拟对象中某个点的三维坐标信息,还可以是按照某种算法对第一虚拟对象中所有点的三维坐标信息进行计算后得到的三维坐标信息,本示例性实施例对此不做特殊限定。示例性地,该目标位置的获取为实时获取。

具体的,目标位置可以是第一虚拟对象的包围盒的中心点位置,也可以是第一虚拟对象的包围盒的左上角位置,还可以是第一虚拟角色的包围盒的右上角位置,还可以是第一虚拟角色的包围盒的右下角位置,还可以是第一虚拟角色的包围盒的左下角位置,还可以是第一虚拟角色的围盒上任意一点的位置,本示例性实施例对此不做特殊限定。

其中,包围盒指的是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(包围盒)来近似替代复杂的几何对象。包围盒可以是长方体,也可以是正方体,还可以是一个球体,本示例性实施例对此不做特殊限定。

举例而言,在射击游戏中存在多种三维场景,包括森林场景、冰川场景以及战地场景。

当处于森林场景时,森林场景就是虚拟场景,并且在射击游戏中可以存在游戏角色A,此时游戏角色A就是第一虚拟对象,目标位置可以是游戏角色A的包围盒的中心点位置,具体的,中心点位置可以是中心点的三维坐标。

在可选的实施例中,获取第一虚拟对象在虚拟场景中的目标位置,包括:确定虚拟场景中第一虚拟对象的包围盒,并根据包围盒确定第一虚拟对象在所述虚拟场景中的目标位置。

其中,包围盒指的是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(包围盒)来近似替代复杂的几何对象。包围盒可以是长方体,也可以是正方体,还可以是一个球体,本示例性实施例对此不做特殊限定。

举例而言,在射击类游戏中,在森林场景中存在游戏对象A,此时游戏对象A就是第一虚拟对象,首先根据游戏对象A中若干个离散的点集计算出最优的包围空间,得到一个可以替代游戏对象A的长方体,此时长方体就是游戏对象A的包围盒。然后获取与游戏对象A的包围盒对应的中心点的位置,以作为目标位置。

在可选的实施例中,通过确定第一虚拟对象的包围盒,可以提升确定目标位置的精准度。

在步骤S120中,从多个第一网格和多个第二网格中确定与目标位置对应的目标网格;其中,多个第一网格为对虚拟场景进行划分处理得到的网格,多个第二网格为根据第二虚拟对象对多个第一网格进行划分处理得到的网格。

其中,第一网格指的是对虚拟场景进行一次拆分后得到的立体体。第一网格可以是长方体,也可以是正方体,还可以是任何三维立体图形,本示例性实施例对此不做特殊限定。

第二网格指的是对第一网格进行继续拆分得到的立体体,其中,拆分的次数可以是一次,也可以是两次,还可以是三次,还可以是任何次,拆分的次数根据实际的需求决定,本示例性实施例对此不做限定,并且根据拆分的次数可以将网格划分为不同等级的网格。

值得说明的是,第一网格和第二网格可以是预先通过划分处理得到的,也可以是基于第二虚拟对象所在的寻路网格的位置,并通过实时划分处得到的,本示例性实施例对此不做特殊限定。

举例而言,在射击类游戏的森林中,存在游戏角色A、草丛B以及海体C。此时,森林为虚拟场景,并且,在森林场景中的草丛B和海体C中包含着游戏角色A的寻路网格,可以预先对森林场景B进行划分处理得到第一网格,然后对草丛B以及海体C所在位置的第一网格进行再次的预先划分得到第二网格。

举例而言,在射击类游戏的森林场景中,存在游戏角色A、草丛B以及海体C。此时,森林为虚拟场景,游戏角色为第一虚拟对象,草丛B和海体C为第二虚拟对象,并且,在森林场景中的草丛B和海体C中包含着游戏角色A的寻路网格。

当第一虚拟对象在森林场景中除去草丛B和海体C以外的虚拟场景区域D移动时,对区域D进行实时的拆分处理得到第一网格,当第一虚拟对象移动到草丛B或海体C时,对草丛B以及海体C所在的虚拟场景区域进行实时拆分处理得到第一网格,然后对第一网格进行再次的拆分处理得到第二网格。

具体的,第一网格可以是第一等级目标网格,将第一网格拆分一次得到的第二网格可以是第二等级目标网格,将第二等级目标网格继续拆分一次可以得到第三等级目标网格,以此类推,根据不同次数的拆分可以得到不同等级的目标网格。

拆分的依据可以是预设拆分值,预设拆分值可以是第二网格的个数,还可以第一网格的拆分标准,本示例性实施例对此不做特殊限定。

具体的,如图2示出了不同等级的目标网格的俯视结构示意图,如图2所示,假设目标网格分为了三个等级。其中,目标网格210为第一等级目标网格,既第一网格,目标网格220为第二等级目标网格,目标网格230为第三等级目标网格。

不同等级的目标网格具有不同的长宽高。并且,第一等级目标网格的长宽高的值大于第二等级目标网格的长宽高的值,第二等级目标网格长宽高的值大于第三等级目标网格长宽高的值。

其中,通过将第一等级目标网格210按照前后方向、左右方向、上下方向各分为2个区域,可以将第一等级目标网格210分割成8个第二等级目标网格220。

再将第二等级目标网格220按照前后方向、左右方向、上下方向各分为2个区域,可以将第二等级目标网格220分割成8个第三等级目标网格230。

由于图2为俯视图,所以图中示出了4个第二等级目标网格和4个第三等级目标网格,实际中第二等级目标网格和第三等级目标网格的数量都为8。

也可以按照前后方向、左右方向、上下方向将目标网格分割成2个区域,还可以按照前后方向、左右方向、上下方向将目标网格分割成3个区域,还可以按照前后方向、左右方向、上下方向将目标网格分割成4个及4个以上区域,本示例性实施例对此不做限定。

第二虚拟对象指的是第一虚拟对象可以行走到的虚拟场景对象,此类虚拟场景对象通常包含有对应的光照信息。具体地,第二虚拟对象可以是虚拟场景中的房子,可以是虚拟场景中的森林,可以是虚拟场景中的载具,可以是虚拟场景中的草丛,可以是虚拟场景中的海体,还可以是虚拟场景中的河体,还可以是虚拟场景中的具有光照的区域。

值得说明的是,第二虚拟对象指的是虚拟场景中第一虚拟对象可以走到的任何一种虚拟场景对象,本示例性实施例对此不做特殊限定。

举例而言,在射击游戏森林场景中存在游戏角色A以及树木B,此时游戏角色A为第一虚拟对象,森林场景为虚拟场景,树木B为第二虚拟对象,并且与游戏角色A对应的目标位置可以为(1,1,1)。

预设拆分值为4,第一网格为对虚拟场景进行拆分后得到的多个网格,例如第一网格的数量是10,并且第一网格是边长为100像素的正方体,根据树木B对多个第一网格中的5个第一网格进行再一次的拆分,具体的,可以将5个第一网格中的每一个第一网格按照预设拆分值在第一网格的左右反向、上下方向以及前后方向分别进行拆分,以将每一个第一网格拆分为64个第二网格。

此时,在森林场景中存在5个第一网格和320个第二网格。在这5个第一网格和320个第二网格中确定与目标位置(1,1,1)对应的目标网格。

在可选的实施例中,目标渲染数据包括与第一网格对应的第一渲染数据和/或与第二网格对应的第二渲染数据;根据目标渲染数据对第一虚拟对象进行渲染,包括:根据第一渲染数据和/或第二渲染数据对第一虚拟对象进行渲染。

第一渲染数据指的是数据池中与第一网格具有映射关系的渲染数据,第二渲染数据指的是数据池中与第二网格具有映射关系的渲染数据。

然而,在目标数据中可能只包括第一渲染数据,此时根据第一渲染数据渲染第一虚拟对象。

在目标数据中还可能只包括第二渲染数据,此时根据第二渲染数据渲染第二虚拟对象。

在目标数据中还可能即包括第一渲染数据还包括第二渲染数据,此时根据第一渲染数据和第二渲染数据渲染第一虚拟对象。

图3示出了渲染数据的结构示意图,如图3所示,渲染数据310以第一网格的大小存储着,例如128米*128米*128米。渲染数据中中包括了全局光照信息和阴影信息。

其中,全局光照信息中的一部分是以RGBA16F的形式存储的,其余部分的全局光照信息和阴影信息是以RGBA8的形式存储的。其中,R代表红色信息,G代表绿色信息,B代表蓝色信息,A代表透明度信息,16F为十六进制,8为八进制。

除此之外,在310中包括第一渲染数据320和第二渲染数据330两部分。其中,320包括了渲染第一网格时会用到的第一渲染数据,330包括渲染第二网格和更精细的第二网格时会用到的第二渲染数据。

除此之外,图4示出了相关技术中虚拟对象的显示控制效果示意图,如图4所示,场景410为虚拟场景,人420为虚拟场景中的第一虚拟对象,渲染效果430为使用Ambient Cube全局光照技术实现的渲染效果。

图5示出了本公开实施例的渲染效果示意图,如图5所示,渲染效果510为使用本公开实施例实现的渲染效果。

相较于图4中的430,本公开实施例中的510比图4中的430渲染出的颜色更清楚,渲染效果更好。

并且,本公开实施例中渲染的方式有两种,一种是基于level的方式,另一种是基于视点位置的方式。

其中,基于level的方式指的是根据场景中不同区域的level值对不同区域进行不同的渲染。有的区域使用与该区域中目标网格对应的目标网格信息进行渲染,有的区域使用该区域中目标网格对应的原始网格信息进行渲染。

基于视点位置的方式指的是对靠近视点的区域使用与该区域对应的目标网格信息进行渲染,对远离视点的区域使用与该区域对应的原始网格信息进行渲染。

举例而言,在射击类游戏中,第一虚拟对象中只包括第一网格,则使用与第一网格对应的第一渲染数据渲染第一虚拟对象。

举例而言,在射击类游戏中,第一虚拟对象中即包括了第一网格也包括了第二网格,渲染第一虚拟对象时,对第一网格使用第一渲染数据进行渲染,对第二网格使用第二渲染数据进行渲染。

在可选的实施例中,对需要高精度渲染的地方采用第二虚拟数据进行渲染,对不需要高精度渲染的地方采用第一渲染数据进行渲染,不仅提高了渲染第一虚拟对象渲染的速度,而且降低了磁盘和内存的占用率。

在可选的实施例中,图6示出了根据目标渲染数据对第一虚拟对象进行渲染的流程示意图,如图6所示,该方法至少包括以下步骤:在步骤S610中,根据目标渲染数据计算得到第一虚拟对象所在其余网格的第三渲染数据。

其中,目标渲染数据指的是与目标网格具有映射关系的渲染数据,并且,目标网格是根据目标位置确定的,然而目标位置只是第一许你对象中的一个位置,在第一虚拟对象中还具有很多个位置,因此其余网格指的是与第一虚拟对象中除去目标位置以外的其他位置对应的网格,第三渲染数据指的是在数据池中与其他网格对应渲染数据。

举例而言,目标渲染数据是与目标网格对应的渲染数据,但是目标渲染数据只是第一虚拟对象中某一个网格对应的渲染数据,为了将整个第一虚拟对象渲染出来,必须先对这一个渲染数据,即目标渲染数据进行计算得出与第一虚拟对象中其余网格对应的渲染,即第三渲染数据。

在步骤S620中,根据目标渲染数据和第三渲染数据对第一虚拟对象进行渲染。

因为第一虚拟对象被分成了多个网格,并且多个网格由目标网格和其他网格组成,因此需要根据与目标网格对应的目标渲染数据以及和其他网格对应的第三渲染数据对第一虚拟对象进行渲染。

举例而言,获取的目标渲染数据为黄色,通过对目标渲染数据进行计算得到的第三渲染数据包括橙色、红色以及绿色,根据黄色、橙色、红色以及绿色对第一虚拟对象进行渲染。

在可选的实施例中,不需寻找与其余网格对应的渲染数据就可以实现对第一虚拟对象的渲染,提高了第一虚拟对象的渲染速度,避免了不必要的性能损耗。

在可选的实施例中,根据目标渲染数据计算得到第一虚拟对象所在其余网格的第三渲染数据,包括:

利用三阶球谐函数对目标数据进行计算得到第一虚拟对象所在其余网格的第三渲染数据。

其中,三阶球谐函数指的是渲染数据的一种表示方式,并且在三阶球谐函数中具有一个法向量参数,根据不同的法向量参数值可以得到不同的三阶球谐函数结果,即得到不同的渲染数据。

并且,目标网格与其他网格的区别就在于法向量的方向不同,所以将其余网格的法向量带入目标网格的法向量参数中即可以得到与其余网格对应的第三渲染数据。

举例而言,与目标渲染数据对应的三阶球谐函数的法向量坐标为(1,1,1),在第一虚拟对象中存在2个其余网格,并且这两个其余网格的法向量分别为(1,1,0)以及(1,1,2),将(1,1,0)以及(1,1,2)分别代入与目标渲染数据对应的三阶球谐函数中得到与2个其余网格对应的第三渲染数据。值得说明的是,第一虚拟对象的网格数目还可以是其他数值,本示例性实施例对此不做特殊限定。

在可选的实施例中,利用三阶球谐函数得到与其余网格计算得到第三渲染数据,可以提高获得的渲染数据的精确度,进而提升第一虚拟对象的渲染效果,优化用户的体验。

在步骤S130中,根据目标网格索引得到对应的目标渲染数据,并根据目标渲染数据对第一虚拟对象进行渲染。

其中,目标渲染数据指的是与目标网格具有映射关系的渲染数据,并且,目标网格是根据目标位置确定的,然而目标位置只是第一虚拟对象中的一个位置,在第一虚拟对象中还具有很多个位置,因此其余网格指的是与第一虚拟对象中除去目标位置以外的其他位置对应的网格,第三渲染数据指的是在数据池中与其他网格对应渲染数据。

渲染指的是根据渲染数据将虚拟场景中的第一虚拟对象转变成数字图像或者位图图像的过程。值得说明的是,本公开的示例实施例中基于目标渲染数据的渲染是对第一虚拟对象的渲染,而不是对虚拟场景中的静态虚拟对象的渲染,由于静态虚拟对象在游戏场景中的位置是固定的,所以在游戏运行前可以针对静态虚拟对象预先设置对应光照贴图,因此这里并不需要根据目标渲染数据对静态虚拟对象作出渲染。

其中,数字图像指定是一种二维图像,位图图像指的是由像素作为单个点组成的图像。

举例而言,射击类游戏的森林场景中存在游戏角色A,此时游戏角色A为第一虚拟对象,根据目标网格找到对应的目标渲染数据为红色,于是将游戏角色A渲染为红色。

在可选的实施例中,根据第二虚拟对象对多个第一网格进行划分处理,包括:对第一待分网格进行划分处理,其中,第一待划分网格为第二虚拟对象所在的第一网格。

其中,第一网格指的是按照预设值对虚拟场景进行划分处理后得到的立方体。其中,预设值可以是立方体的个数,预设值还可以是水平方向拆分的值、竖直方向拆分的值以及左右方向拆分的值,本示例性实施例对此不做特殊限定。

第二虚拟对象指的是第一虚拟对象可以行走到的虚拟场景对象,第二虚拟对象可以是虚拟场景中的房子,可以是虚拟场景中的森林,可以是虚拟场景中的载具,可以是虚拟场景中的草丛,可以是虚拟场景中的海体,还可以是虚拟场景中的河体,还可以是虚拟场景中的具有光照的区域。

第一待分网格指的是对第二虚拟对象所在的第一网格进行再次拆分得到的网格。

举例而言,此时处于射击类游戏的森林场景中,并且在森林场景中存在游戏角色A、树木B以及房间C。此时,第一虚拟对象指的就是游戏角色A,第二虚拟对象指的是树木B以及房间C。

假设预设值为4,则将森林场景拆分成4的立方个,即64个长方体,此时这64个长方体为第一网格,确定在64个立方体中是否存在第二虚拟对象,如果在64个立方体中存在第二虚拟对象,将第二虚拟对象所在的第一网格确定为第一待划分网格。

在可选的实施例中,确定第二虚拟对象所在第一网格为第一待划分网格,并对第一待划分网格进行拆分,使得网格不再是均匀的网格,区分出了重点区域和非终点区域,根据第一虚拟对象的实时位置所在的网格来对虚拟对象进行区分渲染,可以在保证渲染效果的基础上提高渲染速度。

在可选的实施例中,图7示出了对第一待划分网格进行划分处理的流程示意图,如图7所示,该方法至少包括以下步骤:在步骤S710中,从第一待分网格中确定第一虚拟对象的寻路网格,以作为第二待划分网格。

其中,寻路网格指的是第一虚对象可行走平面内的三角形集合。

其中,可行走平面指的是场景中第一虚拟对象可以走到的平面。并且,在每个寻路网格中都有一个点可以代表寻路网格的位置,可以代表寻路网格的位置的点可以是可行走平面内三角形中心点的位置,也可以是可行走平面内三角形中某个点的位置,还可以是可行走平面内三角形中所有点的位置信息的均值,本示例性实施例对此不做特殊限定。

第二待划分网格指的是第一网格中第一虚拟对象可以到达的网格。

举例而言,在射击类游戏的森林场景中存在游戏角色A、草丛B以及海体C,并且森林场景即虚拟场景被划分为了64个第一网格,且这64个第一网格是边长为100像素的正方体,其中,在这64个第一网格中存在4个第二虚拟对象草丛B或海体C所在的网格。

草丛B或海体C所在的第一网格只有3个网格是游戏角色A即第一虚拟对象可以行走到的网格,此时这3个第一网格为寻路网格,也为第二待划分网格。

在步骤S720中,对第二待划分网格进行划分处理,其中,第二待划分网格为从第一待划分网格中确定的第一虚拟对象的寻路网格。

当第一待划分网格为寻路网格,且为第二虚拟对象所在的网格时,对第一待划分网格进行再次拆分。

举例而言,在射击类游戏的森林场景中存在游戏角色A、草丛B以及海体C。并且,存在3个即为寻路网格也为草丛B或海体C所在的网格,对这个三个第二待分网格进行再次拆分,可以得到多个第二网格。

具体的,拆分的过程可以是按照预设值4对第二待分网格的水平方向、竖直方向、前后方向分别拆分4次,以得到多个第二网格。

在可选的实施例中,更加明确了第一待分网格中的寻路网格为第二网格,使得网格不再是均匀的网格,区分出了重点区域和非重点区域,根据第一虚拟对象的实时位置所在的网格来对虚拟对象进行区分渲染,在保证渲染效果的基础上提高渲染速度。

在可选的实施例中,图8示出了根据目标网格索引得到对应的渲染数据的流程示意图,如图8所示,目标网格与渲染数据之间通过映射关系进行索引,渲染数据存储于数据池,该方法至少包括以下步骤:在步骤S810中,确定目标网格对应的标识信息。

如果目标网格是均匀的,给定一个目标网格的第目标位置,可以直接从数据池中找到与目标位置对应的渲染数据。

然而,本公开实施例中的目标网格是非均匀的,不存在目标位置与渲染数据的对应关系,所以需要先建立目标位置与标识信息的对应关系,再利用标识信息与渲染数据的对应关系获取渲染数据。

基于此,标识信息指的是与目标位置具有对应关系的信息。标识信息可以是一个数字,还可以是一个字符串,本示例性实施例对此不做特殊限定。

举例而言,在射击类游戏中,首先获取目标网格左上角的点的位置信息,此时坐上角的点的位置信息是目标网格的目标位置,然后获取与第目标位置对应的标识信息。

除此之外,标识信息会随着第一网格的拆分情况进行相应的更新。

图9示出了标识信息状态更新前的二维空间示意图,如图9所示,标识信息910为标识信息状态更新前的标识信息。其中,标识信息912为与第一网格A对应的标识信息,标识信息914为与第一网格B对应的标识信息,标识信息916为与第一网格C对应的标识信息,标识信息918为与第一网格D对应的标识信息。

在标识信息更新状态之前是按照标识信息910、标识信息912、标识信息914以及标识信息916的形式均匀划分的。

图10示出了标识信息状态更新后的二维空间示意图,如图10所示,标识信息1010为标识信息状态更新后的标识信息。其中,标识信息1012为第一网格A对应的标识信息状态更新后的标识信息,标识信息1014为第一网格B对应的标识信息状态更新后的标识信息,标识信息1016为第一网格C对应的标识信息状态更新后的标识信息,标识信息1018为第一网格E对应的标识信息状态更新后的标识信息。

因为没有对第一网格A、B、C进行划分处理,所以对应的标识信息状态不发生变化。同理,因为对第一网格D进行了划分处理,所以标识信息1018根据第一网格D划分的情况更新标识信息。

具体的,由于将第一网格D划分成了第二网格D1、第二网格D2、第二网格D3及第二网格D4,然后再将第二网格D4划分成了更精细的第二网格G4-1、更精细的第二网格G4-2、更精细的第二网格G4-3以及更精细的第二网格G4-4,所以,标识信息1018也做出了相应的分割处理,并且由新的标识覆盖了原1018处的标识信息。

在步骤S820中,根据映射关系从数据池中确定与标识信息对应的渲染数据。

其中,映射关系指的是目标网格与渲染数据之间的对应的关系,具体的,映射关系可以是两个元素集之间元素互相对应的关系。假设x与y具有映射关系,那么x取一值,y有且只有一个值与x对应,而y取一个值,x可以有多个值与y对应。

渲染数据指的是渲染第一虚拟对象的数据,渲染数据可以是颜色数据,可以是透明度数据,还可以是纹理数据,本示例性实施例对此不做特殊限定。

举例而言,在射击类游戏中,当确定标识信息后,获取与标识信息对应的数据池,并从数据池中获取与标识信息对应的网格信息,例如可以是颜色信息。

在步骤S830中,根据与标识信息对应的渲染数据,对目标对象进行渲染。

其中,渲染指的是根据渲染数据将虚拟场景中的第一虚拟对象转变成数字图像或者位图图像的过程。

其中,数字图像指定是一种二维图像,位图图像指的是由像素作为单个点组成的图像。

举例而言,在射击类游戏中存在游戏角色A,此时游戏角色A是第一虚拟对象,当确定了第一虚拟对象的渲染数据后,将第一虚拟对象转化成三维虚拟场景的图像,以得到渲染后的第一虚拟对象。

在本公开的示例性实施例提供的方法及装置中,首先按照非均匀网格的形式对虚拟场景进行了划分处理得到第一网格,然后根据第二虚拟对象对第一网格进行再次划分处理得到第二网格,然后根据第一网格和第二网格确定与第一虚拟对象对应的目标网格,最后确定目标网格的目标渲染数据,并根据渲染数据渲染第一虚拟对象。一方面,解决了无法区分重点区域和非重点区域的问题,降低了磁盘和内存的占用率;另一方面,根据第一虚拟对象的实时位置所在的网格对虚拟对象进行区分渲染,在保证渲染效果的基础上提高了渲染速度。

此外,在本公开的示例性实施例中,还提供一种虚拟对象的显示控制装置。图11示出了虚拟对象的显示控制装置的结构示意图,如图11所示,虚拟对象的显示控制装置1100可以包括:获取模块1110、确定模块1120和渲染模块1130。其中:

获取模块1110,被配置为获取第一虚拟对象在虚拟场景中的目标位置;确定模块1120,被配置为从多个第一网格和多个第二网格中确定与目标位置对应的目标网格;其中,第一网格为对虚拟场景进行划分处理得到的网格,多个第二网格为根据第二虚拟对象对多个第一网格进行划分处理得到的网格;渲染模块1130,被配置为根据目标网格索引得到对应的目标渲染数据,并根据目标渲染数据对第一虚拟对象进行渲染。

上述虚拟对象的显示控制装置1100的具体细节已经在对应的虚拟对象的显示控制方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及虚拟对象的显示控制装置1100的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

下面参照图12来描述根据本发明的这种实施例的电子设备1200。图12显示的电子设备1200仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图12所示,电子设备1200以通用计算设备的形式表现。电子设备1200的组件可以包括但不限于:上述至少一个处理单元1210、上述至少一个存储单元1220、连接不同系统组件(包括存储单元1220和处理单元1210)的总线1230、显示单元1240。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1210执行,使得所述处理单元1210执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。

存储单元1220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)1221和/或高速缓存存储单元1222,还可以进一步包括只读存储单元(ROM)1223。

存储单元1220还可以包括具有一组(至少一个)程序模块1225的程序/使用工具1224,这样的程序模块1225包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包含网络环境的现实。

总线1230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备1200也可以与一个或多个外部设备1270(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1200交互的设备通信,和/或与使得该电子设备1200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1250进行。并且,电子设备1200还可以通过网络适配器1260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1260通过总线1230与电子设备1200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。

参考图13所示,描述了根据本发明的实施例的用于实现上述方法的程序产品1300,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

相关技术
  • 虚拟对象的显示控制方法及装置、存储介质、电子设备
  • 虚拟对象控制方法、装置、电子设备以及存储介质
技术分类

06120112493306