CN115631320B - 预计算单元格显示方法、预计算单元格生成方法及装置 - Google Patents
预计算单元格显示方法、预计算单元格生成方法及装置 Download PDFInfo
- Publication number
- CN115631320B CN115631320B CN202211662938.0A CN202211662938A CN115631320B CN 115631320 B CN115631320 B CN 115631320B CN 202211662938 A CN202211662938 A CN 202211662938A CN 115631320 B CN115631320 B CN 115631320B
- Authority
- CN
- China
- Prior art keywords
- space
- view
- grid
- virtual scene
- angle
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
- G06T17/205—Re-meshing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
Abstract
本申请涉及一种预计算单元格显示方法、预计算单元格生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。该方法包括:响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在虚拟场景中显示划分的视角受限空间和全视角空间,对应于视角受限空间内未与全视角空间重叠的第一空间的导航网格、以及全视角空间内未与视角受限空间重叠的第二空间的静态网格,生成或显示沿虚拟角色的站立方向延伸,覆盖第一空间中用于表征角色可达区域的导航网格、以及第二空间中用于表征静态对象的对象轮廓的静态网格的多个预计算单元格。采用本方法可以提高预计算单元格对虚拟场景下的角色可达区域的覆盖度,提升预计算单元格与虚拟场景的匹配度。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种预计算单元格显示方法、预计算单元格显示方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
背景技术
随着计算机技术的快速发展,以计算机技术为依托的虚拟场景中的对象构成越来越丰富,为了降低场景渲染压力,通常预先根据虚拟角色或相机的位置,计算该位置的可视性,得到潜在可见集合(Potential Visibility Set,PVS)存储在场景数据文件中。在计算PVS之前,需要在虚拟场景中划分出多个预计算单元格。
传统的预计算单元格生成和显示方法,基于虚拟场景中的导航网格生成PVS的预计算单元格,在虚拟场景中存在不限制虚拟角色的可达区域的全视角空间的情况下,通过导航网格并不能覆盖该虚拟场景下的所有可达区域,因此,采用传统方法存在预计算单元格与虚拟场景的匹配度不高的缺点。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高预计算单元格与虚拟场景的匹配度的预计算单元格显示方法、预计算单元格生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种预计算单元格显示方法。所述方法包括:
响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在所述虚拟场景中显示划分的视角受限空间和全视角空间;
对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,显示沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;
所述第一空间为所述视角受限空间内未与所述全视角空间重叠的空间;所述第二空间为所述全视角空间内未与所述视角受限空间重叠的空间;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
第二方面,本申请还提供了一种预计算单元格显示装置。所述装置包括:
视角空间显示模块,用于响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在所述虚拟场景中显示划分的视角受限空间和全视角空间;
预计算单元格显示模块,用于对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,显示沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;所述第一空间为所述视角受限空间内未与所述全视角空间重叠的空间;所述第二空间为所述全视角空间内未与所述视角受限空间重叠的空间;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
第三方面,本申请提供了一种预计算单元格生成方法。所述方法包括:
获取针对虚拟角色所在虚拟场景的视角空间参数,确定所述虚拟场景中的视角受限空间和全视角空间;
根据所述视角受限空间和所述全视角空间在所述虚拟场景中各自的位置,确定所述视角受限空间内未与所述全视角空间重叠的第一空间、以及所述全视角空间内未与所述视角受限空间重叠的第二空间;
对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,生成沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
第四方面,本申请还提供了一种预计算单元格生成装置。所述装置包括:
视角空间确定模块,用于获取针对虚拟角色所在虚拟场景的视角空间参数,确定所述虚拟场景中的视角受限空间和全视角空间;
未重叠空间确定模块,用于根据所述视角受限空间和所述全视角空间在所述虚拟场景中各自的位置,确定所述视角受限空间内未与所述全视角空间重叠的第一空间、以及所述全视角空间内未与所述视角受限空间重叠的第二空间;
预计算单元格生成模块,用于对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,生成沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
第五方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第六方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
第七方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
上述预计算单元格显示方法、预计算单元格生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在虚拟场景中显示划分的视角受限空间和全视角空间,对应于视角受限空间内未与全视角空间重叠的第一空间的导航网格、以及全视角空间内未与视角受限空间重叠的第二空间的静态网格,生成或显示沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖第一空间的导航网格、以及第二空间的静态网格。由于静态网格用于表征空间中静态对象的对象轮廓,则静态网格可以相对准确地表征虚拟角色在全视角空间的可达区域,并且,导航网格用于表征虚拟角色在视角受限空间的可达区域,采用上述方法可以提高预计算单元格对虚拟场景下虚拟角色的可达区域的覆盖度,进而提高预计算单元格与虚拟场景的匹配度。
附图说明
图1为一些实施例中预计算单元格显示方法和生成方法的应用环境图;
图2为一些实施例中预计算单元格显示方法的流程示意图;
图3为一些实施例中视角空间的显示界面示意图;
图4为一些实施例中导航网格的显示界面示意图;
图5为图3中全视角空间D的预计算单元格的显示界面示意图;
图6为另一些实施例中预计算单元格的显示界面示意图;
图7为另一些实施例中预计算单元格显示方法的流程示意图;
图8为一些实施例中预计算单元格生成方法的流程示意图;
图9为一个实施例中的重叠空间示意图;
图10为一些实施例中非目标视角空间的拆分过程示意图;
图11为图10中重叠子空间K3被拆分后在XY平面上的投影示意图;
图12为一些实施例中一个预计算单元格的栅格构成示意图;
图13为一些实施例中XY平面上平面投影区域和栅格投影区域的示意图;
图14为另一些实施例中预计算单元格生成方法的流程示意图;
图15为一个实施例中预计算单元格的生成结果示意图;
图16为另一个实施例中预计算单元格的生成结果示意图;
图17为一些实施例中预计算单元格显示装置的结构框图;
图18为一些实施例中预计算单元格生成装置的结构框图;
图19为一些实施例中计算机设备的内部结构图;
图20为一些实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
人工智能(Artificial Intelligence, AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
其中,计算机视觉技术(Computer Vision, CV)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例提供的预计算单元格显示方法和生成方法,涉及人工智能的计算机视觉技术,具体可以应用于如图1所示的应用环境中。其中,应用端102通过网络与服务端104进行通信。网络可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。数据存储系统可以存储服务端104需要处理的数据。数据存储系统可以集成在服务端104上,也可以放在云上或其他计算机设备上。服务端104响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在虚拟场景中显示划分的视角受限空间和全视角空间,对应于视角受限空间内未与全视角空间重叠的第一空间的导航网格、以及全视角空间内未与视角受限空间重叠的第二空间的静态网格,生成或显示沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖第一空间的导航网格、以及第二空间的静态网格;该导航网格,用于表征虚拟角色在视角受限空间的可达区域;该静态网格,用于表征空间中静态对象的对象轮廓。获得多个预计算单元格后,服务端104可以针对每一预计算单元格进行PVS的计算,并保存PVS计算结果,以便在应用端102访问该虚拟场景的情况下,可以根据虚拟角色所在位置对应的PVS计算结果实现快速场景渲染,以提高场景画面的显示效果。
其中,服务端104可以是终端或者外接显示屏的服务器。该终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能电视、智能手表等,但并不局限于此。该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,ContentDelivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。应用端102和服务端104可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在实际应用中,应用端102可以安装支持虚拟场景的应用程序,进而通过该应用程序访问该虚拟场景,但是应用程序也不是必须的,应用端102还可以通过网页访问虚拟场景。该应用程序可以是多人在线战术竞技游戏(MOBA,Multiplayer Online Battle Arenagames)、三维(Three Dimension,简称3D)游戏应用、虚拟现实应用程序、三维地图程序或者多人竞技类生存游戏中的任意一种。该应用程序还可以是单机版的应用程序,比如单机版的3D游戏程序。
在一种可能的实现方式中,该预计算单元格生成和显示方法可以应用于单机版射击游戏或者多人在线战术竞技游戏等游戏应用场景中。在该应用场景的虚拟场景中,同时包含房顶等虚拟角色不可达区域、以及不限制虚拟角色的可达区域的室外草地,且房顶对应的房屋设置在草地上。具体地,服务端104响应于针对虚拟角色所在虚拟场景的视角空间划分事件,在虚拟场景中显示划分的视角受限空间和全视角空间,该视角受限空间包含具备房顶等不可达区域的房屋所在区域;该全视角空间可以包含室外草地所在区域。然后,服务端104对应于视角受限空间内未与全视角空间重叠的第一空间的导航网格、以及全视角空间内未与视角受限空间重叠的第二空间的静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖第一空间的导航网格、以及第二空间的静态网格;该导航网格,用于表征虚拟角色在视角受限空间的可达区域,例如可以是房屋的室内可达区域;该静态网格,用于表征空间中静态对象的对象轮廓,例如地面或草的轮廓。获得多个预计算单元格后,服务端104可以针对每一预计算单元格进行PVS的计算,并将PVS计算结果保存在虚拟场景的场景数据中,随场景数据一并下发至应用端102,以便应用端102在访问虚拟场景的情况下,可以根据虚拟角色所在位置对应的PVS计算结果,在渲染梯队中剔除当前不可见的静态对象,进而实现快速的场景渲染。服务端也可以根据应用端104的虚拟角色所在位置,查询该位置对应的PVS计算结果,并基于查询得到的各PVS计算结果实现对应用端104的当前虚拟场景的渲染。
在另一种可能的实现方式中,该预计算单元格生成和显示方法可以应用于地图导航的应用场景中。在该应用场景下,应用端102可以安装地图导航应用程序,用户通过访问该应用程序可以查看导航路径上与实景图像对应的渲染图像。在该应用场景下,服务端104针对地图中每一现实场景对应的仿真场景,响应于针对该仿真场景的视角空间划分事件,在仿真场景中显示划分的包含街道等视角受限区域的视角受限空间、以及包含室外空旷地等视角不受限区域的全视角空间。然后,服务端104对应于视角受限空间内未与全视角空间重叠的第一空间的导航网格、以及全视角空间内未与视角受限空间重叠的第二空间的静态网格,显示沿用户的站立方向延伸的多个预计算单元格,以覆盖第一空间的导航网格、以及第二空间的静态网格;该导航网格,用于表征用户在视角受限空间的可达区域,例如街道建筑物之间的道路;该静态网格,用于表征空间中静态对象的对象轮廓,例如地面轮廓。获得多个预计算单元格后,服务端104可以针对每一预计算单元格进行PVS的计算,并将PVS计算结果保存在仿真场景的场景数据中,在用户通过应用端102访问地图导航数据的情况下,服务端104可以根据用户指定的视角位置,查询该位置对应的PVS计算结果,并基于查询得到的各PVS计算结果确定当前视角位置下的可见对象,通过对可见对象进行渲染,向应用端102反馈该视角位置下的渲染图像。其中,视角位置用于表征用户在该场景中的位置和朝向。
在一些实施例中,如图2所示,提供了一种预计算单元格显示方法,以该方法应用于图1中的服务端104为例进行说明,包括以下步骤:
步骤202,响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在虚拟场景中显示划分的视角受限空间和全视角空间。
其中,虚拟场景是指应用端中的应用程序或网页在运行的过程中提供的虚拟活动空间,供虚拟角色在该虚拟活动空间中执行各种活动。该虚拟场景可以是对真实世界的仿真场景,也可以是半仿真半虚构的场景,还可以是纯虚构的场景。虚拟场景可以包括虚拟对象,该虚拟对象可以是虚拟场景中的场景组成元素,如虚拟草地或虚拟建筑物,也可以是虚拟场景中的场景参与元素,如活动于虚拟场景中的虚拟对象。虚拟角色是指在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物中的至少一种。虚拟角色是由应用端控制的虚拟对象。应用端可以根据接收到的用户操作控制虚拟角色在虚拟场景中活动。示例性的,虚拟角色在虚拟场景中的活动包括:行走、跑动、跳跃、攀爬、趴下、攻击、释放技能、捡拾道具、发送消息,但不限于此,本申请实施例对此不作限定。
视角空间划分事件是指用于指示服务端在虚拟场景中划分出视角空间,并显示划分的视角空间的事件。该视角空间划分事件的触发方式并不唯一。示例性的,可以在开发界面上显示视角空间划分控件,开发人员可以点击该视角空间划分控件,服务端可以响应于该视角空间划分控件的点击操作,触发视角空间划分事件;也可以在开发界面上显示视角空间划分选项,开发人员可以选定该视角空间划分选项,服务端可以响应于该视角空间划分选项的选定操作,触发视角空间划分事件。进一步地,由于PVS的计算需要在照明构建完成的基础上进行,在一种可能的实现中,服务端也可以在虚拟场景的照明构建完成后,自动触发视角空间划分事件。
视角受限空间和全视角空间是两种不同类型的视角空间。视角受限空间是指包括房屋、街道、桥梁等视角受限区域的视角空间。视角受限区域是指对虚拟角色的运动轨迹存在限制,可以通过导航网格表征虚拟角色的可达区域的空间。例如,房屋的屋顶和墙壁可以是虚拟角色的不可达区域,街道中的建筑物可以是虚拟角色的不可达区域,桥梁的桥墩、绳索等可以是虚拟角色的不可达区域。全视角空间是指包含室外空旷地等全视角区域的视角空间。全视角区域是指对虚拟角色的运动轨迹不进行限制的空间,也即,在全视角区域内,虚拟角色可以接触到该区域内所包含的所有静态对象。例如,室外空旷地的地面元素,包括泥土、草等。
进一步地,视角空间用于划定虚拟场景中生成PVS预计算单元格的范围,该视角空间可以显示为贴图物体或者未贴图的线框。视角空间的空间形状并不唯一,例如可以是长方体、圆柱体、棱台或者不规则形状,且视角受限空间和全视角空间的空间形状可以相同也可以不相同。在一个具体的应用中,视角空间可以通过显示为长方体线框的预计算可视性体积(Precompute Visible Volume)表征。如图3所示,在包括房屋A和空旷地B的虚拟场景中,可以显示划分的包含房屋A的视角受限空间C、以及包含空旷地B的全视角空间D。如图4所示,图3的房屋A内包括用于表征虚拟角色的可达区域的导航网格E。
具体地,可以由开发人员点击开发界面的视角空间划分界面、或选定开发界面的视角空间划分选项,由服务端响应于开发人员针对开发界面的界面操作,触发针对虚拟角色所在虚拟场景的视角空间划分事件,在虚拟场景中划分并显示出视角受限空间和全视角空间。服务端可以响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在虚拟场景中划分出视角受限空间和全视角空间,并在虚拟场景中的对应位置处显示划分的视角受限空间和全视角空间。服务端在虚拟场景中划分出视角受限空间和全视角空间的具体方式并不唯一。例如,可以由开发人员确定视角空间的参数,并将该参数输入服务端,服务端按照输入的参数在虚拟场景中划分出视角受限空间和全视角空间;也可以由开发人员通过拖动鼠标在虚拟场景中绘制出视角受限空间和全视角空间各自对应的线框;还可以由服务端根据虚拟场景的场景组成元素的可达范围属性参数,确定虚拟场景中所包含的视角受限元素和全视角元素,进而在虚拟场景中划分出包含视角受限元素的视角受限空间、以及包含全视角元素的全视角空间。
进一步地,视角受限空间和全视角空间的显示方式可以相同,也可以不相同。示例性地,可以通过不同类型的线框分别显示划分的视角受限空间和全视角空间,该不同类型的线框可以是线条颜色、线条粗细或线条类型中至少一项存在区别;还可以通过显示空间类型标识实现对视角受限空间和全视角空间的区别显示,该空间类型标识用于标识视角受限空间或全视角空间的空间类型,该空间类型为视角受限类型或全视角类型。空间类型标识可以包括文字、符号或数字中一种或多种的组合。此外,视角空间还可以被配置为可隐藏,以便于开发人员根据需要选择显示或不显示对应的视角空间。也即,虚拟场景中划分出的视角受限空间和全视角空间,可以全部显示、部分显示或者全部不显示。
需要说明的是,在同一虚拟场景中,视角受限空间和全视角空间各自的数量,可以是一个,也可以是多个,且各视角受限空间和各全视角空间中的任意两个视角空间,可以不存在重叠空间,也存在重叠空间。如图3中,视角受限空间C和全视角空间D在房屋A的所在区域存在重叠空间。示例性的,该重叠空间可以通过预计算重载体积(Precompute OverrideVolume)表征。
步骤204,对应于视角受限空间内第一空间的导航网格和全视角空间内第二空间的静态网格,显示沿虚拟角色的站立方向延伸,覆盖第一空间的导航网格、以及第二空间的静态网格的多个预计算单元格。
其中,预计算单元格(Cell)是PVS计算的最小计算单位,可以理解为虚拟角色的眼睛、或者跟随虚拟角色的摄像机所在的位置,PVS计算过程对应为确定每一个Cell所对应的潜在可见集合的过程。第一空间为视角受限空间内未与全视角空间重叠的空间;第二空间为全视角空间内未与视角受限空间重叠的空间。导航网格用于表征虚拟角色在视角受限空间的可达区域,针对视角受限空间内未与全视角空间重叠的第一空间中,该第一空间中的导航网格可以相对准确地表征虚拟角色在该第一空间中的可达区域。进一步地,静态网格用于表征空间中静态对象的对象轮廓。虚拟场景中所包含的静态对象的对象轮廓可以通过该静态对象的静态网格(Static Mesh)表征,通常虚拟场景中所展示的静态对象,是该静态对象的静态网格的贴图显示。静态对象是指虚拟场景中不可移动的虚拟对象。例如地面、建筑物、树木等等。针对全视角空间内未与视角受限空间重叠的第二空间中,该第二空间中的静态网格可以相对准确地表征虚拟角色在该第二空间中的可达区域,例如虚拟角色在第二空间中可以接触的静态物件、可以到达的地面等。
基于此,服务端可以对应于视角受限空间内第一空间的导航网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖该第一空间的导航网格;对应于全视角空间内第二空间的静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖该第二空间的静态网格。其中,虚拟角色的站立方向,是指左手坐标系中的Z方向。进一步地,与视角受限空间和全视角空间类似,预计算单元格的显示方式也不唯一,例如可以显示为贴图物体或者未贴图的线框。该预计算单元格的空间形状并不唯一,例如可以是立方体或长方体。在一个具体的应用中,预计算单元格由多个栅格(Grid)构成。栅格是将空间分割成有规律的网格,每一个栅格是一个像素单元,在各栅格上赋予相应的属性值,也可实现对空间中实体的表示。在一种可能的实现中,预计算单元格显示为立方体线框。如图5所示,针对图3中全视角空间D内未与视角受限空间C重叠的第二空间,对应于该第二空间的静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格F,以覆盖该第二空间的静态网格。进一步地,在开发界面上,导航网格和静态网格可以显示也可以不显示,例如图4中显示了图3房屋A的室内空间的导航网格D,图5中未显示空旷地B的静态网格,图7中导航网格和静态网格均未显示,仅显示了最终生成的多个预计算单元格G。此外,预计算单元格还可以被配置为可隐藏,以便于开发人员根据需要选择显示或不显示该预计算单元格。
需要说明的是,若同一虚拟场景中视角受限空间的数量为多个,则不同视角受限空间的重叠空间,对应于上文中视角受限空间内未与全视角空间重叠的第一空间,可以通过导航网格可以表征虚拟角色在该空间的可达区域。同样的,若同一虚拟场景中全视角空间的数量为多个,则不同全视角空间的重叠空间,对应于上文中全视角空间内未与视角受限空间重叠的第二空间,可以通过静态网格表征虚拟角色在该空间的可达区域。进一步地,在视角受限空间和全视角空间存在重叠空间的情况下,对于视角受限空间和全视角空间的重叠空间,服务端可以对应于该重叠空间中的导航网格和静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格;也可以对应于该重叠空间中的导航网格或静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格。
上述预计算单元格显示方法,响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在虚拟场景中显示划分的视角受限空间和全视角空间,对应于视角受限空间内未与全视角空间重叠的第一空间的导航网格、以及全视角空间内未与视角受限空间重叠的第二空间的静态网格,生成或显示沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖第一空间的导航网格、以及第二空间的静态网格。由于静态网格用于表征空间中静态对象的对象轮廓,则静态网格可以相对准确地表征虚拟角色在全视角空间的可达区域,并且,导航网格用于表征虚拟角色在视角受限空间的可达区域,采用上述方法可以提高预计算单元格对虚拟场景下虚拟角色的可达区域的覆盖度,进而提高预计算单元格与虚拟场景的匹配度。
在一些实施例中,步骤S202包括:响应于视角空间参数输入事件,显示至少两组视角空间参数;按照至少两组视角空间参数,在虚拟场景中显示至少两个视角空间。
其中,视角空间参数可以包括位置参数和类型参数。该位置参数用于表征视角空间在虚拟场景中的空间位置;该类型参数用于表征视角空间的空间类型。该空间类型包括视角受限类型和全视角类型。也即,在虚拟场景中显示的至少两个视角空间,包括视角受限空间和全视角空间。进一步地,一组视角空间参数用于表征一个视角空间的空间位置和空间类型,也即,服务端按照同一组视角空间参数中的各个参数,在虚拟场景中显示与该组视角空间参数匹配的视角空间。
示例性的,服务端的开发界面上可以显示参数输入窗口,开发人员可以通过在该参数输入窗口输入视角空间参数,定义拟划分的视角空间的参数;服务端的开发界面上也可以显示可移动光标,开发人员也可以通过控制该可移动光标,选定虚拟场景中的目标位置,作为拟划分的视角空间的空间位置;服务端的开发界面上还可以显示候选类型,开发人员可以通过选定某一候选类型,作为拟划分的视角空间的空间类型。选定目标位置或候选类型的具体方式并不唯一,例如可以是单机、双击等。
具体地,开发人员可以通过开发界面输入至少两组视角空间参数,服务端响应于开发人员的参数输入操作,触发并响应于视角空间参数输入事件,获取并显示至少两组视角空间参数,然后,分别按照每一组视角空间参数,在虚拟场景中划分并显示与该组视角空间参数匹配的视角空间。最终显示的视角空间包括视角受限空间和全视角空间。
上述实施例中,响应于视角空间参数输入事件,在虚拟场景中显示与输入参数匹配的视角空间,开发人员可以根据具体虚拟场景,灵活地进行视角空间的划分,有利于提高划分后得到的视角空间与虚拟场景的匹配度,进而提高基于该视角空间确定的预计算单元格与虚拟场景的匹配度。
在一些实施例中,视角空间参数包括视角空间的位置参数、类型参数以及形状参数。在该实施例的情形下,按照至少两组视角空间参数,在虚拟场景中显示至少两个视角空间,包括:按照每一组视角空间参数中的位置参数、类型参数以及形状参数,在虚拟场景中显示视角空间。
其中,视角空间的空间位置为位置参数表征的位置,视角空间的空间形状为形状参数表征的形状,视角空间的空间类型为类型参数表征的类型。该空间位置,例如可以是视角空间的重心位置,或者视角空间中某一边界面的中心位置。该形状例如可以是长方体、圆柱体、棱台,或者由开发人员自定义的能够构成封闭空间的不规则形状。示例性地,针对房屋对应的视角受限空间,可以将该视角受限空间的空间形状定义为与该房屋在地面的投影面匹配的形状,例如投影面为圆心,则视角受限空间的空间形状为圆柱体,投影面为长方形,则视角受限空间的空间形状为长方体。具体地,服务端可以按照每一组视角空间参数中的位置参数、类型参数以及形状参数,确定与该组视角空间参数匹配的视角空间的空间位置、空间形状和空间类型,并在虚拟场景中划分并显示该视角空间。
上述实施例中,视角空间参数包括视角空间的位置参数、类型参数以及形状参数,使得开发人员可以根据当前虚拟场景的实际情况,确定需要生成预计算单元格的视角空间的空间位置、空间类型和空间形状,能够进一步提高基于划分后得到的视角空间所确定的预计算单元格与虚拟场景的匹配度。
在一些实施例中,预计算单元格显示方法还包括:在视角受限空间和全视角空间存在重叠空间的情况下,对应于重叠空间中的导航网格或静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格。
具体地,由于导航网格用于表征虚拟角色在视角受限空间的可达区域,静态网格用于表征空间中静态对象的对象轮廓,在视角受限空间和全视角空间的重叠空间中,可能同时包含导航网格和静态网格。基于此,在视角受限空间和全视角空间存在重叠空间的情况下,为避免重叠空间中预计算单元格的重复生成,服务端可以对应于重叠空间的导航网格和静态网格中的其中一种网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格。进一步地,服务端可以基于重叠空间所关联的视角受限空间和全视角空间各自的优先级,对应于优先级较高的目标视角空间的目标网格,生成并显示沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖该重叠空间中的目标网格;也可以对应于该重叠空间中的导航网格或静态网格中的任意一种,生成并显示沿虚拟角色的站立方向延伸的多个预计算单元格。
上述实施例中,对于视角受限空间和全视角空间的重叠空间,对应于该重叠空间中的导航网格或静态网格显示预计算单元格,可以避免预计算单元格的重复显示,能够在提高预计算单元格与虚拟场景的匹配度的同时,减少内存的浪费。
在一个实施例中,在视角受限空间和全视角空间存在重叠空间的情况下,对应于重叠空间中的导航网格或静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格,包括:响应于视角空间的优先级参数输入事件,显示视角受限空间和全视角空间各自的优先级参数;在视角受限空间的优先级高于全视角空间的情况下,对应于视角受限空间和全视角空间的重叠空间中的导航网格,显示沿虚拟角色的站立方向延伸,覆盖重叠空间的导航网格的多个预计算单元格;在全视角空间的优先级高于视角受限空间的情况下,对应于重叠空间中的静态网格,显示沿虚拟角色的站立方向延伸,覆盖重叠空间的静态网格的多个预计算单元格。
其中,优先级参数用于表征视角空间的优先级,该优先级参数可以包括空间优先级参数和类型优先级参数中的至少一种,对应地,优先级参数所表征的优先级可以包括空间优先级参数所表征的空间优先级、以及类型优先级参数所表征的类型优先级中的至少一种。该空间优先级参数可以通过视角空间的优先级标识表征,该优先级标识例如可以是数字,且数字的数值越小空间优先级越高。类型优先级参数可以通过类型参数、以及各类型参数各自的类型优先级进行表征,例如视角受限类型的类型优先级高于全视角类型的类型优先级,或者,全视角类型的类型优先级高于视角受限类型的类型优先级。
示例性的,服务端的开发界面上可以显示优先级参数输入窗口,开发人员可以通过在该优先级参数输入窗口输入优先级参数,定义视角空间的优先级;服务端的开发界面上还可以显示候选优先级参数,开发人员可以通过选定某一候选优先级参数,作为视角空间的优先级参数。在一种可能的实现中,视角空间的命名中包含了优先级参数,开发人员可以通过定义视角空间的名称,确定视角空间的优先级参数。在一种可能的实现中,服务端可以在视角受限空间和全视角空间存在重叠空间的情况下,触发优先级参数输入事件,在开发界面上显示优先级参数输入窗口,由开发人员通过优先级参数输入窗口输入优先级参数,然后,服务端响应于开发人员的参数输入操作,显示输入的视角受限空间和全视角空间各自的优先级参数。
具体地,服务端响应于视角空间的优先级参数输入事件,显示视角受限空间和全视角空间各自的优先级参数。然后,服务端针对视角受限空间和全视角空间的重叠空间,根据优先级参数所表征的优先级,对应于优先级较高的视角空间,显示沿虚拟角色的站立方向延伸的多个预计算单元格。具体在视角受限空间的优先级高于全视角空间的优先级的情况下,对应于视角受限空间和全视角空间的重叠空间中的导航网格,显示沿虚拟角色的站立方向延伸,覆盖重叠空间的导航网格的多个预计算单元格;在全视角空间的优先级高于视角受限空间的优先级的情况下,对应于视角受限空间和全视角空间的重叠空间中的静态网格,显示沿虚拟角色的站立方向延伸,覆盖重叠空间的静态网格的多个预计算单元格。如图5中,由于视角不受限空间D的优先级低于视角受限空间C,因此在视角受限空间C与视角不受限空间D的重叠空间,未基于该重叠空间中的静态网格显示预计算单元格。
需要说明的是,在优先级参数包括空间优先级参数和类型优先级参数的情况下,服务端可以基于空间优先级或类型优先级确定与重叠空间关联的优先级较高的视角空间,也可以基于空间优先级和类型优先级确定与重叠空间关联的优先级较高的视角空间。示例性地,服务端可以根据空间优先级和类型优先级各自的权重,通过加权求和确定视角空间的综合优先级,再确定与重叠空间关联的综合优先级较高的视角空间;服务端也可以先根据空间优先级和类型优先级中的其中一个确定优先级较高的选定视角空间,若选定视角空间的数量为多个,再根据空间优先级和类型优先级中的另一个,从各选定视角空间中确定优先级较高的视角空间。
上述实施例中,基于优先级参数所表征的优先级确定与重叠空间关联的优先级较高的视角空间,进而对应于该视角空间的目标网格显示预计算单元格,开发人员可以根据实际场景的需求定义各视角空间的优先级,有利于提高预计算单元格显示结果的准确性。
在一些实施例中,预计算单元格显示方法还包括:对应于虚拟角色的运动轨迹网格,显示沿虚拟角色的站立方向延伸,覆盖该运动轨迹网格的多个预计算单元格。
其中,运动轨迹网格用于表征虚拟角色在虚拟场景中脱离地面运动的运动轨迹。具体地,对于虚拟场景中的过场动画场景,允许虚拟角色脱离地面运动,基于此,服务端可以根据过场动画场景下所允许的脱离地面的运动轨迹,生成虚拟角色的运动轨迹网格,然后,对应于该运动轨迹网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格,覆盖该运动轨迹网格。
本实施例中,对应于脱离地面的运动轨迹网格,显示沿虚拟角色的站立方向延伸,覆盖该运动轨迹网格的多个预计算单元格,可以进一步提高预计算单元格对虚拟场景中虚拟角色的可达区域的覆盖度,进而提高预计算单元格与虚拟场景的匹配度,提高后续虚拟场景的渲染速度。
在一个实施例中,如图7所示,提供了一种预计算单元格显示方法,包括以下步骤:
步骤S701,响应于空间参数输入事件,显示至少两组视角空间参数;
其中,视角空间参数包括视角空间的位置参数、类型参数以及形状参数;
步骤S702,按照每一组视角空间参数中的位置参数、类型参数以及形状参数,在虚拟场景中显示视角空间;
其中,视角空间包括视角受限空间和全视角空间;视角空间的空间位置为位置参数表征的位置,视角空间的空间类型为类型参数表征的类型,视角空间的空间形状为形状参数表征的形状;
步骤S703,对应于视角受限空间内第一空间的导航网格和全视角空间内空间的静态网格,显示沿虚拟角色的站立方向延伸,覆盖第一空间的导航网格、以及第二空间的静态网格的多个预计算单元格;
其中,第一空间为视角受限空间内未与全视角空间重叠的空间;第二空间为全视角空间内未与视角受限空间重叠的空间;导航网格,用于表征虚拟角色在视角受限空间的可达区域;静态网格,用于表征空间中静态对象的对象轮廓;
步骤S704,响应于视角空间的优先级参数输入事件,显示视角受限空间和全视角空间各自的优先级参数;
步骤S705,在视角受限空间的优先级高于全视角空间的优先级的情况下,对应于视角受限空间和全视角空间的重叠空间中的导航网格,显示沿虚拟角色的站立方向延伸,覆盖该重叠空间的导航网格的多个预计算单元格;
其中,优先级通过优先级参数表征;
步骤S706,在全视角空间的优先级高于视角受限空间的优先级的情况下,对应于视角受限空间和全视角空间的重叠空间中的静态网格,显示沿虚拟角色的站立方向延伸,覆盖该重叠空间的静态网格的多个预计算单元格。
步骤S707,对应于虚拟角色的运动轨迹网格,显示沿虚拟角色的站立方向延伸,覆盖该运动轨迹网格的多个预计算单元格;
其中,运动轨迹网格用于表征虚拟角色在虚拟场景中脱离地面运动的运动轨迹。
在一些实施例中,如图8所示,本申请还提供了一种预计算单元格生成方法,以该方法应用于图1中的服务端104为例进行说明,包括以下步骤:
步骤S802,获取针对虚拟角色所在虚拟场景的视角空间参数,确定虚拟场景中的视角受限空间和全视角空间。
其中,关于虚拟角色、虚拟场景、视角空间参数、视角受限空间和全视角空间等的限定参见上文,此处不再赘述。具体地,服务端可以获取针对虚拟角色所在虚拟场景的视角空间参数,在虚拟场景中确定视角受限空间和全视角空间。
服务端在虚拟场景中确定视角受限空间和全视角空间的具体方式并不唯一。例如,可以由开发人员确定视角空间的参数,并将视角空间参数输入服务端,由服务端按照输入的参数在虚拟场景中确定视角受限空间和全视角空间;也可以由开发人员通过拖动鼠标在虚拟场景中绘制出视角受限空间和全视角空间各自对应的线框;还可以由服务端根据虚拟场景的场景组成元素的可达范围属性参数,确定虚拟场景中所包含的视角受限元素和全视角元素,进而在虚拟场景中确定包含视角受限元素的视角受限空间、以及包含全视角元素的全视角空间。
步骤S804,根据视角受限空间和全视角空间在虚拟场景中各自的位置,确定视角受限空间内未与全视角空间重叠的第一空间、以及全视角空间内未与视角受限空间重叠的第二空间。
步骤S806,对应于视角受限空间内第一空间的导航网格和全视角空间内第二空间的静态网格,生成沿虚拟角色的站立方向延伸,覆盖第一空间的导航网格、以及第二空间的静态网格的多个预计算单元格。
其中,导航网格,用于表征虚拟角色在视角受限空间的可达区域;静态网格,用于表征空间中静态对象的对象轮廓。预计算单元格是PVS计算的最小计算单位。虚拟角色的站立方向,是指左手坐标系中的Z方向。
具体地,服务端根据视角受限空间和全视角空间在虚拟场景中各自的位置,可以确定视角受限空间内未与全视角空间重叠的第一空间、以及全视角空间内未与视角受限空间重叠的第二空间,然后,对应于视角受限空间内第一空间的导航网格,生成沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖该第一空间的导航网格;对应于全视角空间内第二空间的静态网格,生成沿虚拟角色的站立方向延伸的多个预计算单元格,以覆盖该第二空间的静态网格。在视角受限空间和全视角空间存在重叠空间的情况下,对于视角受限空间和全视角空间的重叠空间,服务端可以对应于该重叠空间中的导航网格和静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格;也可以对应于该重叠空间中的导航网格或静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格。
进一步地,可视性单元格的生成算法并不唯一。以第二空间为例,服务端可以以虚拟角色的站立方向上静态网格的表面网格平面为起始面,沿虚拟角色的站立方向延伸,生成多个预计算单元格;也可以根据虚拟角色的站立方向上静态网格的表面网格平面在虚拟场景中的位置信息、以及预计算单元格参数信息,确定用于覆盖该表面网格平面的多个预计算单元格的起始位置和数量,再对应于该起始位置和数量,生成沿虚拟角色的站立方向延伸的多个预计算单元格。
上述预计算单元格生成方法,获取针对虚拟角色所在虚拟场景的视角空间参数,确定虚拟场景中的视角受限空间和全视角空间;根据视角受限空间和全视角空间在虚拟场景中各自的位置,确定视角受限空间内未与全视角空间重叠的第一空间、以及全视角空间内未与视角受限空间重叠的第二空间;对应于视角受限空间内第一空间的导航网格和全视角空间内第二空间的静态网格,生成沿虚拟角色的站立方向延伸,覆盖第一空间的导航网格、以及第二空间的静态网格的多个预计算单元格。由于静态网格用于表征空间中静态对象的对象轮廓,则静态网格可以相对准确地表征虚拟角色在全视角空间的可达区域,并且,导航网格用于表征虚拟角色在视角受限空间的可达区域,采用上述方法可以提高预计算单元格对虚拟场景下虚拟角色的可达区域的覆盖度,进而提高预计算单元格与虚拟场景的匹配度。
在一些实施例中,步骤S802包括:获取虚拟角色所在虚拟场景中场景组成元素的可达范围属性参数;基于可达范围属性参数以及场景组成元素在虚拟场景中的位置,生成视角空间参数;基于视角空间参数,从虚拟场景中,确定出包含视角受限元素的视角受限空间以及包含全视角元素的全视角空间。
其中,可达范围属性参数用于表征虚拟角色在场景组成元素中的空间可达程度,空间可达程度包括部分视角可达和全视角可达。开发人员可以通过标定场景组成元素中的可达区域,确定该场景组成元素的克大范围属性参数。
视角受限元素的空间可达程度为部分视角可达,也即,视角受限元素所在区域对虚拟角色的运动轨迹存在限制,空间可达程度小于100%。例如,房屋的屋顶和墙壁可以是虚拟角色的不可达区域,街道中的建筑物可以是虚拟角色的不可达区域,桥梁的桥墩、绳索等可以是虚拟角色的不可达区域,因此,房屋、街道和桥梁均为虚拟场景中的视角受限元素。全视角元素的空间可达程度为全视角可达,也即,全视角元素所在区域对虚拟角色的运动轨迹不进行限制,空间可达程度为100%,虚拟角色可以接触到全视角元素所在区域内所包含的所有静态对象。例如,虚拟角色可以接触到室外空旷地的所有地面元素,包括泥土、草等,则,室外空旷地为虚拟场景中的全视角元素。
具体地,服务端可以获取虚拟角色所在虚拟场景中场景组成元素的可达范围属性参数;基于可达范围属性参数以及场景组成元素在虚拟场景中的位置,生成视角空间参数;基于视角空间参数,从虚拟场景中,确定出包含视角受限元素的视角受限空间以及包含全视角元素的全视角空间。示例性的,服务端可以通过获取虚拟场景的场景图像,对场景图像进行语义分析和图像识别,确定虚拟场景中所包含的场景组成元素,进而根据各场景组成元素对虚拟角色的运动轨迹限制类型,确定各场景组成元素各自的空间可达程度,再从虚拟场景中,确定出包含空间可达程度为部分视角可达视角受限元素的视角受限空间,以及包含空间可达程度为全视角可达全视角元素的全视角空间。服务端也可以通过获取虚拟场景的场景数据,对该场景数据进行解析处理,确定构建该虚拟场景的过程中所定义的场景组成元素的可达范围属性参数,进而基于各场景组成元素各自的可达范围属性参数,在虚拟场景中确定出视角受限空间和全视角空间。
实际应用中,虚拟场景所包含的视角受限元素和全视角元素的形状是变化的,但是视角空间的形状可能受限,例如在一些场景下视角空间被定义为长方体空间,基于此,在确定虚拟场景中所包含的视角受限元素和全视角元素后,服务端可以在虚拟场景中划分出至少包含视角受限区域的视角受限空间、以及至少包含全视角区域的全视角空间。也即,视角受限空间的范围应大于或等于视角受限元素所在的区域,例如图3中,视角受限空间C包含视角受限元素房屋A所在的区域。同样,全视角空间的范围应大于或等于全视角元素,例如图3中,全视角空间D包含全视角元素空旷地B所在的区域。
上述实施例中,服务端根据虚拟场景中场景组成元素的可达范围属性参数,可以实现视角受限空间和全视角空间的自动划分,有利于提高预计算单元格生成过程的工作效率。
在一个实施例中,视角空间参数包括类型参数和位置参数。在该实施例的情形下,基于可达范围属性参数以及场景组成元素在虚拟场景中的位置,生成视角空间参数,包括:基于可达范围属性参数,确定视角空间的类型参数;基于场景组成元素在虚拟场景中的位置,确定视角空间的位置参数。
其中,类型参数用于表征视角空间的空间类型;空间类型包括视角受限类型和全视角类型。也即,视角空间包括视角受限空间和全视角空间。位置参数用于表征视角空间在虚拟场景中的空间位置。该位置参数可以包括空间端点、空间边界等参数中的至少一项。
具体地,服务端一方面可以基于可达范围属性参数,确定视角空间的类型参数,若可达范围属性参数所表征的空间可达程度为部分视角可达,则视角空间的空间类型为视角受限类型;若可达范围属性参数所表征的空间可达程度为全视角可达,则视角空间的空间类型为全视角类型。另一方面可以基于场景组成元素在虚拟场景中的位置,确定视角空间的位置参数。
以位置参数为空间边界的情况为例。服务端可以基于场景组成元素在虚拟场景中的元素边界,确定包含该场景组成元素的视角空间的空间边界。其中,元素边界是某一虚拟场景的场景组成元素与该虚拟场景中其他元素的分界面。其他元素例如可以是视角受限元素、全视角元素或零视角元素。该零视角元素如可以是深渊、丛林等虚拟场景中被配置为虚拟角色无法进入的场景组成元素。不同场景组成元素的元素边界可以不同,例如,室内空间的区域边界可以是墙壁,街道的区域边界可以是街道两侧的建筑物,空旷草地的区域边界可以是草地边缘,结冰湖面的区域边界可以是冰块边缘,等等。服务端根据元素边界确定空间边界的具体方式并不唯一。以视角受限空间为例,服务端可以将视角受限元素的元素边界,确定为至少包括该视角受限元素的视角受限空间的空间边界,也即,视角受限空间和视角受限元素的边界重合;也可以将视角受限元素的元素边界向远离视角受限元素的方向移动后得到的更新边界,确定为至少包括该视角受限元素的视角受限空间的空间边界,也即,视角受限元素在视角受限空间内。
本实施例中,基于可达范围属性参数,确定视角空间的类型参数,基于场景组成元素在虚拟场景中的位置,确定视角空间的位置参数,可以提高基于划分后得到的视角空间所确定的预计算单元格与虚拟场景的匹配度。
如前文所述的,针对视角受限空间和全视角空间的重叠空间,服务端可以基于重叠空间所关联的视角受限空间和全视角空间各自的优先级,对应于优先级较高的目标视角空间的目标网格,生成沿虚拟角色的站立方向延伸的多个预计算单元格,覆盖该重叠空间中的目标网格。基于此,针对视角受限空间和全视角空间的重叠空间,服务端还需要对该重叠空间所关联的视角受限空间和全视角空间进行去重处理,以得到视角空间去重的预计算可视性空间,便于后续在预计算可视性空间中生成预计算单元格。
在一些实施例中,预计算单元格生成方法还包括:在视角受限空间和全视角空间存在重叠空间的情况下,获取视角受限空间和全视角空间各自的优先级参数;基于各优先级参数各自表征的优先级,从视角受限空间和全视角空间中确定优先级最高的目标视角空间、以及除目标视角空间以外的非目标视角空间;从非目标视角空间删除重叠空间所在的空间,得到视角空间去重的预计算可视性空间,以在预计算可视性空间中生成预计算单元格。
其中,预计算可视性空间是预计算可视性体积所表征的空间范围。优先级参数可以包括空间优先级参数和类型优先级参数中的至少一种,对应地,优先级参数所表征的优先级可以包括空间优先级参数所表征的空间优先级、以及类型优先级参数所表征的类型优先级中的至少一种。该空间优先级参数可以通过视角空间的优先级标识表征,该优先级标识例如可以是数字,且数字的数值越小空间优先级越高。类型优先级参数可以通过类型参数、以及各类型参数各自的类型优先级进行表征,例如,视角受限类型的类型优先级高于全视角类型的类型优先级,或者,全视角类型的类型优先级高于视角受限类型的类型优先级。为便于理解,下面均以视角受限类型的类型优先级高于全视角类型的类型优先级为例进行说明。
可以理解,同一虚拟场景下的多个视角受限空间的类型优先级参数相同,空间优先级参数可以相同,也可以不相同。类似的,同一虚拟场景下的多个全视角空间的类型优先级参数相同,空间优先级参数可以相同,也可以不相同。例如,全视角空间D1的空间优先级为1级,类型优先级为2级;全视角空间D2的空间优先级为2级,类型优先级为2级;视角受限空间C1的空间优先级为2级,类型优先级为1级。
在一个具体的应用中,视角空间的命名中可以包含优先级参数,开发人员可以通过定义视角空间的名称,确定视角空间的优先级参数。示例性的,视角空间的名称可以包括CustomName、GenerateType和Pri等字段。其中,CustomName用于承载开发人员的用户名;GenerateType用于承载与空间类型匹配的网格类型,包括视角受限空间的导航网格(NavMesh)、以及全视角空间的静态网格(StaticMesh);Pri用于承载空间优先级,可以通过0、1、2等数字标识。例如,全视角空间“Demo_StaticMesh_1”的空间优先级为1级,类型优先级为2级;视角受限空间“Demo_NavMesh_1”的空间优先级为1级,类型优先级为1级。
具体地,在视角受限空间和全视角空间存在重叠空间的情况下,服务端可以响应于视角空间的优先级参数输入事件,获取视角受限空间和全视角空间各自的优先级参数;也可以通过读取视角空间的命名,获取视角受限空间和全视角空间各自的优先级参数。在获取优先级参数后,服务端再基于各优先级参数各自表征的优先级,从视角受限空间和全视角空间中确定优先级最高的目标视角空间、以及除目标视角空间以外的非目标视角空间。从非目标视角空间删除重叠空间所在的空间,得到视角空间去重的预计算可视性空间,以在预计算可视性空间中生成预计算单元格。
示例性的,服务端可以在构成非目标视角空间的多个子空间中,删除与重叠空间重合的重合子空间。如图9所示,对于全视角空间“Demo_StaticMesh_0”和视角受限空间“Demo_NavMesh_0”的重叠空间H,由于全视角空间“Demo_StaticMesh_0”和视角受限空间“Demo_ NavMesh _0”的空间优先级相同,视角受限空间“Demo_NavMesh_0”的类型优先级高于全视角空间“Demo_StaticMesh_0”的类型优先级,因此,视角受限空间“Demo_NavMesh_0”为对应于重叠空间H的目标视角空间,需要删除全视角空间“Demo_StaticMesh_0”中与重叠空间H重合的重合子空间。
上述实施例中,对于重叠空间,基于与该重叠空间关联的各视角空间各自的优先级,确定各视角空间中优先级最高的目标视角空间,从非目标视角空间删除重叠空间所在的空间,得到视角空间去重的预计算可视性空间,以在预计算可视性空间中生成预计算单元格,可以确保后续在重叠空间不会重复生成预计算单元格,进而降低PVS计算结果的内存占用量。
需要说明的是,在优先级参数包括空间优先级参数和类型优先级参数的情况下,服务端可以基于优先级参数所表征的空间优先级和类型优先级,确定优先级最高的目标视角空间。示例性地,服务端可以根据空间优先级和类型优先级各自的权重,通过加权求和确定各视角空间各自的综合优先级,进而确定综合优先级最高的目标视角空间;服务端也可以先根据空间优先级和类型优先级中的其中一个,先确定空间优先级或类型优先级最高的选定视角空间,若选定视角空间的数量为多个,再根据空间优先级和类型优先级中的另一个,从各选定视角空间中确定目标视角空间。
在一个实施例中,优先级参数包括空间优先级参数和类型优先级参数;优先级包括空间优先级参数所表征的空间优先级、以及类型优先级参数所表征的类型优先级。在该实施例的情形下,基于各优先级参数各自表征的优先级,从视角受限空间和全视角空间中确定优先级最高的目标视角空间,包括:确定视角受限空间和全视角空间中空间优先级最高的选定视角空间;若选定视角空间的数量为一个,则将该选定视角空间确定为目标视角空间;若该选定视角空间的数量为多个,则从各选定视角空间中确定类型优先级最高的目标视角空间。
如前文所述的,在同一虚拟场景中,视角受限空间和全视角空间各自的数量,可以是一个,也可以是多个,且各视角受限空间和各全视角空间中的任意两个视角空间,均可以存在重叠空间。也即,针对某一重叠空间,可能同时关联至少两个视角受限空间,或者,同时关联至少两个全视角空间。具体到本申请,同一重叠空间至少关联两个视角空间,且该重叠空间所关联的各视角空间中,包括至少一个视角受限空间、以及至少一个全视角空间。
具体地,服务端可以先进行空间优先级的判别,确定视角受限空间和全视角空间中空间优先级最高的选定视角空间,若选定视角空间的数量为一个,则将该选定视角空间确定为目标视角空间。示例性的,针对全视角空间“Demo_StaticMesh_2”、视角受限空间“Demo_NavMesh_2”和全视角空间“Demo_StaticMesh_1”的重叠空间,将空间优先级最高的全视角空间“Demo_StaticMesh_1”确定为目标视角空间。进一步地,由于各视角空间的空间优先级可能相同,因此,存在空间优先级最高的选定视角空间的数量大于一个的情况。此时,服务端再进行类型优先级的判别,从各选定视角空间中确定类型优先级最高的目标视角空间。示例性的,针对全视角空间“Demo_StaticMesh_1”、视角受限空间“Demo_NavMesh_1”和全视角空间“Demo_StaticMesh_2”的重叠空间,空间优先级最高的选定视角空间包括全视角空间“Demo_StaticMesh_1”和视角受限空间“Demo_NavMesh_1”,将二者中类型优先级较高的视角受限空间“Demo_NavMesh_1”确定为目标视角空间。
需要说明的是,若选定视角空间中最高类型优先级的视角空间的数量为多个,例如,在视角受限空间的类型优先级高于全视角空间的类型优先级的情况下,选定视角空间中包括多个视角受限空间。由于这些视角空间的空间类型相同,在重叠空间中所包含的与空间类型对应的网格完全一致,因此,在该重叠空间中对应于这些视角空间中的任意一个所生成的预计算单元格也相同,基于此,服务端可以将这些视角空间中的任意一个确定为目标视角空间。
本实施例中,从空间优先级和类型优先级等多个维度确定目标视角空间,可以提高目标视角空间的确定结果的准确性,进而提高基于目标视角空间的网格所生成的重叠空间的预计算单元格的准确性。
如前文所述的,针对与同一重叠空间中关联的各视角空间中的非目标视角空间,可以从非目标视角空间删除重叠空间所在的空间,以避免冲突。在一个实施例中,从非目标视角空间删除重叠空间所在的空间,包括:基于重叠空间和非目标视角空间在虚拟场景中各自的位置,确定重叠空间的边界面在非目标视角空间中的延伸面;基于该延伸面对非目标视角空间进行拆分处理,得到非目标视角空间对应的多个非目标子空间;删除各非目标子空间中与重叠空间重合的重合子空间。
具体地,服务端可以基于重叠空间和非目标视角空间在虚拟场景中各自的位置,确定重叠空间的边界面在非目标视角空间中的延伸面。若确定的延伸面包括重叠空间的所有边界面的延伸面,则服务端可以基于该延伸面对非目标视角空间进行拆分处理,得到非目标视角空间对应的多个非目标子空间,并删除各非目标子空间中与重叠空间重合的重合子空间。若确定的延伸面包括重叠空间的一部分边界面的延伸面,则服务端可以基于确定的延伸面、以及各边界面中与延伸面不共面的另一部分边界面,对非目标视角空间进行拆分处理,得到非目标视角空间对应的多个非目标子空间,并删除各非目标子空间中与重叠空间重合的重合子空间。
本实施例中,基于重叠空间的边界面在非目标视角空间中的延伸面对非目标视角空间进行拆分后再进行去重处理,算法简单,有利于提高预计算单元格生成效率。
在一个具体的应用中,重叠空间为长方体空间。在该实施例的情形下,基于延伸面对非目标视角空间进行拆分处理,得到非目标视角空间对应的多个非目标子空间,包括:基于重叠空间在非目标视角空间的第一延伸面,对非目标视角空间进行拆分处理,得到与重叠空间存在重叠的第一重叠子空间、以及与重叠空间不存在重叠的第一独立子空间;基于重叠空间在第一重叠子空间的第二延伸面,对第一重叠子空间进行拆分处理,得到与重叠空间存在重叠的第二重叠子空间、以及与重叠空间不存在重叠的第二独立子空间;基于重叠空间垂直于第三坐标轴方向的第三边界面,对第二重叠子空间进行拆分处理,得到与重叠空间重合的重合子空间、以及与重叠空间不存在重叠的第三独立子空间;将第一独立子空间、第二独立子空间、重合子空间以及第三独立子空间,确定为非目标视角空间对应的多个非目标子空间。
其中,第一延伸面为重叠空间垂直于第一坐标轴方向的第一边界面的延伸面;第二延伸面为重叠空间垂直于第二坐标轴方向的第二边界面在第一重叠子空间中的延伸面。第一坐标轴、第二坐标轴和第三坐标轴共同构成虚拟场景中的空间坐标系。
具体地,服务端可以基于重叠空间在非目标视角空间的第一延伸面,对非目标视角空间进行拆分处理,得到与重叠空间存在重叠的第一重叠子空间、以及与重叠空间不存在重叠的第一独立子空间。可以理解,若重叠空间与非目标视角空间垂直于第一坐标轴方向的各边界面中,存在一组共面的边界面,即重叠空间位于非目标视角空间垂直于第一坐标轴方向的边缘,则第一延伸面的数量为一个,第一独立子空间的数量也为一个。若重叠空间位于非目标视角空间的内部,则第一延伸面的数量为两个,基于这两个第一延伸面可以将非目标视角空间拆分成一个重叠子空间和两个独立子空间。
然后,服务端再基于重叠空间在第一重叠子空间的第二延伸面,对第一重叠子空间进行拆分处理,得到与重叠空间存在重叠的第二重叠子空间、以及与重叠空间不存在重叠的第二独立子空间。同样的,若重叠空间与非目标视角空间垂直于第二坐标轴方向的各边界面中,存在一组共面的边界面,即重叠空间位于非目标视角空间垂直于第二坐标轴方向的边缘,则第二延伸面的数量为一个,第二独立子空间的数量也为一个。若重叠空间位于非目标视角空间的内部,则第二延伸面的数量为两个,基于这两个第二延伸面可以将第一重叠子空间拆分成一个重叠子空间和两个独立子空间。
接着,服务端基于重叠空间垂直于第三坐标轴方向的第三边界面,对第二重叠子空间进行拆分处理,得到与重叠空间重合的重合子空间、以及与重叠空间不存在重叠的第三独立子空间。最后,服务端将第一独立子空间、第二独立子空间、重合子空间以及第三独立子空间,确定为非目标视角空间对应的多个非目标子空间。
下面结合图10和图11,以重叠空间位于非目标视角空间内部,且第一坐标轴方向为Z轴方向、第二坐标轴方向为Y轴方向、第三坐标轴方向为X轴方向的情况为例,对非目标视角空间的拆分过程进行说明。如图10所示,重叠空间I位于非目标视角空间J的内部。服务端可以基于重叠空间I中垂直于Z方向的边界面I1和I2在非目标视角空间J内各自的延伸面J1和J2,将非目标视角空间J拆分成与重叠空间I不存在重叠的独立子空间K1和K2,以及与重叠空间I存在重叠的重叠子空间K3。然后,服务端再基于重叠空间I中垂直于Y方向的边界面I3和I4在重叠子空间K3内各自的延伸面J3和J4,将重叠子空间K3拆分成与重叠空间I不存在重叠的独立子空间K31和K32,以及与重叠空间I存在重叠的重叠子空间K33。最后,服务端再基于重叠空间I垂直于X方向的两个边界面,对重叠子空间K33进行拆分处理,得到与重叠空间I重合的重合子空间K333、以及与重叠空间不存在重叠的独立子空间K331和K332。如图11所示,重叠子空间K33在XY平面上的投影包括五个区域,分别对应五个子空间。也即,通过拆分之后,将非目标视角空间J划分成了七个非目标子空间,其中包括六个独立子空间和一个重合子空间,该重合子空间将会被删除。
本实施例中,针对长方体的重叠空间,基于各方向上的延伸面依次进行空间拆分,可以确保拆分后留存的各独立子空间的数量相对较少,便于后续预计算单元格的生成。
在一些实施例中,生成预计算单元格的过程,包括:基于虚拟角色在虚拟场景中的站立方向,确定虚拟场景中目标网格的网格平面;根据网格平面在虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖目标网格的多个预计算单元格的单元格位置参数;基于各单元格位置参数,生成沿站立方向上延伸,覆盖目标网格的多个预计算单元格。
其中,目标网格包括视角受限空间内第一空间的导航网格、以及全视角空间内第二空间的静态网格。相邻的各预计算单元格互不重叠。单元格位置参数可以包括单元格起始位置、以及各方向上的预计算单元格的数量,单元格位置参数也可以是每一预计算单元格在虚拟场景中各自的位置信息。该起始位置是指第一个预计算单元格的摆放位置,该数量包括空间坐标系下三个正交方向上的数量,可以理解,确定了预计算单元格的起始位置和数量,相当于确定了需要生成的多个预计算单元格在虚拟场景中的阵列排列方式。
具体地,服务端可以基于虚拟角色在虚拟场景中的站立方向,确定虚拟场景中目标网格在站立方向上的网格平面。可以理解,这些网格平面是目标网格的表面网格平面,也即,用于表征虚拟角色能够到达并接触的平面的网格,例如,地面网格平面、湖面网格平面或者可以攀爬的墙面网格平面,等等。然后,服务端根据网格平面在虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖目标网格的多个预计算单元格的单元格位置参数。最后,服务端基于各单元格位置参数,按照相邻的各预计算单元格互不重叠的原则,生成沿站立方向上延伸,覆盖目标网格的多个预计算单元格。
需要说明的是,对应于同一目标网格,通常存在多个网格平面,如图4中地面的导航网格E中的多个三角面。服务端可以针对目标网格的每一网格平面在虚拟场景中的各自位置信息、以及预计算单元格参数,分别确定用于覆盖每一网格平面的预计算单元格,进而获得覆盖目标网格的多个预计算单元格。覆盖目标网格的多个预计算单元格,也即覆盖目标网格的所有网格平面的多个预计算单元格。
上述实施例中,先确定目标网格的网格平面,再基于网格平面的位置信息、以及预计算单元格参数,确定用于覆盖目标网格的多个预计算单元格的单元格位置参数,再生产互不重叠的覆盖目标网格的多个预计算单元格,可以避免PVS数据的重复计算,有利于提高数据处理效率。
在一些实施例中,预计算单元格参数包括预计算单元格的栅格构成、以及用于构成预计算单元格的各栅格在虚拟场景中各自的栅格位置。在该实施例的情形下,根据网格平面在虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖目标网格的多个预计算单元格的起始位置和数量,包括:基于网格平面在虚拟场景中的位置信息,确定网格平面在虚拟场景的任一坐标平面的平面投影区域、以及垂直于该坐标平面的高度区间;根据各栅格在虚拟场景中各自的栅格位置,确定各栅格中与该平面投影区域和该高度区间匹配的目标栅格;根据各目标栅格在虚拟场景中的位置、以及预计算单元格的栅格构成,确定用于覆盖目标网格的多个预计算单元格的起始位置和数量。
其中,预计算单元格的栅格构成,包括预计算单元格各个方向上的栅格数量和堆叠方式。示例性的,如图12所示,预计算单元格G1可以包括按照2*2*2的方式整齐堆叠的8个栅格,依次为g1-g8(图10中仅示出了g1和g2)。可以理解,虚拟场景所在的三维虚拟空间,可以表征成多个栅格构成的空间,且栅格中同一顶点的三条边分别平行于三维虚拟空间的三个坐标轴方向。也即,用于构成预计算单元格的栅格,在虚拟场景中都对应唯一的栅格位置。每一预计算单元格包括各目标栅格中的至少一个。
具体地,服务端可以基于网格平面在虚拟场景中的位置信息,确定网格平面在虚拟场景的任一坐标平面的平面投影区域,以及该网格平面在虚拟场景中垂直于该坐标平面的高度区间。该高度区间可以通过高度图描述。高度图是用于描述虚拟场景中网格表面所占据的高度区间的图示,高度图可以通过栅格进行离散化的表达。然后,服务端根据各栅格在虚拟场景中各自的栅格位置,确定各栅格中与该平面投影区域和该高度区间匹配的目标栅格。也即,目标栅格与网格平面在坐标平面的平面投影区域匹配,且目标栅格与网格平面在垂直于该坐标平面的高度区间匹配。目标栅格可以是与网格平面相交、相邻的栅格,也可以是与网格平面之间的距离,小于网格平面垂直于该坐标平面的高度区间的栅格。最后,服务端根据各目标栅格在虚拟场景中的位置、以及预计算单元格的栅格构成,可以确定用于覆盖目标网格的多个预计算单元格的起始位置和数量。确定的每一预计算单元格包括各目标栅格中的至少一个。
上述实施例中,基于网格平面在任一坐标平面的平面投影区域、以及垂直于该坐标平面的高度区间,确定目标栅格,进而确定至少包括一个目标栅格的,用于覆盖该网格平面所在的目标网格的多个预计算单元格,可以确保预计算单元格对目标网格的覆盖度。
在一个具体的应用中,根据各栅格在虚拟场景中各自的栅格位置,确定各栅格中与平面投影区域和高度区间匹配的目标栅格,包括:根据各栅格在虚拟场景中各自的栅格位置,确定每一栅格在坐标平面上各自的栅格投影区域;从各栅格投影区域中,确定与平面投影区域的重叠面积满足面积条件的选定栅格投影区域;将虚拟场景中,位于高度区间内的选定栅格确定为目标栅格。
其中,选定栅格在坐标平面上的投影区域为选定栅格投影区域。重叠面积满足面积条件,可以是指重叠面积大于设定面积,或者重叠面积大于或等于设定面积,也可以是指重叠面积与栅格投影面积的比例大于设定比例、或者大于或等于设定比例。该面积条件可以由开发人员根据实际场景的需求确定。
具体地,服务端根据各栅格在虚拟场景中各自的栅格位置,可以确定每一栅格在坐标平面上各自的栅格投影区域。然后,服务端将该栅格投影区域和网格平面的平面投影区域叠加显示,可以确定每一栅格的栅格投影区域与平面投影区域的重叠面积,进而从各栅格投影区域中,确定与平面投影区域的重叠面积满足面积条件的选定栅格投影区域。最后,服务端将虚拟场景中,位于高度区间内的选定栅格确定为目标栅格。示例性的,如图13所示,针对目标网格的某一网格平面,可以将该网格平面投影到XY平面上,以确定该网格平面在XY平面上的选定栅格投影区域,如图13中阴影部分的栅格投影区域,然后,再根据该网格平面在Z方向上的高度区间,从选定投影区域对应的各选定栅格中确定目标栅格。
本实施例中,根据同一坐标平面中栅格投影区域和平面投影区域的重叠面积,确定选定栅格投影区域,再从投影区域为选定栅格投影区域的选定栅格中确定目标栅格,算法简单,有利于提高效率。
在一些实施例中,预计算单元格参数包括预计算单元格的栅格构成、以及用于构成该预计算单元格的各栅格在虚拟场景中各自的栅格位置;单元格位置参数包括每一预计算单元格在虚拟场景中各自的单元格位置信息。在该实施例的情形下,根据网格平面在虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖所述目标网格的多个预计算单元格的单元格位置参数,包括:基于网格平面在虚拟场景中的位置信息,确定该网格平面在虚拟场景的任意两个坐标平面各自的平面投影区域;针对每一平面投影区域,根据各栅格在虚拟场景中各自的栅格位置,确定每一栅格在该平面投影区域所在的坐标平面上各自的栅格投影区域;从各栅格投影区域中,确定与平面投影区域关联的目标栅格投影区域、以及由各目标栅格投影区域共同表征的目标栅格的栅格位置信息;根据各栅格位置信息、以及预计算单元格的栅格构成,确定用于覆盖目标网格的多个预计算单元格中每一预计算单元格在虚拟场景中各自的单元格位置信息。
其中,每一预计算单元格包括各目标栅格中的至少一个。目标栅格在坐标平面内的栅格投影区域,与该坐标平面内网格平面的平面投影区域相交、相邻或在该平面投影区域内。在一个具体的应用中,目标栅格在坐标平面内的栅格投影区域,与该坐标平面内网格平面的平面投影区域的重叠面积满足面积条件,关于面积条件的具体限定参见上文,此处不再赘述。
具体地,服务端可以基于网格平面在虚拟场景中的位置信息,确定该网格平面在虚拟场景的任意两个坐标平面各自的平面投影区域。然后,服务端针对每一平面投影区域,根据各栅格在虚拟场景中各自的栅格位置,确定每一栅格在该平面投影区域所在的坐标平面上各自的栅格投影区域。接着,服务端从各栅格投影区域中,确定与平面投影区域关联的目标栅格投影区域。服务端根据两个坐标平面内各自的目标栅格投影区域,可以确定由各坐标平面各自的目标栅格投影区域共同表征的目标栅格的栅格位置信息。以两个坐标平面为XY平面和XZ平面为例,如图13所示,根据网格平面和各栅格各自在XY平面的投影,可以确定该平面内的目标栅格投影区域,如阴影部分所示,该目标栅格投影区域可以表征目标栅格在X轴方向和Y轴方向上的位置信息。同样的,XZ平面上的目标栅格投影区域可以表征目标栅格在X轴方向和Z轴方向上的位置信息。通过目标栅格在X轴方向上的位置信息,可以建立两个坐标平面上的目标栅格投影区域之间的关联,确定各坐标平面上同一目标栅格的投影区域,这样,就可以确定目标栅格在虚拟场景中的栅格位置信息。最后,服务端可以根据各目标栅格在虚拟场景中各自的栅格位置信息、以及预计算单元格的栅格构成,确定用于覆盖所述目标网格的多个预计算单元格中每一预计算单元格在虚拟场景中各自的单元格位置信息。该单元格位置信息用于表征该预计算单元格在X、Y和Z轴方向上各自的位置。
本实施例中,根据网格平面和各栅格分别在任意两个坐标平面中的投影区域,确定多个预计算单元格中每一预计算单元格在虚拟场景中各自的单元格位置信息,对应于网格平面的每一位置,沿虚拟角色的站立方向延伸,都可以确定覆盖该位置的唯一的预计算单元格,可以在确保预计算单元格覆盖网格平面的同时,避免生成多余的预计算单元格,有利于减少内存的占用,提高效率。
在一些实施例中,如图14所示,提供了一种预计算单元格生成方法,包括以下步骤:
步骤S1401,获取虚拟角色所在虚拟场景中场景组成元素的可达范围属性参数;
其中,可达范围属性参数用于表征虚拟角色在场景组成元素中的空间可达程度,空间可达程度包括部分视角可达和全视角可达;
步骤S1402,基于可达范围属性参数,确定视角空间的类型参数;基于场景组成元素在虚拟场景中的位置,确定视角空间的位置参数;
其中,类型参数用于表征视角空间的空间类型;空间类型包括视角受限类型和全视角类型;位置参数用于表征视角空间在虚拟场景中的空间位置;
步骤S1403,基于位置参数和类型参数,从虚拟场景中,确定出包含视角受限元素的视角受限空间、以及包含全视角元素的全视角空间;
其中,视角受限元素的空间可达程度为部分视角可达;全视角元素的空间可达程度为全视角可达;
步骤S1404,根据视角受限空间和全视角空间在虚拟场景中各自的位置,判断视角受限空间和全视角空间是否存在重叠空间;
步骤S1405,在所述视角受限空间和所述全视角空间不存在重叠空间的情况下,对应于视角受限空间的导航网格和全视角空间的静态网格,生成沿虚拟角色的站立方向延伸,覆盖该导航网格和该静态网格的多个预计算单元格;
其中,导航网格,用于表征虚拟角色在视角受限空间的可达区域;静态网格,用于表征空间中静态对象的对象轮廓;
步骤S1406,在视角受限空间和全视角空间存在重叠空间的情况下,获取视角受限空间和全视角空间各自的优先级参数;
其中,优先级参数包括空间优先级参数和类型优先级参数;优先级包括空间优先级参数所表征的空间优先级、以及类型优先级参数所表征的类型优先级;
步骤S1407,确定视角受限空间和全视角空间中空间优先级最高的选定视角空间;
步骤S1408,若选定视角空间的数量为一个,则将该选定视角空间确定为目标视角空间;若该选定视角空间的数量为多个,则从各选定视角空间中确定类型优先级最高的目标视角空间;
步骤S1409,所述重叠空间和非目标视角空间在虚拟场景中各自的位置,确定重叠空间的边界面在非目标视角空间中的延伸面;
步骤S1410,基于延伸面对非目标视角空间进行拆分处理,得到非目标视角空间对应的多个非目标子空间;
步骤S1411,删除各非目标子空间中与重叠空间重合的重合子空间,得到去重后的更新视角受限空间和更新全视角空间;
步骤S1412,对应于更新视角受限空间的导航网格、以及更新全视角空间的静态网格,生成沿虚拟角色的站立方向延伸,覆盖该导航网格和该静态网格的多个预计算单元格。
可以理解,在虚拟场景中,通常同时存在视角受限元素和全视角元素。若在划定的预计算可视性体积的范围内,基于静态网格生成PVS的多个预计算单元格,则会在视角受限元素的虚拟角色的不可达区域也生成预计算单元格,造成内存和包体的浪费。例如,图15的左图中,圆台外围的装饰物L1为不可达区域,生成的预计算单元格M1为无用单元格。又如,图16的左图中,场景中墙壁上的装饰物件也生成了不必要的单元格。若在划定的预计算可视性体积的范围内,基于导航网格生成PVS的多个预计算单元格,虽然能控制预计算单元格的生成数量,但对于开放世界的场景,又会出现预计算单元格覆盖不全的情况。基于此,本申请中,采用混合策略生成预计算单元格。对应于图3中虚拟角色活动空间受限的房屋内,基于导航网格生成预计算单元格。例如,图15的右图中,只有圆台上覆盖了预计算单元格,避免了在圆台外围的装饰物L1等虚拟角色不可达区域生成无效单元格。又如,图16的右图中,只有地面上方覆盖了预计算单元格,避免了在房顶等虚拟角色不可达区域生成无效单元格。而对于房屋外面的空旷地,由于不限制虚拟角色的可达区域,根据地形的静态网格生成预计算单元格。
采用本申请的方案,既能确保预计算单元格对虚拟场景中角色可达区域的覆盖度,又能有效避免无效单元格的生成。将本申请的方案应用于开放大世界的应用场景,由于开发大世界拥有更复杂的美术场景,给玩家提供了广泛的探索空间,是游戏发展的趋势。PVS作为在开发大世界应用的一项重要技术,其关键在于减少虚拟场景中的无效cell生成和增加有效cell的分布。采用本申请的方案可以达到这一目标。进一步地,在一些自由度比较高的玩法中,存在一些较大的区域是不限制虚拟角色的运动轨迹的,即存在非受限场景,此时NavMesh并不能覆盖所有的角色可达区域,可以根据场景中的StaticMesh来生成cell,去覆盖虚拟角色在游戏中所有可能接触到的物件、地形等。此外,将本申请的方案应用于室内和街道等受限场景,虚拟角色在这些地方行走的范围是完全可预知的。具体来说,在多层室内场景里,角色会在每一层楼自由行动,但是一般来说不会攀爬室内的墙壁或者窗户,所以在墙壁或者窗户区域生成的将是无效格子,也会在PVS烘焙期间产生无效的计算。因此在这种场景下,划分出包含室内区域的视角受限空间,并将该视角受限空间的优先级设置为最高即可。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的预计算单元格显示方法的预计算单元格显示装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个预计算单元格显示装置实施例中的具体限定可以参见上文中对于预计算单元格显示方法的限定,在此不再赘述。
在一些实施例中,如图17所示,提供了一种预计算单元格显示装置1700,包括:视角空间显示模块1702和预计算单元格显示模块1704,其中:
视角空间显示模块1702,用于响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在虚拟场景中显示划分的视角受限空间和全视角空间;
预计算单元格显示模块1704,用于对应于视角受限空间内第一空间的导航网格和全视角空间内第二空间的静态网格,显示沿虚拟角色的站立方向延伸,覆盖第一空间的导航网格、以及第二空间的静态网格的多个预计算单元格;第一空间为视角受限空间内未与全视角空间重叠的空间;第二空间为全视角空间内未与视角受限空间重叠的空间;导航网格,用于表征虚拟角色在视角受限空间的可达区域;静态网格,用于表征空间中静态对象的对象轮廓。
在一些实施例中,视角空间显示模块1702包括:视角空间参数显示单元,用于响应于空间参数输入事件,显示至少两组视角空间参数;视角空间显示单元,用于按照至少两组视角空间参数,在虚拟场景中显示至少两个视角空间;一组视角空间参数用于表征一个视角空间的空间位置和空间类型;空间类型包括视角受限类型和全视角类型。
在一个实施例中,视角空间参数包括视角空间的位置参数、类型参数以及形状参数。在该实施例的情形下,视角空间显示单元具体用于:按照每一组视角空间参数中的位置参数、类型参数以及形状参数,在虚拟场景中显示视角空间;视角空间的空间位置为位置参数表征的位置,视角空间的空间类型为类型参数表征的类型,视角空间的空间形状为形状参数表征的形状。
在一些实施例中,视角空间显示模块1702还用于:在视角受限空间和全视角空间存在重叠空间的情况下,对应于重叠空间中的导航网格或静态网格,显示沿虚拟角色的站立方向延伸的多个预计算单元格。
在一个实施例中,视角空间显示模块1702具体用于:响应于视角空间的优先级参数输入事件,显示视角受限空间和全视角空间各自的优先级参数;在视角受限空间的优先级高于全视角空间的优先级的情况下,对应于视角受限空间和全视角空间的重叠空间中的导航网格,显示沿虚拟角色的站立方向延伸,覆盖重叠空间的导航网格的多个预计算单元格;优先级通过优先级参数表征;在全视角空间的优先级高于视角受限空间的优先级的情况下,对应于重叠空间中的静态网格,显示沿虚拟角色的站立方向延伸,覆盖重叠空间的静态网格的多个预计算单元格。
在一些实施例中,视角空间显示模块1702还用于:对应于虚拟角色的运动轨迹网格,显示沿虚拟角色的站立方向延伸,覆盖运动轨迹网格的多个预计算单元格;运动轨迹网格,用于表征虚拟角色在虚拟场景中脱离地面运动的运动轨迹。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的预计算单元格生成方法的预计算单元格生成装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个预计算单元格生成装置实施例中的具体限定可以参见上文中对于预计算单元格生成方法的限定,在此不再赘述。
在一些实施例中,如图18所示,提供了一种预计算单元格生成装置1800,包括:视角空间确定模块1802、未重叠空间确定模块1804和预计算单元格生成模块1806,其中:
视角空间确定模块1802,用于获取针对虚拟角色所在虚拟场景的视角空间参数,确定虚拟场景中的视角受限空间和全视角空间;
未重叠空间确定模块1804,用于根据视角受限空间和全视角空间在虚拟场景中各自的位置,确定视角受限空间内未与全视角空间重叠的第一空间、以及全视角空间内未与视角受限空间重叠的第二空间;
预计算单元格生成模块1806,用于对应于视角受限空间内第一空间的导航网格和全视角空间内第二空间的静态网格,生成沿虚拟角色的站立方向延伸,覆盖第一空间的导航网格、以及第二空间的静态网格的多个预计算单元格;导航网格,用于表征虚拟角色在视角受限空间的可达区域;静态网格,用于表征空间中静态对象的对象轮廓。
在一些实施例中,视角空间确定模块1802包括:可达范围属性参数获取单元,用于获取虚拟角色所在虚拟场景中场景组成元素的可达范围属性参数;可达范围属性参数用于表征虚拟角色在场景组成元素中的空间可达程度,空间可达程度包括部分视角可达和全视角可达;视角空间参数生成单元,用于基于可达范围属性参数以及场景组成元素在虚拟场景中的位置,生成视角空间参数;视角空间确定单元,用于基于视角空间参数,从虚拟场景中,确定出包含视角受限元素的视角受限空间、以及包含全视角元素的全视角空间;视角受限元素的空间可达程度为部分视角可达;全视角元素的空间可达程度为全视角可达。
在一个实施例中,视角空间参数包括类型参数和位置参数。在该实施例的情形下,视角空间参数生成单元具体用于:基于可达范围属性参数,确定视角空间的类型参数;类型参数用于表征视角空间的空间类型;空间类型包括视角受限类型和全视角类型;基于场景组成元素在虚拟场景中的位置,确定视角空间的位置参数;位置参数用于表征视角空间在虚拟场景中的空间位置。
在一些实施例中,预计算单元格生成装置1800还包括:优先级参数获取单元,用于在视角受限空间和全视角空间存在重叠空间的情况下,获取视角受限空间和全视角空间各自的优先级参数;目标视角空间确定单元,用于基于各优先级参数各自表征的优先级,从视角受限空间和全视角空间中确定优先级最高的目标视角空间、以及除目标视角空间以外的非目标视角空间;去重单元,用于从非目标视角空间删除重叠空间所在的空间,得到视角空间去重的预计算可视性空间,以在预计算可视性空间中生成多个预计算单元格。
在一个实施例中,优先级参数包括空间优先级参数和类型优先级参数;优先级包括空间优先级参数所表征的空间优先级、以及类型优先级参数所表征的类型优先级。在该实施例的情形下,目标视角空间确定单元具体用于:确定视角受限空间和全视角空间中空间优先级最高的选定视角空间;若选定视角空间的数量为一个,则将选定视角空间确定为目标视角空间;若选定视角空间的数量为多个,则从各选定视角空间中确定类型优先级最高的目标视角空间。
在一个实施例中,去重单元包括:延伸面确定子单元,用于基于重叠空间和非目标视角空间在虚拟场景中各自的位置,确定重叠空间的边界面在非目标视角空间中的延伸面;拆分子单元,用于基于延伸面对非目标视角空间进行拆分处理,得到非目标视角空间对应的多个非目标子空间;去重子单元,用于删除各非目标子空间中与重叠空间重合的重合子空间。
在一个具体的应用中,重叠空间为长方体空间,拆分子单元具体用于:基于重叠空间在非目标视角空间的第一延伸面,对非目标视角空间进行拆分处理,得到与重叠空间存在重叠的第一重叠子空间、以及与重叠空间不存在重叠的第一独立子空间;第一延伸面为重叠空间垂直于第一坐标轴方向的第一边界面的延伸面;基于重叠空间在第一重叠子空间的第二延伸面,对第一重叠子空间进行拆分处理,得到与重叠空间存在重叠的第二重叠子空间、以及与重叠空间不存在重叠的第二独立子空间;第二延伸面为重叠空间垂直于第二坐标轴方向的第二边界面的延伸面;基于重叠空间垂直于第三坐标轴方向的第三边界面,对第二重叠子空间进行拆分处理,得到与重叠空间重合的重合子空间、以及与重叠空间不存在重叠的第三独立子空间;将第一独立子空间、第二独立子空间、重合子空间以及第三独立子空间,确定为非目标视角空间对应的多个非目标子空间。
在一些实施例中,预计算单元格生成模块1806包括:网格平面确定单元,用于基于虚拟角色在虚拟场景中的站立方向,确定虚拟场景中目标网格的网格平面;目标网格包括视角受限空间内第一空间的导航网格、以及全视角空间内第二空间的静态网格;单元格位置参数确定单元,用于根据网格平面在虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖目标网格的多个预计算单元格的单元格位置参数;预计算单元格生成单元,用于各单元格位置参数,生成沿站立方向上延伸,覆盖目标网格的多个预计算单元格;相邻的各预计算单元格互不重叠。
在一些实施例中,预计算单元格参数包括预计算单元格的栅格构成、以及用于构成预计算单元格的各栅格在虚拟场景中各自的栅格位置;单元格位置参数包括起始位置和数量。在该实施例的情形下,单元格位置参数确定单元包括:高度区间确定子单元,用于基于网格平面在虚拟场景中的位置信息,确定网格平面在虚拟场景的任一坐标平面的平面投影区域、以及垂直于坐标平面的高度区间;目标栅格确定子单元,用于根据各栅格在虚拟场景中各自的栅格位置,确定各栅格中与平面投影区域和高度区间匹配的目标栅格;起始位置和数量确定子单元,用于根据各目标栅格在虚拟场景中的位置、以及预计算单元格的栅格构成,确定用于覆盖目标网格的多个预计算单元格的起始位置和数量;每一预计算单元格包括各目标栅格中的至少一个。
在一个实施例中,目标栅格确定子单元具体用于:根据各栅格在虚拟场景中各自的栅格位置,确定每一栅格在坐标平面上各自的栅格投影区域;从各栅格投影区域中,确定与平面投影区域的重叠面积满足面积条件的选定栅格投影区域;将虚拟场景中,位于高度区间内的选定栅格确定为目标栅格;选定栅格在坐标平面上的投影区域为选定栅格投影区域。
在一些实施例中,预计算单元格参数包括预计算单元格的栅格构成、以及用于构成预计算单元格的各栅格在虚拟场景中各自的栅格位置;单元格位置参数包括每一预计算单元格在虚拟场景中各自的单元格位置信息。在该实施例的情形下,单元格位置参数确定单元具体用于:基于网格平面在虚拟场景中的位置信息,确定网格平面在虚拟场景的任意两个坐标平面各自的平面投影区域;针对每一平面投影区域,根据各栅格在虚拟场景中各自的栅格位置,确定每一栅格在平面投影区域所在的坐标平面上各自的栅格投影区域;从各栅格投影区域中,确定与平面投影区域关联的目标栅格投影区域、以及由各目标栅格投影区域共同表征的目标栅格的栅格位置信息;根据各栅格位置信息、以及预计算单元格的栅格构成,确定用于覆盖目标网格的多个预计算单元格中每一预计算单元格在虚拟场景中各自的单元格位置信息;每一预计算单元格包括各目标栅格中的至少一个。
上述预计算单元格显示装置和预计算单元格生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图19所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储上述方法所涉及的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种鉴权方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图20所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种鉴权方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图19和图20中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (20)
1.一种预计算单元格显示方法,其特征在于,所述方法包括:
响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在所述虚拟场景中显示划分的视角受限空间和全视角空间;
对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,显示沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;
所述第一空间为所述视角受限空间内未与所述全视角空间重叠的空间;所述第二空间为所述全视角空间内未与所述视角受限空间重叠的空间;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
2.根据权利要求1所述的方法,其特征在于,所述响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在所述虚拟场景中显示划分的视角受限空间和全视角空间,包括:
响应于空间参数输入事件,显示至少两组视角空间参数;
按照所述至少两组视角空间参数,在所述虚拟场景中显示至少两个视角空间;一组视角空间参数用于表征一个所述视角空间的空间位置和空间类型;所述空间类型包括视角受限类型和全视角类型。
3.根据权利要求2所述的方法,其特征在于,所述视角空间参数包括视角空间的位置参数、类型参数以及形状参数;
所述按照所述至少两组视角空间参数,在所述虚拟场景中显示至少两个视角空间,包括:
按照每一组视角空间参数中的位置参数、类型参数以及形状参数,在所述虚拟场景中显示视角空间;所述视角空间的空间位置为所述位置参数表征的位置,所述视角空间的空间类型为所述类型参数表征的类型,所述视角空间的空间形状为所述形状参数表征的形状。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述视角受限空间和所述全视角空间存在重叠空间的情况下,对应于所述重叠空间中的导航网格或静态网格,显示沿所述虚拟角色的站立方向延伸的多个预计算单元格。
5.根据权利要求4所述的方法,其特征在于,所述在所述视角受限空间和所述全视角空间存在重叠空间的情况下,对应于所述重叠空间中的导航网格或静态网格,显示沿所述虚拟角色的站立方向延伸的多个预计算单元格,包括:
响应于视角空间的优先级参数输入事件,显示所述视角受限空间和所述全视角空间各自的优先级参数;
在所述视角受限空间的优先级高于所述全视角空间的优先级的情况下,对应于所述视角受限空间和所述全视角空间的重叠空间中的导航网格,显示沿所述虚拟角色的站立方向延伸,覆盖所述重叠空间的导航网格的多个预计算单元格;所述优先级通过所述优先级参数表征;
在所述全视角空间的优先级高于所述视角受限空间的优先级的情况下,对应于所述重叠空间中的静态网格,显示沿所述虚拟角色的站立方向延伸,覆盖所述重叠空间的静态网格的多个预计算单元格。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法还包括:
对应于所述虚拟角色的运动轨迹网格,显示沿所述虚拟角色的站立方向延伸,覆盖所述运动轨迹网格的多个预计算单元格;
所述运动轨迹网格,用于表征所述虚拟角色在所述虚拟场景中脱离地面运动的运动轨迹。
7.一种预计算单元格生成方法,其特征在于,所述方法包括:
获取针对虚拟角色所在虚拟场景的视角空间参数,确定所述虚拟场景中的视角受限空间和全视角空间;
根据所述视角受限空间和所述全视角空间在所述虚拟场景中各自的位置,确定所述视角受限空间内未与所述全视角空间重叠的第一空间、以及所述全视角空间内未与所述视角受限空间重叠的第二空间;
对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,生成沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
8.根据权利要求7所述的方法,其特征在于,所述获取针对虚拟角色所在虚拟场景的视角空间参数,确定所述虚拟场景中的视角受限空间和全视角空间,包括:
获取虚拟角色所在虚拟场景中场景组成元素的可达范围属性参数;所述可达范围属性参数用于表征所述虚拟角色在所述场景组成元素中的空间可达程度,所述空间可达程度包括部分视角可达和全视角可达;
基于所述可达范围属性参数以及所述场景组成元素在所述虚拟场景中的位置,生成视角空间参数;
基于所述视角空间参数,从所述虚拟场景中,确定出包含视角受限元素的视角受限空间、以及包含全视角元素的全视角空间;所述视角受限元素的空间可达程度为部分视角可达;所述全视角元素的空间可达程度为全视角可达。
9.根据权利要求8所述的方法,其特征在于,所述视角空间参数包括类型参数和位置参数;
所述基于所述可达范围属性参数以及所述场景组成元素在所述虚拟场景中的位置,生成视角空间参数,包括:
基于所述可达范围属性参数,确定视角空间的类型参数;所述类型参数用于表征所述视角空间的空间类型;所述空间类型包括视角受限类型和全视角类型;
基于所述场景组成元素在所述虚拟场景中的位置,确定视角空间的位置参数;所述位置参数用于表征所述视角空间在所述虚拟场景中的空间位置。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述视角受限空间和所述全视角空间存在重叠空间的情况下,获取所述视角受限空间和所述全视角空间各自的优先级参数;
基于各所述优先级参数各自表征的优先级,从所述视角受限空间和所述全视角空间中确定优先级最高的目标视角空间、以及除所述目标视角空间以外的非目标视角空间;
从所述非目标视角空间删除所述重叠空间所在的空间,得到视角空间去重的预计算可视性空间,以在所述预计算可视性空间中生成预计算单元格。
11.根据权利要求10所述的方法,其特征在于,所述优先级参数包括空间优先级参数和类型优先级参数;所述优先级包括所述空间优先级参数所表征的空间优先级、以及所述类型优先级参数所表征的类型优先级;
所述基于各所述优先级参数各自表征的优先级,从所述视角受限空间和所述全视角空间中确定优先级最高的目标视角空间,包括:
确定所述视角受限空间和所述全视角空间中空间优先级最高的选定视角空间;
若所述选定视角空间的数量为一个,则将所述选定视角空间确定为目标视角空间;
若所述选定视角空间的数量为多个,则从各所述选定视角空间中确定类型优先级最高的目标视角空间。
12.根据权利要求10所述的方法,其特征在于,所述从所述非目标视角空间删除所述重叠空间所在的空间,包括:
基于所述重叠空间和非目标视角空间在所述虚拟场景中各自的位置,确定所述重叠空间的边界面在所述非目标视角空间中的延伸面;
基于所述延伸面对所述非目标视角空间进行拆分处理,得到所述非目标视角空间对应的多个非目标子空间;
删除各所述非目标子空间中与所述重叠空间重合的重合子空间。
13.根据权利要求12所述的方法,其特征在于,所述重叠空间为长方体空间;
所述基于所述延伸面对所述非目标视角空间进行拆分处理,得到所述非目标视角空间对应的多个非目标子空间,包括:
基于所述重叠空间在所述非目标视角空间的第一延伸面,对所述非目标视角空间进行拆分处理,得到与所述重叠空间存在重叠的第一重叠子空间、以及与所述重叠空间不存在重叠的第一独立子空间;所述第一延伸面为所述重叠空间垂直于第一坐标轴方向的第一边界面的延伸面;
基于所述重叠空间在所述第一重叠子空间的第二延伸面,对所述第一重叠子空间进行拆分处理,得到与所述重叠空间存在重叠的第二重叠子空间、以及与所述重叠空间不存在重叠的第二独立子空间;所述第二延伸面为所述重叠空间垂直于第二坐标轴方向的第二边界面的延伸面;
基于所述重叠空间垂直于第三坐标轴方向的第三边界面,对所述第二重叠子空间进行拆分处理,得到与所述重叠空间重合的重合子空间、以及与所述重叠空间不存在重叠的第三独立子空间;
将所述第一独立子空间、所述第二独立子空间、所述重合子空间以及所述第三独立子空间,确定为所述非目标视角空间对应的多个非目标子空间。
14.根据权利要求7至13中任意一项所述的方法,其特征在于,生成预计算单元格的过程,包括:
基于所述虚拟角色在所述虚拟场景中的站立方向,确定所述虚拟场景中目标网格的网格平面;所述目标网格包括所述视角受限空间内第一空间的导航网格、以及所述全视角空间内第二空间的静态网格;
根据所述网格平面在所述虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖所述目标网格的多个预计算单元格的单元格位置参数;
基于各所述单元格位置参数,生成沿所述站立方向上延伸,覆盖所述目标网格的多个预计算单元格;相邻的各所述预计算单元格互不重叠。
15.根据权利要求14所述的方法,其特征在于,所述预计算单元格参数包括预计算单元格的栅格构成、以及用于构成所述预计算单元格的各栅格在所述虚拟场景中各自的栅格位置;所述单元格位置参数包括起始位置和数量;
所述根据所述网格平面在所述虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖所述目标网格的多个预计算单元格的单元格位置参数,包括:
基于所述网格平面在所述虚拟场景中的位置信息,确定所述网格平面在所述虚拟场景的任一坐标平面的平面投影区域、以及垂直于所述坐标平面的高度区间;
根据各所述栅格在所述虚拟场景中各自的栅格位置,确定各所述栅格中与所述平面投影区域和所述高度区间匹配的目标栅格;
根据各所述目标栅格在所述虚拟场景中的位置、以及预计算单元格的栅格构成,确定用于覆盖所述目标网格的多个预计算单元格的起始位置和数量;每一所述预计算单元格包括各所述目标栅格中的至少一个。
16.根据权利要求15所述的方法,其特征在于,所述根据各所述栅格在所述虚拟场景中各自的栅格位置,确定各所述栅格中与所述平面投影区域和所述高度区间匹配的目标栅格,包括:
根据各所述栅格在所述虚拟场景中各自的栅格位置,确定每一所述栅格在所述坐标平面上各自的栅格投影区域;
从各所述栅格投影区域中,确定与所述平面投影区域的重叠面积满足面积条件的选定栅格投影区域;
将所述虚拟场景中,位于所述高度区间内的选定栅格确定为目标栅格;所述选定栅格在所述坐标平面上的投影区域为所述选定栅格投影区域。
17.根据权利要求14所述的方法,其特征在于,所述预计算单元格参数包括预计算单元格的栅格构成、以及用于构成所述预计算单元格的各栅格在所述虚拟场景中各自的栅格位置;所述单元格位置参数包括每一预计算单元格在所述虚拟场景中各自的单元格位置信息;
所述根据所述网格平面在所述虚拟场景中的位置信息、以及预计算单元格参数,确定用于覆盖所述目标网格的多个预计算单元格的单元格位置参数,包括:
基于所述网格平面在所述虚拟场景中的位置信息,确定所述网格平面在所述虚拟场景的任意两个坐标平面各自的平面投影区域;
针对每一所述平面投影区域,根据各所述栅格在所述虚拟场景中各自的栅格位置,确定每一所述栅格在所述平面投影区域所在的坐标平面上各自的栅格投影区域;
从各所述栅格投影区域中,确定与所述平面投影区域关联的目标栅格投影区域、以及由各所述目标栅格投影区域共同表征的目标栅格的栅格位置信息;
根据各所述栅格位置信息、以及预计算单元格的栅格构成,确定用于覆盖所述目标网格的多个预计算单元格中每一所述预计算单元格在所述虚拟场景中各自的单元格位置信息;每一所述预计算单元格包括各所述目标栅格中的至少一个。
18.一种预计算单元格显示装置,其特征在于,所述装置包括:
视角空间显示模块,用于响应于针对虚拟角色所在虚拟场景触发的视角空间划分事件,在所述虚拟场景中显示划分的视角受限空间和全视角空间;
预计算单元格显示模块,用于对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,显示沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;所述第一空间为所述视角受限空间内未与所述全视角空间重叠的空间;所述第二空间为所述全视角空间内未与所述视角受限空间重叠的空间;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
19.一种预计算单元格生成装置,其特征在于,所述装置包括:
视角空间确定模块,用于获取针对虚拟角色所在虚拟场景的视角空间参数,确定所述虚拟场景中的视角受限空间和全视角空间;
未重叠空间确定模块,用于根据所述视角受限空间和所述全视角空间在所述虚拟场景中各自的位置,确定所述视角受限空间内未与所述全视角空间重叠的第一空间、以及所述全视角空间内未与所述视角受限空间重叠的第二空间;
预计算单元格生成模块,用于对应于所述视角受限空间内第一空间的导航网格和所述全视角空间内第二空间的静态网格,生成沿所述虚拟角色的站立方向延伸,覆盖所述第一空间的导航网格、以及所述第二空间的静态网格的多个预计算单元格;所述导航网格,用于表征所述虚拟角色在所述视角受限空间的可达区域;所述静态网格,用于表征空间中静态对象的对象轮廓。
20.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至17中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211662938.0A CN115631320B (zh) | 2022-12-23 | 2022-12-23 | 预计算单元格显示方法、预计算单元格生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211662938.0A CN115631320B (zh) | 2022-12-23 | 2022-12-23 | 预计算单元格显示方法、预计算单元格生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115631320A CN115631320A (zh) | 2023-01-20 |
CN115631320B true CN115631320B (zh) | 2023-02-28 |
Family
ID=84910104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211662938.0A Active CN115631320B (zh) | 2022-12-23 | 2022-12-23 | 预计算单元格显示方法、预计算单元格生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115631320B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5161256B2 (ja) * | 2010-03-31 | 2013-03-13 | 株式会社バンダイナムコゲームス | プログラム、情報記憶媒体、及び、画像生成装置 |
CN107093203A (zh) * | 2010-06-30 | 2017-08-25 | 巴里·林恩·詹金斯 | 图形信息的基于导航的预取发送或接收的控制方法和系统 |
CN106611436A (zh) * | 2016-12-30 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 一种动画中资源的显示处理方法及装置 |
CN108810636B (zh) * | 2017-04-28 | 2020-04-14 | 华为技术有限公司 | 视频播放方法、虚拟现实设备、服务器、系统及存储介质 |
CN108257103B (zh) * | 2018-01-25 | 2020-08-25 | 网易(杭州)网络有限公司 | 游戏场景的遮挡剔除方法、装置、处理器及终端 |
CN108376424A (zh) * | 2018-02-09 | 2018-08-07 | 腾讯科技(深圳)有限公司 | 用于对三维虚拟环境进行视角切换的方法、装置、设备及存储介质 |
-
2022
- 2022-12-23 CN CN202211662938.0A patent/CN115631320B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115631320A (zh) | 2023-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7125512B2 (ja) | オブジェクトのロード方法及び装置、記憶媒体、電子装置、並びにコンピュータプログラム | |
EP3754464A1 (en) | Merged reality spatial streaming of virtual spaces | |
Van Toll et al. | A navigation mesh for dynamic environments | |
US11798119B2 (en) | Multi-dimensional 3D engine computing and virtualization-based dynamic load balancing of virtual or real worlds | |
Pratt et al. | A software architecture for the construction and management of real-time virtual worlds | |
CN112717404B (zh) | 虚拟对象的移动处理方法、装置、电子设备及存储介质 | |
WO2023051671A1 (zh) | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 | |
CN112419499A (zh) | 一种沉浸式的态势场景仿真系统 | |
WO2023142609A1 (zh) | 虚拟场景中的对象处理方法、装置、设备、存储介质及程序产品 | |
Kuiper et al. | Agent vision in multi-agent based simulation systems | |
CN108959434A (zh) | 一种多地理信息平台下的场景融合可视化方法 | |
Li et al. | Terrain visualization information integration in agent-based military industrial logistics simulation | |
CN114596423A (zh) | 基于虚拟场景网格化的模型渲染方法、装置和计算机设备 | |
CN113893535A (zh) | 用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质 | |
Kim et al. | Enhanced battlefield visualization for situation awareness | |
CN111445576B (zh) | 地图数据的获取方法和装置、存储介质及电子装置 | |
CN113877210A (zh) | 游戏场景的转换方法、系统、服务器及计算机可读存储介质 | |
CN115631320B (zh) | 预计算单元格显示方法、预计算单元格生成方法及装置 | |
WO2023061474A1 (zh) | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 | |
CN114781140A (zh) | 激光雷达点云仿真方法、装置和计算机设备 | |
CN115375836A (zh) | 基于多元置信度滤波的点云融合三维重建方法和系统 | |
Doulamis et al. | Personalised 3D navigation and understanding of Geo-referenced Scenes | |
CN117392358B (zh) | 碰撞检测方法、装置、计算机设备和存储介质 | |
CN113426131B (zh) | 虚拟场景的画面生成方法、装置、计算机设备及存储介质 | |
KR20020041387A (ko) | 2차원 공간정보를 활용한 솔리드모델 타입의 3차원 공간정보구축 자동화방법 및 3차원 공간정보 운용방법 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40079095 Country of ref document: HK |