CN116109756B - 光线追踪方法、装置、设备及存储介质 - Google Patents

光线追踪方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116109756B
CN116109756B CN202310393666.7A CN202310393666A CN116109756B CN 116109756 B CN116109756 B CN 116109756B CN 202310393666 A CN202310393666 A CN 202310393666A CN 116109756 B CN116109756 B CN 116109756B
Authority
CN
China
Prior art keywords
point
virtual scene
ray tracing
virtual
information map
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
Application number
CN202310393666.7A
Other languages
English (en)
Other versions
CN116109756A (zh
Inventor
宁效龙
徐礼铭
潘霄禹
李元亨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310393666.7A priority Critical patent/CN116109756B/zh
Publication of CN116109756A publication Critical patent/CN116109756A/zh
Application granted granted Critical
Publication of CN116109756B publication Critical patent/CN116109756B/zh
Priority to PCT/CN2024/075049 priority patent/WO2024212683A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Instructional Devices (AREA)

Abstract

本申请公开一种光线追踪方法、装置、设备及存储介质,方法包括:获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径;在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果。通过本申请,可提升光线追踪的准确性和效率。

Description

光线追踪方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及计算机图形学技术领域,尤其涉及一种光线追踪方法、装置、设备及存储介质。
背景技术
随着计算机图形学技术的发展,光线追踪技术已被广泛应用于游戏、动画、影视剧等产品中,所谓的光线追踪技术是计算机图形学中一种渲染算法,其具体行为指的是经过某点向场景投射光线,并对该光线进行追踪,以确定光线是否与场景中的某个对象相交。目前,常用的实时光线追踪方法为屏幕空间光线追踪方法,该方法旨在通过在屏幕空间内的光线步进来模拟光线追踪的过程,其具体是通过从屏幕空间内的每个像素点发射若干条射线,再基于屏幕空间内的深度信息对每条射线进行光线步进,进而测试每条射线的相交状态以达到光线追踪的目的。由于此方案在进行光线追踪时,只有当前屏幕空间内的深度信息,无法获取屏幕外的深度信息,因此若光线行进到了屏幕以外的区域,则无法继续追踪该光线,从而导致该条光线的光线追踪结果会直接被视为未击中有效表面;可见,现有的仅基于屏幕空间内深度信息进行光线追踪的方法无法得到准确的结果,存在较大的局限性。
发明内容
本申请实施例提供了一种光线追踪方法、装置、设备及存储介质,可以实现提升光线追踪的准确性,以及提升光线追踪的效率。
一方面,本申请实施例提供了一种光线追踪方法,所述方法包括:
获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;
在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;
将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径;
在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果。
另一方面,本申请实施例提供了一种光线追踪装置,所述装置包括:
获取单元,用于获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;
处理单元,用于在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;
所述处理单元,还用于将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径;
所述处理单元,还用于在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果。
再一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括输入接口和输出接口,所述计算机设备还包括:处理器以及计算机存储介质;
其中,所述处理器适于实现一条或多条指令,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行上述所提及的光线追踪方法。
再一方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行上述所提及的光线追踪方法。
再一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序;所述计算机程序被处理器执行时,实现上述所提及的光线追踪方法。
本申请实施例通过获取记录有虚拟场景的全视角深度信息的信息贴图,并将虚拟场景中用于光线追踪的追踪射线从虚拟场景投影至信息贴图,得到追踪射线在信息贴图上的行进路径,进而在信息贴图上沿着该行进路径进行光线追踪的方式,可解决传统的光线追踪方法因缺少屏幕空间外的深度信息而导致的无法在屏幕空间外进行有效光线追踪的局限性。也就是说,本申请实施例通过在记录有全视角深度信息的信息贴图上进行光线追踪,可以实现将光线追踪扩展到屏幕外,这样可大幅增加光线击中有效表面的几率,从而提升光线追踪的准确性,从而显著提升基于光线追踪结果所实现的全局光照效果。并且,由于信息贴图可以是一个2D(二维)的贴图,因此可知本申请实施例的整个光线追踪流程在一张2D(二维)的贴图上即可完成,这样可极大提升光线追踪的效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种由终端和服务器共同执行光线追踪方法的示意图;
图1b是本申请实施例提供的另一种由终端和服务器共同执行光线追踪方法的示意图;
图2是本申请实施例提供的一种光线追踪方法的流程示意图;
图3a是本申请实施例提供的一种在虚拟场景中生成离散面元的示意图;
图3b是本申请实施例提供的一种在虚拟场景中生成追踪射线的示意图;
图3c是本申请实施例提供的一种八面体映射的示意图;
图3d是本申请实施例提供的一种得到追踪射线在信息贴图上的行进路径的示意图;
图4是本申请另一实施例提供的一种光线追踪方法的流程示意图;
图5a是本申请实施例提供的一种摄像机的视锥体的示意图;
图5b是本申请实施例提供的一种获取信息贴图的示意图;
图5c是本申请实施例提供的一种标识步进点的示意图;
图6是本申请实施例提供的一种光线追踪装置的结构示意图;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例基于AI(Artificial Intelligence,人工智能)技术中的计算机视觉技术(Computer Vision,CV)和计算机图形学技术,提出了一种基于虚拟场景的全视角深度信息进行光线追踪的方法。所谓的AI技术是指:利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统的技术。换句话说,AI是计算机科学的一个综合技术;其主要通过了解智能的实质,生产出一种新的能以人类智能相似的方式做出反应的智能机器,使得智能机器具有感知、推理与决策等多种功能。AI技术中的计算机视觉技术是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、追踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像的技术。AI技术中的计算机图形学技术是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学;简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
在本申请实施例中,虚拟场景可以理解成是可在设备屏幕中进行显示的场景。具体的,该虚拟场景可以是对真实世界中的场景进行仿真所得到的场景,例如对真实世界中的自动驾驶场景或景区游玩场景进行仿真所得到的场景;或者,该虚拟场景也可以是半仿真半虚构的场景,例如在真实世界对应的仿真世界中叠加了虚构人物的场景;又或者,该虚拟场景还可以是纯虚构的场景,例如游戏场景、影视剧或电影中的场景,等等。
虚拟场景中可包括至少一个虚拟对象,所谓的虚拟对象可以是虚拟场景中的静态物体元素,如虚拟草地、虚拟建筑物等;或者,虚拟对象可以是虚拟场景中的可活动对象,如游戏场景中的虚拟角色,游戏场景中的虚拟动物等。应理解的是,虚拟场景中的各个虚拟对象可以均是静态物体元素,也可以均是可活动对象,还可以同时包含静态物体元素和可活动对象,对此不作限定。进一步的,虚拟场景中还可包括摄像机,该摄像机是一种用于呈现虚拟场景在至少一个视角方向下的视图的组件;本申请实施例对摄像机在虚拟场景中的位置不作限定,例如其可以位于虚拟场景中的某一虚拟对象所处的位置,或者位于虚拟场景中除各虚拟对象所处位置以外的任一位置,等等。
所谓的全视角是指任一对象(如用户或摄像机)观看虚拟场景的全部视角(即360°的视角),其可包括多个视角方向下的视角,此处提及的多个视角方向可根据经验值或者实际需求设置;例如,设虚拟场景是基于三维笛卡尔坐标系搭建的,所谓的三维笛卡尔坐标系是一种可在三维空间中定义对象位置的坐标系,其是由X轴(横轴)、Y轴(纵轴)和Z轴(竖轴)等三条坐标轴组成的,那么多个视角方向可包括:三维笛卡尔坐标系中的每个坐标轴的正方向(即坐标轴的箭头所指的方向),以及每个坐标轴的负方向(即与坐标轴的箭头所指方向相反的方向)。由于全视角可以观看到虚拟场景中的所有虚拟对象,因此全视角深度信息可包括虚拟场景中的各个虚拟对象的深度值;其中,任一虚拟对象的深度值是指相应虚拟对象与摄像机之间的距离值。应理解的是,无论是在哪个视角下,同一个虚拟对象和摄像机之间的距离值是不变的,因此在全视角中的不同视角下,同一个虚拟对象的深度值是相同的。在光线追踪的过程中,任一虚拟对象的深度值可用于判断光线所达之处是否存在虚拟对象,从而得到光线追踪结果。
基于上述定义,下面对本申请实施例所提出的基于虚拟场景的全视角深度信息进行光线追踪的方法进行原理阐述;具体的,该方法的大致原理如下:首先,可获取虚拟场景的信息贴图,并在虚拟场景中基于存在光线追踪需求的虚拟对象所处的位置,生成用于光线追踪的追踪射线;接着,可通过将追踪射线从虚拟场景投影至信息贴图的方式,来得到追踪射线在信息贴图上的行进路径;然后,可在信息贴图上,沿着该行进路径进行光线追踪。由于信息贴图记录了虚拟场景的全视角深度信息,而全视角深度信息包括了虚拟场景中的全部虚拟对象的深度值,即全视角深度信息既包含了屏幕中所呈现的虚拟对象的深度值,也包含了屏幕中未呈现的虚拟对象的深度值(即屏幕外的虚拟对象的深度值);因此,本申请实施例通过在记录有全视角深度信息的信息贴图上进行光线追踪,可以实现同时基于屏幕中的虚拟对象的深度值以及屏幕外的虚拟对象的深度值进行光线追踪,从而实现将光线追踪扩展到屏幕外,从而解决传统的光线追踪方法因缺少屏幕空间外的深度信息而导致的无法在屏幕空间外进行有效光线追踪的局限性,这样可大幅增加光线击中有效表面的几率,提升光线追踪的准确性。并且,由于信息贴图可以是一个2D(二维)的贴图,因此可知本申请实施例的整个光线追踪流程在一张2D(二维)的贴图上即可完成,这样可极大提升光线追踪的效率。
在具体实现中,上述所提及的方法可由一个计算机设备执行,该计算机设备可以是终端或服务器。或者,上述所提及的方法可由终端和服务器共同执行;例如,可由终端负责获取信息贴图,生成追踪射线,以及确定追踪射线在信息贴图上的行进路径,然后将行进路径和信息贴图发送给服务器,使得服务器执行在信息贴图上沿着行进路径进行光线追踪的步骤,如图1a所示。又如,也可由服务器负责获取信息贴图以及生成追踪射线,然后将信息贴图和追踪射线发送给终端,使得终端通过投影追踪射线的方式来得到追踪射线在信息贴图上的行进路径,并在信息贴图上沿着行进路径进行光线追踪,如图1b所示。再如,还可由服务器和终端各自获取信息贴图,且由服务器执行一系列操作来得到追踪射线在信息贴图上的行进路径,并将行进路径发送给终端,使得终端在自己生成的信息贴图上,沿着服务器所发送的行进路径进行光线追踪,等等。
其中,上述所提及的终端可以包括但不限于:智能手机、电脑(如平板电脑、笔记本电脑、台式计算机等)、智能穿戴设备(如智能手表、智能眼镜等)、智能语音交互设备、智能家电(如智能电视)、车载终端或飞行器等;服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、及大数据和人工智能平台等基础云计算服务的云服务器,等等。另外,终端和服务器可以位于区块链网络外,也可以位于区块链网络内,对此不作限定;所谓的区块链网络是一种由点对点网络(P2P网络)和区块链所构成的网络,而区块链则是指一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块(或称为区块)。当终端和服务器中的任一设备位于区块链网络内,或者与区块链网络存在通信连接时,该任一设备可将内部数据上传至区块链网络的区块链中进行存储,以防止计算机设备的内部数据被篡改,从而提升内部数据的安全性。
基于上述描述,本申请实施例提出了一种光线追踪方法。该光线追踪方法可由上述所提及的计算机设备(终端或者服务器)执行,也可由终端和服务器共同执行;为便于阐述,后续均以计算机设备执行该光线追踪方法为例进行说明。请参见图2,该光线追踪方法可以包括如下步骤S201-S204:
S201,获取虚拟场景的信息贴图,该信息贴图记录了虚拟场景的全视角深度信息。
在一种具体实现中,由前述可知,虚拟场景的全视角包括多个视角方向下的视角,那么计算机设备在执行步骤S201时,可以分别在每个视角方向下采集虚拟场景在相应视角方向下的深度信息,从而根据采集到的深度信息构建虚拟场景的信息贴图。具体的,步骤S201的实施方式可以是:首先,可获取虚拟场景的初始三维贴图,该初始三维贴图是用于记录虚拟场景在各视角方向下的场景视图的图像,其可包括多个面,一个面表示虚拟场景在一个视角方向下的场景视图,不同面对应的视角方向不同;也就是说,初始三维贴图所涉及的面的数量与虚拟场景所涉及的视角方向的数量相同,当虚拟场景涉及6个视角方向(如前述提及的X轴、Y轴和Z轴的正方向和负方向)时,该初始三维贴图可以是一个由6个面所构成的立方体贴图(Cube map),且该立方体贴图的6个面分别表示着沿X轴、Y轴和Z轴的正方向和负方向观看虚拟场景时,所看到的场景视图。其次,可获取虚拟场景在各个视角方向下的深度信息,任一深度信息包括:相应视角方向下的场景视图中的各个虚拟对象的深度值;应理解的是,若存在某一视角方向下的场景视图中未包括虚拟对象,则该视角方向下的深度信息为空。然后,可将获取到的各个深度信息中的深度值,记录到初始三维贴图的相应面中的像素点中,得到目标三维贴图;并可将目标三维贴图中的每个像素点映射至二维的空白贴图(即不包含任何信息的图像)中,得到虚拟场景的信息贴图。可见,通过此实施方式所得到的信息贴图是直接记录虚拟场景的全视角深度信息(即各个虚拟对象的深度值)的,这样可以实现在信息贴图中查找任一虚拟对象的深度值时,有效提升查找效率。
另一种具体实现中,计算机设备也可通过离散面元来构建虚拟场景的信息贴图,所谓的离散面元是指具有方向和大小的平面图形(如椭圆形、圆形等)。具体的,步骤S201的实施方式可以是:首先,可在虚拟场景中生成多个离散面元,虚拟场景中的每个虚拟对象的表面贴附有至少一个离散面元;示例性的,在虚拟场景中生成离散面元的示意图可参见图3a所示。其次,可获取各个离散面元和摄像机之间的距离值,作为相应离散面元在虚拟场景中的深度值;其中,任一离散面元和摄像机之间的距离值的获取方式可以是:根据任一离散面元的世界空间坐标以及摄像机的世界空间坐标进行欧氏距离的计算,得到相应离散面元和摄像机之间的距离值,所谓的世界空间坐标是指在世界空间坐标系中的坐标,而世界空间坐标系又可称为绝对坐标系,其不随视角或者其他因素而发生变化。在得到各个离散面元在虚拟场景中的深度值后,计算机设备可采用各个离散面元在虚拟场景中的深度值,构建虚拟场景的信息贴图。具体的,计算机设备可获取一个二维的贴图模板,该贴图模板中包括多个像素点,一个像素点用于存储一个深度值;分别根据每个离散面元和摄像机之间的方向向量,在贴图模板中查找每个离散面元所对应的像素点,然后将每个离散面元在虚拟场景中的深度值存储至相应像素点中,得到虚拟场景的信息贴图。可见,通过此实施方式所得到的信息贴图是通过记录贴附于各个虚拟对象的表面的离散面元的深度值,来实现对虚拟场景的全视角深度信息进行记录的;相较于通过采集每个视角方向下的深度信息来得到信息贴图的方式,此实施方式可简化信息贴图的构建流程,提升信息贴图的获取效率。
S202,在虚拟场景中,基于参考点生成用于光线追踪的追踪射线。
在步骤S202的具体实现中,计算机设备可调用图像处理引擎在虚拟场景中,基于参考点生成追踪射线,所谓的追踪射线可理解成是一条虚拟的光线(即不存在于虚拟场景中的光线)。进一步的,计算机设备可调用图像处理引擎根据业务需求确定一个追踪射线的发射方向,或者,随机确定一个追踪射线的发射方向;然后,调用图像处理引擎在虚拟场景中的参考点,朝着该发射方向生成一条用于光线追踪的追踪射线。
其中,参考点是指:虚拟场景中存在光线追踪需求的虚拟对象所处的位置。在实际应用中,可根据业务需求设定虚拟场景中存在光线追踪需求的虚拟对象;例如参见图3b所示,若业务需求指示需要收集图3b中的虚拟角色31的光照信息,则可设定虚拟角色31存在光线追踪需求,从而使得计算机设备在执行步骤S202时,将虚拟角色31在虚拟场景中所处的位置确定为参考点,进而基于该参考点生成图3b中的追踪射线32。或者,计算机设备也可随机地从虚拟场景中选取一个虚拟对象作为存在光线追踪需求的虚拟对象,从而使得计算机设备在执行步骤S202时,将随机选取的虚拟角色在虚拟场景中所处的位置确定为参考点。
S203,将追踪射线从虚拟场景投影至信息贴图,得到追踪射线在信息贴图上的行进路径。
由于虚拟场景处于三维空间,而经研究表明,三维空间内的一条射线以八面体映射的方式映射到二维图像时,会被分割为多条连续的线段(最多为4条线段),每条线段分布在八面体的一个独立的面上,且任一线段在二维图像上的起始点是该射线在三维空间内与相应坐标系的三个轴平面的相交点的二维投影;因此依据这一原理可知,当虚拟场景中的追踪射线通过八面体映射的方式被投影至二维的信息贴图上时,可得到多条连续的线段,而这些连续的线段便可作为该追踪射线在信息贴图上的行进路径。在本申请实施例中,八面体映射是一种球面参数化映射方式,其原理是将球面参数映射到八面体上,再进一步映射到二维图像上的参数映射方式,如图3c所示。
基于此,计算机设备在执行步骤S203时,可通过八面体映射操作将追踪射线的起始点投影至信息贴图,得到第一投影点。以及,确定虚拟场景所对应的三维空间坐标系,并通过八面体映射操作,将追踪射线与三维空间坐标系中的至少一个轴平面之间的交点,投影至信息贴图,得到至少一个第二投影点。另外,还可根据预设的追踪路径阈值(或称为最大追踪路径,其单位为长度单位)在追踪射线上确定路径终止点,并通过八面体映射操作将路径终止点投影至信息贴图,得到第三投影点。然后,可依次连接第一投影点、至少一个第二投影点以及第三投影点,得到追踪射线在信息贴图上的行进路径。示例性的,设第二投影点的数量为3个,且采用标号33标识第一投影点,采用标号34标识各个第二投影点,采用标号35标识第三投影点,则得到追踪射线在信息贴图上的行进路径可参见图3d所示;其中,第一投影点是行进路径的起点S,第三投影点是行进路径的终点E。
进一步的,计算机设备通过八面体映射操作将任一点投影至信息贴图的实施方式可以是:首先,可获取任一点和摄像机之间的方向向量,该方向向量的方向为摄像机指向任一点的方向;其次,可对该方向向量中的各向量元素进行归一化处理,以使得归一化后的方向向量的模为1,这样可使得归一化后的方向向量用于表示任一点在以摄像机为中心所构建的球面上的位置;然后,可采用目标伪代码将归一化后的方向向量转换成二维坐标,转换得到的二维坐标便为该任一点在信息贴图上的投影点的坐标。其中,目标伪代码具体如下:
//InVector3为三维的方向向量输入,该函数返回值为转换后的二维坐标OutOct2
float2 float3_to_oct(in float3 InVector3)
{
//OutOct2为最终二维坐标输出,abs函数代指求绝对值操作
float2 OutOct2=InVector3.xy
Figure SMS_1
(1.0 / (abs(InVector3.x) + abs(InVector3.y) + abs(InVector3.z)));
// factor为用于修正OutOct2正负值的系数
float2 factor;
if (InVector3.x>0&&InVector3.y>0)
{
factor = float2(1, 1);
}
else if (InVector3.x>0&&InVector3.y<= 0)
{
factor = float2(1, -1);
}
else if (InVector3.x<= 0&&InVector3.y>0)
{
factor = float2(-1, 1);
}
else
{
factor = float2(-1, -1);
}//InVector3的x分量是否大于0,若是,则x分量取值为1,否则取值为-1;InVector3的y分量是否大于0,若是,则y分量取值为1,否则取值为-1
if (InVector3.z<= 0)
{
OutOct2 = (1 – abs(OutOct2.yx))
Figure SMS_2
factor;
}//如果InVector3的z分量小于等于0,则进行正负修正
return OutOct2;
}
S204,在信息贴图上,沿着行进路径进行光线追踪,得到光线追踪结果。
由前述描述可知,信息贴图包括多个像素点,一个像素点存储一个深度值,虚拟场景中的一个虚拟对象与信息贴图中的至少一个像素点对应。其中,若信息贴图是直接记录虚拟场景的各个虚拟对象的深度值的,则一个虚拟对象和一个像素点对应;若信息贴图是通过记录贴附于各个虚拟对象的表面的离散面元的深度值,来实现对虚拟场景的各个虚拟对象的深度值进行记录的,则一个虚拟对象所对应的像素点的数量与该虚拟对象所涉及的离散面元的数量相同。基于此,计算机设备在执行步骤S204时,可以根据信息贴图中的像素点存储的深度值,判断光线是否击中有效表面,从而得到光线追踪结果。
其中,有效表面是指虚拟场景中的任一虚拟对象的表面;即光线击中有效表面的含义可理解成:光线(即追踪射线)击中某一虚拟对象的表面。可理解的是,判断光线是否击中有效表面,本质上就是看光线所到之处是否存在虚拟对象;若存在,则表明光线会击中该虚拟对象的表面。由于当虚拟场景中的某一位置存在虚拟对象时,该位置处的深度值会小于或等于信息贴图上与该位置对应的像素点存储的深度值,因此计算机设备可通过判断信息贴图中的像素点存储的深度值,与该像素点的真实深度值(即像素点在虚拟场景中的映射点的深度值)之间的大小关系,来判断光线是否击中有效表面。若像素点存储的深度值大于或等于该像素点的真实深度值,则表明该像素点在虚拟场景中的映射点存在虚拟对象,从而表明光线可击中有效表面,否则,则表明光线未击中有效表面。通过此实施方式来判断光线是否击中有效表面,可无需关注摄像机所处的位置,可提升光线追踪的效率,以及光线追踪结果的准确性。进一步的,考虑到前述获取信息贴图时,可能存在某些因素导致信息贴图所存储的深度值具有一定的误差,那么为了提升光线追踪的容错率,计算机设备也可通过判断像素点存储的深度值和真实深度值之间的差值是否小于或等于差值阈值,来光线是否击中有效表面;若差值小于或等于差值阈值,则表明该像素点在虚拟场景中的映射点存在虚拟对象,从而表明光线可击中有效表面,否则,则表明光线未击中有效表面。
或者,由前述可知,本申请实施例未对摄像机在虚拟场景中的位置进行限定,其可以位于虚拟场景中的某一虚拟对象所处的位置,也可以位于虚拟场景中除各虚拟对象所处位置以外的任一位置等。由于任一虚拟对象的深度值是指相应虚拟对象与所述摄像机之间的距离值,而当摄像机位于除各虚拟对象所处位置以外的任一位置时,各个虚拟对象和摄像机之间的距离值必然为有效值(即不为零的值),从而可知此情况下的信息贴图所记录的各个虚拟对象的深度值必然为有效值;那么此情况下,计算机设备便可通过判断信息贴图中的像素点存储的深度值是否为有效值,来判断光线是否击中有效表面。若像素点存储的深度值为有效值,则表明该像素点在虚拟场景中的映射点存在虚拟对象,从而表明光线可击中有效表面,否则,则表明光线未击中有效表面。
本申请实施例通过获取记录有虚拟场景的全视角深度信息的信息贴图,并将虚拟场景中用于光线追踪的追踪射线从虚拟场景投影至信息贴图,得到追踪射线在信息贴图上的行进路径,进而在信息贴图上沿着该行进路径进行光线追踪的方式,可解决传统的光线追踪方法因缺少屏幕空间外的深度信息而导致的无法在屏幕空间外进行有效光线追踪的局限性。也就是说,本申请实施例通过在记录有全视角深度信息的信息贴图上进行光线追踪,可以实现将光线追踪扩展到屏幕外,这样可大幅增加光线击中有效表面的几率,从而提升光线追踪的准确性。并且,由于信息贴图可以是一个2D(二维)的贴图,因此可知本申请实施例的整个光线追踪流程在一张2D(二维)的贴图上即可完成,这样可极大提升光线追踪的效率。
基于上述图2所示的方法实施例,本申请实施例进一步提出了一种更为具体的光线追踪方法。在本申请实施例中,主要以计算机设备执行该光线追踪方法为例进行说明;且本申请实施例选择利用将虚拟场景中所有虚拟对象基于某一摄像机点进行深度测试后得到的球面深度信息经八面体映射后,所得到的2D的信息贴图作为全视角深度信息的表示方式。请参见图4所示,该光线追踪方法可包括以下步骤S401-S407:
S401,获取虚拟场景的初始三维贴图,该初始三维贴图包括多个面,一个面表示虚拟场景在一个视角方向下的场景视图,不同面对应的视角方向不同。
S402,获取虚拟场景在各个视角方向下的深度信息,任一深度信息包括:相应视角方向下的场景视图中的各个虚拟对象的深度值。
由于虚拟场景在各个视角方向下的场景视图是通过摄像机拍摄得到的,因此计算机设备可基于摄像机来采集虚拟场景在各个视角方向下的深度信息。在执行步骤S402的具体过程中,计算机设备可先遍历虚拟场景的全视角所涉及的各个视角方向,并控制摄像机朝着当前遍历的视角方向,对虚拟场景中的虚拟对象进行视锥体裁剪。所谓的视锥体裁剪是指判断虚拟对象是否落入(位于)摄像机的视锥体中的处理,若任一虚拟对象落入摄像机的视锥体中,则任一虚拟对象通过视锥体裁剪,否则,该任一虚拟对象未通过视锥体裁剪。其中,此处提及的视锥体是指摄像机可见的锥体空间,看上去像截掉顶部的金字塔;如图5a所示,摄像机的视锥体由近裁剪面、远裁剪面以及4个视锥面。近裁剪面是为了防止虚拟对象离摄像机过近而不可见所设置的面,远裁剪面是为了防止虚拟对象离摄像机太远而不可见所设置的面,4个视锥面则是从摄像机发散的4条线与两个裁剪面相切所构成的面。
然后,可对通过视锥体裁剪的各个虚拟对象进行深度测试,得到虚拟场景在当前遍历的视角方向下的深度信息。具体的,计算机设备可轮询通过视锥体裁剪的各个虚拟对象;根据当前轮询的虚拟对象的位置坐标和摄像机的位置坐标,计算当前轮询的虚拟对象和摄像机之间的距离值;并将计算得到的距离值作为当前轮询的虚拟对象的深度值,添加至虚拟场景在当前遍历的视角方向下的深度信息中。其中,此处提及的虚拟对象和摄像机的位置坐标可以是世界空间坐标,也可以是虚拟对象和摄像机在虚拟场景的场景坐标系(即以虚拟场景中的某点所建立的坐标系)中的坐标,对此不作限定。且计算机设备可根据两个位置坐标进行欧氏距离的计算,得到距离值;也就是说,计算机设备可根据当前轮询的虚拟对象的位置坐标和摄像机的位置坐标,计算当前轮询的虚拟对象和摄像机之间的欧氏距离,得到相应的距离值。
应理解的是,当控制摄像机朝着当前遍历的视角方向,对虚拟场景中的虚拟对象进行视锥体裁剪时,若不存在虚拟对象通过视锥体裁剪,即所有虚拟对象均未落入摄像机的视锥体中,则虚拟场景在当前遍历的视角方向下的深度信息为空。
S403,将获取到的各个深度信息中的深度值,记录到初始三维贴图的相应面中的像素点中,得到目标三维贴图。
具体的,计算机设备可轮询各个任一视角方向,并遍历当前轮询的视角方向下的深度信息中的各个深度值,确定当前遍历的深度值所属的虚拟对象;在初始三维贴图中与当前轮询的视角方向对应的面中,查找确定出的虚拟对象所对应的像素点;然后将当前遍历的深度值存储至查找到的像素点中,并继续遍历,直至当前轮询的视角方向下的深度信息中的各个深度值均被遍历。然后,继续轮询其他视角方向,直至各个视角方向均被轮询,以及各个视角方向下的深度信息中的深度值均被遍历,得到目标三维贴图。
S404,将目标三维贴图中的每个像素点映射至二维的空白贴图中,得到虚拟场景的信息贴图,以实现通过二维的信息贴图来记录虚拟场景的全视角深度信息,使得后续通过步骤S405-S407在信息贴图上进行光线追踪时,光线追踪的整个流程可在一个二维图像上完成,从而提升光线追踪效率。
具体的,针对目标三维贴图中的任一像素点,可确定该任一像素点在虚拟场景中所对应的位置点,然后通过八面体映射操作将该位置点投影至二维的空白贴图中,得到该位置点对应的投影点,并将该任一像素点记录到该投影点处。其中,通过八面体映射操作投影该位置点的方式与前述图2所示方法实施例中的步骤S203的相关描述,在此不再赘述。另外,任一像素点在虚拟场景中对应的位置点是指:任一像素点所表示的对象在虚拟场景中所处的位置;例如,任一像素点表示的对象为某一虚拟对象的眼睛,则该任一像素点在虚拟场景中所对应的位置点便为该虚拟对象的眼睛所处的位置。示例性的,通过映射目标三维贴图中的每个像素点所得到的信息贴图可参见图5b所示;应理解的是,图5b中的左侧图未完全展示目标三维贴图,其只示例性地展示了目标三维贴图中的部分面。
S405,在虚拟场景中,基于参考点生成用于光线追踪的追踪射线。
S406,将追踪射线从虚拟场景投影至信息贴图,得到追踪射线在信息贴图上的行进路径。
需要说明的是,步骤S405-S406的具体实施方式可参见前述图2所示的方法实施例中的步骤S202-S203的具体实施方式,在此不再赘述。并且,本申请实施例对步骤S405和步骤S401-S404的执行顺序不作限定。也就是说,计算机设备可先执行步骤S401-S404,再执行步骤S405;或者,先执行步骤S405,再执行步骤S401-S404;又或者,计算机设备也可同时执行步骤S401-S404和步骤S405等。
S407,在信息贴图上,沿着行进路径进行光线追踪,得到光线追踪结果。
在步骤S407的一种具体实现中,计算机设备可以执行如下步骤s11-s14:s11,在行进路径上选取一个像素点作为当前步进点。s12,在信息贴图中查找当前步进点存储的深度值,作为当前步进点的参考深度值。s13,将当前步进点映射至虚拟场景中以得到映射点,并根据映射点在虚拟场景中的位置确定当前步进点的真实深度值。s14,根据当前步进点的参考深度值和当前步进点的真实深度值,生成光线追踪结果。其中:
在执行步骤s11时,计算机设备可先根据预设步长在信息贴图上确定出多个步进点,从而通过步进点选取的方式确定当前步进点,步长是指行进时,相邻的两个落脚点之间的距离;此情况下,步骤s11的实施方式可以是:按照预设步长将行进路径划分成多条追踪线段,并将每条追踪线段的结尾点标识为步进点;依次步进至标识出的各个步进点,并将当前步进至的步进点确定为当前步进点。例如参见图5c所示:设按照预设步长将行进路径划分成了3条追踪线段(图5b中采用虚线表示的线段):线段SA,线段AB和线段BE;那么,可采用五角星图案,将线段SA的结尾点A,线段AB的结尾点B以及线段BE的结尾点E标识为步进点。此实施方式通过先确定多个步进点再执行步进操作,可提升步进时的效率,从而提升当前步进点的选取效率。
或者,计算机设备可以直接在信息贴图上步进,以实时地确定出当前步进点;此情况下,步骤s11的实施方式可以是:先确定当前待执行的步进操作所对应的步长,根据确定出的步长在行进路径上执行一次步进操作,并将执行步进操作后所到达的像素点确定为当前步进点,这样可无需提前确定多个步进点,节省处理资源。此实施方式通过实时确定当前步进点,可无需预先标识各个步进点,可节省处理资源。需要说明的是,此实施方式中,不同时刻所执行的步进操作对应的步长可相同或不同,对此不作限定。例如,计算机设备每次执行步进操作时,可获取预设步长作为当前步进操作对应的步长,此情况下的不同时刻所执行的步进操作的步长相同;又如,计算机设备也可随机生成一个步长,此情况下的不同时刻所执行的步进操作的步长可不同,这样可提升步进过程的多样性和真实性。
在执行步骤s13时,计算机设备可先根据前述提及的八面体映射操作的原理,反向地将当前步进点映射至八面体上,再映射到以摄像机为中心的球面,最后映射到虚拟场景中以得到映射点;然后,计算机设备在根据映射点在虚拟场景中的位置确定当前步进点的真实深度值时,可以根据映射点在虚拟场景中的位置,以及摄像机在虚拟场景中的位置,计算映射点和摄像机之间的距离值;并将计算得到的距离值,确定为当前步进点的真实深度值。
在执行步骤s14时,计算机设备可判断当前步进点的参考深度值是否大于或等于当前步进点的真实深度值。若当前步进点的参考深度值大于或等于当前步进点的真实深度值,则表明当前步进点在虚拟空间中所对应的映射点处存在虚拟对象,因此此时可结束步进,并生成用于指示光线击中有效表面的光线追踪结果。若当前步进点的参考深度值小于当前步进点的真实深度值,则表明当前步进点在虚拟空间中所对应的映射点处未存在虚拟对象,因此此时可继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。此处提及的指定像素点可以是预先设定的像素点,也可以是与追踪路径的起点相距目标距离的像素点,该目标距离可随机生成或预先设置,对此不作限定。
或者,计算机设备可计算当前步进点的参考深度值和当前步进点的真实深度值之间的差值,判断计算出的差值是否小于或等于差值阈值。若计算出的差值小于或等于差值阈值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果;若计算出的差值大于差值阈值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
在步骤S407的另一种具体实现中,计算机设备可以执行如下步骤s21-s25:s21,在行进路径上选取一个像素点作为当前步进点。s22,在信息贴图中查找当前步进点存储的深度值,作为当前步进点的参考深度值。s23,判断当前步进点的参考深度值是否为有效值。s24,若当前步进点的参考深度值为有效值(即不为零的值),则结束步进,并生成用于指示光线击中有效表面的光线追踪结果。s25,若当前步进点的参考深度值为无效值(即零值),则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。应理解的是,步骤s21-s25可以是在摄像机未位于虚拟场景中的各个虚拟对象所处位置的情况下执行的;并且,步骤s21的具体实施方式可参见上述步骤s11的描述,在此不再赘述。
本申请实施例通过获取记录有虚拟场景的全视角深度信息的信息贴图,并将虚拟场景中用于光线追踪的追踪射线从虚拟场景投影至信息贴图,得到追踪射线在信息贴图上的行进路径,进而在信息贴图上沿着该行进路径进行光线追踪的方式,可解决传统的光线追踪方法因缺少屏幕空间外的深度信息而导致的无法在屏幕空间外进行有效光线追踪的局限性。也就是说,本申请实施例通过在记录有全视角深度信息的信息贴图上进行光线追踪,可以实现将光线追踪扩展到屏幕外,这样可大幅增加光线击中有效表面的几率,从而提升光线追踪的准确性。并且,由于信息贴图可以是一个2D(二维)的贴图,因此可知本申请实施例的整个光线追踪流程在一张2D(二维)的贴图上即可完成,这样可极大提升光线追踪的效率。
在实际应用中,上述图2和图4所示的光线追踪方法可被运用在各种虚拟场景中,如游戏场景,影视剧中的场景等。示例性的,以虚拟场景为游戏场景为例,该光线追踪方法的应用过程可包括如下两部分:
第一部分,对游戏场景的全视角深度信息进行表示。此部分可选择利用将游戏场景中所有虚拟对象基于某一摄像机点进行深度测试后得到的球面深度信息,经八面体映射后所得到的2D的信息贴图作为游戏场景的全视角深度信息的表示方式。其中,得到2D的信息贴图的一种做法可以如下:
首先,可通过如下步骤①-④构建场景全视角深度信息的目标Cube map(即目标三维贴图):
①选定X+轴,将摄像机的当前朝向设定为X+轴方向;
②在当前朝向上控制摄像机对游戏场景中的所有虚拟对象执行视锥体裁剪;
③若虚拟对象通过视锥体裁剪,则对其进行深度测试,以此将视锥体内的所有虚拟对象进行深度测试后所得到的深度值,记录到初始Cube map(即初始三维贴图)中与X+轴对应的面上;
④对剩下的五个视角方向(X-轴,Y+轴,Y-轴,Z+轴,Z-轴)依次执行步骤①~③中的操作,最终即可得到一张记录了游戏场景的全场景深度信息的目标Cube map。
在得到记录了游戏场景的全视角深度信息的目标Cube map后,可以对目标Cubemap上每一个像素进行八面体映射操作,得到记录了游戏场景的全视角深度信息的2D的信息贴图。
第二部分,基于全视角深度信息的光线追踪。在此部分中,光线在三维笛卡尔坐标系的行进路径,可以通过八面体映射算法被重投影到2D的信息贴图上,进而可以实现在一张2D的信息贴图上实现对全视角范围内(包括屏幕内与屏幕外)的光线追踪。示例性的,该部分的一种具体实现可以如下:
(1)基于游戏场景中存在光线追踪需求的虚拟对象所处的位置,生成追踪射线,并为该追踪射线设定最大追踪路径;
(2)将追踪射线投影至2D的信息贴图,得到最多四条连续的线段,这几条连续的线段构成追踪射线在信息贴图上的行进路径;
(3)依序按预设步长将该行进路径等分成若干条追踪线段,并得到相应的步进点;
(4)依次步进至各个步进点,将当前步进的当前步进点在信息贴图上的参考深度值与该当前步进点在游戏场景中的真实深度值相比较,如果当前步进点的参考深度值大于等于真实深度值,返回步进成功,生成用于指示光线击中有效表面的光线追踪结果;如果当前步进点的参考深度值小于真实深度值,则继续步进,直至达到最大追踪路径,返回步进失败,生成用于指示光线未击中有效表面的光线追踪结果。
本申请实施例基于经过八面体映射后所得到的记录有全视角深度信息的信息贴图进行分段光线追踪的方式,相较于传统屏幕空间光线追踪方法,可以将光线追踪扩展到屏幕外,进而大幅增加光线的命中几率,显著提升光线追踪的准确性,这样可得到较为准确的光线追踪结果,从而使得基于光线追踪结果所渲染出的游戏画面更具真实性,例如当光线追踪结果用于指示光线成功击中有效表面时,游戏画面可更加真实地呈现出光线的折射和反射效果。同时,所有光线追踪流程全都在一张2D贴图上完成,可以极大提升追踪的效率,这样可缩短光线追踪所需的时间,从而缩短游戏画面的渲染时间,避免游戏画面出现卡顿的现象,提升游戏运行的流畅度和稳定性。
基于上述光线追踪方法实施例的描述,本申请实施例还公开了一种光线追踪装置;所述光线追踪装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),且该光线追踪装置可以执行图2或图4所示的方法流程中的各个步骤。请参见图6,所述光线追踪装置可以运行如下单元:
获取单元601,用于获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;
处理单元602,用于在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;
所述处理单元602,还用于将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径;
所述处理单元602,还用于在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果。
在一种实施方式中,所述信息贴图包括多个像素点,一个像素点存储一个深度值,所述虚拟场景中的一个虚拟对象与所述信息贴图中的至少一个像素点对应;相应的,处理单元602在用于在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果时,可具体用于:
在所述行进路径上选取一个像素点作为当前步进点;
在所述信息贴图中查找所述当前步进点存储的深度值,作为所述当前步进点的参考深度值;
将所述当前步进点映射至所述虚拟场景中以得到映射点,并根据所述映射点在所述虚拟场景中的位置确定所述当前步进点的真实深度值;
根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果。
另一种实施方式中,所述虚拟场景还包括摄像机,任一虚拟对象的深度值是指相应虚拟对象与所述摄像机之间的距离值;相应的,处理单元602在用于根据所述映射点在所述虚拟场景中的位置确定所述当前步进点的真实深度值时,可具体用于:
根据所述映射点在所述虚拟场景中的位置,以及所述摄像机在所述虚拟场景中的位置,计算所述映射点和所述摄像机之间的距离值;
将计算得到的距离值,确定为所述当前步进点的真实深度值。
另一种实施方式中,处理单元602在用于根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果时,可具体用于:
若所述当前步进点的参考深度值大于或等于所述当前步进点的真实深度值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若所述当前步进点的参考深度值小于所述当前步进点的真实深度值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
另一种实施方式中,处理单元602在用于根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果时,可具体用于:
计算所述当前步进点的参考深度值和所述当前步进点的真实深度值之间的差值;
若计算出的差值小于或等于差值阈值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若计算出的差值大于所述差值阈值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
另一种实施方式中,所述信息贴图包括多个像素点,一个像素点存储一个深度值,所述虚拟场景中的一个虚拟对象与所述信息贴图中的至少一个像素点对应;相应的,处理单元602在用于在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果时,可具体用于:
在所述行进路径上选取一个像素点作为当前步进点,并在所述信息贴图中查找所述当前步进点存储的深度值,作为所述当前步进点的参考深度值;
若所述当前步进点的参考深度值为有效值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若所述当前步进点的参考深度值为无效值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
另一种实施方式中,处理单元602在用于在所述行进路径上选取一个像素点作为当前步进点时,可具体用于;
确定当前待执行的步进操作所对应的步长;
根据确定出的步长在所述行进路径上执行一次步进操作,并将执行步进操作后所到达的像素点确定为当前步进点。
另一种实施方式中,处理单元602在用于在所述行进路径上选取一个像素点作为当前步进点时,可具体用于:
按照预设步长将所述行进路径划分成多条追踪线段,并将每条追踪线段的结尾点标识为步进点;
依次步进至标识出的各个步进点,并将当前步进至的步进点确定为当前步进点。
另一种实施方式中,所述虚拟场景的全视角包括多个视角方向下的视角;相应的,获取单元601在用于获取虚拟场景的信息贴图时,可具体用于:
获取虚拟场景的初始三维贴图,所述初始三维贴图包括多个面,一个面表示所述虚拟场景在一个视角方向下的场景视图,不同面对应的视角方向不同;
获取所述虚拟场景在各个视角方向下的深度信息,任一深度信息包括:相应视角方向下的场景视图中的各个虚拟对象的深度值;
将获取到的各个深度信息中的深度值,记录到所述初始三维贴图的相应面中的像素点中,得到目标三维贴图;
将所述目标三维贴图中的每个像素点映射至二维的空白贴图中,得到所述虚拟场景的信息贴图。
另一种实施方式中,所述虚拟场景在各个视角方向下的场景视图是通过摄像机拍摄得到的;相应的,获取单元601在用于获取所述虚拟场景在各个视角方向下的深度信息时,可具体用于:
遍历所述虚拟场景的全视角所涉及的各个视角方向;
控制所述摄像机朝着当前遍历的视角方向,对所述虚拟场景中的虚拟对象进行视锥体裁剪;其中,若任一虚拟对象落入所述摄像机的视锥体中,则所述任一虚拟对象通过视锥体裁剪;
对通过视锥体裁剪的各个虚拟对象进行深度测试,得到所述虚拟场景在所述当前遍历的视角方向下的深度信息。
另一种实施方式中,获取单元601在用于对通过视锥体裁剪的各个虚拟对象进行深度测试,得到所述虚拟场景在所述当前遍历的视角方向下的深度信息时,可具体用于:
轮询通过视锥体裁剪的各个虚拟对象;
根据当前轮询的虚拟对象的位置坐标和所述摄像机的位置坐标,计算所述当前轮询的虚拟对象和所述摄像机之间的距离值;
将计算得到的距离值作为所述当前轮询的虚拟对象的深度值,添加至所述虚拟场景在所述当前遍历的视角方向下的深度信息中。
另一种实施方式中,所述虚拟场景还包括摄像机;相应的,获取单元601在用于获取虚拟场景的信息贴图时,可具体用于:
在虚拟场景中生成多个离散面元,所述离散面元是具有方向和大小的平面图形,所述虚拟场景中的每个虚拟对象的表面贴附有至少一个离散面元;
获取各个离散面元和所述摄像机之间的距离值,作为相应离散面元在所述虚拟场景中的深度值;
采用所述各个离散面元在所述虚拟场景中的深度值,构建所述虚拟场景的信息贴图。
另一种实施方式中,处理单元602在用于将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径时,可具体用于:
通过八面体映射操作将所述追踪射线的起始点投影至所述信息贴图,得到第一投影点;
确定所述虚拟场景所对应的三维空间坐标系,并通过八面体映射操作,将所述追踪射线与所述三维空间坐标系中的至少一个轴平面之间的交点,投影至所述信息贴图,得到至少一个第二投影点;
根据预设的追踪路径阈值在所述追踪射线上确定路径终止点,并通过八面体映射操作将所述路径终止点投影至所述信息贴图,得到第三投影点;
依次连接所述第一投影点、所述至少一个第二投影点以及所述第三投影点,得到所述追踪射线在所述信息贴图上的行进路径。
根据本申请的另一个实施例,图6所示的光线追踪装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于光线追踪装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6中所示的光线追踪装置设备,以及来实现本申请实施例的光线追踪方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例通过获取记录有虚拟场景的全视角深度信息的信息贴图,并将虚拟场景中用于光线追踪的追踪射线从虚拟场景投影至信息贴图,得到追踪射线在信息贴图上的行进路径,进而在信息贴图上沿着该行进路径进行光线追踪的方式,可解决传统的光线追踪方法因缺少屏幕空间外的深度信息而导致的无法在屏幕空间外进行有效光线追踪的局限性。也就是说,本申请实施例通过在记录有全视角深度信息的信息贴图上进行光线追踪,可以实现将光线追踪扩展到屏幕外,这样可大幅增加光线击中有效表面的几率,从而提升光线追踪的准确性,从而显著提升基于光线追踪结果所实现的全局光照效果。并且,由于信息贴图可以是一个2D(二维)的贴图,因此可知本申请实施例的整个光线追踪流程在一张2D(二维)的贴图上即可完成,这样可极大提升光线追踪的效率。
基于上述方法实施例以及装置实施例的描述,本申请实施例还提供一种计算机设备。请参见图7,该计算机设备至少包括处理器701、输入接口702、输出接口703以及计算机存储介质704。其中,计算机设备内的处理器701、输入接口702、输出接口703以及计算机存储介质704可通过总线或其他方式连接。计算机存储介质704可以存储在计算机设备的存储器中,所述计算机存储介质704用于存储计算机程序,所述计算机程序包括程序指令,所述处理器701用于执行所述计算机存储介质704存储的程序指令。处理器701(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例所述的处理器701可以用于进行一系列的光线追踪处理,具体包括:获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径;在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果,等等。
本申请实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了适于被处理器701加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图2或图4所示的方法实施例中的相应步骤;具体实现中,计算机存储介质中的一条或多条指令可由处理器加载并执行如下步骤:
获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;
在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;
将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径;
在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果。
在一种实施方式中,所述信息贴图包括多个像素点,一个像素点存储一个深度值,所述虚拟场景中的一个虚拟对象与所述信息贴图中的至少一个像素点对应;相应的,在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果时,所述一条或多条指令可由处理器加载并具体执行:
在所述行进路径上选取一个像素点作为当前步进点;
在所述信息贴图中查找所述当前步进点存储的深度值,作为所述当前步进点的参考深度值;
将所述当前步进点映射至所述虚拟场景中以得到映射点,并根据所述映射点在所述虚拟场景中的位置确定所述当前步进点的真实深度值;
根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果。
另一种实施方式中,所述虚拟场景还包括摄像机,任一虚拟对象的深度值是指相应虚拟对象与所述摄像机之间的距离值;相应的,在根据所述映射点在所述虚拟场景中的位置确定所述当前步进点的真实深度值时,所述一条或多条指令可由处理器加载并具体执行:
根据所述映射点在所述虚拟场景中的位置,以及所述摄像机在所述虚拟场景中的位置,计算所述映射点和所述摄像机之间的距离值;
将计算得到的距离值,确定为所述当前步进点的真实深度值。
另一种实施方式中,在根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果时,所述一条或多条指令可由处理器加载并具体执行:
若所述当前步进点的参考深度值大于或等于所述当前步进点的真实深度值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若所述当前步进点的参考深度值小于所述当前步进点的真实深度值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
另一种实施方式中,在根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果时,所述一条或多条指令可由处理器加载并具体执行:
计算所述当前步进点的参考深度值和所述当前步进点的真实深度值之间的差值;
若计算出的差值小于或等于差值阈值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若计算出的差值大于所述差值阈值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
另一种实施方式中,所述信息贴图包括多个像素点,一个像素点存储一个深度值,所述虚拟场景中的一个虚拟对象与所述信息贴图中的至少一个像素点对应;相应的,在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果时,所述一条或多条指令可由处理器加载并具体执行:
在所述行进路径上选取一个像素点作为当前步进点,并在所述信息贴图中查找所述当前步进点存储的深度值,作为所述当前步进点的参考深度值;
若所述当前步进点的参考深度值为有效值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若所述当前步进点的参考深度值为无效值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
另一种实施方式中,在所述行进路径上选取一个像素点作为当前步进点时,所述一条或多条指令可由处理器加载并具体执行:
确定当前待执行的步进操作所对应的步长;
根据确定出的步长在所述行进路径上执行一次步进操作,并将执行步进操作后所到达的像素点确定为当前步进点。
另一种实施方式中,在所述行进路径上选取一个像素点作为当前步进点时,所述一条或多条指令可由处理器加载并具体执行:
按照预设步长将所述行进路径划分成多条追踪线段,并将每条追踪线段的结尾点标识为步进点;
依次步进至标识出的各个步进点,并将当前步进至的步进点确定为当前步进点。
另一种实施方式中,所述虚拟场景的全视角包括多个视角方向下的视角;相应的,在获取虚拟场景的信息贴图时,所述一条或多条指令可由处理器加载并具体执行:
获取虚拟场景的初始三维贴图,所述初始三维贴图包括多个面,一个面表示所述虚拟场景在一个视角方向下的场景视图,不同面对应的视角方向不同;
获取所述虚拟场景在各个视角方向下的深度信息,任一深度信息包括:相应视角方向下的场景视图中的各个虚拟对象的深度值;
将获取到的各个深度信息中的深度值,记录到所述初始三维贴图的相应面中的像素点中,得到目标三维贴图;
将所述目标三维贴图中的每个像素点映射至二维的空白贴图中,得到所述虚拟场景的信息贴图。
另一种实施方式中,所述虚拟场景在各个视角方向下的场景视图是通过摄像机拍摄得到的;相应的,在获取所述虚拟场景在各个视角方向下的深度信息时,所述一条或多条指令可由处理器加载并具体执行:
遍历所述虚拟场景的全视角所涉及的各个视角方向;
控制所述摄像机朝着当前遍历的视角方向,对所述虚拟场景中的虚拟对象进行视锥体裁剪;其中,若任一虚拟对象落入所述摄像机的视锥体中,则所述任一虚拟对象通过视锥体裁剪;
对通过视锥体裁剪的各个虚拟对象进行深度测试,得到所述虚拟场景在所述当前遍历的视角方向下的深度信息。
另一种实施方式中,在对通过视锥体裁剪的各个虚拟对象进行深度测试,得到所述虚拟场景在所述当前遍历的视角方向下的深度信息时,所述一条或多条指令可由处理器加载并具体执行:
轮询通过视锥体裁剪的各个虚拟对象;
根据当前轮询的虚拟对象的位置坐标和所述摄像机的位置坐标,计算所述当前轮询的虚拟对象和所述摄像机之间的距离值;
将计算得到的距离值作为所述当前轮询的虚拟对象的深度值,添加至所述虚拟场景在所述当前遍历的视角方向下的深度信息中。
另一种实施方式中,所述虚拟场景还包括摄像机;相应的,在获取虚拟场景的信息贴图时,所述一条或多条指令可由处理器加载并具体执行:
在虚拟场景中生成多个离散面元,所述离散面元是具有方向和大小的平面图形,所述虚拟场景中的每个虚拟对象的表面贴附有至少一个离散面元;
获取各个离散面元和所述摄像机之间的距离值,作为相应离散面元在所述虚拟场景中的深度值;
采用所述各个离散面元在所述虚拟场景中的深度值,构建所述虚拟场景的信息贴图。
另一种实施方式中,在将所述追踪射线从所述虚拟场景投影至所述信息贴图,得到所述追踪射线在所述信息贴图上的行进路径时,所述一条或多条指令可由处理器加载并具体执行:
通过八面体映射操作将所述追踪射线的起始点投影至所述信息贴图,得到第一投影点;
确定所述虚拟场景所对应的三维空间坐标系,并通过八面体映射操作,将所述追踪射线与所述三维空间坐标系中的至少一个轴平面之间的交点,投影至所述信息贴图,得到至少一个第二投影点;
根据预设的追踪路径阈值在所述追踪射线上确定路径终止点,并通过八面体映射操作将所述路径终止点投影至所述信息贴图,得到第三投影点;
依次连接所述第一投影点、所述至少一个第二投影点以及所述第三投影点,得到所述追踪射线在所述信息贴图上的行进路径。
本申请实施例通过获取记录有虚拟场景的全视角深度信息的信息贴图,并将虚拟场景中用于光线追踪的追踪射线从虚拟场景投影至信息贴图,得到追踪射线在信息贴图上的行进路径,进而在信息贴图上沿着该行进路径进行光线追踪的方式,可解决传统的光线追踪方法因缺少屏幕空间外的深度信息而导致的无法在屏幕空间外进行有效光线追踪的局限性。也就是说,本申请实施例通过在记录有全视角深度信息的信息贴图上进行光线追踪,可以实现将光线追踪扩展到屏幕外,这样可大幅增加光线击中有效表面的几率,从而提升光线追踪的准确性,从而显著提升基于光线追踪结果所实现的全局光照效果。并且,由于信息贴图可以是一个2D(二维)的贴图,因此可知本申请实施例的整个光线追踪流程在一张2D(二维)的贴图上即可完成,这样可极大提升光线追踪的效率。
需要说明的是,根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2或图4所示的方法实施例方面的各种可选方式中提供的方法。应理解的是,以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种光线追踪方法,其特征在于,包括:
获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;
在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;
通过八面体映射操作将所述追踪射线的起始点投影至所述信息贴图,得到第一投影点;
确定所述虚拟场景所对应的三维空间坐标系,并通过八面体映射操作,将所述追踪射线与所述三维空间坐标系中的至少一个轴平面之间的交点,投影至所述信息贴图,得到至少一个第二投影点;
根据预设的追踪路径阈值在所述追踪射线上确定路径终止点,并通过八面体映射操作将所述路径终止点投影至所述信息贴图,得到第三投影点;
依次连接所述第一投影点、所述至少一个第二投影点以及所述第三投影点,得到所述追踪射线在所述信息贴图上的行进路径;
在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果。
2.如权利要求1所述的方法,其特征在于,所述信息贴图包括多个像素点,一个像素点存储一个深度值,所述虚拟场景中的一个虚拟对象与所述信息贴图中的至少一个像素点对应;
所述在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果,包括:
在所述行进路径上选取一个像素点作为当前步进点;
在所述信息贴图中查找所述当前步进点存储的深度值,作为所述当前步进点的参考深度值;
将所述当前步进点映射至所述虚拟场景中以得到映射点,并根据所述映射点在所述虚拟场景中的位置确定所述当前步进点的真实深度值;
根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果。
3.如权利要求2所述的方法,其特征在于,所述虚拟场景还包括摄像机,任一虚拟对象的深度值是指相应虚拟对象与所述摄像机之间的距离值;
所述根据所述映射点在所述虚拟场景中的位置确定所述当前步进点的真实深度值,包括:
根据所述映射点在所述虚拟场景中的位置,以及所述摄像机在所述虚拟场景中的位置,计算所述映射点和所述摄像机之间的距离值;
将计算得到的距离值,确定为所述当前步进点的真实深度值。
4.如权利要求2所述的方法,其特征在于,所述根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果,包括:
若所述当前步进点的参考深度值大于或等于所述当前步进点的真实深度值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若所述当前步进点的参考深度值小于所述当前步进点的真实深度值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
5.如权利要求2所述的方法,其特征在于,所述根据所述当前步进点的参考深度值和所述当前步进点的真实深度值,生成光线追踪结果,包括:
计算所述当前步进点的参考深度值和所述当前步进点的真实深度值之间的差值;
若计算出的差值小于或等于差值阈值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若计算出的差值大于所述差值阈值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
6.如权利要求1所述的方法,其特征在于,所述信息贴图包括多个像素点,一个像素点存储一个深度值,所述虚拟场景中的一个虚拟对象与所述信息贴图中的至少一个像素点对应;
所述在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果,包括:
在所述行进路径上选取一个像素点作为当前步进点,并在所述信息贴图中查找所述当前步进点存储的深度值,作为所述当前步进点的参考深度值;
若所述当前步进点的参考深度值为有效值,则结束步进,并生成用于指示光线击中有效表面的光线追踪结果,所述有效表面是指任一虚拟对象的表面;
若所述当前步进点的参考深度值为无效值,则继续步进,直至步进至指定像素点,生成用于指示光线未击中有效表面的光线追踪结果。
7.如权利要求2或6所述的方法,其特征在于,所述在所述行进路径上选取一个像素点作为当前步进点,包括;
确定当前待执行的步进操作所对应的步长;
根据确定出的步长在所述行进路径上执行一次步进操作,并将执行步进操作后所到达的像素点确定为当前步进点。
8.如权利要求2或6所述的方法,其特征在于,所述在所述行进路径上选取一个像素点作为当前步进点,包括:
按照预设步长将所述行进路径划分成多条追踪线段,并将每条追踪线段的结尾点标识为步进点;
依次步进至标识出的各个步进点,并将当前步进至的步进点确定为当前步进点。
9.如权利要求1所述的方法,其特征在于,所述虚拟场景的全视角包括多个视角方向下的视角,所述获取虚拟场景的信息贴图,包括:
获取虚拟场景的初始三维贴图,所述初始三维贴图包括多个面,一个面表示所述虚拟场景在一个视角方向下的场景视图,不同面对应的视角方向不同;
获取所述虚拟场景在各个视角方向下的深度信息,任一深度信息包括:相应视角方向下的场景视图中的各个虚拟对象的深度值;
将获取到的各个深度信息中的深度值,记录到所述初始三维贴图的相应面中的像素点中,得到目标三维贴图;
将所述目标三维贴图中的每个像素点映射至二维的空白贴图中,得到所述虚拟场景的信息贴图。
10.如权利要求9所述的方法,其特征在于,所述虚拟场景在各个视角方向下的场景视图是通过摄像机拍摄得到的;所述获取所述虚拟场景在各个视角方向下的深度信息,包括:
遍历所述虚拟场景的全视角所涉及的各个视角方向;
控制所述摄像机朝着当前遍历的视角方向,对所述虚拟场景中的虚拟对象进行视锥体裁剪;其中,若任一虚拟对象落入所述摄像机的视锥体中,则所述任一虚拟对象通过视锥体裁剪;
对通过视锥体裁剪的各个虚拟对象进行深度测试,得到所述虚拟场景在所述当前遍历的视角方向下的深度信息。
11.如权利要求10所述的方法,其特征在于,所述对通过视锥体裁剪的各个虚拟对象进行深度测试,得到所述虚拟场景在所述当前遍历的视角方向下的深度信息,包括:
轮询通过视锥体裁剪的各个虚拟对象;
根据当前轮询的虚拟对象的位置坐标和所述摄像机的位置坐标,计算所述当前轮询的虚拟对象和所述摄像机之间的距离值;
将计算得到的距离值作为所述当前轮询的虚拟对象的深度值,添加至所述虚拟场景在所述当前遍历的视角方向下的深度信息中。
12.如权利要求1所述的方法,其特征在于,所述虚拟场景还包括摄像机,所述获取虚拟场景的信息贴图,包括:
在虚拟场景中生成多个离散面元,所述离散面元是具有方向和大小的平面图形,所述虚拟场景中的每个虚拟对象的表面贴附有至少一个离散面元;
获取各个离散面元和所述摄像机之间的距离值,作为相应离散面元在所述虚拟场景中的深度值;
采用所述各个离散面元在所述虚拟场景中的深度值,构建所述虚拟场景的信息贴图。
13.一种光线追踪装置,其特征在于,包括:
获取单元,用于获取虚拟场景的信息贴图,所述信息贴图记录了所述虚拟场景的全视角深度信息,所述全视角深度信息包括所述虚拟场景中的各个虚拟对象的深度值;
处理单元,用于在所述虚拟场景中,基于参考点生成用于光线追踪的追踪射线;所述参考点是指:所述虚拟场景中存在光线追踪需求的虚拟对象所处的位置;
所述处理单元,还用于通过八面体映射操作将所述追踪射线的起始点投影至所述信息贴图,得到第一投影点;确定所述虚拟场景所对应的三维空间坐标系,并通过八面体映射操作,将所述追踪射线与所述三维空间坐标系中的至少一个轴平面之间的交点,投影至所述信息贴图,得到至少一个第二投影点;根据预设的追踪路径阈值在所述追踪射线上确定路径终止点,并通过八面体映射操作将所述路径终止点投影至所述信息贴图,得到第三投影点;依次连接所述第一投影点、所述至少一个第二投影点以及所述第三投影点,得到所述追踪射线在所述信息贴图上的行进路径;
所述处理单元,还用于在所述信息贴图上,沿着所述行进路径进行光线追踪,得到光线追踪结果。
14.一种计算机设备,包括输入接口和输出接口,其特征在于,还包括:处理器以及计算机存储介质;
其中,所述处理器适于实现一条或多条指令,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-12任一项所述的光线追踪方法。
15.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-12任一项所述的光线追踪方法。
CN202310393666.7A 2023-04-13 2023-04-13 光线追踪方法、装置、设备及存储介质 Active CN116109756B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202310393666.7A CN116109756B (zh) 2023-04-13 2023-04-13 光线追踪方法、装置、设备及存储介质
PCT/CN2024/075049 WO2024212683A1 (zh) 2023-04-13 2024-01-31 光线追踪方法、装置、计算机设备、存储介质及计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310393666.7A CN116109756B (zh) 2023-04-13 2023-04-13 光线追踪方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN116109756A CN116109756A (zh) 2023-05-12
CN116109756B true CN116109756B (zh) 2023-06-30

Family

ID=86258340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310393666.7A Active CN116109756B (zh) 2023-04-13 2023-04-13 光线追踪方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN116109756B (zh)
WO (1) WO2024212683A1 (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112138386A (zh) * 2020-09-24 2020-12-29 网易(杭州)网络有限公司 一种体积渲染方法、装置、存储介质及计算机设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020023880A1 (en) * 2018-07-26 2020-01-30 Nvidia Corporation Global illumination using shared lighting contributions for interactions in path tracing
KR102299151B1 (ko) * 2020-03-17 2021-09-07 인하대학교 산학협력단 3 차원 초음파 영상에서 볼륨 렌더링을 위한 신뢰할 수 있는 서브 서피스 스캐터링 방법
US11328437B2 (en) * 2020-09-08 2022-05-10 Weta Digital Limited Method for emulating defocus of sharp rendered images
CN113129420B (zh) * 2021-04-14 2023-06-23 江苏理工学院 一种基于深度缓冲加速的光线追踪渲染方法
CN115830208B (zh) * 2023-01-09 2023-05-09 腾讯科技(深圳)有限公司 全局光照渲染方法、装置、计算机设备和存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112138386A (zh) * 2020-09-24 2020-12-29 网易(杭州)网络有限公司 一种体积渲染方法、装置、存储介质及计算机设备

Also Published As

Publication number Publication date
CN116109756A (zh) 2023-05-12
WO2024212683A1 (zh) 2024-10-17

Similar Documents

Publication Publication Date Title
US20110102460A1 (en) Platform for widespread augmented reality and 3d mapping
KR20190118531A (ko) 증강 현실을 위한 이미지 처리
JP6915001B2 (ja) 複数のモデルに基づくオブジェクトの表示
CN109298629A (zh) 用于为自主和非自主位置意识提供鲁棒跟踪的容错
US9551579B1 (en) Automatic connection of images using visual features
JP2019194924A5 (zh)
CN111161398B (zh) 一种图像生成方法、装置、设备及存储介质
US11373329B2 (en) Method of generating 3-dimensional model data
Kasapakis et al. Occlusion handling in outdoors augmented reality games
WO2024212849A1 (zh) 全视角深度信息的构建方法、装置、设备及存储介质
US10909752B2 (en) All-around spherical light field rendering method
CN116109756B (zh) 光线追踪方法、装置、设备及存储介质
CN115830202A (zh) 一种三维模型渲染方法和装置
CN115531877B (zh) 一种虚拟引擎中距离测量的方法及其系统
CN117197319B (zh) 图像生成方法、装置、电子设备及存储介质
CN117710368B (zh) 图像处理方法、装置、设备、介质及程序产品
CN116824068B (zh) 面向复杂动态场景中点云流的实时重建方法、装置及设备
WO2022224964A1 (ja) 情報処理装置及び情報処理方法
Hall et al. Networked and multimodal 3d modeling of cities for collaborative virtual environments
CN118356646A (zh) 一种游戏渲染处理方法、装置、电子设备及存储介质
CN116958251A (zh) 视觉定位方法、装置、电子设备及存储介质
CN118113149A (zh) 一种基于云端的持久性空间锚定方式
CN117180735A (zh) 一种光照处理方法及相关设备
CN116999822A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN117797470A (zh) 特效显示方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40086738

Country of ref document: HK