CN112999656B - 一种光照探针的处理方法、装置、电子设备及存储介质 - Google Patents
一种光照探针的处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112999656B CN112999656B CN202110295078.0A CN202110295078A CN112999656B CN 112999656 B CN112999656 B CN 112999656B CN 202110295078 A CN202110295078 A CN 202110295078A CN 112999656 B CN112999656 B CN 112999656B
- Authority
- CN
- China
- Prior art keywords
- illumination
- level
- space
- block
- information
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/822—Strategy games; Role-playing games
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/02—Non-photorealistic rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/30—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
- A63F2300/308—Details of the user interface
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/80—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
- A63F2300/807—Role playing or strategy games
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种光照探针的处理方法、装置、电子设备及存储介质,该方法包括:在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,将上一层级的每个空间块作为父级空间块,对父级空间块进行细分得到下一层级的子级空间块;在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息;计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差;将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针。本申请根据场景复杂度自适应生成光照探针,降低虚拟场景中光照探针对于存储空间的占用。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种光照探针的处理方法、装置、电子设备及存储介质。
背景技术
虚拟场景(例如游戏场景)中通常会进行全局光照渲染,使用全局光照能够有效地增强场景的真实感。光照探针(LightProbes)提供一种方法用于捕获和使用穿过场景中空白空间的光的信息,所以通常通过在虚拟场景中摆放一定数量的光照探针,烘焙光照探针来自各个方向的光照信息,运行时查找虚拟物体附近的光照探针,对应在场景中生成虚拟物体的光照信息。
目前,针对虚拟场景,一些方案,根据预定的范围和密度,在虚拟场景内自动均匀地生成一定数量的光照探针,可以较高效率的进行生成,但是会在无效空白区域生成很多无效的光照探针,占用大量的存储空间。一些方案,通过手动在虚拟场景摆放光照探针,在虚拟场景发生变化时需要重新调整,对虚拟场景构建和项目的开发迭代非常不利。
发明内容
本申请实施例提供一种光照探针的处理方法及相关装置,旨在降低虚拟场景中光照探针对于存储空间的占用,为虚拟场景构建和项目的开发迭代带来高效的开发效率。
为解决上述技术问题,本申请实施例提供以下技术方案:
根据本申请的一个实施例,一种光照探针的处理方法,其包括:在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对所述父级空间块进行细分得到下一层级的子级空间块;在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息;计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差;将所述均方差大于预定阈值的子级空间块中的光照探针,作为所述虚拟场景中的目标光照探针。
根据本申请的一个实施例,一种光照探针的处理装置,其包括:细分模块,用于在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对所述父级空间块进行细分得到下一层级的子级空间块;采集模块,用于在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息;获取模块,用于计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差;生成模块,用于将所述均方差大于预定阈值的子级空间块中的光照探针,作为所述虚拟场景中的目标光照探针。
在本申请的一些实施例中,所述细分模块,包括:空间确定单元,用于在所述虚拟场景中确定目标采样空间;空间细分单元,用于按照预定细分精度,对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,所述层级的级数小于或者等于预定数目。
在本申请的一些实施例中,所述空间细分单元,包括:第一细分子单元,用于对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;第一遍历子单元,用于遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中的虚拟产物是否存在重合,确定与所述虚拟场景中的虚拟产物相交的父级空间块;第二细分子单元,用于与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
在本申请的一些实施例中,所述虚拟产物包括虚拟物体及虚拟光源;第一遍历子单元,用于执行以下方法中至少一种:检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟物体是否相交;检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟光源的覆盖半径是否相交中至少一种。
在本申请的一些实施例中,所述空间细分单元,包括:第三细分子单元,用于对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;第二遍历子单元,用于遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中虚拟产物之间的距离是否小于预定阈值,确定与所述虚拟场景中的虚拟产物相交的父级空间块;第四细分子单元,用于对与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
在本申请的一些实施例中,所述采集模块,包括:传播单元,用于在所述虚拟场景中,以各层级的所述空间块中生成的光照探针为中心向四周发射射线,并控制各所述射线在所述虚拟场景中迭代传播,直至符合预定传播条件;第一采样单元,用于在各所述射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各所述射线所对应的第一光照信息,所述相交点为射线与虚拟物体的交点;第二采样单元,用于对所述光照探针进行环境光照采样,并将采样得到的环境光照的信息聚合至各所述第一光照信息,得到各所述射线所对应的第二光照信息;加权单元,用于对各所述射线所对应的第二光照信息进行加权平均处理,得到所述光照探针的光照信息。
在本申请的一些实施例中,所述传播单元,用于:控制各所述射线在所述虚拟场景中传播,且控制各所述射线在与所述虚拟场景中虚拟物体相交时,通过随机反射继续传播,直至各所述射线不与虚拟物体相交或反射达到预定次数时,结束传播。
在本申请的一些实施例中,第一采样单元,包括:信息采集子单元,用于在各所述射线传播中产生的每个相交点,采集目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息;信息计算子单元,用于根据在每个所述相交点采集的目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息,计算每个所述相交点所对应位置的光源光照的信息;信息累加子单元,用于将各所述射线传播中产生的每个相交点所对应光源光照的信息累加,得到各所述射线所对应的第一光照信息。
在本申请的一些实施例中,所述获取模块,包括:重合确定单元,用于针对各所述子级空间块中的目标子级空间块,确定所述目标子级空间块与所述父级空间块的重合区域;父级确定单元,用于确定所述父级空间块中生成的位于所述重合区域的光照探针,得到目标父级光照探针;均方差获取单元,用于获取所述目标子级空间块中生成的光照探针的光照信息与所述目标父级光照探针的光照信息的均方差,得到所述目标子级空间块对应的均方差。
在本申请的一些实施例中,所述均方差获取单元,包括:个数获取子单元,用于获取所述目标子级空间块中生成的光照探针的个数;插值子单元,用于根据所述光照探针的个数,对所述目标父级光照探针的光照信息进行插值处理,得到所述目标子级空间块中每个光照探针对应的插值光照信息;均方差计算子单元,用于基于所述目标子级空间块中每个光照探针对应的插值光照信息、所述目标子级空间块中每个光照探针对应的光照信息以及所述目标子级空间块中生成的光照探针的个数,计算所述目标子级空间块对应的均方差。
在本申请的一些实施例中,所述均方差计算子单元,用于:计算所述目标子级空间块中,每个光照探针对应的插值光照信息及光照信息之差的平方和;将所述目标子级空间块中所有光照探针对应的平方和累加,得到目标方差;对所述目标方差除以所述目标子级空间块中生成的光照探针的个数,所得到的值开平方根,得到所述目标子级空间块对应的均方差。
在本申请的一些实施例中,所述装置还包括:列表获取模块,用于获取空间块列表,所述空间块列表中按照所述空间块的层级顺序保存所述各层级的空间块的相关信息;场景索引模块,用于生成覆盖所述虚拟场景中的场景空间的三维索引信息,所述三维索引信息为所述场景空间中的位置信息;初始更新模块,用于在所述三维索引信息中更新第一层级的各空间块的三维索引数据,所述三维索引数据为空间块的位置数据;持续生成模块,用于从第二层级的空间块开始,依次在所述三维索引信息中,更新均方差大于或者等于所述预定阈值的子级空间块对应的三维索引数据,并在所述空间块列表中剔除均方差小于所述预定阈值的子级空间块的相关信息。
根据本申请的另一实施例,一种电子设备可以包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行本申请实施例所述的方法。
根据本申请的另一实施例,一种存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行本申请实施例所述的方法。
根据本申请的另一实施例,一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例所述的各种可选实现方式中提供的方法。
本申请实施例,首先,在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,上一层级的每个空间块作为父级空间块细分得到下一层级的子空间块。然后,在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息;计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差;将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针。。
进而,以这种方式实现通过分层级分精度的空间块细分方案,准确可靠地根据场景复杂度生成有效的、稀疏的光照探针,有效减少无效空白区域中光照探针的分布,降低虚拟场景中光照探针对于存储空间的占用,为虚拟场景构建和项目的开发迭代带来高效的开发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本申请实施例的系统的示意图。
图2示出了根据本申请的一个实施例的光照探针的处理方法的流程图。
图3示出了根据本申请的一个实施例的空间迭代细分的方法的流程图。
图4示出了根据本申请的又一个实施例的空间迭代细分的方法的流程图。
图5示出了根据本申请的一个实施例的获取均方差的方法的流程图。
图6示出了根据本申请的一个实施例的获取目标子级空间块对应的均方差的方法的流程图。
图7示出了应用本申请的实施例的一种场景下生成虚拟场景中光照探针的的流程图。
图8示出了根据本申请的一个实施例的光照探针的处理装置的框图。
图9示出了根据本申请的一个实施例的电子设备的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的说明中,本申请的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本申请原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
图1示出了可以应用本申请实施例的系统100的示意图。如图1所示,系统100可以包括服务器101、终端102,服务器101上可以存储虚拟场景的相关信息,例如虚拟场景的更新数据以及虚拟场景中光照探针的光照信息,终端102上可以提供虚拟场景的操作平台,例如游戏平台。
服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。一个示例中,服务器101可以执行后台任务,服务器101中可以下发虚拟场景的更新数据。
一种实施方式中,服务器101可以提供人工智能云服务,例如提供大型多人在线角色扮演游戏(MMORPG)场景的人工智能云服务。所谓人工智能云服务,一般也被称作是AIaaS(AI as a Service,中文为“AI即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。
终端102可以是边缘设备,例如智能手机,电脑等。用户可以通过终端102上的操作平台中执行生成虚拟场景中光照探针的相关操作。
其中,终端102和服务器101可以通过无线通信方式进行直接或间接地连接,本申请在此不做特殊限制。
本示例的一种实施方式中,终端102可以在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对父级空间块进行细分得到下一层级的子级空间块;在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息;计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差;将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针。
图2示意性示出了根据本申请的一个实施例的光照探针的处理方法的流程图。该光照探针的处理方法的执行主体可以是具有计算处理功能的电子设备,比如图1中所示的服务器101或者终端102。
如图2所示,该光照探针的处理方法可以包括步骤S210至步骤S240。
步骤S210,在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对父级空间块进行细分得到下一层级的子级空间块;
步骤S220,在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息;
步骤S230,计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差;
步骤S240,将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针。
下面描述光照探针处理时,所进行的各步骤的具体过程。
在步骤S210,在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对父级空间块进行细分得到下一层级的子级空间块。
本示例的实施方式中,虚拟场景是通过数字通讯技术勾勒出的数字化场景,例如游戏场景或者三维建模场景。虚拟场景中通常包括虚拟产物,虚拟产物为虚拟场景中通过数字通讯技术勾勒出的数字化的产物。虚拟产物可以包括虚拟物体和虚拟光源。其中,虚拟物体例如虚拟建筑或者虚拟游戏角色等,虚拟光源为虚拟场景中设置的提供光照的光源。
光照探针(LightProbes)提供了一种方法用于捕获和使用穿过虚拟场景中空白空间的光(light)的信息。与光照贴图(lightmaps)相似,光照探针(LightProbes)也存储关于场景中光照(lighting)的烘焙(baked)信息。两者的区别在于:光照贴图(lightmaps)存储的是光线照射虚拟场景表面(surfaces)的光照信息,而光照探针(LightProbes)存储的是光线穿过虚拟场景中空白空间的信息。
在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级的空间块包括至少一个,多个层级的空间块中,按照层级顺序,上一层级的每个空间块作为父级空间块细分得到下一层级的多个子空间块,可以包括如下具体步骤:
首先将虚拟场景的场景空间按照层级顺序(例如从第一层级至第N层级的顺序)细分为多个空间块(即第一层级的空间块),在每个空间块中生成光照探针(例如,在正方形空间块内容均匀的生成64个光照探针)。
然后,对于该第一层级的每个空间块,将每个空间块作为父级空间块,细分为多个子级空间块(即第二层级的空间块),并且在细分得到的每个子级空间块中生成光照探针。
然后,对于细分得到的每个子级空间块,将每个子级空间块作为新的父级空间块进一步细分,得到进一步细分的多个子级空间块(即第三层级的空间块),并在进一步细分的每个子级空间块中生成光照探针,以此类推,进行场景空间的迭代细分,得到多个层级的空间块,每个空间块中都生成光照探针。
其中,多个层级的空间块即至少2个层级的空间块,例如,多个层级的空间块可以包括10个层级的空间块。光照探针在虚拟场景中可以体现为单位半径的虚拟采样球。
可以理解,按照细分层级,多个层级的空间块中,子级空间块为相对于对应的父级空间块来说位于下一层级的空间块,子级空间块由对应的父级空间块细分得到,所以子级空间块的体积比对应的父级空间块的体积小。一种实施例中,位于相同层级的空间块的形状及大小一致,例如,第一层级的各空间块都为第一预定体积大小的正方体,第二层级的空间块都为第二预定体积大小的正方体;所有空间块中的光照探针的个数都相同,例如,第一层级的各空间块都生成64个光照探针,第二层级的各空间块中都生成64个光照探针。
进一步的,一种实施例中,步骤S210具体可以包括:在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级的空间块包括至少一个,多个层级的空间块中,按照层级顺序,上一层级的每个空间块作为父级空间块细分得到下一层级的多个子空间块,“且当每个父级空间块与所述虚拟场景中的虚拟产物相交时进行细分”,具体可以包括如下步骤:
首先将虚拟场景的场景空间按照层级顺序(例如从第一层级至第N层级的顺序)细分为多个空间块(即第一层级的空间块),在每个空间块中生成光照探针(例如,在正方形空间块内容均匀的生成64个光照探针)。
然后,对于该第一层级的每个空间块,当某个空间块与虚拟场景中虚拟产物相交时(可以是某个空间块中生成的光照探针与虚拟场景中的虚拟产物是否存在重合时或者某个空间块中生成的光照探针与虚拟场景中的虚拟产物的距离小于预定距离时),将该某个空间块作为父级空间块,细分为多个子级空间块(即第二层级的空间块),并且在细分得到的每个子级空间块中生成光照探针。
然后,对于细分得到的每个子级空间块,如果某个子级空间块与虚拟场景中虚拟产物相交时(可以是某个子级空间块中生成的光照探针与虚拟场景中的虚拟产物是否存在重合时或者某个子级空间块中生成的光照探针与虚拟场景中的虚拟产物的距离小于预定距离时),将该某个子级空间块作为新的父级空间块进一步细分,得到进一步细分的多个子级空间块(即第三层级的空间块),并在进一步细分的每个子级空间块中生成光照探针,以此类推,进行场景空间的迭代细分,得到多个层级的空间块,每个空间块中都生成光照探针。
一个示例中,按照预定细分粒度(例如4*4*4=64的粒度),首先对场景空间按照4*4*4的粒度细分为第一层级的64个空间块,然后,在第一层级的每个空间块内生成预定数量(例如64个)的光照探针,空间块内生成的光照探针可以均布于空间块内;然后,在第一层级的某个空间块与虚拟场景中虚拟产物相交时,将该某个空间块继续按照4*4*4的粒度细分为64个第二层级的空间块,并在第二层级的空间块内生成预定数量(例如64个)的光照探针,依次类推,进行空间迭代细分,在细分次数达到预定次数(即预定层级数目)时,结束细分,得到多个层级的空间块,其中,多个层级为至少2个。
这样可以进一步在细分过程中,在后续步骤中计算均方差筛选步骤之前,提前根据虚拟场景的复杂度,在靠近虚拟产物的位置多生成光照探针,在无效空白区域少生成光照探针,靠近虚拟产物的地方多生成光照探针,可以通过生成的光照探针采集明显有效的光照信息,且降低光照探针对存储空间的占用。
一种实施例中,参阅图3,步骤S210中,在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,包括:
步骤S310,在虚拟场景中确定目标采样空间;
步骤S320,按照预定细分精度,对目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,层级的级数小于或者等于预定数目。
目标采样空间即虚拟场景中场景空间内的目标空间区域。一示例中,基于用户在软件界面中通过鼠标点选等方式,指定场景空间内的目标空间区域,确定目标采样空间。另一个示例中,根据用户输入的采样范围参数(例如虚拟场景中的重要区域所在范围),在虚拟场景中确定目标采样空间。
预定细分精度可以包括细分层级的预定数目、空间块的大小参数(例如最小的空间块的尺寸大小或者最大空间块的尺寸大小)、空间块的细分粒度(例如4*4*4的粒度)以及每个空间块内生成的光照探针的数量,其中细分粒度即每个空间块细分得到子级空间块的数目。预定细分精度可以是预先指定的参数,可以根据实际需求设定。
空间迭代细分即对虚拟空间进行至少2次细分,得到至少2个层级的空间块,层级的级数小于等于预定数目,即空间迭代细分时的迭代细分次数小于等于细分层级的预定数目,例如,细分得到的层级小于等于50个层级(预定数目)。
一个示例中,预定细分精度包括细分层级的预定数目,最小的空间块的尺寸大小(即体积大小),每个空间块内生成的光照探针的数量以及细分粒度。例如,细分的层级的预定数目为50,细分粒度为4*4*4=64个,最小的空间块的尺寸大小(即体积大小)为4*4*4=64(单位可以是立方毫米等预定单位),每个空间块内生成的光照探针的数量为64(由于光照探针为单位球,即直径为1,这样可以保证最小的空间块中可以刚好容纳64个光照探针)。
此时,按照细分精度进行细分时,可以按照细分粒度,首先将目标采样空间细分为4*4*4=64个第一层级的空间块,在空间块中生成64个光照探针,然后将第一层级的空间块作为父级空间块,当父级空间块中生成的光照探针与虚拟场景中虚拟产物位置相同时细分为多个子级空间块(即第二层级的空间块),并将多个子级空间块(即第二层级的空间块)作为新的父级空间块进行迭代细分,直到在划分得到的空间块的体积达到4*4*4=64时停止细分,或者细分的层级的数目达到预定数目为50时,或者某个层级中所有空间块中生成的光照探针与虚拟场景中虚拟产物位置都不相同时,停止细分,得到小于或者等于50个层级的空间块。
另一个示例中,预定细分精度包括细分层级的预定数目,最大的空间块的尺寸大小(即体积大小),每个空间块内生成的光照探针的数量以及细分粒度。例如,细分的层级的预定数目为50,细分粒度为4*4*4=64个,最大的空间块的尺寸大小(即体积大小)为N(单位可以是立方毫米等预定单位),每个空间块内生成的光照探针的数量为64。
此时,按照细分精度进行细分时,可以按照细分粒度64个及最大的空间块的尺寸大小N,首先将目标采样空间细分为4*4*4=64个第一层级的空间块,在每个空间块中生成64个光照探针,然后将第一层级的空间块作为父级空间块,当父级空间块中生成的光照探针与虚拟场景中虚拟产物位置相同时细分为多个子级空间块(即第二层级的空间块),并将多个子级空间块(即第二层级的空间块)作为新的父级空间块进行迭代细分,直到在划分得到的空间块的体积达到4*4*4=64时停止细分,或者细分的层级的数目达到预定数目为50时,或者某个层级中所有空间块中生成的光照探针与虚拟场景中虚拟产物位置都不相同时,停止细分,得到小于或者等于50个层级的空间块。
这样按照预定细分精度,对目标采样空间进行空间迭代细分,得到多个层级的空间块,在各空间块中生成光照探针,细分的层级小于等于预定数目,可以对目标采样空间进行自动准确迭代细分,同时可以使得细分过程可靠收敛。
其中,此实施例中,空间块在细分时,对于某个空间块细分结束的条件包括:该某个空间块中的光照探针没有靠近虚拟产物(例如某个空间块中的不存在光照探针与虚拟产物相交)或者该某个空间块所在的层级等于预定数目所指示的层级(例如预定数目为50时,该某个空间块所在层级为第50层级,即使该某个空间块中的光照探针靠近虚拟产物时,也不进行细分)。
一种实施例中,参阅图4,步骤S320中,对目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,包括:
步骤S410,对目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各父级空间块中生成光照探针;
步骤S420,遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与虚拟场景中的虚拟产物是否存在重合,确定与虚拟场景中的虚拟产物相交的父级空间块;
步骤S430,对与虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各子级空间块中生成光照探针,以将每个子级空间块作为新的父级空间块进行迭代细分。
例如,首选均匀细分目标采样空间为64个父级空间块(即第一层级的父级空间块),并在第一层级的每个父级空间块中分别生成均匀分布的64个光照探针。
然后遍历第一层级的每个父级空间块中的光照探针,通过确定遍历到的光照探针与虚拟场景中的虚拟产物是否存在重合,确定每个父级空间块与虚拟场景中的虚拟产物是否相交。可以在确定某个父级空间块中遍历到的光照探针与虚拟场景中的虚拟产物存在重合时,确定该某个父级空间块与虚拟场景中的虚拟产物相交。
从而,当第一层级中的某个父级空间块中,至少出现一个光照探针与虚拟产物存在重合时,均匀细分该某个父级空间块为64个子级空间块(第二层级的空间块),并在每个子级空间块中生成均匀分布的64个光照探针。
然后,遍历第二层级的每个子级空间块中的光照探针,确定遍历到的光照探针与虚拟场景中的虚拟产物是否存在重合,从而,当第二层级中的某个子级空间块中,存在光照探针与虚拟场景中虚拟产物存在重合时,将该某个子级空间块作为新的父级空间块(相对于第三层级的空间块的父级空间块)进行细分,均匀细分得到64个子级空间块(第三层级的空间块)。依次类推,对目标采样空间进行空间迭代细分。
这样,通过检测遍历到的光照探针与虚拟场景中的虚拟产物是否存在重合,确定与虚拟场景中的虚拟产物相交的父级空间块,进而进行细分,可以准确判断光照探针是否靠近虚拟产物,进而进行空间块的细分,最终在靠近虚拟产物的位置准确地多生成光照探针。
一种实施例中,虚拟产物包括虚拟物体及虚拟光源;步骤S420中,检测遍历到的光照探针与虚拟场景中的虚拟产物是否存在重合,包括以下方法中至少一种:检测遍历到的光照探针在虚拟场景中所覆盖空间范围与虚拟物体是否相交;检测遍历到的光照探针在虚拟场景中所覆盖空间范围与虚拟光源的覆盖半径是否相交。
虚拟物体是虚拟场景中构建的除虚拟光源之外的所有物体,例如虚拟建筑或者虚拟游戏角色等,虚拟光源为虚拟场景中设置的提供光照的光源。光照探针在虚拟场景中所覆盖空间范围可以是光照探针对应的虚拟体(采样球)所覆盖空间范围,虚拟光源的覆盖半径可以是虚拟光源对应的虚拟体(虚拟光源体)的覆盖半径,也可以是虚拟光源提供的光照的光照覆盖半径。
若遍历到的光照探针在虚拟场景中所覆盖空间范围与虚拟物体相交,或者若遍历到的光照探针在虚拟场景中所覆盖空间范围与虚拟光源的覆盖半径相交时,则可以准确确定遍历到的光照探针与虚拟场景中的虚拟产物存在重合。
一种实施例中,步骤S320中,对目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,包括:
对目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各父级空间块中生成光照探针;
遍历各父级空间块中的光照探针,并通过检测遍历到的光照探针与虚拟场景中虚拟产物之间的距离是否小于预定阈值,确定与虚拟场景中的虚拟产物相交的父级空间块;
对与虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各子级空间块中生成光照探针,以将每个子级空间块作为新的父级空间块进行迭代细分。
例如,首选均匀细分目标采样空间为64个第一层级的父级空间块,并在第一层级的每个父级空间块中分别生成均匀分布的64个光照探针。然后遍历第一层级的每个父级空间块中的光照探针,通过确定遍历到的光照探针与虚拟场景中虚拟产物之间的距离是否小于预定阈值,确定每个父级空间块与虚拟场景中的虚拟产物是否相交。
可以在某个父级空间块中遍历到的光照探针与虚拟场景中的虚拟产物之间的距离小于预定阈值时,确定该某个父级空间块与虚拟场景中的虚拟产物相交,该虚拟产物同样可以包括虚拟物体或者虚拟光源中任一种。
从而,当第一层级中的某个父级空间块中,存在光照探针与虚拟场景中虚拟产物之间的距离小于预定距离时,将该父级空间块进行细分,均匀细分为64个子级空间块(第二层级的空间块),并在每个子级空间块中生成均匀分布的64个光照探针。
然后,遍历第二层级的每个空间块中的光照探针,确定遍历到的光照探针与虚拟场景中虚拟产物之间的距离,从而,当第二层级中的某个空间块中,存在光照探针与虚拟场景中虚拟产物之间的距离小于预定距离时,将该空间块作为新的父级空间块(相对于第三层级的空间块的父级空间块)进行细分,均匀细分得到64个子级空间块(第三层级的空间块)。依次类推,对目标采样空间进行空间迭代细分。
这样,通过检测遍历到的光照探针与虚拟场景中的虚拟产物之间的距离是否小于预定阈值,确定与虚拟场景中的虚拟产物相交的父级空间块,进而进行细分,可以泛化地判断光照探针是否靠近虚拟产物,进而进行空间块的细分,最终在一定程度上泛化地在靠近虚拟产物的位置进一步的多生成光照探针。
在步骤S220,在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息。
本示例的实施方式中,光照探针的光照信息即光照探针在虚拟场景中接收到的来自各个方向的光照数据,包括虚拟光源的光源光照数据(即直接光照数据)及环境光(即虚拟环境中间接光照)的光照数据。
在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息,即基于虚拟场景中的虚拟物体及虚拟光源的布置,对于细分得到的多个层级的空间块中所有空间块,模拟烘焙(baked)所有空间块中生成的每个光照探针所在采样点位置的直接光照和间接光照,并对直接光照和间接光照的数据进行存储,其中,模拟烘焙即通过模拟监测虚拟环境中的光照情况,渲染出各个采样点的光照信息。
在虚拟场景中,采集到光照探针的光照信息,可以在虚拟场景运行时(例如游戏运行时),可以查找虚拟物体附近的光照探针,基于光照探针的光照信息生成虚拟物体的光照信息,同时在后续步骤中可以根据光照信息确定有效的光照探针。
其中,采集光照探针的光照信息的方法可以基于本申请实施例提供的路径追踪法,也可以基于其它现有的全局光照烘焙的方法。
一种实施例中,步骤S220,在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息,可以在虚拟场景中,通过路径追踪算法对光照探针进行光照烘培,得到光照探针的光照信息。
通过路径追踪算法对光照探针进行光照烘培,即以光照探针为中心发出射线,追踪射线在虚拟场景中的传播,射线与虚拟场景中虚拟物体的表面相交时,随机采样一个反射方向,从相交点发出另一条射线,如此迭代,直至符合预定传播条件(例如直到射线逃逸出场景,即射线未与虚拟物体的表面相交),结束射线的传播。
同时,在每个相交点处采集光源光照的信息进行累加,得到射线所对应的第一光照信息。并且在射线结束传播后采样环境光的光照信息,累加至第一光照信息得到第二光照信息。对以光照探针为中心发出的所有射线所对应的第二光照信息进行加权平均处理,得到光照探针的光照信息。
通过路径追踪算法对光照探针进行光照烘培,可以在图形处理器(GPU)上实现全局光照数据烘焙,可以有效提升光照信息烘焙制备的效果和性能。
一种实施例中,步骤S220,在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息,包括:
在虚拟场景中,以各层级的空间块中生成的光照探针为中心向四周发射射线,并控制各射线在虚拟场景中迭代传播,直至符合预定传播条件;在各射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各射线所对应的第一光照信息,相交点为射线与虚拟物体的交点;对光照探针进行环境光照采样,并将采样得到的环境光照的信息聚合至各第一光照信息,得到各射线所对应的第二光照信息;对各射线所对应的第二光照信息进行加权平均处理,得到光照探针的光照信息。
射线在虚拟场景中传播过程,每当与虚拟物体碰撞时,反射后继续传播,每次与虚拟物体碰撞的点即相交点。每条射线传播过程中可能产生相交点,也可能不产生相交点。
在各射线传播中产生的所有相交点进行光源光照采样,即在各相交点处分别针对虚拟光源产生的光照数据进行采样,将射线对应的所有相交点处的光源光照的信息聚合,得到射线所对应的第一光照信息,第一光照信息即直接光照产生的光照数据。其中,将采样得到的光源光照的信息聚合的方式可以是累加的方式。
对光照探针进行环境光照采样即对光照探针接收的各个方向的间接光照的光照数据进行采样。可以将采样得到的环境光照的信息累加至第一光照信息,得到各射线所对应的第二光照信息。
最后,对各射线所对应的第二光照信息进行加权平均处理,即对所有射线对应的第二光照信息球加权和,该加权和除以所有射线的总数,得到光照探针的光照信息。
这样可以高效、准确地烘焙出光照探针对应的全局光照信息。
一种实施例中,控制各射线在虚拟场景中迭代传播,直至符合预定传播条件,包括:控制各射线在虚拟场景中传播,且控制各射线在与虚拟场景中虚拟物体相交时,通过随机反射继续传播,直至各射线不与虚拟物体相交或反射达到预定次数时,结束传播。
控制各射线在与虚拟场景中虚拟物体相交时,通过随机反射继续传播,即控制各射线在与虚拟场景中虚拟物体相交时,在相交点处随机确定一个方向生成出射线继续传播。
同时,直至各射线不与虚拟物体相交时,结束传播,可以尽可能多的采集光照信息。直至反射达到预定次数时(例如某条射线反射5次时),结束传播,可以保证采集效率及足够的光照信息。
一种实施例中,在各射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各射线所对应的第一光照信息,包括:
在各射线传播中产生的每个相交点采集目标光源的颜色信息、射线的方向、目标光源的方向、相交点处的材质信息及目标光源的可见性信息;
根据在每个相交点采集的目标光源的颜色信息、射线的方向、目标光源的方向、相交点处的材质信息及目标光源的可见性信息,计算每个相交点所对应位置的光源光照的信息;
将各射线传播中产生的每个相交点所对应光源光照的信息累加,得到各射线所对应的第一光照信息。
目标光源可以是在相交点的位置随机确定的一个虚拟光源,或者距离相交点最近的一个虚拟光源,本实施例中,目标光源为随机确定的一个虚拟光源。
目标光源的颜色信息即目标光源提供光照颜色信息,射线的方向即相交点处入射射线的方向,目标光源的方向即相交点处相对于目标光源的方向,相交点处的材质信息即虚拟物体在相交点处的材质属性信息,目标光源的可见性信息可以包括目标光源的光照强度信息等可见性信息。
具体可以按照如下公式,计算每个相交点所对应位置的光源光照的信息,将各射线传播中产生的每个相交点所对应光源光照的信息累加,得到各射线所对应的第一光照信息:
RayThrough*=DiffuseColor;
RayDir=normalize(LightPos–IntersectPosition);
LightDir=-Light.Direction;
Randiance+=LightColor*Visibility*dot(LightDir,RayDir)*RayThrough;
其中,Randiance为射线所对应的第一光照信息,LightColor为目标光源的颜色信息,Visibility为目标光源的可见性信息,LightDir为目标光源的方向的取反方向,RayDir为射线的方向,dot(LightDir,RayDir)为目标光源的方向与射线的方向的夹角,DiffuseColor为相交点处的材质信息,RayThrough为累乘后的材质信息(其中,累乘的顺序为按照相交点产生的先后顺序进行累乘),IntersectPosition为相交点的位置,LightPos为射线出射点的位置,normalize为归一化处理。
在步骤S230,计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差。
本示例的实施方式中,每个空间块中的光照探针都在虚拟场景中渲染出对应的光照信息,其中父级空间块与子级空间块中光照探针存在对重复区域进行光照采样的情况。通过获取各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差,可以准确获取到各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的光照采样差别。
某个子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的光照采样差别较小,说明该某个子级空间块中光照探针相对于父级空间块中的光照探针,对于场景中光照信息的进一步贡献有限;相反,某个子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的光照采样差别较大,则说明该某个子级空间块中光照探针相对于父级空间块中的光照探针,对于场景中光照信息具有较大的进一步贡献。
一种实施例中,参阅图5,步骤S230,计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差,包括:
步骤S510,针对各子级空间块中的目标子级空间块,确定目标子级空间块与父级空间块的重合区域;
步骤S520,确定父级空间块中生成的位于重合区域的光照探针,得到目标父级光照探针;
步骤S530,获取目标子级空间块中生成的光照探针的光照信息与目标父级光照探针的光照信息的均方差。
本实施例中,各子级空间块由父级空间快细分得到,所以子级空间块与父级空间块的在虚拟场景的场景空间内重合区域,该重合区域即子级空间块所对应的区域。
目标子级空间块为各子级空间块中的某个子级空间块,针对各子级空间块中的目标子级空间块,确定目标子级空间块与父级空间块的重合区域,即依次确定各子级空间块与父级空间块的重合区域。
父级空间块中生成光照探针,子级空间块中也生成光照探针。父级空间块中生成的位于重合区域的光照探针,即目标父级光照探针,可以是完全位于重合区域内光照探针,也可以是与重合区域存在重合的光照探针(例如父级空间块中生成的某个光照探针位于两个子级空间块之间)。
进而,获取目标子级空间块中生成的光照探针的光照信息与目标父级光照探针的光照信息的均方差,可以准确地获取到目标子级空间块对应的均方差。
一种实施例中,参阅图6,步骤S530,获取目标子级空间块中生成的光照探针的光照信息与目标父级光照探针的光照信息的均方差,包括:
步骤S610,获取目标子级空间块中生成的光照探针的个数;
步骤S620,根据光照探针的个数,对目标父级光照探针的光照信息进行插值处理,得到目标子级空间块中每个光照探针对应的插值光照信息;
步骤S630,基于目标子级空间块中每个光照探针对应的插值光照信息、目标子级空间块中每个光照探针对应的光照信息以及目标子级空间块中生成的光照探针的个数,计算目标子级空间块对应的均方差。
插值处理即基于差值处理算法进行的处理,差值处理算法可以根据需求选定。
例如,目标子级空间块中生成的光照探针的个数为64个,目标父级光照探针的个数为8个,对目标父级光照探针的光照信息进行插值处理,得到目标子级空间块中每个光照探针对应的插值光照信息,即将8个目标父级光照探针的光照信息插值为64个部分的插值光照信息,每个部分的插值光照信息对应目标子级空间块中一个光照探针。
然后,基于64个光照探针对应的光照信息及64个部分的插值光照信息,基于均方差公式计算目标子级空间块对应的均方差。
一种实施例中,步骤S630,基于目标子级空间块中每个光照探针对应的插值光照信息、目标子级空间块中每个光照探针对应的光照信息以及目标子级空间块中生成的光照探针的个数,计算目标子级空间块对应的均方差,包括:
计算目标子级空间块中,每个光照探针对应的插值光照信息及光照信息之差的平方和;
将目标子级空间块中所有光照探针对应的平方和累加,得到目标方差;
对目标方差除以目标子级空间块中生成的光照探针的个数,所得到的值开平方根,得到目标子级空间块对应的均方差。
本实施例中,可以按照如下公式计算目标子级空间块对应的均方差:
ErrorSquared+=(ParentAmbientColor-AmbientColor)*(ParentAmbientColor–AmbientColor);
RMSE=Sqrt(ErrorSquard/TotalCellsInBrick).GetMax();
其中,ErrorSquared为目标方差,ParentAmbientColor为光照探针对应的插值光照信息,AmbientColor为光照探针对应的光照信息,TotalCellsInBrick为目标子级空间块中生成的光照探针的个数,Sqrt为取平方根,RMSE为目标子级空间块对应的均方差。
例如,对于某个层级的空间块(A),细分得到64个下一层级的空间块(包括A1,A2,A3,A4...A64),空间块(A)中生成64个光照探针(包括probeX1、probeX2...probeX64),空间块(A1)中生成64个光照探针(包括probeQ1、probeQ2...probeQ64)。其中,probeX1-probeX8(8个)位于空间块(A1)8个角的位置(位于重合区域的光照探针)。利用probeX1-probeX8(8个)光照探针的光照信息差值出64个部分的插值光照信息(包括差值光照信息M1、差值光照信息M2...差值光照信息M64)。
空间块(A1)对应的目标方差为:ErrorSquared=(差值光照信息M1–probeQ1的光照信息)2+(差值光照信息M2–probeQ2的光照信息)2+...+(差值光照信息M64–probeQ64的光照信息)2;
空间块(A1)对应的均方差为:RMSE=Sqrt(ErrorSquard/64).GetMax()。
在步骤S240,将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针。
本示例的实施方式中,均方差大于预定阈值的子级空间块中的光照探针,即每一层中相较于父级空间块中光照探针具有进一步光照采样贡献的光照探针。均方差大于预定阈值的子级空间块中的光照探针是稀疏分布于虚拟场景中,且携带有效光照信息,基于均方差大于预定阈值的子级空间块中的光照探针生成虚拟场景中的目标光照探针,可以在虚拟场景运行时基于目标光照探针的光照信息有效渲染场景光照信息。
其中,预定阈值可以根据实际情况设定,基于均方差大于预定阈值的子级空间块中的光照探针,生成虚拟场景中目标光照探针,可以将迭代细分层级时生成的所有光照探针中,剔除均方差小于预定阈值的子级空间块中的光照探针后,将剩余的所有子级空间块中的光照探针及第一层级的空间块(初始的父级空间块)中的光照探针作为虚拟场景中的目标光照探针。
进而,通过子级空间块与父级空间块的细分对应关系,通过计算子级空间块与父级空间块中光照信息的均方差,基于均方差大于预定阈值的子级空间块中的光照探针,准确可靠地根据场景复杂度生成有效的、稀疏的目标光照探针。有效减少无效空白区域中光照探针的分布,降低虚拟场景中光照探针对于存储空间的占用,为虚拟场景构建和项目的开发迭代带来高效的开发效率。
以这种方式,基于步骤S210-步骤S240,首先,在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级的空间块包括至少一个,按照层级顺序,上一层级的每个空间块作为父级空间块细分得到下一层级的多个子空间块;在虚拟场景中,采集各层级的空间块中生成的光照探针的光照信息;计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差;将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针。
进而,以这种方式实现通过分层级分精度的空间块细分方案,准确可靠地根据场景复杂度生成有效的、稀疏的光照探针,有效减少无效空白区域中光照探针的分布,降低虚拟场景中光照探针对于存储空间的占用,为虚拟场景构建和项目的开发迭代带来高效的开发效率。
一种实施例中,步骤S240,将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针,包括:
从各层级的空间块中,筛选出均方差大于预定阈值的子级空间块中生成的光照探针;将均方差大于预定阈值的子级空间块中生成的光照探针,作为虚拟场景中的目标光照探针。
筛选出均方差大于预定阈值的子级空间块中生成的光照探针,可以是直接提取出均方差大于预定阈值的子级空间块中生成的光照探针,也可以从所有光照探针中剔除均方差小于预定阈值的子级空间块中生成的光照探针后,剩余的子级空间块中生成的光照探针及第一层级的空间块中的光照探针,作为筛选出的均方差大于预定阈值的子级空间块中生成的光照探针。
一种实施例中,还包括:
获取空间块列表,空间块列表中按照空间迭代细分的顺序保存各层级的空间块的相关信息;
生成覆盖虚拟场景中的场景空间的三维索引信息,三维索引信息为场景空间中的位置信息;
在三维索引信息中更新第一层级的各空间块的三维索引数据,三维索引数据为空间块的位置数据;
从第二层级的空间块开始,依次在三维索引信息中,更新均方差大于等于预定阈值的子级空间块对应的三维索引数据,并在空间块列表中剔除均方差小于预定阈值的子级空间块的相关信息。
空间块列表中按照空间迭代细分的顺序保存各层级的空间块的相关信息,相关信息可以包括空间块的标识、空间块所在层级、空间块中光照探针的标识及光照探针的光照信息等相关信息。
三维索引信息为场景空间中的位置信息,即三维索引信息为虚拟场景的场景空间内各个位置的索引。可以在第一层级的各空间块下对场景空间进行均匀划分,生成场景大小的三维索引信息,可以便于空间块索引数据的准确更新。
三维索引数据为空间块的位置数据,即空间块的三维索引数据用于指向空间块自己在场景空间中的存储位置。在三维索引信息中更新第一层级的各空间块的三维索引数据,可以将第一层级的各空间块地位置索引记录;
然后,从第二层级的空间块开始,依次在三维索引信息中,更新均方差大于等于预定阈值的子级空间块对应的三维索引数据,这样可以得到一张覆盖全场景的三维索引信息(3d索引信息),其中索引了场景空间内当前位置处应该指向的具体细化的空间块的位置,每个三维索引数据的数据格式为正整数(int)。
例如,从第二层级的空间块开始,计算得到第二层级中空间块对应的均方差后(第二层级中空间块对应的均方差是基于第一层级的空间块计算得到),将第二层级中均方差大于等于预定阈值的空间块对应的三维索引数据,更新于三维索引信息中,依次类推,从第三层级更新至最后一层级。
在空间块列表中剔除均方差小于预定阈值的子级空间块的相关信息,进而最后空间块列表中保留包括从第二层级到最后一层级中,均方差大于等于预定阈值的空间块及第一层级的空间块的相关信息。
例如,从第二层级的空间块开始,计算得到第二层级中空间块对应的均方差后(第二层级中空间块对应的均方差是基于第一层级的空间块计算得到),将第二层级中均方差小于预定阈值的空间块的相关信息从空间块列表剔除,依次类推,从第三层级剔除至最后一层级。
进而,最后三维索引信息及空间块列表,保留了生成的虚拟场景中目标光照探针的相关信息,可以在虚拟场景运行时基于三维索引信息及空间块列表准确地、可靠地查找目标位置的光照探针,进行场景光照渲染。
一种实施例中,每个光照探针的光照信息(颜色信息)被编码成一系列的27个系数(3阶球面调和系数,每阶对应9个系数),这27个系数对应于球谐函数,进而基于球谐函数可以利用光照信息进行虚拟场景中的光照渲染处理,其中,球谐函数是拉普拉斯方程的球坐标系形式解的角度部分。
基于空间块列表,对于每个光照探针的光照信息可以生成7张将空间块连接到连续地址空间的三维光照贴图(3d光照贴图)的数据,每张三维光照贴图表示3阶球面调和系数中的一个(包括rgba通道的数据)。其中,第1张可以是一个rgb三通道的包括第一个球谐系数的光照贴图,每个通道对应一个球谐系数(进而可以存储3*1个球谐系数),第一张中的第一个球谐系数可以为对于光照贡献最大的系数;第2~7张可以是包括rgba四通道的光照贴图,每个通道对应一个球谐系数(进而可以存储6*4个其余球谐系数),这样7张光照贴图中共包括27个球谐系数。这样生成7张将空间块连接到连续地址空间的三维光照贴图(3d光照贴图)的数据,可以同时保证光照信息的存储和渲染计算性能。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
图7示出了应用本申请的实施例的一种应用场景下生成虚拟场景中光照探针的的流程图。
该场景下的生成虚拟场景中光照探针可以基于如图1所示的终端102进行,该应用场景中虚拟场景为游戏场景,该场景下提供编辑器插件(Dawn Editor Plugin)和烘焙器(Dawn);编辑器可以用于提供自动烘焙(制备)光照探针的光照信息所需的基本参数,例如,空间迭代细分的层级的预定数目、空间块的大小参数(例如最小的空间块的尺寸大小或者最大空间块的尺寸大小)、空间块的细分粒度(例如4*4*4的粒度)以及每个空间块内生成的光照探针的数量等。烘焙器(Dawn)用于根据插件传过来的基本参数对光照贴图和光照探针进行自动生成和光照信息的烘焙,并将光照信息的烘焙结果返回给编辑器。
如图7所示,烘焙器(Dawn)生成游戏场景中光照探针可以包括步骤S710-步骤S730。
在步骤S710中,在游戏场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对父级空间块进行细分得到下一层级的子级空间块,且当父级空间块与虚拟场景中的虚拟产物相交时对父级空间块进行细分。
具体地包括:步骤A,获取基本参数,在游戏中确定目标采样空间。
步骤B,生成第一层级的空间块的信息,包括:
B1:对目标采样空间进行细分为第一层级中的空间块;
B2:对第一层级中的每个空间块进行细分(即进入步骤C过程)。
步骤C,细化每个空间块的光照探针的布点:
C1:为第一层级中每个空间块生成当前层对应粒度(4*4*4个)的光照探针的布点;
C2:如果细分的层级已经达到预定数目,则结束空间迭代细分过程,否则,进入细分步骤C3;
C3:遍历当前空间块中生成的每个光照探针。并检查遍历到的光照探针在游戏场景内所覆盖范围是否与游戏场景内的虚拟物体有相交,相交则将遍历到的光照探针所在空间块继续细化成下一级的空间块,进入步骤C;和/或,检查遍历到的光照探针在游戏场景内所覆盖范围是否与虚拟光源的覆盖半径有相交,相交则将遍历到的光照探针所在空间块继续细化成下一级的空间块,进入步骤C。
在步骤S720中,在游戏场景中,采集光照探针的光照信息,具体地在游戏场景中,通过路径追踪算法对光照探针进行光照烘培,得到光照探针的光照信息。
具体包括:步骤D,获取生成的空间块列表,该空间块列表中保存所有迭代细分得到的空间块的相关信息,包括所有生成的光照探针的信息。
步骤E,烘培所有生成的光照探针的光照信息,包括:
E1:在每个光照探针位置处向其四周发射射线;
E2:设置一个rgb三通道的float变量RayThrough,初始值为(1,1,1);设置一个rgb三通道的float变量Radiance,初始值为(0);
E3:如果射线与游戏场景中的虚拟物体相交,则获取当前相交点处的材质信息,并且使用如下的公式累乘到RayThrough,然后进入E4过程;相反,如果不相交则进入E6过程;
公式:RayThrough*=DiffuseColor,其中,RayThrough为累乘后的材质信息(其中,累乘的顺序为按照相交点产生的先后顺序进行累乘),DiffuseColor为相交点处的材质信息;
E4:在相交点的位置随机选择游戏场景中的目标光源,判断可见性,如果可见按照下面公式计算当前光源光照的信息,并且累加到Radiance,如下:
RayDir=normalize(LightPos–IntersectPosition);
LightDir=-Light.Direction;
Radiance+=LightColor*Visibility*dot(LightDir,RayDir)*RayThrough;
其中,Radiance为射线所对应的第一光照信息,LightColor为目标光源的颜色信息,Visibility为目标光源的可见性信息,LightDir为目标光源的方向的取反方向,RayDir为射线的方向,dot(LightDir,RayDir)为目标光源的方向与射线的方向的夹角,IntersectPosition为相交点的位置,LightPos为射线出射点的位置,normalize为归一化处理。
E5:控制射线在与虚拟场景中虚拟物体相交时,通过随机反射继续传播,具体地在相交处随机生成一条射线进行向场景中发射,如果再次与虚拟物体相交则进入E3-E5过程,得到各射线对应的第一光照信息Radiance;否则进入E6过程;
E6:按照如下公式,对环境光进行采样,并且累加到第一光照信息Radiance中得到第二光照信息:
PrimaryRayPDF=1/(4*PI)
LightProbeRadiance+=Radiance/PrimaryRayPDF;其中,PrimaryRayPDF为射线概率,LightProbeRadiance为第二光照信息的加权和;
E7:按照如下公式,对各射线所对应的第二光照信息进行加权平均处理,得到光照探针的光照信息:
LightProbeRadiance/=NumTotalPrimaryRay,其中,NumTotalPrimaryRay为所有射线的总数。
其中,每个光照探针的光照信息以3阶球面调和系数的形式保存于空间块列表,每阶对应9个系数,共27个系数。
在步骤S730中,计算各子级空间块中光照探针的光照信息与父级空间块中光照探针的光照信息的均方差;将均方差大于预定阈值的子级空间块中的光照探针,作为虚拟场景中的目标光照探针。
具体地,根据生成的所有光照探针的光照信息,进行无效的光照探针的剔除,包括:
步骤F,分级获取空间块列表,并生成覆盖虚拟场景中的场景空间的三维索引信息,即在第一层级的各空间块下对场景空间进行均匀划分,生成场景大小的三维索引信息;
步骤G,从第二层级的空间块开始,针对各子级空间块中的目标子级空间块,确定目标子级空间块与父级空间块的重合区域;确定父级空间块中生成的位于重合区域的光照探针,得到目标父级光照探针;获取目标子级空间块中生成的光照探针的光照信息与目标父级光照探针的光照信息的均方差,得到目标子级空间块对应的均方差。
按照如下公式计算目标子级空间块对应的均方差:
ErrorSquared+=(ParentAmbientColor-AmbientColor)*(ParentAmbientColor–AmbientColor);
RMSE=Sqrt(ErrorSquard/TotalCellsInBrick).GetMax();
其中,ErrorSquared为目标方差,ParentAmbientColor为光照探针对应的插值光照信息,AmbientColor为光照探针对应的光照信息,TotalCellsInBrick为目标子级空间块中生成的光照探针的个数,Sqrt为取平方根,RMSE为目标子级空间块对应的均方差。
并依次在三维索引信息中,更新均方差大于等于预定阈值的子级空间块对应的三维索引数据,并在空间块列表中剔除均方差小于预定阈值的子级空间块的相关信息。
具体地,自顶向下对三维索引数据进行更新:
G1,确定空间块是否为第一层级的空间块,如果是,在三维索引信息中更新第一层级的各空间块的三维索引数据,指向空间块自己在场景空间中的存储位置,如果不是,则进入步骤G2;
G2,即从第二层级的空间块开始,第二层级的空间块获取其所在三维索引下(子级空间块与父级空间块地重合区域)所有目标父级光照探针的光照信息,并且计算与当前层级生成的空间块中光照探针的光照信息(目标子级空间块中生成的光照探针的光照信息)的均方差,如果满足编辑器插件设定的阈值,则从空间块列表中剔除目标子级空间块,否则更新三维索引信息为目标子级空间块的位置偏移。以此类推,在三维索引信息中,更新出所有均方差大于等于预定阈值的子级空间块对应的三维索引数据及第一层级空间块对应的三维索引数据,并在空间块列表中剔除均方差小于预定阈值的子级空间块的相关信息。
G3,得到一张覆盖全场景的三维索引信息(3d索引信息),其中索引了场景空间内当前位置处应该指向的具体细化的空间块的位置,每个三维索引数据的数据格式为正整数(int)。
基于空间块列表,对于每个光照探针的光照信息可以生成7张将空间块连接到连续地址空间的三维光照贴图(3d光照贴图)的数据,每张三维光照贴图表示3阶球面调和系数中的一个(包括rgba通道的数据)。其中,第1张可以是一个rgb三通道的包括第一个球谐系数的光照贴图,每个通道对应一个球谐系数(进而可以存储3*1个球谐系数),第一张中的第一个球谐系数可以为对于光照贡献最大的系数;第2~7张可以是包括rgba四通道的光照贴图,每个通道对应一个球谐系数(进而可以存储6*4个其余球谐系数),这样7张光照贴图中共包括27个球谐系数。这样生成7张将空间块连接到连续地址空间的三维光照贴图(3d光照贴图)的数据,可以同时保证光照信息的存储和渲染计算性能。
以这种方式实现通过分层级分精度的空间块细分方案,准确可靠地根据游戏场景复杂度生成有效的、稀疏的光照探针,有效减少无效空白区域中光照探针的分布,降低游戏场景中光照探针对于存储空间的占用,为游戏场景构建和项目的开发迭代带来高效的开发效率。
例如,开发人员在改变游戏场景后无需手动调光照探针的分布,只需要点击一个烘焙按钮触发烘培器,根据场景复杂度自适应完成光照探针的布点和烘焙。又例如,相关技术中,128*128*16个均匀分布的光照探针,存储空间是128*128*16*27(球谐系数)=7077888;基于本申请的实施例,存储空间可以达到:(4x4x4+4x4x4*16+4*4*4*64)*27=139968,139968/7077888=0.019,相当于减少了98%的存储空间。
为便于更好的实施本申请实施例提供的光照探针的处理方法,本申请实施例还提供一种基于上述光照探针的处理方法的光照探针的处理装置。其中名词的含义与上述光照探针的处理方法中相同,具体实现细节可以参考方法实施例中的说明。
图8示出了根据本申请的一个实施例的光照探针的处理装置的框图。
如图8所示,光照探针的处理装置800中可以包括细分模块810、采集模块820、获取模块830及生成模块840。
细分模块810可以用于在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对所述父级空间块进行细分得到下一层级的子级空间块;采集模块820可以用于在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息;获取模块830可以用于计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差;生成模块840可以用于将所述均方差大于预定阈值的子级空间块中的光照探针,作为所述虚拟场景中的目标光照探针。
在本申请的一些实施例中,所述细分模块,包括:空间确定单元,用于在所述虚拟场景中确定目标采样空间;空间细分单元,用于按照预定细分精度,对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,所述层级的级数小于或者等于预定数目。
在本申请的一些实施例中,所述空间细分单元,包括:第一细分子单元,用于对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;第一遍历子单元,用于遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中的虚拟产物是否存在重合,确定与所述虚拟场景中的虚拟产物相交的父级空间块;第二细分子单元,用于与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
在本申请的一些实施例中,所述虚拟产物包括虚拟物体及虚拟光源;第一遍历子单元,用于执行以下方法中至少一种:检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟物体是否相交;检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟光源的覆盖半径是否相交中至少一种。
在本申请的一些实施例中,所述空间细分单元,包括:第三细分子单元,用于对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;第二遍历子单元,用于遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中虚拟产物之间的距离是否小于预定阈值,确定与所述虚拟场景中的虚拟产物相交的父级空间块;第四细分子单元,用于对与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
在本申请的一些实施例中,所述采集模块,包括:传播单元,用于在所述虚拟场景中,以各层级的所述空间块中生成的光照探针为中心向四周发射射线,并控制各所述射线在所述虚拟场景中迭代传播,直至符合预定传播条件;第一采样单元,用于在各所述射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各所述射线所对应的第一光照信息,所述相交点为射线与虚拟物体的交点;第二采样单元,用于对所述光照探针进行环境光照采样,并将采样得到的环境光照的信息聚合至各所述第一光照信息,得到各所述射线所对应的第二光照信息;加权单元,用于对各所述射线所对应的第二光照信息进行加权平均处理,得到所述光照探针的光照信息。
在本申请的一些实施例中,所述传播单元,用于:控制各所述射线在所述虚拟场景中传播,且控制各所述射线在与所述虚拟场景中虚拟物体相交时,通过随机反射继续传播,直至各所述射线不与虚拟物体相交或反射达到预定次数时,结束传播。
在本申请的一些实施例中,第一采样单元,包括:信息采集子单元,用于在各所述射线传播中产生的每个相交点,采集目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息;信息计算子单元,用于根据在每个所述相交点采集的目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息,计算每个所述相交点所对应位置的光源光照的信息;信息累加子单元,用于将各所述射线传播中产生的每个相交点所对应光源光照的信息累加,得到各所述射线所对应的第一光照信息。
在本申请的一些实施例中,所述获取模块,包括:重合确定单元,用于针对各所述子级空间块中的目标子级空间块,确定所述目标子级空间块与所述父级空间块的重合区域;父级确定单元,用于确定所述父级空间块中生成的位于所述重合区域的光照探针,得到目标父级光照探针;均方差获取单元,用于获取所述目标子级空间块中生成的光照探针的光照信息与所述目标父级光照探针的光照信息的均方差,得到所述目标子级空间块对应的均方差。
在本申请的一些实施例中,所述均方差获取单元,包括:个数获取子单元,用于获取所述目标子级空间块中生成的光照探针的个数;插值子单元,用于根据所述光照探针的个数,对所述目标父级光照探针的光照信息进行插值处理,得到所述目标子级空间块中每个光照探针对应的插值光照信息;均方差计算子单元,用于基于所述目标子级空间块中每个光照探针对应的插值光照信息、所述目标子级空间块中每个光照探针对应的光照信息以及所述目标子级空间块中生成的光照探针的个数,计算所述目标子级空间块对应的均方差。
在本申请的一些实施例中,所述均方差计算子单元,用于:计算所述目标子级空间块中,每个光照探针对应的插值光照信息及光照信息之差的平方和;将所述目标子级空间块中所有光照探针对应的平方和累加,得到目标方差;对所述目标方差除以所述目标子级空间块中生成的光照探针的个数,所得到的值开平方根,得到所述目标子级空间块对应的均方差。
在本申请的一些实施例中,所述装置还包括:列表获取模块,用于获取空间块列表,所述空间块列表中按照所述空间块的层级顺序保存所述各层级的空间块的相关信息;场景索引模块,用于生成覆盖所述虚拟场景中的场景空间的三维索引信息,所述三维索引信息为所述场景空间中的位置信息;初始更新模块,用于在所述三维索引信息中更新第一层级的各空间块的三维索引数据,所述三维索引数据为空间块的位置数据;持续生成模块,用于从第二层级的空间块开始,依次在所述三维索引信息中,更新均方差大于或者等于所述预定阈值的子级空间块对应的三维索引数据,并在所述空间块列表中剔除均方差小于所述预定阈值的子级空间块的相关信息。
以这种方式,光照探针的处理装置800,可以实现通过分层级分精度的空间块细分方案,准确可靠地根据场景复杂度生成有效的、稀疏的光照探针,有效减少无效空白区域中光照探针的分布,降低虚拟场景中光照探针对于存储空间的占用,为虚拟场景构建和项目的开发迭代带来高效的开发效率。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,本申请实施例还提供一种电子设备,该电子设备可以为终端或者服务器,如图9所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器901、一个或一个以上计算机可读存储介质的存储器902、电源903和输入单元904等部件。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器901是该电子设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行计算机设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器901可包括一个或多个处理核心;优选的,处理器901可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户页面和应用程序等,调制解调处理器主要处理无线通讯。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。
存储器902可用于存储软件程序以及模块,处理器901通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器901对存储器902的访问。
电子设备还包括给各个部件供电的电源903,优选的,电源903可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源903还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元904,该输入单元904可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器901会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器901来运行存储在存储器902中的应用程序,从而实现各种功能,如下:
在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对所述父级空间块进行细分得到下一层级的子级空间块;
在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息;
计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差;
将所述均方差大于预定阈值的子级空间块中的光照探针,作为所述虚拟场景中的目标光照探针。
一种实施例中,所述在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的所述空间块中生成光照探针,包括:
在所述虚拟场景中确定目标采样空间;
按照预定细分精度,对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,所述层级的级数小于或者等于预定数目。
一种实施例中,所述对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,包括:
对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;
遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中的虚拟产物是否存在重合,确定与所述虚拟场景中的虚拟产物相交的父级空间块;
对与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
一种实施例中,所述虚拟产物包括虚拟物体及虚拟光源;所述检测遍历到的光照探针与所述虚拟场景中的虚拟产物是否存在重合,包括以下方法中至少一种:
检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟物体是否相交;
检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟光源的覆盖半径是否相交。
一种实施例中,所述对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的所述空间块中生成光照探针,包括:
对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;
遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中虚拟产物之间的距离是否小于预定阈值,确定与所述虚拟场景中的虚拟产物相交的父级的空间块;
对与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
一种实施例中,所述在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息,包括:
在所述虚拟场景中,以各层级的所述空间块中生成的光照探针为中心向四周发射射线,并控制各所述射线在所述虚拟场景中迭代传播,直至符合预定传播条件;
在各所述射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各所述射线所对应的第一光照信息,所述相交点为射线与虚拟物体的交点;
对所述光照探针进行环境光照采样,并将采样得到的环境光照的信息聚合至各所述第一光照信息,得到各所述射线所对应的第二光照信息;
对各所述射线所对应的第二光照信息进行加权平均处理,得到所述光照探针的光照信息。
一种实施例中,所述控制各所述射线在所述虚拟场景中迭代传播,直至符合预定传播条件,包括:
控制各所述射线在所述虚拟场景中传播,且控制各所述射线在与所述虚拟场景中虚拟物体相交时,通过随机反射继续传播,直至各所述射线不与虚拟物体相交或反射达到预定次数时,结束传播。
一种实施例中,所述在各所述射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各所述射线所对应的第一光照信息,包括:
在各所述射线传播中产生的每个相交点,采集目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息;
根据在每个所述相交点采集的目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息,计算每个所述相交点所对应位置的光源光照的信息;
将各所述射线传播中产生的每个相交点所对应光源光照的信息累加,得到各所述射线所对应的第一光照信息。
一种实施例中,所述计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差,包括:
针对各所述子级空间块中的目标子级空间块,确定所述目标子级空间块与所述父级空间块的重合区域;
确定所述父级空间块中生成的位于所述重合区域的光照探针,得到目标父级光照探针;
获取所述目标子级空间块中生成的光照探针的光照信息与所述目标父级光照探针的光照信息的均方差。
一种实施例中,所述获取所述目标子级空间块中生成的光照探针的光照信息与所述目标父级光照探针的光照信息的均方差,包括:
获取所述目标子级空间块中生成的光照探针的个数;
根据所述光照探针的个数,对所述目标父级光照探针的光照信息进行插值处理,得到所述目标子级空间块中每个光照探针对应的插值光照信息;
基于所述目标子级空间块中每个光照探针对应的插值光照信息、所述目标子级空间块中每个光照探针对应的光照信息以及所述目标子级空间块中生成的光照探针的个数,计算所述目标子级空间块对应的均方差。
一种实施例中,所述基于所述目标子级空间块中每个光照探针对应的插值光照信息、所述目标子级空间块中每个光照探针对应的光照信息以及所述目标子级空间块中生成的光照探针的个数,计算所述目标子级空间块对应的均方差,包括:
计算所述目标子级空间块中,每个光照探针对应的插值光照信息及光照信息之差的平方和;
将所述目标子级空间块中所有光照探针对应的平方和累加,得到目标方差;
对所述目标方差除以所述目标子级空间块中生成的光照探针的个数,所得到的值开平方根,得到所述目标子级空间块对应的均方差。
一种实施例中,还包括:
获取空间块列表,所述空间块列表中按照所述空间块的层级顺序保存所述各层级的空间块的相关信息;
生成覆盖所述虚拟场景中的场景空间的三维索引信息,所述三维索引信息为所述场景空间中的位置信息;
在所述三维索引信息中更新第一层级的各空间块的三维索引数据,所述三维索引数据为空间块的位置数据;
从第二层级的空间块开始,依次在所述三维索引信息中,更新均方差大于或者等于所述预定阈值的子级空间块对应的三维索引数据,并在所述空间块列表中剔除均方差小于所述预定阈值的子级空间块的相关信息。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例还提供一种存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种方法中的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种方法中的步骤,因此,可以实现本申请实施例所提供的方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请上述实施例中各种可选实现方式中提供的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的实施例,而可以在不脱离其范围的情况下进行各种修改和改变。
Claims (15)
1.一种光照探针的处理方法,其特征在于,包括:
在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对所述父级空间块进行细分得到下一层级的子级空间块;
在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息;
计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差,所述光照信息为光照探针在虚拟场景中接收到的来自各个方向的光照数据;
将所述均方差大于预定阈值的子级空间块中的光照探针,作为所述虚拟场景中的目标光照探针。
2.根据权利要求1所述的方法,其特征在于,所述在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,包括:
在所述虚拟场景中确定目标采样空间;
按照预定细分精度,对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,所述层级的级数小于或者等于预定数目。
3.根据权利要求2所述的方法,其特征在于,所述对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,包括:
对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;
遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中的虚拟产物是否存在重合,确定与所述虚拟场景中的虚拟产物相交的父级空间块;
对与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
4.根据权利要求3所述的方法,其特征在于,所述虚拟产物包括虚拟物体及虚拟光源;所述检测遍历到的光照探针与所述虚拟场景中的虚拟产物是否存在重合,包括以下方法中至少一种:
检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟物体是否相交;
检测遍历到的光照探针在所述虚拟场景中所覆盖空间范围与所述虚拟光源的覆盖半径是否相交。
5.根据权利要求2所述的方法,其特征在于,所述对所述目标采样空间进行空间迭代细分,得到多个层级的空间块,在各层级的所述空间块中生成光照探针,包括:
对所述目标采样空间进行空间细分,得到第一层级的多个父级空间块,在各所述父级空间块中生成光照探针;
遍历各所述父级空间块中的光照探针,并通过检测遍历到的光照探针与所述虚拟场景中虚拟产物之间的距离是否小于预定阈值,确定与所述虚拟场景中的虚拟产物相交的父级的空间块;
对与所述虚拟场景中的虚拟产物相交的父级空间块进行细分,得到第二层级的多个子级空间块,在各所述子级空间块中生成光照探针,以将每个所述子级空间块作为新的父级空间块进行迭代细分。
6.根据权利要求1所述的方法,其特征在于,所述在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息,包括:
在所述虚拟场景中,以各层级的所述空间块中生成的光照探针为中心向四周发射射线,并控制各所述射线在所述虚拟场景中迭代传播,直至符合预定传播条件;
在各所述射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各所述射线所对应的第一光照信息,所述相交点为射线与虚拟物体的交点;
对所述光照探针进行环境光照采样,并将采样得到的环境光照的信息聚合至各所述第一光照信息,得到各所述射线所对应的第二光照信息;
对各所述射线所对应的第二光照信息进行加权平均处理,得到所述光照探针的光照信息。
7.根据权利要求6所述的方法,其特征在于,所述控制各所述射线在所述虚拟场景中迭代传播,直至符合预定传播条件,包括:
控制各所述射线在所述虚拟场景中传播,且控制各所述射线在与所述虚拟场景中虚拟物体相交时,通过随机反射继续传播,直至各所述射线不与虚拟物体相交或反射达到预定次数时,结束传播。
8.根据权利要求6所述的方法,其特征在于,所述在各所述射线传播中产生的所有相交点进行光源光照采样,并将采样得到的光源光照的信息聚合,得到各所述射线所对应的第一光照信息,包括:
在各所述射线传播中产生的每个相交点,采集目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息;
根据在每个所述相交点采集的目标光源的颜色信息、射线的方向、所述目标光源的方向、相交点处的材质信息及所述目标光源的可见性信息,计算每个所述相交点所对应位置的光源光照的信息;
将各所述射线传播中产生的每个相交点所对应光源光照的信息累加,得到各所述射线所对应的第一光照信息。
9.根据权利要求1所述的方法,其特征在于,所述计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差,包括:
针对各所述子级空间块中的目标子级空间块,确定所述目标子级空间块与所述父级空间块的重合区域;
确定所述父级空间块中生成的位于所述重合区域的光照探针,得到目标父级光照探针;
获取所述目标子级空间块中生成的光照探针的光照信息与所述目标父级光照探针的光照信息的均方差。
10.根据权利要求9所述的方法,其特征在于,所述获取所述目标子级空间块中生成的光照探针的光照信息与所述目标父级光照探针的光照信息的均方差,包括:
获取所述目标子级空间块中生成的光照探针的个数;
根据所述光照探针的个数,对所述目标父级光照探针的光照信息进行插值处理,得到所述目标子级空间块中每个光照探针对应的插值光照信息;
基于所述目标子级空间块中每个光照探针对应的插值光照信息、所述目标子级空间块中每个光照探针对应的光照信息以及所述目标子级空间块中生成的光照探针的个数,计算所述目标子级空间块对应的均方差。
11.根据权利要求10所述的方法,其特征在于,所述基于所述目标子级空间块中每个光照探针对应的插值光照信息、所述目标子级空间块中每个光照探针对应的光照信息以及所述目标子级空间块中生成的光照探针的个数,计算所述目标子级空间块对应的均方差,包括:
计算所述目标子级空间块中,每个光照探针对应的插值光照信息及光照信息之差的平方和;
将所述目标子级空间块中所有光照探针对应的平方和累加,得到目标方差;
对所述目标方差除以所述目标子级空间块中生成的光照探针的个数,所得到的值开平方根,得到所述目标子级空间块对应的均方差。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取空间块列表,所述空间块列表中按照所述空间块的层级顺序保存所述各层级的空间块的相关信息;
生成覆盖所述虚拟场景中的场景空间的三维索引信息,所述三维索引信息为所述场景空间中的位置信息;
在所述三维索引信息中更新第一层级的各空间块的三维索引数据,所述三维索引数据为空间块的位置数据;
从第二层级的空间块开始,依次在所述三维索引信息中,更新均方差大于或者等于所述预定阈值的子级空间块对应的三维索引数据,并在所述空间块列表中剔除均方差小于所述预定阈值的子级空间块的相关信息。
13.一种光照探针的处理装置,其特征在于,包括:
细分模块,用于在虚拟场景中进行空间细分,得到多个层级的空间块,在各层级的空间块中生成光照探针,其中,各层级包括至少一个空间块,按照层级顺序,将上一层级的每个空间块作为父级空间块,对所述父级空间块进行细分得到下一层级的子级空间块;
采集模块,用于在所述虚拟场景中,采集各层级的所述空间块中生成的光照探针的光照信息;
获取模块,用于计算各所述子级空间块中光照探针的光照信息与所述父级空间块中光照探针的光照信息的均方差,所述光照信息为光照探针在虚拟场景中接收到的来自各个方向的光照数据;
生成模块,用于将所述均方差大于预定阈值的子级空间块中的光照探针,作为所述虚拟场景中的目标光照探针。
14.一种电子设备,其特征在于,包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行权利要求1-12任一项所述的方法。
15.一种存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110295078.0A CN112999656B (zh) | 2021-03-19 | 2021-03-19 | 一种光照探针的处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110295078.0A CN112999656B (zh) | 2021-03-19 | 2021-03-19 | 一种光照探针的处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112999656A CN112999656A (zh) | 2021-06-22 |
CN112999656B true CN112999656B (zh) | 2022-07-29 |
Family
ID=76403016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110295078.0A Active CN112999656B (zh) | 2021-03-19 | 2021-03-19 | 一种光照探针的处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112999656B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116800984A (zh) * | 2022-03-15 | 2023-09-22 | 华为技术有限公司 | 编解码方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109712226A (zh) * | 2018-12-10 | 2019-05-03 | 网易(杭州)网络有限公司 | 虚拟现实的透明模型渲染方法及装置 |
CN110193193A (zh) * | 2019-06-10 | 2019-09-03 | 网易(杭州)网络有限公司 | 游戏场景的渲染方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190320515A1 (en) * | 2018-04-15 | 2019-10-17 | Laurence P. Sadwick | Solid State Lighting Systems |
-
2021
- 2021-03-19 CN CN202110295078.0A patent/CN112999656B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109712226A (zh) * | 2018-12-10 | 2019-05-03 | 网易(杭州)网络有限公司 | 虚拟现实的透明模型渲染方法及装置 |
CN110193193A (zh) * | 2019-06-10 | 2019-09-03 | 网易(杭州)网络有限公司 | 游戏场景的渲染方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112999656A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109523621B (zh) | 对象的加载方法和装置、存储介质、电子装置 | |
JP7169358B2 (ja) | 高速立体再構成のための視点依存ブリック選択 | |
EP3317808A1 (en) | Mixed three dimensional scene reconstruction from plural surface models | |
US10163247B2 (en) | Context-adaptive allocation of render model resources | |
CN110168614B (zh) | 用于生成混合现实中的动态虚拟内容的设备和方法 | |
CN110262865B (zh) | 构建游戏场景的方法及装置、计算机存储介质、电子设备 | |
CN112633657B (zh) | 一种施工质量管理方法、装置、设备及存储介质 | |
US10825243B1 (en) | Three-dimensional (3D) model creation and incremental model refinement from laser scans | |
CN112755535A (zh) | 光照渲染方法、装置、存储介质及计算机设备 | |
JP5873672B2 (ja) | 仮想環境のポイントにおいて受光された光の量の推定方法 | |
US20240029338A1 (en) | Ray-tracing with irradiance caches | |
US20120299921A1 (en) | Directing indirect illumination to visibly influenced scene regions | |
CN112973127A (zh) | 一种游戏3d场景编辑方法及装置 | |
CN111870952A (zh) | 一种高度图生成方法、装置、设备及存储介质 | |
CN112999656B (zh) | 一种光照探针的处理方法、装置、电子设备及存储介质 | |
CN114241119A (zh) | 一种游戏模型生成方法、装置、系统及计算机存储介质 | |
CN114299220A (zh) | 光照贴图的数据生成方法、装置、设备、介质及程序产品 | |
CN103514624A (zh) | 估算参与介质接收到的光量的方法及相应的设备 | |
CN117333637A (zh) | 三维场景的建模及渲染方法、装置及设备 | |
US20230281251A1 (en) | Object management method and apparatus, device, storage medium, and system | |
CN116612223A (zh) | 数字孪生模拟空间的生成方法、装置、计算机设备和介质 | |
CA2866589C (en) | Method for representing a participating media in a scene and corresponding device | |
CN115546408A (zh) | 模型简化方法、装置、存储介质、电子设备及产品 | |
CN116740255A (zh) | 渲染处理方法、装置、设备以及介质 | |
Alberts | Surface reconstruction from scan paths |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40046381 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |