CN109754454B - 物体模型的渲染方法、装置、存储介质及设备 - Google Patents
物体模型的渲染方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN109754454B CN109754454B CN201910091079.6A CN201910091079A CN109754454B CN 109754454 B CN109754454 B CN 109754454B CN 201910091079 A CN201910091079 A CN 201910091079A CN 109754454 B CN109754454 B CN 109754454B
- Authority
- CN
- China
- Prior art keywords
- object model
- visible
- rendering
- state
- cell
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种物体模型的渲染方法、装置、存储介质及设备,属于计算机图形学领域。方法包括:对于待绘制的一帧画面,在互动场景中目标物体模型的可达区域内,获取目标物体模型当前所在的单元格的第一索引信息;根据第一索引信息在第一可见性矩阵中查询,确定可达区域内当前对目标物体模型可见的静态物体模型;根据第一索引信息在第二可见性矩阵中查询,确定可达区域内当前对目标物体模型可见的动态物体模型;对当前可见的静态物体模型进行渲染,以及对当前可见的动态物体模型进行渲染。本发明基于预先配置好的可见性矩阵,实现了仅仅渲染互动场景中可见的静态以动态物体模型,能够显著降低CPU和GPU的开销,提高了游戏运行时的性能,效果较佳。
Description
技术领域
本发明涉及计算机图形学领域,特别涉及一种物体模型的渲染方法、装置、存储介质及设备。
背景技术
在诸如游戏等互动场景中,遮挡剔除(Occlusion Culling)功能指代的是一个物体模型因被互动场景中的其他部分(比如,其他物体模型)遮挡,进而导致该物体模型在玩家的虚拟摄像机(camera)的视野范围内无法看见时,取消对该物体模型进行渲染。举例来说,游戏场景中的物体模型之间通常存在遮挡关系,利用物体模型之间的遮挡关系可以将当前不可见的物体模型剔除,取消对其进行渲染,仅渲染当前可见的物体模型,从而减少每帧画面的渲染量,达到降低CPU(Central Processing Unit,中央处理器)和GPU(GraphicsProcessing Unit,图形处理器)的开销,进而提高游戏运行时性能的目的。基于以上述描述可知,如何进行物体模型渲染,以实现对不可见的物体模型进行遮挡剔除,对可见的物体模型执行渲染操作,已成为时下本领域技术人员关注的一个焦点。
发明内容
本发明实施例提供了一种物体模型的渲染方法、装置、存储介质及设备,能够显著提升游戏运行时性能,且对CPU和GPU的占用率低。所述技术方案如下:
一方面,提供了一种物体模型的渲染方法,所述方法包括:
对于待绘制的一帧画面,在互动场景中目标物体模型的可达区域内,获取所述目标物体模型当前所在的单元格的第一索引信息;
根据所述第一索引信息在第一可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的静态物体模型,所述第一可见性矩阵给出了所述可达区域内各个单元格与各个静态物体模型之间的遮挡关系;
根据所述第一索引信息在第二可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的动态物体模型,所述第二可见性矩阵给出了所述可达区域内所述各个单元格之间的遮挡关系;
对当前可见的静态物体模型进行渲染,以及对当前可见的动态物体模型进行渲染。
另一方面,提供了一种物体模型的渲染方法装置,所述装置包括:
获取模块,用于对于待绘制的一帧画面,在互动场景中目标物体模型的可达区域内,获取所述目标物体模型当前所在的单元格的第一索引信息;
确定模块,用于根据所述第一索引信息在第一可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的静态物体模型,所述第一可见性矩阵给出了所述可达区域内各个单元格与各个静态物体模型之间的遮挡关系;
所述确定模块,还用于根据所述第一索引信息在第二可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的动态物体模型,所述第二可见性矩阵给出了所述可达区域内所述各个单元格之间的遮挡关系;
处理模块,用于对当前可见的静态物体模型进行渲染,以及对当前可见的动态物体模型进行渲染。
在一种可能的实现方式中,所述确定模块,还用于根据所述第一索引信息在所述第二可见性矩阵中查询,得到当前对所述目标物体模型可见的第一单元格列表;遍历所述可达区域内的每一个动态物体模型,获取所述动态物体模型的包围盒,并确定所述包围盒包括的至少一个单元格,得到第二单元格列表;当所述第一单元格列表与所述第二单元格列表之间存在交集时,确定所述动态物体模型当前对所述目标物体模型可见。
在一种可能的实现方式中,所述处理模块,还用于对于所述可达区域内的任意一个动态物体模型,获取所述动态物体模型在上一帧画面中对所述目标物体模型的可见状态;当所述动态物体模型从所述上一帧画面至当前由不可见状态转换为可见状态时,将所述动态物体模型的渲染状态设置为第一状态,所述第一状态指示参与渲染。
在一种可能的实现方式中,所述确定模块,还用于获取上一帧画面中所述目标物体模型所在的单元格的第二索引信息;当所述第一索引信息与所述第二索引信息不一致时,根据所述第一索引信息在所述第一可见性矩阵中查询,得到第一可见物体模型列表;获取所述上一帧画面中所述目标物体模型对应的第二可见物体模型列表;将所述第一可见物体模型列表与所述第二可见物体模型列表进行比对,得到第一状态转换列表,所述第一状态转换列表包含从所述上一帧画面至当前由不可见状态转换为可见状态的静态物体模型。
在一种可能的实现方式中,所述处理模块,还用于遍历所述第一状态转换列表,将所述第一状态转换列表中包含的每一个静态物体模型的渲染状态设置为第一状态,所述第一状态指示参与渲染。
在一种可能的实现方式中,所述第一可见性矩阵的大小为M*N,所述第一可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与N个静态物体模型中每一个物体模型的遮挡关系;
所述第二可见性矩阵的大小为M*M,所述第二可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与M个单元格中每一个单元格的遮挡关系;
其中,M的取值为正整数,M指代所述可达区域内所述单元格的总数量;N的取值为正整数,N指代所述可达区域内所述静态物体模型的总数量。
在一种可能的实现方式中,所述处理模块,还用于当所述可达区域内任意一个动态物体模型对所述目标物体模型不可见时,降低与所述动态物体模型匹配的动画效果的更新频率;或,当所述可达区域内任意一个动态物体模型对所述目标物体模型不可见时,取消播放与所述动态物体模型匹配的目标特效。
在一种可能的实现方式中,所述装置还包括:
接收模块,用于当所述可达区域内任意一个动态物体模型对所述目标物体模型多帧可见时,接收服务器按帧下发的所述动态物体模型的第一位置移动信息和第一状态变化信息;
所述处理模块,还用于根据所述第一位置移动信息,调整所述动态物体模型在所述可达区域内的显示位置,并根据所述第一状态变化信息调整所述动态物体模型的动作状态。
在一种可能的实现方式中,所述接收模块,还用于当所述动态物体模型由对所述目标物体模型的可见状态转换为不可见状态时,接收所述服务器下发的音效播放指示信息和第二位置移动信息;
所述处理模块,还用于根据所述音效播放指示信息,在一个音效播放位置播放所述动态物体模型的音效,并根据所述第二位置移动信息,将所述动态物体模型移动至所述目标物体模型的可视范围之外。
在一种可能的实现方式中,所述接收模块,还用于当所述动态物体模型再次由对所述目标物体模型的不可见状态转换为可见状态时,接收所述服务器下发的第三位置移动信息;
所述处理模块,还用于根据所述第三位置移动信息,将所述动态物体模型由所述可视范围之外移动至所述可达区域内的指定位置。
在一种可能的实现方式中,所述装置还包括:
第一配置模块,用于在编辑器中对所述各个静态物体模型依次进行编号,并重新生成带有相应编号信息的所述各个静态物体模型;对于所述可达区域内的每个单元格,对所述单元格进行模型绘制处理,并将得到的绘制结果存储至渲染纹理;对所述渲染纹理进行解析,将所述绘制结果转换成所述单元格与所述各个静态物体模型之间的遮挡关系并保存至显存;在遍历完毕所述可达区域内的全部单元格后,得到保存在所述显存中的所述第一可见性矩阵,从所述显存中读取所述第一可见性矩阵。
在一种可能的实现方式中,所述装置还包括:
第二配置模块,用于在编辑器中分别对所述可达区域内各个单元格依次进行编号,并将所述各个单元格的编号信息发送至计算着色器;对于所述可达区域内的每个单元格,在所述计算着色器中计算所述单元格的逐像素线段,确定与所述逐像素线段相交的多个单元格的编号信息,将确定的编号信息转换成所述单元格与其他单元格之间的遮挡关系并保存至显存;在遍历完毕所述可达区域内的全部单元格后,得到保存在所述显存中的所述第二可见性矩阵,从所述显存中读取所述第二可见性矩阵。
另一方面,提供了一种存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的物体模型的渲染方法。
另一方面,提供了一种电子设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的物体模型的渲染方法。
本发明实施例提供的技术方案带来的有益效果是:
基于预先配置好的第一可见性矩阵和第二可见性矩阵,本发明实施例实现了对于当前待绘制的一帧画面,仅仅渲染对互动场景中目标物体模型可见的静态物体模型和动态物体模型,从另一个角度来讲,本发明实施例除了能够基于第一可见性矩阵对互动场景中的静态物体模型进行遮挡剔除即取消渲染之外,还能够利用第二可见性矩阵中包含的单元格与单元格之间的遮挡关系,对互动场景中动态物体模型进行遮挡剔除,所以该种物体模型的渲染方式能够显著降低CPU和GPU的开销,提高了游戏运行时的性能,效果较佳。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种终端显示画面的示意图;
图2是本发明实施例提供的另一种终端显示画面的示意图;
图3是本发明实施例提供的一种物体模型的渲染方法涉及的实施环境的结构示意图;
图4是本发明实施例提供的一种物体模型的渲染方法的流程图;
图5是本发明实施例提供的一种确定可见的静态物体模型的流程图;
图6是本发明实施例提供的一种确定可见的动态物体模型的流程图;
图7是本发明实施例提供的第一可见性矩阵的配置过程示意图;
图8是本发明实施例提供的确定可见的单元格的示意图;
图9是本发明实施例提供的第二可见性矩阵的配置过程示意图;
图10是本发明实施例提供的一种物体模型的渲染装置的结构示意图;
图11是本发明实施例提供的一种电子设备1100的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
相关技术在进行物体模型渲染时,涉及到的遮挡剔除处理方式如下:一种为硬件形式的遮挡剔除,该种方案通过GPU的深度缓冲区(Depth Buffer)保存上一帧画面中物体模型的深度信息,然后在绘制下一帧画面时通过比较物体模型当前的深度信息和深度缓冲区里保存的深度信息,确定当前不可见的物体模型并取消渲染。另一种为软件形式的遮挡剔除,该种方案需要在真正渲染之前预先软件渲染一遍,得到一个软件形式的深度缓冲区,用来保存物体模型的深度信息;然后,在游戏运行时通过比较物体模型当前的深度信息和深度缓冲区中保存的深度信息,确定当前不可见的物体模型并取消渲染。
相关技术至少存在下述问题:针对上述第一种方式,需要在运行时访问硬件,而目前移动终端上还不支持该方案,适用范围受局限,且该方案还存在一帧的延时。针对上述第二种方式,需要在渲染之前预先软件渲染一遍,不但会占用较多的CPU时间,而且还会导致CPU发热情况更加严重,这会严重影响游戏运行时的性能,效果欠佳。为此,本发明实施例提供了一种新的物体模型渲染方案,详情请参见以下叙述。
在对本发明实施例进行详细地解释说明之前,先对本发明实施例涉及到的一些名词进行解释说明。
互动场景:在本发明实施例中指代游戏场景。其中,游戏种类包括但不限于角色扮演游戏、动作游戏、冒险游戏、第一人称射击游戏、策略游戏、格斗游戏、多人在线战术竞技游戏等等,本发明实施例对此不进行具体限定。示例性地,互动场景在本文中指代第一人称射击游戏场景。
物体模型:在本发明实施例中指代出现在游戏场景中的物体。其中,物体模型包括静态物体模型和动态物体模型;静态物体模型指代游戏场景中一直处于静止状态的物体,比如小山、房屋、墙壁、工厂、街道等等;动态物体模型指代游戏场景中能够移动的物体,比如玩家控制的角色对象即为动态物体模型。
PVS:英文全称为Potentially Visible Set,中文全称为潜在可视集合。
其中,PVS给出了游戏场景中各个单元格与各个静态物体模型之间的遮挡关系,以及游戏场景中各个单元格之间的遮挡关系。示例性地,可预先配置好PVS,在游戏运行时利用PVS将当前不可见的物体模型不进行渲染。
玩家:在本发明实施例中称之为用户。其中玩家也可称为游戏者,是一种游戏业界与游戏参与者之间的术语。广义上讲,玩家泛指玩游戏的用户,即参与任何形式游戏的人。特殊地,在角色扮演类游戏中,玩家通常在游戏世界中扮演其中的可控角色,通过操作这些可控角色去完成游戏或是自己所设定的目标。此外,部分玩家在角色扮演类游戏中还可以作为主角或是游戏剧情的关键。
总结来讲,玩家是游戏的体验者、使用者、评价者和消费者。根据性格和喜好的差异,不同的玩家喜爱的游戏类型也各不相同。
角色对象:出现在角色扮演类游戏中,也可称之为游戏角色或玩家角色,在本发明实施例中指代角色扮演游戏中可由玩家控制的角色。换一种表达方式,玩家通常扮演一位角色在一个写实或虚构的世界中活动。
对于一款游戏来说,其提供的角色对象众多,玩家可在多个角色对象中进行自动选择,或者通过执行任务或消耗虚拟货币来获得角色对象。
其中,不同的角色对象通常拥有不同的装扮、皮肤以及技能等,以便于玩家进行区分和选择。
渲染:3D(3Dimensions,三维)图形学的关键技术,可将将一个3D美术模型正确地显示在电子屏幕上。
遮挡剔除:指代的是一个物体模型因被游戏场景中的其他部分,比如其他物体模型遮挡,进而导致该物体模型在玩家的虚拟摄像机的视野范围内无法看见时,取消对该物体模型进行渲染。示例性地,游戏场景中的物体模型之间存在遮挡关系,利用物体模型之间的遮挡关系将不可见的物体模型剔除,不进行渲染操作。
透视外挂:在本发明实施例中指代一款游戏外挂软件,其功能是收集其他玩家的位置信息,并利用特殊技术显示一个提示物用以告诉作弊者其他玩家的位置信息。
视野:指代玩家控制的角色对象的虚拟摄像机在游戏场景中的可视范围,即能够看得见的范围。
可达区域:针对一个玩家来说,可达区域指代游戏世界中玩家控制的角色对象的可行走区域;换一种表达方式,可行走区域是游戏场景中该玩家可以经过的位置总和。
示例性地,在某第一人称射击游戏中可行走区域为一个三维区域的立方体。在一种可能的实现方式中,图1示出了一个游戏场景的可行走区域,在图1中被深色线条包围形成的深色区域即是一个游戏场景中玩家控制的角色对象的可行走区域。
需要说明的是,如果一个游戏场景是不规则的,则可定义多个可行走区域。
单元格:一个可达区域会被划分为成千上万个单元格(cell),换一种表达方式,单元格是可达区域的细分部分。如图2所示,图中各个线条包围住的盒子便是游戏场景中的一个个单元格。
其中,针对不同的可行走区域来说,单元格的大小既可相同也可不同,本发明实施例对此不进行具体限定。
在本发明实施例中,为了便于区分可达区域内的各个单元格,会为每个单元格分配一个唯一的索引(Index)。
在一种可能的实现方式中,单元格的Index的分配规则包括但不限于:
1、先按照X-Y平面进行Index分配,在X-Y平面内再按照先X平面后Y平面的顺序进行Index分配;
2、X-Y平面分配完毕Index后,Z轴从原点处再向上增加一个单元格的大小,在当前的X-Y平面再次按照步骤1的分配方式进行Index分配。
示例性地,针对z=0的X-Y平面,先在y=0的X平面上进行Index分配,然后再在y=1个单元格大小的X平面进行Index分配,以此类推,直至在z=0的X-Y平面上分配完毕;然后,再在z=1的X-Y平面上再次进行Index分配;以此类推,直至在X-Y-Z平面上分配完毕。
包围盒:游戏场景中一个物体模型占据的单元格的总体形成一个包围盒。
下面对本发明实施例提供的一种物体模型的渲染方法涉及的实施环境进行说明。
参见图3,该实施环境包括:服务器301和终端302。其中,服务器301与终端302之间既可以通过有线网络进行交互,也可通过无线网络进行交互,本发明实施例对此不进行具体限定。
在本发明实施例中,服务器301可通过终端302所安装的游戏应用向终端302提供游戏服务。其中,游戏应用既可为专用于进行游戏的应用,也可以为具有游戏服务的其他应用,比如社交应用,本发明实施例对此同样不进行具体限定。此外,游戏应用在本发明实施例中也可称之为客户端。
针对终端302来说,一个玩家对应一个终端,终端302的类型包括但不限于智能手机、平板电脑、台式电脑、笔记本电脑等。终端302上安装有可进行游戏的客户端,通过该客户端玩家可进行游戏。
本发明实施例旨在利用单元格之间的遮挡关系、以及单元格与静态物体模型之间的遮挡关系,在游戏运行时及时根据玩家控制的角色对象(在本文中又称之为目标物体模型)当前的位置,来动态地将游戏场景中静态物体模型和动态物体模型进行渲染或取消渲染,从而减少CPU和GPU的开销,提高游戏运行时的性能。
在本发明实施例中,除了能够对游戏场景里面的静态物体模型进行遮挡剔除,也能够利用单元格与单元格之间的可见性信息,实现对游戏场景中动态物体模型进行遮挡剔除;另外,本发明实施例还会和游戏逻辑紧密结合,不仅会控制对渲染层面的裁剪,还会控制诸如动画以及特效等播放层面的裁剪,使得游戏逻辑占据的CPU时间也相应减少;另外,本发明实施例还能够使得透视外挂失效,能够防止玩家作弊,实现即便玩家使用了透视外挂,也看不到游戏场景中那些明显看不到的物体模型。
下面结合以上描述,对本发明实施例提供的物体模型的渲染方法进行详细地解释说明。
图4是本发明实施例提供的一种物体模型的渲染方法的流程图。该方法的交互主体为图3所示的服务器301和终端302。参见图4,游戏客户端在终端上运行时,本发明实施例提供的方法流程包括:
401、对于待绘制的一帧画面,终端在互动场景中目标物体模型的可达区域内,获取目标物体模型当前所在的单元格的第一索引信息。
其中,终端在进行游戏界面绘制时通常是逐帧进行的,所以在进行物体模型的遮挡剔除时,也是逐帧进行的。另外,由于动态物体模型是能够移动的,在不同帧之间动态物体模型的状态也是不同的,比如在有的帧中处于静止状态,而在另外一些帧中便处于移动状态,所以以帧为粒度进行遮挡剔除更为精确。
在本发明实施例中,目标物体模型指代本端用户在互动场景中控制的角色对象。在游戏运行过程中,终端会根据目标物体模型对应的虚拟摄像机当前所在的位置,获取当前虚拟摄像机所在的单元格的索引信息,这个索引信息在本文中称之为第一索引信息。
在为可达区域内的各个单元格分配好索引信息后,还会另外分配两个数据结构,这两个数据结构便构成了PVS,在本文中这两个数据结构分别称之为第一可见性矩阵和第二可见性矩阵。
需要说明的第一点的是,第一可见性矩阵给出了可达区域内各个单元格与各个静态物体模型之间的遮挡关系;其中,第一可见性矩阵的大小为M*N,M的取值为正整数,M指代可达区域内单元格的总数量;N的取值为正整数,N指代可达区域内静态物体模型的总数量;第一可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与N个静态物体模型中每一个物体模型的遮挡关系。
需要说明的第二点的是,第二可见性矩阵给出了可达区域内各个单元格之间的遮挡关系;其中,第二可见性矩阵的大小为M*M,M的取值为正整数,M指代可达区域内单元格的总数量,第二可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与M个单元格中每一个单元格的遮挡关系。
假设一个可达区域内单元格的总数量是1000,静态物体模型的总数量是100,则第一可见性矩阵的大小为1000*100,一行元素指代一个单元格与这100个静态物体模型之间的遮挡关系。
示例性地,以下述的第一可见性矩阵为例,其中,行代表不同的单元格,列代表是否可见。在一种可能的实现方式中,0代表不可见,1代表可见。
000000000000000000000001100000
0111100101110000110110110000000
000000000000000000000000000000
0110111101110000110110110000000
0000000000000000001100011100000
0110010101100101000000000000000
000000000000000000000000000000
000000000000000000000000000000
以单元格的索引信息为1至7,静态物体模型的索引信息为1至30为例,则若第i行第j元素的取值为0,则代表当玩家的虚拟摄像机位于索引信息为i的单元格的位置时,索引信息为j的静态物体模型对其不可见;若第i行第j元素的取值为1,则代表当玩家的虚拟摄像机位于索引信息为i的单元格的位置时,索引信息为j的静态物体模型对其可见。
402、终端根据第一索引信息分别在第一可见性矩阵和第二可见性矩阵中进行查询,确定该可达区域内当前对目标物体模型可见的静态物体模型和动态物体模型。
在本发明实施例中,在获取到目标物体模型当前所在的单元格的第一索引信息,便可得到目标物体模型在当前位置处对可达区域内所有静态物体模型的可见性信息,以及对可达区域内其他单元格的可见性信息,进而得到可达区域内当前对目标物体模型不可见的静态物体模型和动态物体模型、以及当前对目标物体模型可见的静态物体模型和动态物体模型。
需要说明的是,针对静态物体模型和动态物体来说,判断是否可见的方式并不相同,下面分别对这两种情况进行详细地解释说明。
第一种、针对静态物体模型
参见图5,根据第一索引信息在第一可见性矩阵中查询,确定可达区域内当前对目标物体模型可见的静态物体模型,包括但不限于:
402a、获取上一帧画面中目标物体模型所在的单元格的第二索引信息。
其中,第二索引信息即指代上一帧画面中目标物体模型对应的虚拟摄像机所在的单元格的索引信息。
402b、判断目标物体模型当前所在的单元格的第一索引信息和第二索引信息是否一致。
以第一索引信息为CurrentIndex为例,则本步骤判断CurrentIndex和上一帧画面中虚拟摄像机所在的单元格的Index是否相同;如果相同,则不进行任何处理;如果不相同,则执行下述步骤402c。
402c、当第一索引信息与第二索引信息不一致时,根据第一索引信息在第一可见性矩阵中进行查询,得到目标物体模型当前的第一可见物体模型列表。
针对该步骤,根据CurrentIndex在第一可见性矩阵(即PVS的配置数据)里进行查询,得到当前可见的静态物体模型的列表CurrentRenderList,这个列表在本文中也称之为第一可见物体模型列表。
402d、获取上一帧画面中目标物体模型的第二可见物体模型列表;将第一可见物体模型列表与第二可见物体模型列表进行比对,得到第一状态转换列表。
本步骤将CurrentRenderList和上一帧画面的RenderList进行比对,分别得到VisibleToNonvisibleList和NonVisibleToVisibleList,其中,前一个列表指代是从可见状态转换为不可见状态的静态物体模型列表,后一个列表指代从不可见状态转换为可见状态的静态物体模型列表。
另外,前一个列表在本文中也称之为第二状态列表,即第二状态转换列表包含从上一帧画面至当前由可见状态转换为不可见状态的静态物体模型;后一个列表在本文中也称之为第一状态列表,即第一状态转换列表包含从上一帧画面至当前由不可见状态转换为可见状态的静态物体模型。
第二种、针对动态物体模型
针对动态物体模型,还需要判断动态物体模型占据哪些单元格,然后再根据这些单元格的可见性来得到该动态物体模型的可见性。详细地,参见图6,根据第一索引信息在第二可见性矩阵中查询,确定可达区域内当前对目标物体模型可见的动态物体模型,包括但不限于:
402e、根据目标物体模型当前所在的单元格的第一索引信息在第二可见性矩阵中查询,得到目标物体模型当前可见的第一单元格列表。
针对该步骤,根据CurrentIndex在第二可见性矩阵(即PVS的配置数据)里进行查询,得到当前可见的单元格列表CurrentVisibleCellList。
402f、遍历可达区域内的每一个动态物体模型,获取该动态物体模型的包围盒,并确定该包围盒包括的至少一个单元格,得到第二单元格列表。判断第一单元格列表和第二单元格列表之间是否存在交集;如果存在,则执行下述步骤402g。
换一种表达方式,该步骤遍历可达区域内全部的动态物体模型,然后根据每一个动态物体模型的包围盒,确定每一个动态物体模型占据的单元格列表MoveableCellIist,这个列表在本文中也称之为第二单元格列表。
然后,再判断MoveableCellIist与CurrentVisibleCellList是否存在交集;如果存在交集,则说明该动态物体模型当前对目标物体模型可见;否则,则说明该动态物体模型当前对目标物体模型不可见。
402g、当第一单元格列表与第二单元格列表之间存在交集时,确定动态物体模型当前对目标物体模型可见。
403、终端对当前可见的静态物体模型和动态物体模型进行渲染。
针对当前可见的静态物体模型,终端在执行渲染操作时,会遍历第一状态转换列表,将第一状态转换列表中包含的每一个静态物体模型的渲染状态设置为第一状态,其中,第一状态指示参与渲染。示例性地,以渲染状态为Enable状态,第一状态为True为例,则对当前可见的静态物体模型进行渲染,包括但不限于:遍历NonVisibleToVisibleList,将这个列表包含的静态物体模型的Enable状态设置成True,参加渲染。在另一个实施方式中,终端还会遍历VisibleToNonvisibleList,将这个列表包含的静态物体模型的Enable状态设置成False,不参加渲染。其中,False在本文中也称之为第二状态。
针对当前可见的动态物体模型,根据步骤402g得到的可见状态以及该动态物体模型在上一帧画面的可见状态进行判断,如果该动态物体模型的可见状态发生变化,则对该动态物体模型的Enable状态进行相应调整并且通知上层业务可见性的变化,以方便业务层面进行裁剪。换一种表达方式,对当前可见的动态物体模型进行渲染,包括但不限于:对于可达区域内的任意一个动态物体模型,获取该动态物体模型在上一帧画面中对目标物体模型的可见状态;当该动态物体模型从上一帧画面至当前由不可见状态转换为可见状态时,将该动态物体模型的渲染状态设置为第一状态,其中,第一状态指示参与渲染。
在另一个实施方式中,终端还会取消对当前不可见的动态物体模型进行渲染,实现方式包括但不限于:获取任意一个动态物体模型在上一帧画面中的可见状态;当该动态物体模型从上一帧画面至当前由可见状态转换为不可见状态时,将该动态物体模型的Enable状态设置成False,不参加渲染。
本发明实施例提供的方法,基于预先配置好的第一可见性矩阵和第二可见性矩阵,本发明实施例实现了对于当前待绘制的一帧画面,仅仅渲染对互动场景中目标物体模型可见的静态物体模型和动态物体模型,从另一个角度来讲,本发明实施例除了能够基于第一可见性矩阵对互动场景中的静态物体模型进行遮挡剔除即取消渲染之外,还能够利用第二可见性矩阵中包含的单元格与单元格之间的遮挡关系,对互动场景中动态物体模型进行遮挡剔除,所以该种物体模型的渲染方式能够显著降低CPU和GPU的开销,提高了游戏运行时的性能,效果较佳。
在另一个实施例中,本发明实施例除了针对渲染层面进行剪裁,还会涉及针对诸如动画以及特效等播放层面的裁剪,使得游戏逻辑占据的CPU时间也相应减少,进而进一步地降低CPU的开销。换一种表达方式,在游戏客户端运行时,本发明实施例还会根据可见性信息进行如下优化处理:
1、当可达区域内任意一个动态物体模型对目标物体模型不可见时,降低与该动态物体模型匹配的动画效果的更新频率。其中,动画效果是赋予物体模型生命力的重要环节,一个物体模型不仅可以表现在外在形象上,诸如肢体语言以及动作配合能更好的体现物体模型的气质和特点。示例性地,更新频率的降低可为从三天更新一次变为一周一次。
2、当可达区域内任意一个动态物体模型对目标物体模型不可见时,取消播放与该动态物体模型匹配的目标特效。其中,特效即是游戏场景中的特殊效果,特效一般包括声音特效和视觉特效。特效在游戏中具体所体现的细分较多,比如包括人物技能特效、场景中的瀑布、落叶、UI(User Interface,用户界面)特效等等。示例性地,目标特效指代瞬时特效,比如播放时长小于预设阈值的特效。其中,预设阈值的取值可诸如为1s,本发明实施例对此不进行具体限定。
在另一个实施例中,终端上游戏客户端的编辑器具体负责产出游戏场景中单元格与静态物体模型之间的遮挡关系,以及游戏场景中单元格与单元格之间的遮挡关系。
其中,第一可见性矩阵(即单元格与静态物体模型之间的遮挡关系)的生成方式包括但不限于:
1、在编辑器中对各个静态物体模型依次进行编号。
示例性地,假设可达区域内包括100个静态物体模型,本步骤类似对100个静态物体模型进行1至100的编号。
2、重新生成带有相应编号信息的各个静态物体模型。
继续以步骤1中的举例为例,本步骤实现将具有不同编号的静态物体模型的颜色统一,比如将编号为1的静态物体模型统一颜色,使得整个静态物体模型显示为颜色1。而可达区域内的100个静态物体模型对应在游戏场景中即是100个颜色。参见图7,图中示出的两个静态物体模型即对应两个不同的颜色,且每一个静态物体模型的颜色整体统一。
3、对于可达区域内的每个单元格,对该单元格进行模型绘制处理,并将得到的绘制结果存储至RenderTexture(渲染纹理)。
本步骤遍历行走路径,在每个单元格里面模仿玩家行为进行多个方向拍照,示例性地,可分为上下前后左右6个方向进行拍照,对该单元格进行模型绘制处理,后续对得到的绘制结果进行分析处理,进而得到该单元格与各个静态物体模型之间的遮挡关系。需要说明的是,仅可见的静态物体模型的相关信息会保存在RenderTexture。
4、在ComputeShader(计算着色器)阶段对渲染纹理进行解析,将得到的绘制结果转换成该单元格与各个静态物体模型之间的遮挡关系并保存至显存。
5、在遍历完毕可达区域内的全部单元格后,得到保存在显存中的第一可见性矩阵,即步骤4保存的遮挡关系形成第一可见性矩阵,从显存中读取保存的各个单元格与各个静态物体模型之间的遮挡关系,并保存至本地。
其中,第二可见性矩阵(即单元格与单元格之间的遮挡关系)的生成方式包括但不限于:
1、在编辑器中分别对可达区域内各个单元格依次进行编号。
2、将各个单元格的编号信息发送至ComputeShader。
3、遍历行走路径,对于可达区域内的每个单元格,在ComputeShader中通过深度纹理计算该单元格的逐像素线段。
其中,深度纹理是一种渲染纹理,纹理中的各个像素值存储的是高精度的深度值。如图8所示,本步骤针对右图中虚拟摄像机所在的单元格,从该虚拟摄像机出发且终止于遮挡物体的线段即为逐像素线段。
在逐像素线段中,一个个黑点代表所在的单元格的深度信息,指代虚拟摄像机位于当前单元格时,与呈灰色状态的多个单元格的距离。左图给出了深度信息的示例,在虚拟摄像机的锥形视野中,箭头指示的像素点为右图中示出的逐像素线段的起点,而P点所在的位置即对应逐像素线段的终点。
4、确定与该逐像素线段相交的多个单元格的编号信息,将确定的编号信息转换成该单元格与其他单元格之间的遮挡关系并保存至显存。
其中,对于虚拟摄像机所在的单元格来说,与该逐像素线段相交的多个单元格均可见,因此将其编号信息转换成该单元格与其他单元格之间的遮挡关系并保存至显存。
5、如图9所示,在遍历完毕可达区域内的全部单元格后,得到保存在显存中的第二可见性矩阵,即步骤4保存的遮挡关系形成第二可见性矩阵,从显存中读取单元格与单元格之间的遮挡关系(即第二可见性矩阵)并保存至本地。
在另一个实施例中,本发明实施例提供的物体模型的渲染方法基于服务器和终端的交互,还能避免透视外挂,使得游戏的公平性得以保证,即便玩家使用了透视外挂在游戏场景中也看不到那些明显看不到的敌人。在本发明实施例中,服务器也可基于PVS数据确定互动场景中当前不可见的物体模型。示例性地,当一个动态物体模型对一个玩家不可见时,服务器便不再向这个玩家同步该动态物体模型的位置信息和状态信息。也即,前述的有关于物体模型的遮挡剔除方案也能适用于服务器侧,使得服务器能够基于PVS数据决定是否进行位置信息和状态信息的同步,以及防止透明外挂。
在一种可能的实现方式中,本发明实施例还包括:在可达区域内任意一个动态物体模型对目标物体模型多帧可见时,接收服务器按帧下发的该动态物体模型的第一位置移动信息和第一状态变化信息;根据第一位置移动信息,实时调整该动态物体模型在可达区域内的显示位置,并根据第一状态变化信息调整动态物体模型的动作状态。
其中,服务器负责每个玩家控制的角色对象的位置同步。示例性地,如果从一个玩家A的视角一直都能够看见玩家B控制的角色对象,则服务器每帧均同步玩家B控制的角色对象的位置变化。另外,在不同帧中该角色对象的动作可能是会发生变化的,所以还会同步状态变化。
在一种可能的实现方式中,继续以上述举例为例,如果玩家B控制的角色对象对玩家A不可见了,则服务器不再同步玩家B控制的角色对象的位置变化和状态,换一种表达方式,服务器不再按帧下发的该角色对象的位置移动信息和状态变化信息。
即,本发明实施例还包括:当上述动态物体模型由对目标物体模型的可见状态转换为不可见状态时,接收服务器下发的音效播放指示信息和第二位置移动信息;根据该音效播放指示信息,在一个音效播放位置播放该动态物体模型的音效,并根据第二位置移动信息,将该动态物体模型移动至目标物体模型的可视范围之外,以防止透视外挂。
示例性地,本步骤在音效测仅同步一个音效位置用于播放真实3D音效,并在将该动态物体模型移动到一个很远的地方,使得透视外挂起不到作用。而之所以还会同步一个音效位置是因为虽然看不见该动态物体模型,但是该动态物体模型发出的声音对于目标物体模型来说还是能够听见的。
在一种可能的实现方式中,如果玩家B控制的角色对象再次由对玩家A的不可见状态转换为可见状态,则服务器会下发玩家B控制的角色对象的全量信息,以使得玩家B控制的角色对象由玩家A的视野范围之外移回到其实际所在的位置。其中,全量信息为包括诸如位置信息或状态变化信息等一切同该角色对象相关的信息。
即,本发明实施例还包括:当上述动态物体模型再次由对目标物体模型的不可见状态转换为可见状态时,接收服务器下发的第三位置移动信息;根据第三位置移动信息,将动态物体模型由可视范围之外移动至可达区域内的指定位置。其中,指定位置即为该动态物体模型当前在游戏场景中的实际位置。
综上所述,本发明实施例提供的物体模型的遮挡剔除方案能够使得游戏性能得到明显提升,游戏的帧率得到较大提高,CPU占用率降低。另外,在服务器端使用了该方案后,使得常规FPS(First-Person Shooter game,第一人称射击类游戏)游戏里面的透视外挂软件失效,为游戏的公平性提供了很大的保证。
图10是本发明实施例提供的一种物体模型的渲染装置的结构示意图。参见图10,该装置包括:
获取模块1001,用于对于待绘制的一帧画面,在互动场景中目标物体模型的可达区域内,获取所述目标物体模型当前所在的单元格的第一索引信息;
确定模块1002,用于根据所述第一索引信息在第一可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的静态物体模型,第一可见性矩阵给出了所述可达区域内各个单元格与各个静态物体模型之间的遮挡关系;
确定模块1002,还用于根据所述第一索引信息在第二可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的动态物体模型,所述第二可见性矩阵给出了所述可达区域内所述各个单元格之间的遮挡关系;
处理模块1003,用于对当前可见的静态物体模型进行渲染,以及对当前可见的动态物体模型进行渲染。
本发明实施例提供的装置,基于预先配置好的第一可见性矩阵和第二可见性矩阵,实现了对于当前待绘制的一帧画面,仅仅渲染对互动场景中目标物体模型可见的静态物体模型和动态物体模型,从另一个角度来讲,本发明实施例除了能够基于第一可见性矩阵对互动场景中的静态物体模型进行遮挡剔除即取消渲染之外,还能够利用第二可见性矩阵中包含的单元格与单元格之间的遮挡关系,对互动场景中动态物体模型进行遮挡剔除,所以该种物体模型的渲染方式能够显著降低CPU和GPU的开销,提高了游戏运行时的性能,效果较佳。
在一种可能的实现方式中,确定模块,还用于根据所述第一索引信息在所述第二可见性矩阵中查询,得到当前对所述目标物体模型可见的第一单元格列表;遍历所述可达区域内的每一个动态物体模型,获取所述动态物体模型的包围盒,并确定所述包围盒包括的至少一个单元格,得到第二单元格列表;当所述第一单元格列表与所述第二单元格列表之间存在交集时,确定所述动态物体模型当前对所述目标物体模型可见。
在一种可能的实现方式中,处理模块,还用于对于所述可达区域内的任意一个动态物体模型,获取所述动态物体模型在上一帧画面中对所述目标物体模型的可见状态;当所述动态物体模型从所述上一帧画面至当前由不可见状态转换为可见状态时,将所述动态物体模型的渲染状态设置为第一状态,所述第一状态指示参与渲染。
在一种可能的实现方式中,确定模块,还用于获取上一帧画面中所述目标物体模型所在的单元格的第二索引信息;当所述第一索引信息与所述第二索引信息不一致时,根据所述第一索引信息在所述第一可见性矩阵中查询,得到第一可见物体模型列表;获取所述上一帧画面中所述目标物体模型对应的第二可见物体模型列表;将所述第一可见物体模型列表与所述第二可见物体模型列表进行比对,得到第一状态转换列表,所述第一状态转换列表包含从所述上一帧画面至当前由不可见状态转换为可见状态的静态物体模型。
在一种可能的实现方式中,处理模块,还用于遍历所述第一状态转换列表,将所述第一状态转换列表中包含的每一个静态物体模型的渲染状态设置为第一状态,所述第一状态指示参与渲染。
在一种可能的实现方式中,所述第一可见性矩阵的大小为M*N,所述第一可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与N个静态物体模型中每一个物体模型的遮挡关系;
所述第二可见性矩阵的大小为M*M,所述第二可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与M个单元格中每一个单元格的遮挡关系;
其中,M的取值为正整数,M指代所述可达区域内所述单元格的总数量;N的取值为正整数,N指代所述可达区域内所述静态物体模型的总数量。
在一种可能的实现方式中,处理模块,还用于当所述可达区域内任意一个动态物体模型对所述目标物体模型不可见时,降低与所述动态物体模型匹配的动画效果的更新频率;或,当所述可达区域内任意一个动态物体模型对所述目标物体模型不可见时,取消播放与所述动态物体模型匹配的目标特效。
在一种可能的实现方式中,该装置还包括:
接收模块,用于当所述可达区域内任意一个动态物体模型对所述目标物体模型多帧可见时,接收服务器按帧下发的所述动态物体模型的第一位置移动信息和第一状态变化信息;
处理模块,还用于根据所述第一位置移动信息,调整所述动态物体模型在所述可达区域内的显示位置,并根据所述第一状态变化信息调整所述动态物体模型的动作状态。
在一种可能的实现方式中,接收模块,还用于当所述动态物体模型由对所述目标物体模型的可见状态转换为不可见状态时,接收所述服务器下发的音效播放指示信息和第二位置移动信息;
处理模块,还用于根据所述音效播放指示信息,在一个音效播放位置播放所述动态物体模型的音效,并根据所述第二位置移动信息,将所述动态物体模型移动至所述目标物体模型的可视范围之外。
在一种可能的实现方式中,接收模块,还用于当所述动态物体模型再次由对所述目标物体模型的不可见状态转换为可见状态时,接收所述服务器下发的第三位置移动信息;
处理模块,还用于根据所述第三位置移动信息,将所述动态物体模型由所述可视范围之外移动至所述可达区域内的指定位置。
在一种可能的实现方式中,该装置还包括:
第一配置模块,用于在编辑器中对所述各个静态物体模型依次进行编号,并重新生成带有相应编号信息的所述各个静态物体模型;对于所述可达区域内的每个单元格,对所述单元格进行模型绘制处理,并将得到的绘制结果存储至渲染纹理;对所述渲染纹理进行解析,将所述绘制结果转换成所述单元格与所述各个静态物体模型之间的遮挡关系并保存至显存;在遍历完毕所述可达区域内的全部单元格后,得到保存在所述显存中的所述第一可见性矩阵,从所述显存中读取所述第一可见性矩阵。
在一种可能的实现方式中,该装置还包括:
第二配置模块,用于在编辑器中分别对所述可达区域内各个单元格依次进行编号,并将所述各个单元格的编号信息发送至计算着色器;对于所述可达区域内的每个单元格,在所述计算着色器中计算所述单元格的逐像素线段,确定与所述逐像素线段相交的多个单元格的编号信息,将确定的编号信息转换成所述单元格与其他单元格之间的遮挡关系并保存至显存;在遍历完毕所述可达区域内的全部单元格后,得到保存在所述显存中的所述第二可见性矩阵,从所述显存中读取所述第二可见性矩阵。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的物体模型的渲染装置在进行物体模型渲染时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的物体模型的渲染装置与物体模型的渲染方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图11示出了本发明一个示例性实施例提供的电子设备1100的结构框图。该电子设备1100可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。电子设备1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,电子设备1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的物体模型的渲染方法。
在一些实施例中,电子设备1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、触摸显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置电子设备1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在电子设备1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在电子设备1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在电子设备1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位电子设备1100的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件1108可以是基于美国的GPS(Global Positioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1109用于为电子设备1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,电子设备1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
加速度传感器1111可以检测以电子设备1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1112可以检测电子设备1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对电子设备1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1113可以设置在电子设备1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在电子设备1100的侧边框时,可以检测用户对电子设备1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对U I界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置电子设备1100的正面、背面或侧面。当电子设备1100上设置有物理按键或厂商Logo时,指纹传感器1114可以与物理按键或厂商Logo集成在一起。
光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1116,也称距离传感器,通常设置在电子设备1100的前面板。接近传感器1116用于采集用户与电子设备1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与电子设备1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与电子设备1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对电子设备1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种物体模型的渲染方法,其特征在于,所述方法包括:
对于待绘制的一帧画面,在互动场景中目标物体模型的可达区域内,获取所述目标物体模型当前所在的单元格的第一索引信息;
根据所述第一索引信息在第一可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的静态物体模型,所述第一可见性矩阵给出了所述可达区域内各个单元格与各个静态物体模型之间的遮挡关系;
根据所述第一索引信息在第二可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的动态物体模型,所述第二可见性矩阵给出了所述可达区域内所述各个单元格之间的遮挡关系;
对当前可见的静态物体模型进行渲染,以及对当前可见的动态物体模型进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一索引信息在第二可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的动态物体模型,包括:
根据所述第一索引信息在所述第二可见性矩阵中查询,得到当前对所述目标物体模型可见的第一单元格列表;
遍历所述可达区域内的每一个动态物体模型,获取所述动态物体模型的包围盒,并确定所述包围盒包括的至少一个单元格,得到第二单元格列表;
当所述第一单元格列表与所述第二单元格列表之间存在交集时,确定所述动态物体模型当前对所述目标物体模型可见。
3.根据权利要求2所述的方法,其特征在于,所述对当前可见的动态物体模型进行渲染,包括:
对于所述可达区域内的任意一个动态物体模型,获取所述动态物体模型在上一帧画面中对所述目标物体模型的可见状态;
当所述动态物体模型从所述上一帧画面至当前由不可见状态转换为可见状态时,将所述动态物体模型的渲染状态设置为第一状态,所述第一状态指示参与渲染。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一索引信息在第一可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的静态物体模型,包括:
获取上一帧画面中所述目标物体模型所在的单元格的第二索引信息;
当所述第一索引信息与所述第二索引信息不一致时,根据所述第一索引信息在所述第一可见性矩阵中查询,得到第一可见物体模型列表;
获取所述上一帧画面中所述目标物体模型对应的第二可见物体模型列表;
将所述第一可见物体模型列表与所述第二可见物体模型列表进行比对,得到第一状态转换列表,所述第一状态转换列表包含从所述上一帧画面至当前由不可见状态转换为可见状态的静态物体模型。
5.根据权利要求4所述的方法,其特征在于,所述对当前可见的静态物体模型进行渲染,包括:
遍历所述第一状态转换列表,将所述第一状态转换列表中包含的每一个静态物体模型的渲染状态设置为第一状态,所述第一状态指示参与渲染。
6.根据权利要求1至5中任一权利要求所述的方法,其特征在于,
所述第一可见性矩阵的大小为M*N,所述第一可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与N个静态物体模型中每一个物体模型的遮挡关系;
所述第二可见性矩阵的大小为M*M,所述第二可见性矩阵中任意一行的元素指代:不同索引信息的单元格分别与M个单元格中每一个单元格的遮挡关系;
其中,M的取值为正整数,M指代所述可达区域内所述单元格的总数量;N的取值为正整数,N指代所述可达区域内所述静态物体模型的总数量。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述可达区域内任意一个动态物体模型对所述目标物体模型不可见时,降低与所述动态物体模型匹配的动画效果的更新频率;或,
当所述可达区域内任意一个动态物体模型对所述目标物体模型不可见时,取消播放与所述动态物体模型匹配的目标特效。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述可达区域内任意一个动态物体模型对所述目标物体模型多帧可见时,接收服务器按帧下发的所述动态物体模型的第一位置移动信息和第一状态变化信息;
根据所述第一位置移动信息,调整所述动态物体模型在所述可达区域内的显示位置,并根据所述第一状态变化信息调整所述动态物体模型的动作状态。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述动态物体模型由对所述目标物体模型的可见状态转换为不可见状态时,接收所述服务器下发的音效播放指示信息和第二位置移动信息;
根据所述音效播放指示信息,在一个音效播放位置播放所述动态物体模型的音效,并根据所述第二位置移动信息,将所述动态物体模型移动至所述目标物体模型的可视范围之外。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当所述动态物体模型再次由对所述目标物体模型的不可见状态转换为可见状态时,接收所述服务器下发的第三位置移动信息;
根据所述第三位置移动信息,将所述动态物体模型由所述可视范围之外移动至所述可达区域内的指定位置。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在编辑器中对所述各个静态物体模型依次进行编号,并重新生成带有相应编号信息的所述各个静态物体模型;
对于所述可达区域内的每个单元格,对所述单元格进行模型绘制处理,并将得到的绘制结果存储至渲染纹理;
对所述渲染纹理进行解析,将所述绘制结果转换成所述单元格与所述各个静态物体模型之间的遮挡关系并保存至显存;
在遍历完毕所述可达区域内的全部单元格后,得到保存在所述显存中的所述第一可见性矩阵,从所述显存中读取所述第一可见性矩阵。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在编辑器中分别对所述可达区域内各个单元格依次进行编号,并将所述各个单元格的编号信息发送至计算着色器;
对于所述可达区域内的每个单元格,在所述计算着色器中计算所述单元格的逐像素线段,确定与所述逐像素线段相交的多个单元格的编号信息,将确定的编号信息转换成所述单元格与其他单元格之间的遮挡关系并保存至显存;
在遍历完毕所述可达区域内的全部单元格后,得到保存在所述显存中的所述第二可见性矩阵,从所述显存中读取所述第二可见性矩阵。
13.一种物体模型的渲染装置,其特征在于,所述装置包括:
获取模块,用于对于待绘制的一帧画面,在互动场景中目标物体模型的可达区域内,获取所述目标物体模型当前所在的单元格的第一索引信息;
确定模块,用于根据所述第一索引信息在第一可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的静态物体模型,所述第一可见性矩阵给出了所述可达区域内各个单元格与各个静态物体模型之间的遮挡关系;
所述确定模块,还用于根据所述第一索引信息在第二可见性矩阵中查询,确定所述可达区域内当前对所述目标物体模型可见的动态物体模型,所述第二可见性矩阵给出了所述可达区域内所述各个单元格之间的遮挡关系;
处理模块,用于对当前可见的静态物体模型进行渲染,以及对当前可见的动态物体模型进行渲染。
14.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至12中任一个权利要求所述的物体模型的渲染方法。
15.一种电子设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至12中任一个权利要求所述的物体模型的渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910091079.6A CN109754454B (zh) | 2019-01-30 | 2019-01-30 | 物体模型的渲染方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910091079.6A CN109754454B (zh) | 2019-01-30 | 2019-01-30 | 物体模型的渲染方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109754454A CN109754454A (zh) | 2019-05-14 |
CN109754454B true CN109754454B (zh) | 2022-11-04 |
Family
ID=66407159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910091079.6A Active CN109754454B (zh) | 2019-01-30 | 2019-01-30 | 物体模型的渲染方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109754454B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334027B (zh) * | 2019-07-04 | 2024-04-12 | 深圳市腾讯网域计算机网络有限公司 | 游戏画面测试方法和装置 |
CN110838166B (zh) * | 2019-10-21 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 特效数据检测方法、装置、设备及存储介质 |
CN111028338B (zh) * | 2019-12-06 | 2023-08-08 | 珠海金山数字网络科技有限公司 | 一种基于Unity3D的图像绘制方法及装置 |
CN111726479B (zh) * | 2020-06-01 | 2023-05-23 | 北京像素软件科技股份有限公司 | 图像渲染的方法及装置、终端、可读存储介质 |
CN111784612A (zh) * | 2020-07-08 | 2020-10-16 | 网易(杭州)网络有限公司 | 游戏中剔除场景物体模型的方法及装置 |
CN112044062B (zh) * | 2020-08-27 | 2022-11-08 | 腾讯科技(深圳)有限公司 | 游戏画面渲染方法、装置、终端和存储介质 |
CN112619136B (zh) * | 2020-12-29 | 2023-08-15 | 珠海金山数字网络科技有限公司 | 一种游戏角色控制系统、方法及装置 |
CN113209614A (zh) * | 2021-05-21 | 2021-08-06 | 珠海金山网络游戏科技有限公司 | 一种虚拟角色控制方法及装置 |
CN113379814B (zh) * | 2021-06-09 | 2024-04-09 | 北京超图软件股份有限公司 | 一种三维空间关系判定方法及装置 |
CN115423919B (zh) * | 2022-09-14 | 2023-08-25 | 阿波罗智联(北京)科技有限公司 | 图像的渲染方法、装置、设备以及存储介质 |
CN115445188B (zh) * | 2022-09-29 | 2023-09-29 | 深圳市手心游戏科技有限公司 | 一种网格地图元素的优化方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102488A (zh) * | 2014-07-18 | 2014-10-15 | 无锡梵天信息技术股份有限公司 | 一种基于多线程并行化的3d引擎系统 |
CN105336003A (zh) * | 2015-09-28 | 2016-02-17 | 中国人民解放军空军航空大学 | 结合gpu技术实时流畅绘制出三维地形模型的方法 |
CN107103639A (zh) * | 2010-06-30 | 2017-08-29 | 巴里·林恩·詹金斯 | 确定网格多边形或网格多边形的分段的集合的方法和系统 |
CN108257103A (zh) * | 2018-01-25 | 2018-07-06 | 网易(杭州)网络有限公司 | 游戏场景的遮挡剔除方法、装置、处理器及终端 |
CN108421257A (zh) * | 2018-03-29 | 2018-08-21 | 网易(杭州)网络有限公司 | 不可见元素的确定方法、装置、存储介质和电子装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
-
2019
- 2019-01-30 CN CN201910091079.6A patent/CN109754454B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103639A (zh) * | 2010-06-30 | 2017-08-29 | 巴里·林恩·詹金斯 | 确定网格多边形或网格多边形的分段的集合的方法和系统 |
CN104102488A (zh) * | 2014-07-18 | 2014-10-15 | 无锡梵天信息技术股份有限公司 | 一种基于多线程并行化的3d引擎系统 |
CN105336003A (zh) * | 2015-09-28 | 2016-02-17 | 中国人民解放军空军航空大学 | 结合gpu技术实时流畅绘制出三维地形模型的方法 |
CN108257103A (zh) * | 2018-01-25 | 2018-07-06 | 网易(杭州)网络有限公司 | 游戏场景的遮挡剔除方法、装置、处理器及终端 |
CN108421257A (zh) * | 2018-03-29 | 2018-08-21 | 网易(杭州)网络有限公司 | 不可见元素的确定方法、装置、存储介质和电子装置 |
Non-Patent Citations (2)
Title |
---|
Visibility Culling Algorithm with Hierarchical Adaptive Bounding Setting;郑福仁等;《北京理工大学学报(英文版)》;20060330(第01期);76-79 * |
移动终端上三维场景可视化的关键技术研究;闫烁;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160815;I138-817 * |
Also Published As
Publication number | Publication date |
---|---|
CN109754454A (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109754454B (zh) | 物体模型的渲染方法、装置、存储介质及设备 | |
US11393154B2 (en) | Hair rendering method, device, electronic apparatus, and storage medium | |
CN111013142B (zh) | 互动效果显示方法、装置、计算机设备及存储介质 | |
CN112933599B (zh) | 三维模型渲染方法、装置、设备及存储介质 | |
CN110427110B (zh) | 一种直播方法、装置以及直播服务器 | |
CN111701238A (zh) | 虚拟画卷的显示方法、装置、设备及存储介质 | |
CN107982918B (zh) | 游戏对局结果的展示方法、装置及终端 | |
CN109615686B (zh) | 潜在可视集合的确定方法、装置、设备及存储介质 | |
CN112156464B (zh) | 虚拟对象的二维形象展示方法、装置、设备及存储介质 | |
CN112245926B (zh) | 虚拟地形的渲染方法、装置、设备及介质 | |
CN110136236B (zh) | 三维角色的个性化脸部显示方法、装置、设备及存储介质 | |
CN112328091B (zh) | 弹幕显示方法、装置、终端及存储介质 | |
CN112007362B (zh) | 虚拟世界中的显示控制方法、装置、存储介质及设备 | |
CN111068323B (zh) | 智能速度检测方法、装置、计算机设备及存储介质 | |
CN110517346B (zh) | 虚拟环境界面的展示方法、装置、计算机设备及存储介质 | |
CN112023403B (zh) | 基于图文信息的对战过程展示方法及装置 | |
CN112306332B (zh) | 确定选中目标的方法、装置、设备及存储介质 | |
CN112367533B (zh) | 交互业务的处理方法、装置、设备及计算机可读存储介质 | |
US20240042319A1 (en) | Action effect display method and apparatus, device, medium, and program product | |
CN112717381B (zh) | 虚拟场景展示方法、装置、计算机设备及存储介质 | |
CN112973116B (zh) | 虚拟场景画面展示方法、装置、计算机设备及存储介质 | |
CN110097619B (zh) | 应用程序中的动画效果实现方法、装置及设备 | |
CN113144595A (zh) | 虚拟道路的生成方法、装置、终端及存储介质 | |
CN113209610A (zh) | 虚拟场景画面展示方法、装置、计算机设备及存储介质 | |
CN113058266B (zh) | 虚拟环境中场景字体的显示方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |