CN117771661A - 一种场景对象的遮挡裁剪方法、装置、终端及存储介质 - Google Patents

一种场景对象的遮挡裁剪方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN117771661A
CN117771661A CN202211146025.3A CN202211146025A CN117771661A CN 117771661 A CN117771661 A CN 117771661A CN 202211146025 A CN202211146025 A CN 202211146025A CN 117771661 A CN117771661 A CN 117771661A
Authority
CN
China
Prior art keywords
scene
area
visibility
target
scene area
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.)
Pending
Application number
CN202211146025.3A
Other languages
English (en)
Inventor
邵珍燕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211146025.3A priority Critical patent/CN117771661A/zh
Publication of CN117771661A publication Critical patent/CN117771661A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本申请提供了一种场景对象的遮挡裁剪方法、装置、终端及存储介质,属于计算机技术领域。方法包括:对于虚拟空间的多个场景区域中的任一场景区域,从多个场景区域中,确定场景区域的至少一个相关区域;对场景区域和至少一个相关区域进行场景构建,得到场景区域的可见性信息;响应于对象显示指令,基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示目标场景区域中剩余的场景对象以及至少一个相关区域中剩余的场景对象。上述技术方案,能够只加载目标场景区域中各个可见性单元的可见性集,而不需加载虚拟空间中所有可见性单元的可见性集,减少了加载可见性信息时的内存占用量,提高了场景对象的加载效率。

Description

一种场景对象的遮挡裁剪方法、装置、终端及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种场景对象的遮挡裁剪方法、装置、终端及存储介质。
背景技术
随着计算机技术的发展,玩游戏已成为一种广泛的娱乐方式。然而,在对游戏的虚拟空间进行场景构建时,有些场景对象会被遮挡或者不在虚拟对象的可视范围内,可以通过遮挡裁剪将这些场景对象丢弃,来降低构建场景对象的开销。因此,如何对场景对象进行遮挡裁剪,是需要解决的问题。
目前,通常是由工作人员手动在虚拟空间中设置可见性单元的范围,然后基于可见性单元确定虚拟空间中各个可见性单元的可见性集,该可见性集用于存放对应的可见性单元中各个场景对象的可见性结果,即场景对象在该可见性单元中是否可见。然后,离线构建虚拟空间中全部可见性单元的可见性集。在游戏运行时一次性将可见性集全部加载到内存中。最后,基于相机所在的可见性单元的可见性集来进行对场景对象的遮挡裁剪。
上述技术方案存在的问题是,一次性将可见性集全部加载到内存中,导致内存占用较高。
发明内容
本申请实施例提供了一种场景对象的遮挡裁剪方法、装置、终端及存储介质,能够只加载目标对象所在的目标场景区域中各个可见性单元的可见性集,而不需要加载虚拟空间中所有可见性单元的可见性集,减少了加载可见性信息时内存占用量,提高了场景对象的加载效率。所述技术方案如下:
一方面,提供了一种场景对象的遮挡裁剪方法,所述方法包括:
对于虚拟空间的多个场景区域中的任一场景区域,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,所述场景区域中包括多个可见性单元,所述相关区域与所述场景区域之间的距离小于距离阈值;
对所述场景区域和所述至少一个相关区域进行场景构建,得到所述场景区域的可见性信息,所述可见性信息包括所述场景区域中多个可见性单元的可见性集;
响应于对象显示指令,基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示所述目标场景区域中剩余的场景对象以及所述目标场景区域的至少一个相关区域中剩余的场景对象,所述目标场景区域为目标虚拟对象所在的场景区域。
另一方面,提供了一种场景对象的遮挡裁剪装置,所述装置包括:
区域确定模块,用于对于虚拟空间的多个场景区域中的任一场景区域,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,所述场景区域中包括多个可见性单元,所述相关区域与所述场景区域之间的距离小于距离阈值;
场景构建模块,用于对所述场景区域和所述至少一个相关区域进行场景构建,得到所述场景区域的可见性信息,所述可见性信息包括所述场景区域中多个可见性单元的可见性集;
遮挡裁剪模块,用于响应于对象显示指令,基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示所述目标场景区域中剩余的场景对象以及所述目标场景区域的至少一个相关区域中剩余的场景对象,所述目标场景区域为目标虚拟对象所在的场景区域。
在一些实施例中,所述区域确定模块,包括:
获取单元,用于对于任一场景区域,获取所述场景区域的区域类别;
距离确定单元,用于基于所述区域类别,确定所述场景区域的至少一个方向上的加载距离,所述加载距离用于表示场景区域中各可见性单元的可见距离;
区域确定单元,用于以所述至少一个方向上的加载距离为距离阈值,从所述多个场景区域中,确定所述场景区域的至少一个相关区域。
在一些实施例中,所述至少一个方向包括相互垂直的第一水平方向和第二水平方向;所述区域确定单元,用于对于所述场景区域中的任一可见性单元,以所述至少一个方向上的加载距离为距离阈值,将所述可见性单元的范围向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间单元范围;从所述多个场景区域中,确定与所述中间单元范围存在交集的相关区域。
在一些实施例中,所述至少一个方向包括相互垂直的第一水平方向和第二水平方向;所述区域确定单元,用于以所述至少一个方向上的加载距离为距离阈值,将所述场景区域向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间场景区域;从所述多个场景区域中,确定与所述中间场景区域存在交集的至少一个相关区域。
在一些实施例中,所述区域确定单元,用于获取所述场景区域的中心位置;以所述至少一个方向上的加载距离为距离阈值,从所述多个场景区域中,确定与所述场景区域的中心位置之间的距离小于所述距离阈值的至少一个相关区域。
在一些实施例中,所述场景构建模块,用于对于所述场景区域和所述至少一个相关区域中的任一区域,在构建所述区域中的场景对象的过程中,为场景对象赋予区域对象标识,所述区域对象标识用于表示场景对象在对应的区域中的唯一标识;对于所述场景区域中的任一可见性单元,响应于确定所述场景区域和所述至少一个相关区域中任一场景对象相对于所述可见性单元可见,将所述场景对象的可见性标识添加到所述可见性单元的可见性集中,所述可见性标识为所述场景对象的区域对象标识与场景区域标识的和,所述场景区域标识用于表示场景对象所在的场景区域。
在一些实施例中,所述遮挡裁剪模块,用于响应于对象显示指令,基于所述目标虚拟对象的位置,确定所述目标场景区域;基于所述目标场景区域的可见性信息,对所述目标场景区域中的多个场景对象以及所述目标场景区域的至少一个相关区域中的多个场景对象进行遮挡裁剪;显示所述目标场景区域中剩余的场景对象以及所述目标场景区域的至少一个相关区域中剩余的场景对象。
在一些实施例中,所述装置还包括:
范围确定模块,用于基于导航网络确定可见性单元的生成范围,所述导航网络用于指示所述虚拟空间的可行走区域;
第一划分模块,用于基于所述生成范围的位置,将所述虚拟空间划分为所述多个场景区域。
在一些实施例中,所述装置还包括:
单元生成模块,用于基于导航网络,在所述虚拟空间中生成多个可见性单元;
第二划分模块,用于按照可见性单元所在的位置,将所述虚拟空间划分为所述多个场景区域。
另一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器用于存储至少一段计算机程序,所述至少一段计算机程序由所述处理器加载并执行以实现本申请实施例中的场景对象的遮挡裁剪方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一段计算机程序,所述至少一段计算机程序由处理器加载并执行以实现如本申请实施例中场景对象的遮挡裁剪方法。
另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行以实现本申请实施例中提供的场景对象的遮挡裁剪方法。
本申请实施例提供了一种场景对象的遮挡裁剪方法,通过将虚拟空间划分为多个场景区域,然后确定各个场景区域的相关区域,使得在对虚拟空间进行场景构建时,可以按照场景区域分别进行构建,进而在基于对象显示指令显示虚拟空间中的场景对象时,可以只加载目标对象所在的目标场景区域中各个可见性单元的可见性集,而不需要加载虚拟空间中所有可见性单元的可见性集,减少了加载可见性信息时内存占用量,提高了场景对象的加载效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例提供的一种场景对象的遮挡裁剪方法的实施环境;
图2是根据本申请实施例提供的一种场景对象的遮挡裁剪方法的流程图;
图3是根据本申请实施例提供的另一种场景对象的遮挡裁剪方法的流程图;
图4是根据本申请实施例提供的一种虚拟空间中可见性单元的示意图;
图5是根据本申请实施例提供的一种从虚拟空间的多个场景区域中确定相关区域的流程示意图;
图6是根据本申请实施例提供的一种基于场景构建得到可见性信息的流程示意图;
图7是根据本申请实施例提供的另一种基于场景构建得到可见性信息的流程示意图;
图8是根据本申请实施例提供的一种虚拟空间运行时进行遮挡裁剪的流程示意图;
图9是根据本申请实施例提供的一种场景对象的遮挡裁剪装置的框图;
图10是根据本申请实施例提供的另一种场景对象的遮挡裁剪装置的框图;
图11是根据本申请实施例提供的一种终端的结构框图;
图12是根据本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的虚拟空间都是在充分授权的情况下获取的。
以下,对本申请涉及的术语进行解释。
虚拟场景:是应用程序在终端上运行时显示(或提供)的虚拟场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟空间、2.5维虚拟空间或者三维虚拟空间中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景包括天空、陆地、海洋等,该陆地包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中进行移动。
虚拟对象:是指在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等。比如:在虚拟场景中显示的人物、动物、植物、油桶、墙壁、石块等。该虚拟对象可以是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象。虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
可选地,该虚拟对象可以是通过客户端上的操作进行控制的玩家角色,也可以是通过训练设置在虚拟场景对战中的人工智能(Artificial Intelligence,AI),还可以是设置在虚拟场景互动中的非玩家角色(Non-Player Character,NPC)。可选地,该虚拟对象可以是在虚拟场景中进行竞技的虚拟人物。可选地,该虚拟场景中参与互动的虚拟对象的数量可以是预先设置的,也可以是根据加入互动的客户端的数量动态确定的。
导航网格(NavMesh):用于指示虚拟对象在虚拟空间中的可行走区域。
预计算可见性体积(Precomputed Visibility Volume,PVSVolume):用于指定生成可见性单元的范围。
场景区域(Precomputed Visibility Set Level,PVSLevel):用于表示虚拟空间中划分出的场景区域,也可以称为PVS关卡。
可见性单元(Precomputed Visibility Cell,PVS Cell):用于基于可见性单元的位置计算场景对象的可见性。
可见性标识(VisibilityId):用于表示场景对象的一种属性,索引可见性单元的可见性集中的可见性结果。
区域对象标识(SubVisibilityId):用于表示场景对象在所在的场景区域中的一种属性。
场景区域标识(VisibilityIdOffSet):用于表示场景区域被赋予的一种属性。
本申请实施例提供的场景对象的遮挡裁剪方法,能够应用于计算机设备中。在一些实施例中,该计算机设备为终端或服务器。下面首先以计算机设备为终端为例,介绍一下本申请实施例提供的场景对象的遮挡裁剪方法的实施环境,图1是根据本申请实施例提供的一种场景对象的遮挡裁剪方法的实施环境示意图。参见图1,该实施环境包括终端101和服务器102。
终端101和服务器102能够通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一些实施例中,终端101是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等用户终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等,但并不局限于此。终端101安装和运行有支持虚拟场景的应用程序,该虚拟场景为三维虚拟空间。该应用程序可以是第一人称射击类游戏(First-Person Shooting game,FPS)、第三人称射击游戏、多人在线战术竞技游戏(Multiplayer Online Battle Arenagames,MOBA)、虚拟现实应用程序、三维地图程序或者多人生存游戏中的任意一种。示意性的,终端101是用户使用的终端,用户使用终端101操作位于虚拟场景中的虚拟对象进行活动,该活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、攻击、投掷中的至少一种。示意性的,该虚拟对象是虚拟人物,比如仿真人物角色或动漫人物角色。
在一些实施例中,服务器102是独立的物理服务器,也能够是多个物理服务器构成的服务器集群或者分布式系统,还能够是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。服务器102用于为支持虚拟场景的应用程序提供后台服务。在一些实施例中,服务器102承担主要计算工作,终端101承担次要计算工作;或者,服务器102承担次要计算工作,终端101承担主要计算工作;或者,服务器102和终端101二者之间采用分布式计算架构进行协同计算。
图2是根据本申请实施例提供的一种场景对象的遮挡裁剪方法的流程图,如图2所示,在本申请实施例中以由终端执行为例进行说明。该场景对象的遮挡裁剪方法包括以下步骤:
201、对于虚拟空间中的任一场景区域,终端从虚拟空间的多个场景区域中,确定场景区域的至少一个相关区域,场景区域中包括多个可见性单元,相关区域与场景区域之间的距离小于距离阈值。
在本申请实施例中,该虚拟空间为虚拟场景的场景空间,可以为三维虚拟空间或者二维虚拟空间。虚拟空间可以被划分为多个场景区域。对于任一场景区域,该场景区域中包括至少一个场景对象。终端中安装有支持虚拟空间的应用程序,当对虚拟空间进行场景构建时,终端可以按照场景区域来分别进行场景构建,而不是一次性对虚拟空间中的所有场景对象进行场景构建。
以虚拟空间中的任一场景区域为例,该场景区域中包括多个可见性单元,该可见性单元可以用单元格形式表示。对于任一可见性单元,可以基于该可见性单元的位置,确定虚拟空间中哪些场景对象相对于该可见性单元是可见的,即虚拟对象位于该可见性单元时,可以观察到哪些场景对象。由于距离该场景区域距离较近的其他场景区域中的场景对象相对于该场景区域中的可见性单元为可见的可能性较高,而距离该场景区域距离较远的其他场景区域中的场景对象相对于该场景区域中的可见性单元为可见的可能性较低,因此终端可以基于该场景区域与其他场景区域之间的距离,确定出与该场景区域之间的距离小于距离阈值的至少一个相关区域。
202、终端对场景区域和至少一个相关区域进行场景构建,得到场景区域的可见性信息,可见性信息包括场景区域中多个可见性单元的可见性集。
在本申请实施例中,终端在确定该对象区域的至少一个相关区域之后,可以对上述场景区域以及该场景区域的至少一个相关区域进行场景构建。终端在进行场景构建时,可以确定场景区域中各个可见性单元的可见性集,也即得到该场景区域的可见性信息。其中,该可见性集表示在场景区域以及场景区域的相关区域中,相对于该可见性单元对应的单元格可见的场景对象的集合。通过只对场景区域以及场景区域的相关区域进行场景构建,能够减少场景构建的开销,还能够减少单次加载的可见性信息的大小。
203、响应于对象显示指令,终端基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示目标场景区域中剩余的场景对象以及目标场景区域的至少一个相关区域中剩余的场景对象,目标场景区域为目标虚拟对象所在的场景区域。
在本申请实施例中,该对象显示指令用于指示基于目标虚拟对象当前所在的位置显示场景对象。终端响应于该对象显示指令,确定目标虚拟对象所在的目标场景区域,然后基于目标场景区域的可见性信息,对目标场景区域以及目标场景区域的至少一个相关区域中的多个场景对象进行遮挡裁剪。
其中,终端基于目标场景区域的可见性信息,能够得到目标场景区域中多个可见性单元的可见性集。然后基于目标虚拟对象所在的可见性单元的可见性集,能够确定该目标场景区域内的多个场景对象以及至少一个相关区域内的多个场景对象,相对于目标虚拟对象所在的可见性单元是否可见。若任一场景对象相对于目标虚拟对象所在的可见性单元不可见,那么终端就可以对该场景对象进行遮挡裁剪。因此,终端只需要显示出不被遮挡的场景对象,即相对于该可见性单元可见的场景对象。
本申请实施例提供了一种场景对象的遮挡裁剪方法,通过将虚拟空间划分为多个场景区域,然后确定各个场景区域的相关区域,使得在对虚拟空间进行场景构建时,可以按照场景区域分别进行构建,进而在基于对象显示指令显示虚拟空间中的场景对象时,可以只加载目标对象所在的目标场景区域中各个可见性单元的可见性集,而不需要加载虚拟空间中所有可见性单元的可见性集,减少了加载可见性信息时的内存占用量,提高了场景对象的加载效率。
图3是根据本申请实施例提供的另一种场景对象的遮挡裁剪方法的流程图,如图3所示,在本申请实施例中以由终端执行为例进行说明。该场景对象的遮挡裁剪方法包括以下步骤:
301、终端将虚拟空间划分为多个场景区域,场景区域中包括多个可见性单元。
在本申请实施例中,由于虚拟空间中包含大量的场景对象,如果在对虚拟空间进行场景构建时,一次性确定虚拟空间中全部可见性单元的可见性集,需要花费大量的时间,且一次性加载全部可见性单元的可见性集会占用大量的内存空间。因此,终端可以将虚拟空间划分为多个场景区域,分别对该多个场景区域进行场景构建,加载时只需要加载一个场景区域内多个可见性单元的可见性集,这样既缩短了场景构建的时间,提高了场景构建的效率,又减少了加载时占用的内存空间。
其中,终端对虚拟空间进行划分的方式主要有两种。
方式一,终端可以先划分可见性单元的生成范围,再进行场景区域的划分。相应的,终端基于导航网络确定可见性单元的生成范围,然后,终端基于生成范围的位置,将虚拟空间划分为多个场景区域。其中,该导航网络用于指示虚拟空间的可行走区域。通过先划分范围再将范围划分为区域,能够对虚拟空间进行明确的划分,提高了对虚拟空间进行场景构建的效率。
例如,终端基于NavMesh在虚拟空间中自动布置PVSVolume,任一PVSVolume包括多个PVS Cells。然后,对于任一PVSVolume,终端基于该PVSVolume的所在位置将该PVSVolume划分到对应的PVSLevel中。因此,终端对虚拟空间中所有PVSVolume划分完毕后能够得到多个PVSLevel,任一PVSLevel中包括至少一个PVSVolume。
方式二,终端可以基于可见性单元的位置划分为多个场景区域。相应的,终端基于导航网络,在虚拟空间中生成多个可见性单元,然后,终端按照可见性单元所在的位置,将虚拟空间划分为多个场景区域。通过直接基于可见性单元的位置进行区域划分,使得虚拟空间可以分为便于处理的多个场景区域,提高了对虚拟空间进行场景构建的效率。
例如,终端基于NavMesh在虚拟空间中生成多个PVS Cells。然后,对于任一PVSCell,终端基于该PVS Cell的位置将该PVS Cell划分到对应的PVSLevel中。因此,终端对虚拟空间中所有PVS Cells划分完毕后能够得到多个PVSLevel,任一PVSLevel中包括多个PVSCells。
例如,图4是根据本申请实施例提供的一种虚拟空间中可见性单元的示意图。如图4所示,终端基于NavMesh在虚拟空间的可行走的区域中生成了多个PVS Cells,参见图4中灰色线条构成的立方体。然后,基于PVS Cells的位置划分到不同的PVSLevel中,由此得到了虚拟空间中的多个PVSLevel。
302、对于上述多个场景区域中的任一场景区域,终端获取该场景区域的区域类别。
在本申请实施例中,对于上述多个场景区域中的任一场景区域,终端可以获取该场景区域的类别信息,然后基于该类别信息确定该场景区域属于哪个区域类别,该区域类别用于指示不同场景区域的差异。其中,不同区域类别对应的加载距离不同,该加载距离用于确定场景区域的相关区域。可选地,该类别信息可以与该场景区域的区域名称相关,该区域名称可由终端直接赋予,场景区域的区域名称不同,对应的区域类别不同。
例如,终端基于上述两种划分方式中的任一种划分方式,将虚拟空间划分为3个场景区域。若场景区域的区域名称中包括区域类别的全部内容,则终端可以通过区域名称确定该场景区域对应该区域类别。以区域类别为A、B、C为例。对于场景区域1,若该场景区域1的区域名称中包括A,那么该场景区域1的区域类别为A;对于场景区域2,若该场景区域2的区域名称中包括C,那么该场景区域2的区域类别为C;对于场景区域3,若该场景区域3的区域名称中包括B,那么该场景区域3的区域类别为B。本申请实施例对区域名称与区域类别的对应关系不进行限制。
303、终端确定该场景区域的至少一个方向上的加载距离,加载距离用于表示场景区域中各可见性单元的可见距离。
在本申请实施例中,终端基于上述场景区域的区域类别,能够确定该场景区域的加载距离。其中,该至少一个方向的数量大于三时,该至少一个方向可以位于同一平面,也可以位于不同平面,本申请实施例对此不进行限制。不同方向上的加载距离可以相同,也可以不同。可选地,终端可以基于场景配置表确定该场景区域的至少一个方向上的加载距离。该场景配置表中包括不同区域类别对应的加载距离。通过基于区域类别获取加载距离,即获取场景区域中各个可见性单元的可见距离,为后续步骤中确定相关区域提供了距离阈值,进而提高了确定相关区域的效率。
例如,终端基于场景配置表,以区域类别A的加载距离为5米,区域类别B的加载距离为10米,区域类别C的加载距离为15米为例。对于上述例子中的场景区域1,该场景区域1的区域类别为A,因此该场景区域1的至少一个方向上的加载距离为5米;对于上述例子中的场景区域2,该场景区域1的区域类别为C,因此该场景区域2的至少一个方向上的加载距离为10米;对于上述例子中的场景区域3,该场景区域3的区域类别为B,因此该场景区域3的至少一个方向上的加载距离为10米。本申请实施例对场景配置表中区域类别对应的加载距离不进行限制。
304、终端以至少一个方向上的加载距离为距离阈值,从上述多个场景区域中,确定场景区域的至少一个相关区域,相关区域与场景区域之间的距离小于距离阈值。
在本申请实施例中,终端将上述加载距离作为距离阈值,从虚拟空间的多个场景区域中确定与当前场景区域的距离小于距离阈值的至少一个相关区域。
其中,该至少一个方向包括相互垂直的第一水平方向和第二水平方向,该第一水平方向可以为虚拟空间中的X轴方向,第二水平方向可以为虚拟空间中的Y轴方向。终端可以通过下述三种方式来确定场景区域的相关区域。
方式一,终端将场景区域内的可见性单元进行外扩,从虚拟空间的多个场景区域中,确定与外扩后的可见性单元存在交集的相关区域。相应的,终端对于场景区域中的任一可见性单元,以至少一个方向上的加载距离为距离阈值,将可见性单元的范围向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间单元范围,然后,终端从多个场景区域中,确定与中间单元范围存在交集的相关区域。可选地,终端可以通过以场景区域中最外围的可见性单元作为起始,依次对该场景区域中的可见性单元进行外扩,在终端基于最外层的可见性单元外扩后的范围确定存在交集的相关区域之后,逐步往内基于可见性单元继续进行相关区域的确定,直至终端基于外扩后的可见性单元确定不到存在交集的相关区域。此时,终端无需再基于剩余的内层的可见性单元进行相关区域的确定,减少了执行确定相关区域的步骤次数。通过基于外扩后的可见性单元确定相关区域,增加了确定相关区域的方式,提高了确定相关区域的效率。
例如,假设场景区域A为边长为3米的正方形,加载距离为5米,可见性单元为边长为1米的正方形。对于当前场景区域A中最外层的任一可见性单元,以该可见性单元为中心,将该可见性单元的范围向第一水平方向外扩5米,向第二水平方向外扩5米,得到中间单元范围为边长为11米的正方形。假设虚拟空间中还包括场景区域1以及场景区域2,对于场景区域1,若场景区域A的中间单元范围与该场景区域1中任一可见性单元的范围存在交集,则该场景区域1为场景区域A的相关区域;对于场景区域2,若场景区域A的中间单元范围与该场景区域2中任一可见性单元的范围都不存在交集,则该场景区域2不是场景区域A的相关区域。
方式二,终端将场景区域进行外扩,从虚拟空间的多个场景区域中,确定与外扩后的场景区域存在交集的相关区域。相应的,终端以至少一个方向上的加载距离为距离阈值,将场景区域向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间场景区域,然后,终端从多个场景区域中,确定与中间场景区域存在交集的至少一个相关区域。通过基于外扩后的场景区域确定相关区域,增加了确定相关区域的方式,提高了确定相关区域的效率。
例如,假设场景区域A为边长为3米的正方形,加载距离为5米,以该场景区域为中心,将场景区域A向第一水平方向外扩5米,向第二水平方向外扩5米,得到中间场景区域为边长为13米的正方形。假设虚拟空间中还包括场景区域1以及场景区域2,对于场景区域1,若场景区域A的中间场景区域与该场景区域1的范围存在交集,则该场景区域1为场景区域A的相关区域;对于场景区域2,若场景区域A的中间场景区域与该场景区域2的范围不存在交集,则该场景区域2不是场景区域A的相关区域。
方式三,终端从虚拟空间的多个场景区域中,确定与场景区域的中心位置之间的距离小于距离阈值的相关区域。相应的,终端可以获取场景区域的中心位置,然后,终端以至少一个方向上的加载距离为距离阈值,从多个场景区域中,确定与场景区域的中心位置之间的距离小于距离阈值的至少一个相关区域。其中,该至少一个方向为任一方向。通过基于场景区域的中心位置之间的距离来确定相关区域,增加了确定相关区域的方式,提高了确定相关区域的效率。
例如,假设场景区域A的加载距离为5米,虚拟空间中还包括场景区域1以及场景区域2。对于场景区域1,场景区域A的中心位置与场景区域1的中心位置之间的距离为3米,小于加载距离,即小于距离阈值,则该场景区域1为场景区域A的相关区域;对于场景区域2,场景区域A的中心位置与场景区域2的中心位置之间的距离为6米,大于加载距离,即大于距离阈值,则该场景区域2不是场景区域A的相关区域。
为了使确定相关区域的步骤更容易理解,图5是根据本申请实施例提供的一种从虚拟空间的多个场景区域中确定相关区域的流程示意图。参见图5所示,包括以下步骤。501、终端读取场景配置表。502、终端依次判断虚拟空间中所有场景区域是否与当前场景区域相关。终端可以通过下述步骤503-511进行相关区域的确定。503、终端获取当前场景区域的区域类别,基于场景配置表确定当前场景区域的加载距离。504、终端将当前场景区域内的任一可见性单元的范围向第一水平方向以及向第二水平方向外扩加载距离。505、终端将当前场景区域向第一水平方向以及向第二水平方向外扩加载距离。506、终端获取当前场景区域的中心位置。507、基于步骤504或者步骤505,判断外扩后的可见性单元的范围或者外扩后的当前场景区域的范围是否与场景区域存在交集。508、基于步骤506,判断当前场景区域的中心位置与场景区域的中心位置之间的距离是否小于距离阈值。509、在外扩后的可见性单元的范围或者外扩后的当前场景区域的范围与场景区域存在交集,或者,当前场景区域的中心位置与场景区域的中心位置之间的距离小于距离阈值的情况下,确定该场景区域为当前场景区域的相关区域。510、在外扩后的可见性单元的范围或者外扩后的当前场景区域的范围与场景区域不存在交集的情况下,判断当前场景区域的所有可见性单元生成范围是否全部判断完毕。511、在当前场景区域的所有可见性单元生成范围都被判断完毕,或者,当前场景区域的中心位置与场景区域的中心位置之间的距离不小于距离阈值的情况下,确定该场景区域不是当前场景区域的相关区域。512、终端从虚拟空间中所有场景区域中确定当前场景区域的至少一个相关区域。
305、终端对上述场景区域和至少一个相关区域进行场景构建,得到场景区域的可见性信息,可见性信息包括场景区域中多个可见性单元的可见性集。
在本申请实施例中,终端可以对场景区域以及场景区域的至少一个相关区域进行场景构建,进而得到该场景区域的可见性信息。其中,该可见性信息用于表示场景区域中的场景对象以及相关区域中的场景对象,相对于场景区域中的各个可见性单元是否可见。通过对场景区域以及场景区域的相关区域进行场景构建,无需对整个虚拟空间进行处理,提高了场景构建的效率,减少了场景构建的开销,基于场景构建得到的可见性信息也为后续对场景区域进行遮挡裁剪提供了支持。
例如,图6是根据本申请实施例提供的一种基于场景构建得到可见性信息的流程示意图。参见图6所示,终端基于上述步骤301中的两种划分方式得到虚拟空间中的多个场景区域,然后,终端对于该多个场景区域中的任一场景区域进行局部场景构建,得到该场景区域的可见性信息。为了进一步说明,图7是根据本申请实施例提供的另一种基于场景构建得到可见性信息的流程示意图。参见图7所示,包括下述步骤。701、对于虚拟空间中的任一场景区域,终端基于上述步骤304确定该场景区域的至少一个相关区域。702、终端对该场景区域以及该场景区域的至少一个相关区域进行场景构建。703、终端基于对区域进行场景构建,能够得到该场景区域的可见性信息。
在一些实施例中,终端在对场景区域以及场景区域的相关区域进行场景构建时,对于区域中的任一场景对象,终端能够赋予该场景对象一个区域对象标识。终端还获取该场景对象所在的场景区域的场景区域标识。然后,终端基于区域对象标识与场景区域标识来确定该场景对象的可见性标识,该可见性标识用于指示该场景对象相对于可见性单元是否可见。最后,终端基于场景对象的可见性标识,进而能够获得相对于区域中可见性单元可见的场景对象的集合。相应的,终端对于场景区域和至少一个相关区域中的任一区域,在构建区域中的场景对象的过程中,为场景对象赋予区域对象标识,然后,终端对于场景区域中的任一可见性单元,响应于确定场景区域和至少一个相关区域中任一场景对象相对于可见性单元可见,将该场景对象的可见性标识添加到可见性单元的可见性集中。其中,该区域对象标识用于表示场景对象在对应的区域中的唯一标识,该可见性标识为场景对象的区域对象标识与场景区域标识的和,该场景区域标识用于表示场景对象所在的场景区域。通过基于区域对象标识以及场景区域标识来获取可见性标识,使得在多次场景构建中同一场景对象的可见性标识不会发生改变,提高了场景构建效率,进而提高了遮挡裁剪的准确率。
例如,对于任一PVSLevel,终端获取当前PVSLevel的VisibilityIdOffSet为500,假设当前PVSLevel有2个相关PVSLevel,这2个相关PVSLevel的VisibilityIdOffSet分别为300和600。若当前PVSLevel中有100个场景对象,终端为该100个场景对象赋予SubVisibilityId,即从0至99进行编号。终端可以获取SubVisibilityId为50的场景对象的VisibilityId,该场景对象的VisibilityId可由场景对象的SubVisibilityId与该场景对象所在的PVSLevel的VisibilityIdOffSet相加得到。其中,该场景对象所在的PVSLevel的VisibilityIdOffSet也包括相关PVSLevel的VisibilityIdOffSet。因此可以得到该场景对象的VisibilityId为1450。对于当前PVSLevel中的任一PVS Cell,若该场景对象相对于该PVS Cell可见,终端可以将该场景对象的VisibilityId添加到该PVS Cell的可见性集中。
306、响应于对象显示指令,终端基于目标虚拟对象的位置,确定目标场景区域。
在本申请实施例中,当目标虚拟对象进入虚拟空间时,终端响应于对象显示指令,进行虚拟空间中场景对象的加载。终端先确定目标虚拟对象所在的位置,然后基于该位置确定当前目标虚拟对象所在的目标场景区域,进而加载该目标场景区域的可见性信息,基于该可见性信息可以对目标场景区域中的场景对象以及目标场景区域的相关区域中的场景对象进行遮挡裁剪。当目标虚拟对象位置发生变化时,即从当前目标场景区域移动到另一个场景区域时,终端会对场景区域进行流式加卸载,即预加载另一个场景区域的可见性信息。通过只加载目标虚拟对象所在位置的场景区域的可见性信息,减少了加载可见性信息时的内存的占用。
307、终端基于目标场景区域的可见性信息,对目标场景区域中的多个场景对象以及目标场景区域的至少一个相关区域中的多个场景对象进行遮挡裁剪。
在本申请实施例中,终端通过上述确定的目标场景区域,加载该目标场景区域的可见性信息,然后,终端基于获取目标虚拟对象的位置对应的可见性单元的可见性集,对目标场景区域中的场景对象以及目标场景区域的相关区域中的场景对象进行遮挡裁剪,即裁剪掉相对于该可见性单元不可见的场景对象。
其中,对于目标场景区域中的任一可见性单元,若目标场景区域的多个场景对象以及目标场景区域的至少一个相关区域中的多个场景对象中的任一场景对象,相对于该可见性单元不可见,即该场景对象的可见性标识不在该可见性单元的可见性集中,那么终端就可以对该场景对象进行遮挡裁剪。通过基于可见性单元的可见性集对区域中的场景对象进行遮挡裁剪,使得区域中相对于可见性单元不可见的场景对象被丢弃,减少了CPU(Central Processing Unit,中央处理器)向GPU(Graphics Processing Unit,图形处理器)提交渲染的场景对象的数量,也即减少了提交绘制指令(draw call)的数量。
例如,图8是根据本申请实施例提供的一种虚拟空间运行时进行遮挡裁剪的流程示意图。参见图8所示,包括以下步骤。801、当目标虚拟对象在虚拟空间中发生位置变化时,终端流式加卸载虚拟空间中的多个场景区域。802、终端确定目标虚拟对象当前所在的目标场景区域。803、对于目标场景区域中的任一可见性单元,终端获取该可见性单元的可见性信息,基于可见性信息中的可见性集,裁剪掉相对于该可见性单元不可见的目标场景区域中的场景对象或者目标场景区域的相关区域中的场景对象。
308、终端显示目标场景区域中剩余的场景对象以及目标场景区域的至少一个相关区域中剩余的场景对象。
在本申请实施例中,终端基于目标场景区域的可见性信息,遮挡裁剪掉相对于目标场景区域不可见的场景对象之后,能够对目标场景区域中剩余的场景对象以及目标场景区域的至少一个相关区域中剩余的场景对象将进行加载。其中,该剩余的场景对象的可见性标识在目标场景区域的可见性单元的可见集中,即相对于目标虚拟对象所在的目标场景区域的可见性单元可见。通过只需要显示相对于目标场景区域的可见性单元可见的场景对象,减少了需要显示的场景对象的数量,也即减少了提交的绘制指令的数量,减少了对硬件资源的占用。
本申请实施例提供了一种场景对象的遮挡裁剪方法,通过将虚拟空间划分为多个场景区域,然后确定各个场景区域的相关区域,使得在对虚拟空间进行场景构建时,可以按照场景区域分别进行构建,进而在基于对象显示指令显示虚拟空间中的场景对象时,可以只加载目标对象所在的目标场景区域中各个可见性单元的可见性集,而不需要加载虚拟空间中所有可见性单元的可见性集,减少了加载可见性信息时的内存占用量,提高了场景对象的加载效率。
图9是根据本申请实施例提供的一种场景对象的遮挡裁剪装置的框图。该装置用于执行上述方法执行时的步骤,参见图9,装置包括:区域确定模块901、场景构建模块902、遮挡裁剪模块903。
区域确定模块901,用于对于虚拟空间的多个场景区域中的任一场景区域,从多个场景区域中,确定场景区域的至少一个相关区域,场景区域中包括多个可见性单元,相关区域与场景区域之间的距离小于距离阈值;
场景构建模块902,用于对场景区域和至少一个相关区域进行场景构建,得到场景区域的可见性信息,可见性信息包括场景区域中多个可见性单元的可见性集;
遮挡裁剪模块903,用于响应于对象显示指令,基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示目标场景区域中剩余的场景对象以及目标场景区域的至少一个相关区域中剩余的场景对象,目标场景区域为目标虚拟对象所在的场景区域。
在一些实施例中,图10是根据本申请实施例提供的另一种场景对象的遮挡裁剪装置的框图,参见图10所示,区域确定模块901,包括:
获取单元9011,用于对于任一场景区域,获取场景区域的区域类别;
距离确定单元9012,用于基于区域类别,确定场景区域的至少一个方向上的加载距离,加载距离用于表示场景区域中各可见性单元的可见距离;
区域确定单元9013,用于以至少一个方向上的加载距离为距离阈值,从多个场景区域中,确定场景区域的至少一个相关区域。
在一些实施例中,至少一个方向包括相互垂直的第一水平方向和第二水平方向;区域确定单元9013,用于对于场景区域中的任一可见性单元,以至少一个方向上的加载距离为距离阈值,将可见性单元的范围向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间单元范围;从多个场景区域中,确定与中间单元范围存在交集的相关区域。
在一些实施例中,至少一个方向包括相互垂直的第一水平方向和第二水平方向;区域确定单元9013,用于以至少一个方向上的加载距离为距离阈值,将场景区域向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间场景区域;从多个场景区域中,确定与中间场景区域存在交集的至少一个相关区域。
在一些实施例中,区域确定单元9013,用于获取场景区域的中心位置;以至少一个方向上的加载距离为距离阈值,从多个场景区域中,确定与场景区域的中心位置之间的距离小于距离阈值的至少一个相关区域。
在一些实施例中,场景构建模块902,用于对于场景区域和至少一个相关区域中的任一区域,在构建区域中的场景对象的过程中,为场景对象赋予区域对象标识,区域对象标识用于表示场景对象在对应的区域中的唯一标识;对于场景区域中的任一可见性单元,响应于确定场景区域和至少一个相关区域中任一场景对象相对于可见性单元可见,将场景对象的可见性标识添加到可见性单元的可见性集中,可见性标识为场景对象的区域对象标识与场景区域标识的和,场景区域标识用于表示场景对象所在的场景区域。
在一些实施例中,遮挡裁剪模块903,用于响应于对象显示指令,基于目标虚拟对象的位置,确定目标场景区域;基于目标场景区域的可见性信息,对目标场景区域中的多个场景对象以及目标场景区域的至少一个相关区域中的多个场景对象进行遮挡裁剪;显示目标场景区域中剩余的场景对象以及目标场景区域的至少一个相关区域中剩余的场景对象。
在一些实施例中,参见图10所示,装置还包括:
范围确定模块904,用于基于导航网络确定可见性单元的生成范围,导航网络用于指示虚拟空间的可行走区域;
第一划分模块905,用于基于生成范围的位置,将虚拟空间划分为多个场景区域。
在一些实施例中,参见图10所示,装置还包括:
单元生成模块906,用于基于导航网络,在虚拟空间中生成多个可见性单元;
第二划分模块907,用于按照可见性单元所在的位置,将虚拟空间划分为多个场景区域。
本申请实施例提供了一种场景对象的遮挡裁剪方法,通过将虚拟空间划分为多个场景区域,然后确定各个场景区域的相关区域,使得在对虚拟空间进行场景构建时,可以按照场景区域分别进行构建,进而在基于对象显示指令显示虚拟空间中的场景对象时,可以只加载目标对象所在的目标场景区域中各个可见性单元的可见性集,而不需要加载虚拟空间中所有可见性单元的可见性集,减少了加载可见性信息时的内存占用量,提高了场景对象的加载效率,并且减少了需要显示的场景对象的数量,进而减少了提交的绘制指令的数量,减少了对硬件资源的占用。
需要说明的是:上述实施例提供的场景对象的遮挡裁剪装置在运行应用程序时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的场景对象的遮挡裁剪装置与场景对象的遮挡裁剪方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在本申请实施例中,计算机设备能够被配置为终端或者服务器,当计算机设备被配置为终端时,可以由终端作为执行主体来实施本申请实施例提供的技术方案,当计算机设备被配置为服务器时,可以由服务器作为执行主体来实施本申请实施例提供的技术方案,也可以通过终端和服务器之间的交互来实施本申请提供的技术方案,本申请实施例对此不作限定。
计算机设备被配置为终端时,图11是根据本申请实施例提供的一种终端1100的结构框图。该终端1100可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture 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中的至少一种。
外围设备接口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-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。在一些实施例中,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
电源1108用于为终端1100中的各个组件进行供电。电源1108可以是交流电、直流电、一次性电池或可充电电池。当电源1108包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1109。该一个或多个传感器1109包括但不限于:加速度传感器1110、陀螺仪传感器1111、压力传感器1112、光学传感器1113以及接近传感器1114。
加速度传感器1110可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1110可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1110采集的重力加速度信号,控制显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1110还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1111可以检测终端1100的机体方向及转动角度,陀螺仪传感器1111可以与加速度传感器1110协同采集用户对终端1100的3D动作。处理器1101根据陀螺仪传感器1111采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1112可以设置在终端1100的侧边框和/或显示屏1105的下层。当压力传感器1112设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1112采集的握持信号进行左右手识别或快捷操作。当压力传感器1112设置在显示屏1105的下层时,由处理器1101根据用户对显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器1113用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1113采集的环境光强度,控制显示屏1105的显示亮度。具体地,当环境光强度较高时,调高显示屏1105的显示亮度;当环境光强度较低时,调低显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1113采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1114,也称距离传感器,通常设置在终端1100的前面板。接近传感器1114用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1114检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制显示屏1105从亮屏状态切换为息屏状态;当接近传感器1114检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图12是根据本申请实施例提供的一种服务器的结构示意图,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(CentralProcessing Units,CPU)1201和一个或一个以上的存储器1202,其中,该存储器1202中存储有至少一条计算机程序,该至少一条计算机程序由该处理器1201加载并执行以实现上述各个方法实施例提供的场景对象的遮挡裁剪方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一段计算机程序,该至少一段计算机程序由终端的处理器加载并执行以实现上述实施例的场景对象的遮挡裁剪方法中终端所执行的操作。例如,所述计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中。终端的处理器从计算机可读存储介质读取该计算机程序代码,处理器执行该计算机程序代码,使得该终端执行上述各种可选实现方式中提供的场景对象的遮挡裁剪方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (13)

1.一种场景对象的遮挡裁剪方法,其特征在于,所述方法包括:
对于虚拟空间的多个场景区域中的任一场景区域,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,所述场景区域中包括多个可见性单元,所述相关区域与所述场景区域之间的距离小于距离阈值;
对所述场景区域和所述至少一个相关区域进行场景构建,得到所述场景区域的可见性信息,所述可见性信息包括所述场景区域中多个可见性单元的可见性集;
响应于对象显示指令,基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示所述目标场景区域中剩余的场景对象以及所述目标场景区域的至少一个相关区域中剩余的场景对象,所述目标场景区域为目标虚拟对象所在的场景区域。
2.根据权利要求1所述的方法,其特征在于,所述对于虚拟空间的多个场景区域中的任一场景区域,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,包括:
对于任一场景区域,获取所述场景区域的区域类别;
基于所述区域类别,确定所述场景区域的至少一个方向上的加载距离,所述加载距离用于表示场景区域中各可见性单元的可见距离;
以所述至少一个方向上的加载距离为距离阈值,从所述多个场景区域中,确定所述场景区域的至少一个相关区域。
3.根据权利要求2所述的方法,其特征在于,所述至少一个方向包括相互垂直的第一水平方向和第二水平方向;
所述以所述至少一个方向上的加载距离为距离阈值,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,包括:
对于所述场景区域中的任一可见性单元,以所述至少一个方向上的加载距离为距离阈值,将所述可见性单元的范围向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间单元范围;
从所述多个场景区域中,确定与所述中间单元范围存在交集的相关区域。
4.根据权利要求2所述的方法,其特征在于,所述至少一个方向包括相互垂直的第一水平方向和第二水平方向;
所述以所述至少一个方向上的加载距离为距离阈值,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,包括:
以所述至少一个方向上的加载距离为距离阈值,将所述场景区域向第一水平方向外扩第一加载距离,向第二水平方向外扩第二加载距离,得到中间场景区域;
从所述多个场景区域中,确定与所述中间场景区域存在交集的至少一个相关区域。
5.根据权利要求2所述的方法,其特征在于,所述以所述至少一个方向上的加载距离为距离阈值,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,包括:
获取所述场景区域的中心位置;
以所述至少一个方向上的加载距离为距离阈值,从所述多个场景区域中,确定与所述场景区域的中心位置之间的距离小于所述距离阈值的至少一个相关区域。
6.根据权利要求1所述的方法,其特征在于,所述对所述场景区域和所述至少一个相关区域进行场景构建,得到所述场景区域的可见性信息,包括:
对于所述场景区域和所述至少一个相关区域中的任一区域,在构建所述区域中的场景对象的过程中,为场景对象赋予区域对象标识,所述区域对象标识用于表示场景对象在对应的区域中的唯一标识;
对于所述场景区域中的任一可见性单元,响应于确定所述场景区域和所述至少一个相关区域中任一场景对象相对于所述可见性单元可见,将所述场景对象的可见性标识添加到所述可见性单元的可见性集中,所述可见性标识为所述场景对象的区域对象标识与场景区域标识的和,所述场景区域标识用于表示场景对象所在的场景区域。
7.根据权利要求1所述的方法,其特征在于,所述响应于对象显示指令,基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示所述目标场景区域中剩余的场景对象以及所述目标场景区域的至少一个相关区域中剩余的场景对象,包括:
响应于对象显示指令,基于所述目标虚拟对象的位置,确定所述目标场景区域;
基于所述目标场景区域的可见性信息,对所述目标场景区域中的多个场景对象以及所述目标场景区域的至少一个相关区域中的多个场景对象进行遮挡裁剪;
显示所述目标场景区域中剩余的场景对象以及所述目标场景区域的至少一个相关区域中剩余的场景对象。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于导航网络确定可见性单元的生成范围,所述导航网络用于指示所述虚拟空间的可行走区域;
基于所述生成范围的位置,将所述虚拟空间划分为所述多个场景区域。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于导航网络,在所述虚拟空间中生成多个可见性单元;
按照可见性单元所在的位置,将所述虚拟空间划分为所述多个场景区域。
10.一种场景对象的遮挡裁剪装置,其特征在于,所述装置包括:
区域确定模块,用于对于虚拟空间的多个场景区域中的任一场景区域,从所述多个场景区域中,确定所述场景区域的至少一个相关区域,所述场景区域中包括多个可见性单元,所述相关区域与所述场景区域之间的距离小于距离阈值;
场景构建模块,用于对所述场景区域和所述至少一个相关区域进行场景构建,得到所述场景区域的可见性信息,所述可见性信息包括所述场景区域中多个可见性单元的可见性集;
遮挡裁剪模块,用于响应于对象显示指令,基于目标场景区域的可见性信息,对场景对象进行遮挡裁剪,显示所述目标场景区域中剩余的场景对象以及所述目标场景区域的至少一个相关区域中剩余的场景对象,所述目标场景区域为目标虚拟对象所在的场景区域。
11.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器用于存储至少一段计算机程序,所述至少一段计算机程序由所述处理器加载并执行权利要求1至9任一项权利要求所述的场景对象的遮挡裁剪方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储至少一段计算机程序,所述至少一段计算机程序用于执行权利要求1至9任一项权利要求所述的场景对象的遮挡裁剪方法。
13.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9任一项权利要求所述的场景对象的遮挡裁剪方法。
CN202211146025.3A 2022-09-20 2022-09-20 一种场景对象的遮挡裁剪方法、装置、终端及存储介质 Pending CN117771661A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211146025.3A CN117771661A (zh) 2022-09-20 2022-09-20 一种场景对象的遮挡裁剪方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211146025.3A CN117771661A (zh) 2022-09-20 2022-09-20 一种场景对象的遮挡裁剪方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN117771661A true CN117771661A (zh) 2024-03-29

Family

ID=90383896

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211146025.3A Pending CN117771661A (zh) 2022-09-20 2022-09-20 一种场景对象的遮挡裁剪方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN117771661A (zh)

Similar Documents

Publication Publication Date Title
CN111589128B (zh) 基于虚拟场景的操作控件显示方法及装置
CN111013142B (zh) 互动效果显示方法、装置、计算机设备及存储介质
CN110141859B (zh) 虚拟对象控制方法、装置、终端及存储介质
CN111603771B (zh) 动画生成方法、装置、设备及介质
CN111596838B (zh) 业务处理方法、装置、计算机设备及计算机可读存储介质
CN111589141B (zh) 虚拟环境画面的显示方法、装置、设备及介质
CN111744185B (zh) 虚拟对象控制方法、装置、计算机设备及存储介质
CN113181647B (zh) 信息显示方法、装置、终端及存储介质
CN113680060B (zh) 虚拟画面显示方法、装置、设备、介质及计算机程序产品
CN113559494B (zh) 虚拟道具的显示方法、装置、终端及存储介质
CN112007362B (zh) 虚拟世界中的显示控制方法、装置、存储介质及设备
CN111760281B (zh) 过场动画播放方法、装置、计算机设备及存储介质
JP2024509064A (ja) 位置マークの表示方法及び装置、機器並びにコンピュータプログラム
CN110833695B (zh) 基于虚拟场景的业务处理方法、装置、设备及存储介质
JP7483056B2 (ja) 選択ターゲットの決定方法、装置、機器、及びコンピュータプログラム
CN112699208B (zh) 地图寻路方法、装置、设备及介质
CN112755517B (zh) 虚拟对象控制方法、装置、终端及存储介质
CN112699223A (zh) 数据搜索方法、装置、电子设备及存储介质
CN116966553A (zh) 用于虚拟场景的信息同步方法、设备及程序产品
CN114042315B (zh) 基于虚拟场景的图形显示方法、装置、设备以及介质
CN111921191B (zh) 状态图标的显示方法、装置、终端及存储介质
CN113144595A (zh) 虚拟道路的生成方法、装置、终端及存储介质
CN117771661A (zh) 一种场景对象的遮挡裁剪方法、装置、终端及存储介质
CN113633976B (zh) 操作控制方法、装置、设备及计算机可读存储介质
CN114130020B (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