虚拟对象的破碎动画渲染方法和装置与流程

文档序号:30069853发布日期:2022-05-18 01:48阅读:132来源:国知局
虚拟对象的破碎动画渲染方法和装置与流程

1.本发明涉及计算机领域,具体而言,涉及一种虚拟对象的破碎动画渲染方法和装置。


背景技术:

2.相关领域中,虚拟对象的破碎在虚拟游戏场景中较为常见。虚拟对象的破碎动画使得虚拟游戏场景更加贴合实际。虚拟对象可以是虚拟游戏场景中的建筑物,物体、树木等。以射击类游戏为例,在虚拟游戏场景中,玩家操控的虚拟角色向敌方建筑物执行攻击操作,遭到攻击后敌方建筑物在虚拟游戏场景中呈现破碎的动画效果。
3.目前通常采用geometry collection预切割算法对游戏对象进行切割,然而该算法无法控制切割后生成的碎片大小和碎片数量。并且通过该算法生成的碎片数据分别记录在不同的存储空间中,在渲染碎片时需要在多个不同存储空间中分别调用相应的碎片数据,这样多次调用影响终端性能,对于较为低端的移动游戏平台,难以支持碎片的渲染。此外,目标在对每个碎片进行渲染时需要后台工作人员反复调试确定每个碎片的破碎位置,以使破碎效果更贴合实际,效率较低。
4.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种虚拟对象的破碎动画渲染方法和装置,以至少解决虚拟对象的破碎动画渲染效率较低的技术问题。
6.根据本发明实施例的一个方面,提供了一种虚拟对象的破碎动画渲染方法,包括:显示目标虚拟对象,其中,所述目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集用于在所述目标虚拟对象破碎后形成对应的虚拟对象碎片,所述每个网格子集包括一组相邻接的网格;响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,得到在所述目标虚拟对象破碎后所述每个网格子集所在的破碎位置;根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染,其中,在所述破碎动画中,所述每个网格子集所形成的虚拟对象碎片从各自的当前位置移动到所述每个网格子集所在的破碎位置。
7.可选地,所述方法还包括:按照获取的分割指令,沿着表面网格集合中的部分网格,将所述目标虚拟对象分割成多个部分,其中,每个部分在所述目标虚拟对象破碎后成为虚拟对象碎片,所述表面网格集合用于形成所述目标虚拟对象的表面;在所述每个部分相对于所述目标虚拟对象的表面增加的每个面上设置新增面网格集合,其中,每个新增面网格集合用于形成增加的面,所述目标网格集合包括所述表面网格集合和所述每个面上设置的所述新增面网格集合,所述多个部分中的不同部分上的两个网格之间的关系为不相邻关系,在所述多个部分中的同一个部分上的两个网格之间具有至少两个相同的顶点时,所述同一个部分上的两个网格之间的关系为相邻关系;根据所述目标网格集合中的网格之间的
所述相邻关系,将所述目标网格集合分成所述多个网格子集。
8.可选地,所述根据所述目标网格集合中的网格之间的所述相邻关系,将所述目标网格集合分成所述多个网格子集,包括:对所述目标网格集合中的网格执行以下操作,直到遍历所述目标网格集合中的每个网格:在所述目标网格集合中选择当前网格,其中,所述当前网格尚未被确定成所述多个网格子集中的网格;在所述目标网格集合中确定与所述当前网格具有所述相邻关系的网格,得到当前相邻网格子集,其中,所述当前网格与所述当前相邻网格子集中的网格之间具有至少两个相同的顶点;在所述目标网格集合中确定与所述当前网格具有邻接关系的网格,得到当前邻接网格子集,其中,所述当前网格与所述当前邻接网格子集中的网格之间通过至少一个网格连接;将当前网格子集确定为包括所述当前网格、所述当前相邻网格子集和所述当前邻接网格子集,其中,所述当前网格与所述当前相邻网格子集中的网格和所述当前邻接网格子集中的网格为所述当前网格子集中一组相邻接的网格,所述多个网格子集中包括所述当前网格子集。
9.可选地,响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,包括:响应于针对所述目标虚拟对象的破碎指令,通过目标调用指令在同一块存储空间中读取所述多个网格子集中的所述每个网格子集的标识,其中,所述多个网格子集中的所述每个网格子集的标识被存储在所述同一块存储空间中;根据所述每个网格子集的标识,对所述每个网格子集进行位置变换。
10.可选地,所述根据所述每个网格子集的标识,对所述每个网格子集进行位置变换,包括:对于所述每个网格子集的标识执行以下步骤,其中,在执行以下步骤时,所述每个网格子集的标识为当前网格子集的标识:根据所述当前网格子集的标识,查找所述当前网格子集中包括的每个网格的标识,并根据所述当前网格子集中包括的每个网格的标识,获取所述当前网格子集中包括的每个网格的初始位置;根据所述当前网格子集的标识以及所述当前网格子集中包括的每个网格的初始位置,对所述当前网格子集中的每个网格进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置。
11.可选地,所述根据所述当前网格子集的标识以及所述当前网格子集中包括的每个网格的初始位置,对所述当前网格子集中的每个网格进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置,包括:获取预先设置的与所述当前网格子集的标识对应的转换方式,其中,所述转换方式包括:平移和/或旋转;按照所述当前网格子集的标识对应的所述转换方式,对所述当前网格子集中的每个网格的所述初始位置进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置。
12.可选地,所述按照所述当前网格子集的标识对应的所述转换方式,对所述当前网格子集中的每个网格的所述初始位置进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置,包括:根据所述当前网格子集的标识对应的所述转换方式,确定所述当前网格子集的移动轨迹;对所述当前网格子集中的每个网格执行以下操作,在执行以下操作时,所述当前网格子集中的所述每个网格称为当前网格:根据所述当前网格在所述当前网格子集中的位置以及所述当前网格子集的移动轨迹,确定所述当前网格的移动轨迹;将所述当前网格从所述当前网格的初始位置按照所述当前网格的移动轨迹移动,并将移动结束时所述当前网格所在的位置确定为所述当前网格所在的破碎位置。
13.可选地,所述根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破
碎动画进行渲染,包括:将所述多个网格子集中的每个网格子集形成的虚拟对象碎片,从所述每个网格子集的初始位置按照所述每个网格子集的移动轨迹移动,其中,所述每个网格子集中的每个网格从所述每个网格的初始位置按照所述每个网格的移动轨迹移动到所述每个网格所在的破碎位置。
14.可选地,在所述通过目标调用指令在同一块存储空间中读取所述多个网格子集中的所述每个网格子集的标识之前,所述方法还包括:获取所述多个网格子集中的所述每个网格子集的标识,以及所述每个网格子集中包括的每个网格的标识;将具有映射关系的所述每个网格子集的标识与所述每个网格子集中包括的每个网格的标识存储在所述同一块存储空间中。
15.根据本发明实施例的另一方面,还提供了一种虚拟对象的破碎动画渲染装置,包括:显示模块,用于显示目标虚拟对象,其中,所述目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集用于在所述目标虚拟对象破碎后形成对应的虚拟对象碎片,所述每个网格子集包括一组相邻接的网格;变换模块,用于响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,得到在所述目标虚拟对象破碎后所述每个网格子集所在的破碎位置;渲染模块,用于根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染,其中,在所述破碎动画中,所述每个网格子集所形成的虚拟对象碎片从各自的当前位置移动到所述每个网格子集所在的破碎位置。
16.根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述虚拟对象的破碎动画渲染方法。
17.根据本技术实施例的又一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上虚拟对象的破碎动画渲染方法。
18.根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的虚拟对象的破碎动画渲染方法。
19.在本发明实施例中,采用网格的方式,将目标虚拟对象划分成多个网格。目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集是破碎后的虚拟对象碎片。这样通过网格的方式将目标虚拟对象分成多个碎片,可以控制碎片的数量和大小。
20.在另一个发明实施例中,在对破碎后形成对应的虚拟对象碎片进行渲染时,基于虚拟对象碎片对应的网格子集进行位置变换,也就是网格子集中所有的网格均是根据网格子集的标识整体进行位置变换,网格子集中所有网格的位置作为一个整体可以同时进行变换,无需对每个网格的位置一一进行变换,由此可以提高网格的位置变换效率,进而可以提高虚拟对象碎片的渲染效率。以此解决了虚拟对象的破碎动画渲染效率较低的技术问题。
21.在另一个发明实施例中,多个网格子集的标识以及每个网格中包括的网格的标识记录在同一存储空间中,在对目标虚拟对象的破碎动画进行渲染时,仅需调用一次存储空间就可以完成渲染。这样在较低端的移动游戏平添上也可以支持碎片的渲染。
附图说明
22.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
23.图1是根据本发明实施例的一种可选的虚拟对象的破碎动画渲染方法的应用环境的示意图;
24.图2根据本发明实施例的一种可选的虚拟对象的破碎动画渲染方法的流程图;
25.图3据本发明实施例的一种可选的虚拟游戏场景中虚拟对象示意图;
26.图4据本发明实施例的一种可选的网格示意图;
27.图5据本发明实施例的一种可选的原网格示意图;
28.图6据本发明实施例的一种可选的网格碎片示意图;
29.图7据本发明实施例的另一种可选的网格碎片示意图;
30.图8据本发明实施例的一种可选的虚拟对象碎片示意图;
31.图9据本发明实施例的一种可选的相邻网格示意图;
32.图10本发明实施例的一种可选的流程图;
33.图11本发明实施例的一种可选的纹理坐标;
34.图12是发明实施例的另一种可选的流程图;
35.图13是发明实施例的另一种可选的流程图;
36.图14是发明实施例的另一种可选的移动轨迹示意图;
37.图15是发明实施例的一种可选的破碎动画渲染效果示意图;
38.图16是发明实施例的另一种可选的破碎动画渲染效果示意图;
39.图17是根据本发明实施例的一种可选的虚拟对象的破碎动画渲染装置的结构示意图;
40.图18是根据本发明实施例的一种可选的电子设备的结构示意图;
41.图19是根据本发明实施例的一种可选的电子设备的计算机系统结构框图。
具体实施方式
42.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
43.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
44.根据本发明实施例的一个方面,提供了一种虚拟对象的破碎动画渲染方法,可选
地,作为一种可选的实施方式,上述虚拟对象的破碎动画渲染方法可以但不限于应用于如图1所示的应用环境中。上述应用环境中包括用户设备102、网络110和服务器112。
45.可选地,上述用户设备102可以是配置有目标客户端的终端设备,可以包括但不限于以下至少之一:手机(如android手机、ios手机等)、笔记本电脑、平板电脑、掌上电脑、mid(mobile internet devices,移动互联网设备)、pad、台式电脑、智能电视等。目标客户端可以是游戏客户端端、视频客户端、即时通信客户端、浏览器客户端等。上述用户设备包括:存储器104、处理器106和显示器108,其中,存储器用于存储数据,包括但不限于目标虚拟对象对应的目标网格集合。上述处理器用于对数据进行处理,包括但不限于对每个网格子集进行位置变换,根据每个网格子集所在的破碎位置,对目标虚拟对象的破碎动画进行渲染等。上述显示器用于显示目标客户端中的画面,包括但不限于显示目标虚拟对象,以及显示破碎动画等。
46.上述网络110可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、wifi及其他实现无线通信的网络。
47.上述服务器112包括数据库114和处理引擎116,上述数据库用于存储数据,包括但不限于:目标虚拟对象对应的目标网格集合。上述处理引擎可以用于处理以下步骤:
48.步骤s11,响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,得到在所述目标虚拟对象破碎后所述每个网格子集所在的破碎位置;
49.步骤s12,根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染。
50.上述服务可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器。
51.上述仅是一种示例,本实施例中对此不作任何限定。
52.可选地,作为一种可选的实施方式,如图2所示,上述虚拟对象的破碎动画渲染方法包括:
53.步骤s202,显示目标虚拟对象,其中,所述目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集用于在所述目标虚拟对象破碎后形成对应的虚拟对象碎片,所述每个网格子集包括一组相邻接的网格;
54.其中,上述目标虚拟对象可以是虚拟游戏场景中的对象,例如可以是虚拟游戏场景中的虚拟建筑物、虚拟物体、虚拟角色、虚拟树木等。如图3所示的虚拟游戏场景中,图中所示的300、301、302、303和304均是该虚拟游戏场景的虚拟对象。
55.上述目标网格子集中包括多个网格,网格是包含顶点数组和面数组的数据结构。顶点数组是一个数据结构,可以是三维的空间向量,该三维空间向量包含顶点在三维空间上的位置[x,y,z]。面数组可以是一个包含三个索引整数的数据结构,索引用于标识面上的顶点。每个面上可以包含多条边(例如,3条、4条、5条等),具体边的数量可以根据实际情况而定,在本实施例中以3条为例,边数组是包含两个索引的数组,索引用于标识边上的顶点。如图4所示的网格示意图中,图中所示的三角形网格的面数组为face=[0,1,2],其中,0,1,2是顶点索引。该三角形网格包括边数组edge1=[0,1],该边数组用于表示边edge1包含的顶点为0,1。顶点vertex=[x,y,z],其中,[x,y,z]用于表示顶点在三维空间上的位置,例如图中包含的三个顶点0,1,2,其中,顶点1的三维空间位置可以表示为vertex1=[x1,y1,
z1],顶点2的三维空间位置可以表示为vertex2=[x2,y2,z2],顶点3的三维空间位置可以表示为vertex3=[x3,y3,z3]。
[0056]
原网格是指目标虚拟对象未破碎前外表面上的网格,如图5所示的原网格示意图中所示的原网格中的网格是包含顶点、面的结构。网格碎片是指从原网格中获取的部分网格,如图6所示的网格碎片是从图5所示的原网格中获取的部分网格。破碎算法是指从原网格中获取的较小的网格碎片的算法,如图7所示是将图5所示的原网格按照破碎算法破碎得到的网格碎片。
[0057]
以图8中所示的目标虚拟对象为例,假设目标虚拟对象破碎为图中所示的虚拟对象碎片1和虚拟对象碎片2。图8中所示的每个虚拟对象碎片的外表面包括多个网格,虚拟对象碎片1上包括的网格构成网格子集1,虚拟对象碎片2上包括的网格构成另网格子集2。目标网格集合被预先分成上述网格子集1和网格子集2。
[0058]
步骤s204,响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,得到在所述目标虚拟对象破碎后所述每个网格子集所在的破碎位置;
[0059]
其中,上述破碎指令可以在玩家使用的虚拟道具对目标虚拟对象执行攻击操作后,指示目标虚拟对象破碎的指令。例如,玩家使用炸弹对敌方的虚拟建筑物进行攻击,当炸弹命中虚拟建筑物时获取上述破碎指令。上述破碎位置可以是目标虚拟对象破碎后虚拟对象碎片的位置。
[0060]
步骤s206,根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染,其中,在所述破碎动画中,所述每个网格子集所形成的虚拟对象碎片从各自的当前位置移动到所述每个网格子集所在的破碎位置。
[0061]
通过上述不中,采用网格的方式,将目标虚拟对象划分成多个网格。目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集是破碎后的虚拟对象碎片。这样通过网格的方式将目标虚拟对象分成多个碎片,可以控制碎片的数量和大小。在对破碎后形成对应的虚拟对象碎片进行渲染时,基于虚拟对象碎片对应的网格子集进行位置变换,这样可以提高虚拟对象碎片的渲染效率。进而解决了虚拟对象的破碎动画渲染效率较低的技术问题。
[0062]
可选地,所述方法还包括:按照获取的分割指令,沿着表面网格集合中的部分网格,将所述目标虚拟对象分割成多个部分,其中,每个部分在所述目标虚拟对象破碎后成为虚拟对象碎片,所述表面网格集合用于形成所述目标虚拟对象的表面;在所述每个部分相对于所述目标虚拟对象的表面增加的每个面上设置新增面网格集合,其中,每个新增面网格集合用于形成增加的面,所述目标网格集合包括所述表面网格集合和所述每个面上设置的所述新增面网格集合,所述多个部分中的不同部分上的两个网格之间的关系为不相邻关系,在所述多个部分中的同一个部分上的两个网格之间具有至少两个相同的顶点时,所述同一个部分上的两个网格之间的关系为相邻关系;根据所述目标网格集合中的网格之间的所述相邻关系,将所述目标网格集合分成所述多个网格子集。
[0063]
作为一个可选的实施方式,以图8所示的目标虚拟对象为例,目标虚拟对象的外表面由网格构成,目标虚拟对象外表面上包括的网格构成上述表面网格集合。将上述目标虚拟对象沿网格a和网格b的公共边进行破碎,则上述部分网格为图中所示的网格a和网格b,破碎后的网格a变为a’,网格b变为b’。将上述目标虚拟对象沿网格a和网格b的公共边进行
破碎,形成两个部分(虚拟对象碎片1和虚拟对象碎片2)。
[0064]
破碎后的每个部分会增加新表面,如图8中所示的虚拟对象碎片1右侧的表面为增加的新表面,虚拟对象碎片2左侧的表面为增加的新表面。为每个增加的新表面上设置网格,得到每个增加的新表面的每个新增面网格集合。以图8中所示的虚拟对象碎片1右侧增加的新表面为例,图中所示的网格c、d、e构成虚拟对象碎片1的新增面网格集合。
[0065]
将上述目标虚拟对象沿网格a和网格b的公共边进行破碎,破碎后的网格a变为a’,网格b变为b’,网格a和网格b为相邻关系,而破碎后的网格a’和网格b’为不相邻关系。上述相邻关系是指网格之间有至少两个相同的顶点。如图8中的网格a和网格b存在两个共同的顶点,网格a和网格b存为相邻关系,或者如图9所示的两个网格中存在公共边和共同的两个顶点,图9中所示的两个网格之间为相邻关系。而拆分后的a’和b’之间不存在共同的顶点,a’和b’为不相邻关系。a’和b’也属于目标虚拟对象表面网格。
[0066]
上述目标网格集合中表面网格集合和每个面上设置的新增面网格集合。以图8所示为例,目标网格集合中目标虚拟对象外表面上的网格,还包括虚拟对象碎片1上增加的新表面(虚拟对象碎片1右侧面)上的网格(网格c、d、e),还包括虚拟对象碎片2增加的新表面(虚拟对象碎片1左侧面,图中未示出)上的网格。
[0067]
在上述实施例中,通过网格的方式表示上述目标虚拟对象,在对目标虚拟对象进行破碎时,将相邻两个网格的公共边进行拆分即可。这样可以达到能够控制碎片的大小和数量的效果。
[0068]
可选地,所述根据所述目标网格集合中的网格之间的所述相邻关系,将所述目标网格集合分成所述多个网格子集,包括:对所述目标网格集合中的网格执行以下操作,直到遍历所述目标网格集合中的每个网格:在所述目标网格集合中选择当前网格,其中,所述当前网格尚未被确定成所述多个网格子集中的网格;在所述目标网格集合中确定与所述当前网格具有所述相邻关系的网格,得到当前相邻网格子集,其中,所述当前网格与所述当前相邻网格子集中的网格之间具有至少两个相同的顶点;在所述目标网格集合中确定与所述当前网格具有邻接关系的网格,得到当前邻接网格子集,其中,所述当前网格与所述当前邻接网格子集中的网格之间通过至少一个网格连接;将当前网格子集确定为包括所述当前网格、所述当前相邻网格子集和所述当前邻接网格子集,其中,所述当前网格与所述当前相邻网格子集中的网格和所述当前邻接网格子集中的网格为所述当前网格子集中一组相邻接的网格,所述多个网格子集中包括所述当前网格子集。
[0069]
作为一个可选的实施方式,以图8为例,假设上述当前网格为网格a’,图中所示的网格f与网格a’有共同的两个顶点,则网格f与网格a’为相邻关系,同理网格g与网格a’有共同的两个顶点,则网格g与网格a’为相邻关系,以此类推,通过判断两个网格之间是否存在至少两个共同的顶点,确定网格时间是否具有相邻关系。将与当前网格具有相邻关系的网格组成当前相邻网格子集。
[0070]
作为一个可选的实施方式,通过至少一个网格连接的两个网格之间为邻接关系。以图8中所示的网格a’和网格h为例,网格a’和网格h之间通过网格g连接,也就是网格a’与网格g相邻,而网格g与网格h相邻,则网格a’与网格h为邻接关系。以此类推,将与网格a’具有邻接关系的网格构成当前邻接网格子集。
[0071]
将上述与网格a具有相邻关系的网格,以及与网格a具有邻接关系的网格统称为网
格a相邻接的网格。将上述网格a’和与网格a’具有相邻关系的网格,以及与网格a’具有邻接关系的网格确定为一个网格子集(网格子集1)。
[0072]
由于上述目标网格集合中的网格b’,并不在上述确定的一个网格集合中,也就是网格b’尚未被确定成所述多个网格子集中的网格。参照上述实施例中,在目标网格集合中确定与网格b’相邻的网格,以及与网格b’邻接的网格。将网格b’和与网格b具有相邻关系的网格,以及与网格b’具有邻接关系的网格确定为另一个网格子集(网格子集2)。以此,将图8中的目标网格集合划分为两个网格子集,这两个网格子集分别用于在目标虚拟对象破碎后形成对应的虚拟对象碎片(图中所示的虚拟对象碎片1和虚拟对象碎片2)。
[0073]
作为一个可选的实施方式,如图10所示的流程图,可以通过如下步骤对目标网格集合中的网格进行分组,得到多个网格子集:
[0074]
步骤s1001,将目标网格子集中所有网格的值设置为-1,-1是个预设值仅为了说明本实施例,并不以此限定,还可以设置为0、1、2等。
[0075]
步骤s1002,在目标网格集合中获取第i个网格,并判断第i个网格的值是否为-1,在本实施例中,i可以从0开始取值。若第i个网格的值为-1,执行步骤s1003。若第i个网格的值不为-1,执行步骤s1005。
[0076]
步骤s1003,将第i个网格记录在目标缓存中的当前网格子集。具体地,可以将第i个网格记录在哈希表,该哈希表存储在上述目标缓存。哈希表通过key-value的方式记录网格子集的标识和网格子集中包括的网格的标识的对应关系。在本实施例中,当前网格子集的标识为key,第i个网格为value。
[0077]
步骤s1004,将目标网格集合中第i个网格的值加一。对于目标网格集合中尚未被确定成多个网格子集中的网格其值为最初的-1,而对已确定多个网格子集中的网格(例如,第i个网格)。在下一轮分组时,由于其值已发生变化(加一),就无需再对其进行分组,可以提高对目标网格集合划分为多个网格子集的效率。
[0078]
步骤s1005,在目标网格集合中查找与第i个网格相邻接的网格,相邻阶包括相邻与邻接。相邻是指两个网格之间存在至少两个公共的顶点,邻接是指两个网格之间通过至少一个网格连接。
[0079]
步骤s1006,判断相邻接的网格的值是否为-1。若是执行步骤s1007,若否执行步骤s1009。
[0080]
步骤s1007,将相邻接的网格记录到目标缓存中的当前网格子集,具体地,可以将与第i个网格相邻接的网格记录在上述哈希表,在哈希表中相邻接的网格与第i个网格具有相同的key。
[0081]
步骤s1008,将目标网格集合中与第i个网格相邻接的网格的值加一。
[0082]
步骤s1009,判断是否遍历完目标网格集合,若是结束,若否执行步骤s1010。
[0083]
步骤s1010,将i值加一,继续执行步骤s1002。
[0084]
通过上述步骤,可以将目标网格集合中的网格分组到多个网格子集,每个网格子集用于渲染对应的虚拟对象碎片,以此达到提升碎片的渲染效率的效果。
[0085]
可选地,响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,包括:响应于针对所述目标虚拟对象的破碎指令,通过目标调用指令在同一块存储空间中读取所述多个网格子集中的所述每个网格子集的标识,其中,所述多个网格子集中
的所述每个网格子集的标识被存储在所述同一块存储空间中;根据所述每个网格子集的标识,对所述每个网格子集进行位置变换。
[0086]
作为一个可选的实施方式,上述目标调用指令可以是drawcall,drawcall是中央处理器(central processing unit,简称为cpu)对底层图形绘制接口的调用命令,图形处理器(graphics processing unit,简称gpu)执行渲染操作。渲染流程采用流水线实现,cpu和gpu并行工作。cpu和gpu之间通过命令缓冲区连接,cpu向其中发送渲染命令,gpu接收并执行对应的渲染命令。
[0087]
作为一个可选的实施方式,上述存储空间中可以存储有上述哈希表,哈希表中记录了多个网格子集中每个网格子集的标识,其中,每个网格子集的标识作为哈希表中的key。每个网格子集中包括的网格的标识作为哈希表中的value。哈希表通过key-value的方式记录了每个网格子集的标识,以及每个网格子集中包括的网格的标识。在本实施例中,由于多个网格子集的标识,以及每个网格子集中包括的网格的标识均记录在同一存储空间。因此,在渲染碎片动画时,只需进行绘制调用(drawcall)1次,适用于较低端移动游戏平台。
[0088]
可选地,所述根据所述每个网格子集的标识,对所述每个网格子集进行位置变换,包括:对于所述每个网格子集的标识执行以下步骤,其中,在执行以下步骤时,所述每个网格子集的标识为当前网格子集的标识:根据所述当前网格子集的标识,查找所述当前网格子集中包括的每个网格的标识,并根据所述当前网格子集中包括的每个网格的标识,获取所述当前网格子集中包括的每个网格的初始位置;根据所述当前网格子集的标识以及所述当前网格子集中包括的每个网格的初始位置,对所述当前网格子集中的每个网格进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置。
[0089]
作为一个可选的实施方式,上述网格子集的标识,以及每个网格子集中包括的网格的标识对应存储在哈希表中,网格子集的标识为key,网格的标识为value,通过网格子集的标识可以在哈希表中查找到网格的标识,根据网格的标识获取该网格的初始位置,初始位置是指目标虚拟对象未破碎前,网格的位置。网格的位置可以为网格的顶点位置。以图8为例,网格a的初始位置为网格a的三个顶点在三维空间上的位置(x,y,z)。
[0090]
作为一个可选的实施方式,网格子集的标识为groupid,将上述多个网格子集分别嵌入在纹理坐标通道上1-7上的网格组数据格式,将每个网格子集的标识存储在纹理坐标中,每个网格有三个顶点,每个网格的顶点的纹理坐标为[groupid,0]。如图11所示groupid=0的网格三个顶点的纹理坐标uv=[0,0],groupid=1的网格三个顶点的纹理坐标uv=[1,0]。
[0091]
如图12所示的是对每个网格设置纹理坐标的流程图,其中,包括以下步骤:
[0092]
步骤s1201,查找当前网格为0的顶点vertex;
[0093]
步骤s1202,设置该顶点的纹理坐标为uv=[groupid,0],groupid为当前网格所在的网格子集的标识;
[0094]
步骤s1203,判断顶点值是否小于3,若是结束,若否执行步骤s1204;
[0095]
步骤s1204,将顶点vertexde的值加一,继续执行步骤s1202。
[0096]
根据网格子集的标识对网格子集中的网格的位置进行变换。则m=transforms[groupid],其中,transforms包括但不限于:平移、旋转等变换。该网格集合中的网格的破碎位置为(x’,y’,z’)=m*(x,y,z),其中,(x,y,z)是网格的初始位置,(x’,y’,z’)为网格的
破碎位置。因为多个网格子集中每个网格子集的标识不同,经变换后得到的m不同,可以在单一drawcall内将每个网格子集从目标网格子集中分离出来,并渲染出每个网格子集对应的虚拟对象碎片。
[0097]
在上述实施例中,根据每个网格子集的标识对每个网格子集中的网格的位置进行变换,得到每个虚拟对象碎片的破碎位置,可以提高破碎动画的渲染效率。
[0098]
可选地,所述根据所述当前网格子集的标识以及所述当前网格子集中包括的每个网格的初始位置,对所述当前网格子集中的每个网格进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置,包括:获取预先设置的与所述当前网格子集的标识对应的转换方式,其中,所述转换方式包括:平移和/或旋转;按照所述当前网格子集的标识对应的所述转换方式,对所述当前网格子集中的每个网格的所述初始位置进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置。
[0099]
作为一个可选的实施方式,上述装换方式transforms包括平移、旋转,可以根据物理模拟系统计算出每个网格子集对应的transforms。
[0100]
作为一个可选的实施方式,对多个网格子集中的每个网格子集中的网格的位置进行变换,得到网格的破碎位置,以网格为三角形(包含三个顶顶点为例),如图13所示的流程图,包括如下步骤:
[0101]
步骤s1301,将多个网格子集中每个网格子集的转换方式设置到相应的阵列中,转换方式包括但不限于平移、旋转和变换,相应的阵列可以是transform[],translation[],rotation[];
[0102]
步骤s1302,设置i=1;
[0103]
步骤s1303,将目标网格集合中第i个网格作为当前网格,获取当前网格的标识;
[0104]
步骤s1304,根据当前网格的标识在哈希表中查找当前网格的标识对应的网格子集的标识;
[0105]
步骤s1305,在预先设置的转换方式中确定与该网格子集的标识对应的转换方式和相应的阵列;
[0106]
步骤s1306,使用该转换方式的阵列对该网格上的每个顶点的位置进行变换,具体地,可以设置j=1;
[0107]
步骤s1307,获取第j个顶点;
[0108]
步骤s1308,使用该转换方式对该网格的第j个顶点的位置进行变换;
[0109]
步骤s1309,判断j是否小于3(网格的顶点数),若是执行步骤s1310,若否执行步骤s1312;
[0110]
步骤s1310,判断是否遍历完目标网格集合中所有网格,若是结束,若否执行步骤s1311;
[0111]
步骤s1311,设置i=i+1,继续执行步骤s1303。
[0112]
可选地,所述按照所述当前网格子集的标识对应的所述转换方式,对所述当前网格子集中的每个网格的所述初始位置进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置,包括:根据所述当前网格子集的标识对应的所述转换方式,确定所述当前网格子集的移动轨迹;对所述当前网格子集中的每个网格执行以下操作,在执行以下操作时,所述当前网格子集中的所述每个网格称为当前网格:根据所述当前网格在所述当
前网格子集中的位置以及所述当前网格子集的移动轨迹,确定所述当前网格的移动轨迹;将所述当前网格从所述当前网格的初始位置按照所述当前网格的移动轨迹移动,并将移动结束时所述当前网格所在的位置确定为所述当前网格所在的破碎位置。
[0113]
作为一个可选的实施方式,上述移动轨迹包括但不限于目标虚拟对象破碎后,每个虚拟对象碎片在破碎过程中从当前位置移动到破碎位置的轨迹。可以是虚拟对象碎片的中心从当前位置移动到破碎位置的轨迹,也可以是虚拟对象碎片上任意点从当前位置移动到破碎位置的轨迹。
[0114]
作为一个可选的实施方式,以上述当前网格子集的移动轨迹为对应虚拟对象碎片的中心移动到对应破碎位置的轨迹为上述移动轨迹,如图14所示,图中的轨迹1是虚拟对象碎片1的中心点从目标虚拟对象上的初始位置o1移动到碎片位置o2。轨迹2是虚拟对象碎片2的中心点从目标虚拟对象上的初始位置o3移动到碎片位置o4。
[0115]
作为一个可选的实施方式,以图14中的网格a为当前网格为例,上述移动轨迹1是网格a所在的虚拟对象碎片的移动轨迹,网格a的移动轨迹参照该虚拟对象碎片的移动轨迹,如图中所示网格a上包括三个顶点,每个顶点参照轨迹1进行移动,得到相应的轨迹,该移动轨迹为网格的移动轨迹,如图中14中所示的轨迹3是网格a的移动轨迹,轨迹1和轨迹3在空间上是平行的两条轨迹,以此得到网格a的破碎位置。
[0116]
可选地,所述根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染,包括:将所述多个网格子集中的每个网格子集形成的虚拟对象碎片,从所述每个网格子集的初始位置按照所述每个网格子集的移动轨迹移动,其中,所述每个网格子集中的每个网格从所述每个网格的初始位置按照所述每个网格的移动轨迹移动到所述每个网格所在的破碎位置。
[0117]
可选地,在所述通过目标调用指令在同一块存储空间中读取所述多个网格子集中的所述每个网格子集的标识之前,所述方法还包括:获取所述多个网格子集中的所述每个网格子集的标识,以及所述每个网格子集中包括的每个网格的标识;将具有映射关系的所述每个网格子集的标识与所述每个网格子集中包括的每个网格的标识存储在所述同一块存储空间中。
[0118]
作为一个可选的实施方式,如图15和16所示的破碎动画渲染效果示意图,图中所示的虚拟游戏中的虚拟物体经过破碎后形成多个虚拟对象碎片。本技术可以的破碎动画渲染方法不需要预切割网格,所以不需要生成更多的顶点和面,对gup需求更低,在较为低端的游戏平台中也可以广泛应用。
[0119]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0120]
根据本发明实施例的另一个方面,还提供了一种用于实施上述虚拟对象的破碎动画渲染方法的虚拟对象的破碎动画渲染装置。如图17所示,该装置包括:显示模块1702,用于显示目标虚拟对象,其中,所述目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集用于在所述目标虚拟对象破碎后形成对应的虚拟对象碎片,所述每个
网格子集包括一组相邻接的网格;变换模块1704,用于响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,得到在所述目标虚拟对象破碎后所述每个网格子集所在的破碎位置;渲染模块1706,用于根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染,其中,在所述破碎动画中,所述每个网格子集所形成的虚拟对象碎片从各自的当前位置移动到所述每个网格子集所在的破碎位置。
[0121]
可选地,上述装置用于按照获取的分割指令,沿着表面网格集合中的部分网格,将所述目标虚拟对象分割成多个部分,其中,每个部分在所述目标虚拟对象破碎后成为虚拟对象碎片,所述表面网格集合用于形成所述目标虚拟对象的表面;在所述每个部分相对于所述目标虚拟对象的表面增加的每个面上设置新增面网格集合,其中,每个新增面网格集合用于形成增加的面,所述目标网格集合包括所述表面网格集合和所述每个面上设置的所述新增面网格集合,所述多个部分中的不同部分上的两个网格之间的关系为不相邻关系,在所述多个部分中的同一个部分上的两个网格之间具有至少两个相同的顶点时,所述同一个部分上的两个网格之间的关系为相邻关系;根据所述目标网格集合中的网格之间的所述相邻关系,将所述目标网格集合分成所述多个网格子集。
[0122]
可选地,上述装置用于对所述目标网格集合中的网格执行以下操作,直到遍历所述目标网格集合中的每个网格:在所述目标网格集合中选择当前网格,其中,所述当前网格尚未被确定成所述多个网格子集中的网格;在所述目标网格集合中确定与所述当前网格具有所述相邻关系的网格,得到当前相邻网格子集,其中,所述当前网格与所述当前相邻网格子集中的网格之间具有至少两个相同的顶点;在所述目标网格集合中确定与所述当前网格具有邻接关系的网格,得到当前邻接网格子集,其中,所述当前网格与所述当前邻接网格子集中的网格之间通过至少一个网格连接;将当前网格子集确定为包括所述当前网格、所述当前相邻网格子集和所述当前邻接网格子集,其中,所述当前网格与所述当前相邻网格子集中的网格和所述当前邻接网格子集中的网格为所述当前网格子集中一组相邻接的网格,所述多个网格子集中包括所述当前网格子集。
[0123]
可选地,上述装置用于响应于针对所述目标虚拟对象的破碎指令,通过目标调用指令在同一块存储空间中读取所述多个网格子集中的所述每个网格子集的标识,其中,所述多个网格子集中的所述每个网格子集的标识被存储在所述同一块存储空间中;根据所述每个网格子集的标识,对所述每个网格子集进行位置变换。
[0124]
可选地,上述装置用于对于所述每个网格子集的标识执行以下步骤,其中,在执行以下步骤时,所述每个网格子集的标识为当前网格子集的标识:根据所述当前网格子集的标识,查找所述当前网格子集中包括的每个网格的标识,并根据所述当前网格子集中包括的每个网格的标识,获取所述当前网格子集中包括的每个网格的初始位置;根据所述当前网格子集的标识以及所述当前网格子集中包括的每个网格的初始位置,对所述当前网格子集中的每个网格进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置。
[0125]
可选地,上述装置用于获取预先设置的与所述当前网格子集的标识对应的转换方式,其中,所述转换方式包括:平移和/或旋转;按照所述当前网格子集的标识对应的所述转换方式,对所述当前网格子集中的每个网格的所述初始位置进行所述位置变换,得到所述当前网格子集中的每个网格所在的破碎位置。
[0126]
可选地,上述装置用于根据所述当前网格子集的标识对应的所述转换方式,确定所述当前网格子集的移动轨迹;对所述当前网格子集中的每个网格执行以下操作,在执行以下操作时,所述当前网格子集中的所述每个网格称为当前网格:根据所述当前网格在所述当前网格子集中的位置以及所述当前网格子集的移动轨迹,确定所述当前网格的移动轨迹;将所述当前网格从所述当前网格的初始位置按照所述当前网格的移动轨迹移动,并将移动结束时所述当前网格所在的位置确定为所述当前网格所在的破碎位置。
[0127]
可选地,上述装置用于将所述多个网格子集中的每个网格子集形成的虚拟对象碎片,从所述每个网格子集的初始位置按照所述每个网格子集的移动轨迹移动,其中,所述每个网格子集中的每个网格从所述每个网格的初始位置按照所述每个网格的移动轨迹移动到所述每个网格所在的破碎位置。
[0128]
可选地,上述装置用于在所述通过目标调用指令在同一块存储空间中读取所述多个网格子集中的所述每个网格子集的标识之前,获取所述多个网格子集中的所述每个网格子集的标识,以及所述每个网格子集中包括的每个网格的标识;将具有映射关系的所述每个网格子集的标识与所述每个网格子集中包括的每个网格的标识存储在所述同一块存储空间中。
[0129]
根据本发明实施例的又一个方面,还提供了一种用于实施上述虚拟对象的破碎动画渲染方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图18所示,该电子设备包括存储器1802和处理器1804,该存储器1802中存储有计算机程序,该处理器1804被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
[0130]
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
[0131]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0132]
s1,显示目标虚拟对象,其中,所述目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集用于在所述目标虚拟对象破碎后形成对应的虚拟对象碎片,所述每个网格子集包括一组相邻接的网格;
[0133]
s2,响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,得到在所述目标虚拟对象破碎后所述每个网格子集所在的破碎位置;
[0134]
s3,根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染,其中,在所述破碎动画中,所述每个网格子集所形成的虚拟对象碎片从各自的当前位置移动到所述每个网格子集所在的破碎位置。
[0135]
可选地,本领域普通技术人员可以理解,图18所示的结构仅为示意,电子装置电子设备也可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobile internet devices,mid)、pad等终端设备。图18其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图18中所示更多或者更少的组件(如网络接口等),或者具有与图18所示不同的配置。
[0136]
其中,存储器1802可用于存储软件程序以及模块,如本发明实施例中的虚拟对象的破碎动画渲染方法和装置对应的程序指令/模块,处理器1804通过运行存储在存储器1802内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的虚拟对
象的破碎动画渲染方法。存储器1802可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1802可进一步包括相对于处理器1804远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1802具体可以但不限于用于存储物品的样本特征与目标虚拟资源账号等信息。作为一种示例,如图18所示,上述存储器1802中可以但不限于包括上述虚拟对象的破碎动画渲染装置中的显示模块1702、变换模块1704、渲染模块1706。此外,还可以包括但不限于上述虚拟对象的破碎动画渲染装置中的其他模块单元,本示例中不再赘述。
[0137]
可选地,上述的传输装置1806用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1806包括一个网络适配器(network interface controller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1806为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
[0138]
此外,上述电子设备还包括:显示器1808,用于显示上述目标虚拟对象和破碎动画;和连接总线1810,用于连接上述电子设备中的各个模块部件。
[0139]
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(p2p,peer to peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
[0140]
根据本技术的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1909从网络上被下载和安装,和/或从可拆卸介质1911被安装。在该计算机程序被中央处理器1901执行时,执行本技术实施例提供的各种功能。
[0141]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0142]
图19示意性地示出了用于实现本技术实施例的电子设备的计算机系统结构框图。
[0143]
需要说明的是,图19示出的电子设备的计算机系统1900仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0144]
如图19所示,计算机系统1900包括中央处理器1901(central processing unit,cpu),其可以根据存储在只读存储器1902(read-only memory,rom)中的程序或者从存储部分1908加载到随机访问存储器1903(random access memory,ram)中的程序而执行各种适当的动作和处理。在随机访问存储器1903中,还存储有系统操作所需的各种程序和数据。中央处理器1901、在只读存储器1902以及随机访问存储器1903通过总线1904彼此相连。输入/输出接口1905(input/output接口,即i/o接口)也连接至总线1904。
[0145]
以下部件连接至输入/输出接口1905:包括键盘、鼠标等的输入部分1906;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分1907;包括硬盘等的存储部分1908;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1909。通信部分1909经由诸如因特网的网络执行通信处
理。驱动器1910也根据需要连接至输入/输出接口1905。可拆卸介质1911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1910上,以便于从其上读出的计算机程序根据需要被安装入存储部分1908。
[0146]
特别地,根据本技术的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1909从网络上被下载和安装,和/或从可拆卸介质1911被安装。在该计算机程序被中央处理器1901执行时,执行本技术的系统中限定的各种功能。
[0147]
根据本技术的一个方面,提供了一种计算机可读存储介质,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
[0148]
可选地,在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以下步骤的计算机程序:
[0149]
s1,显示目标虚拟对象,其中,所述目标虚拟对象对应的目标网格集合被预先分成多个网格子集,每个网格子集用于在所述目标虚拟对象破碎后形成对应的虚拟对象碎片,所述每个网格子集包括一组相邻接的网格;
[0150]
s2,响应于针对所述目标虚拟对象的破碎指令,对所述每个网格子集进行位置变换,得到在所述目标虚拟对象破碎后所述每个网格子集所在的破碎位置;
[0151]
s3,根据所述每个网格子集所在的破碎位置,对所述目标虚拟对象的破碎动画进行渲染,其中,在所述破碎动画中,所述每个网格子集所形成的虚拟对象碎片从各自的当前位置移动到所述每个网格子集所在的破碎位置。
[0152]
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
[0153]
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
[0154]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0155]
在本技术所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连
接,可以是电性或其它的形式。
[0156]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0157]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0158]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1