一种光线追踪方法和电子设备与流程

未命名 09-13 阅读:64 评论:0


1.本技术涉及图像处理领域,尤其涉及一种光线追踪方法和电子设备。


背景技术:

2.在图形渲染相关应用中,例如游戏、虚拟仿真、增强现实(augmented reality,ar)\虚拟现实(virtual reality,vr)等,提升渲染画面的真实度一直都是业界关注的主要目标。光线追踪技术,以其基于现实物理规律,可以生成逼近真实世界的渲染结果,而备受关注。
3.光线追踪技术在执行过程中需要构造大量的光线往三维场景中发射,光线在三维场景中与物体的反射、折射过程中又生成大量新的光线,光线的数量极为庞大。光线追踪方法中需要计算所有光线(包括构造的光线、物体反射的光线、物体折射的光线等)与物体的交点(即光线求交计算),还需要进行光照模型的着色计算,算力消耗极大。因此,如何减少光线追踪方法中的计算量,降低算力消耗,是需要考虑的一个问题。


技术实现要素:

4.本技术实施例提供一种光线追踪方法和电子设备,可以大量减少光线追踪过程中的计算量,降低算力消耗,提高渲染速度。
5.为达到上述目的,本技术的实施例采用如下技术方案:
6.第一方面,提供了一种光线追踪方法,该方法包括:根据虚拟相机的成像平面上生成的目标图像的像素点的图像空间坐标以及目标图像对应的视点(虚拟相机的镜头)位置,构建从视点出发经过目标图像的像素点的虚拟光线(初始光线);根据目标图像的像素点的图像空间坐标和深度信息(用于表示第一交点与视点之间的距离),获取经过目标图像的像素点的初始光线与用于生成目标图像的三维场景中第一模型第一次相遇的交点(第一交点)的坐标;根据目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取目标图像的像素点对应的第一反射光线和第一折射光线,其中,第一反射光线为初始光线在第一交点处的反射光线,第一折射光线为初始光线在第一交点处的折射光线,材质信息包括粗糙度、反射率和基础色中至少一项;根据目标图像的像素点对应的第一交点的坐标、第一反射光线和第一折射光线,确定经过目标图像的像素点的光线在三维场景中的全部交点的坐标。
7.在该方法中,利用视点位置和目标图像每个像素点的位置,构造了从视点出发经过目标图像每个像素点的初始光线;利用光栅化渲染得到的深度信息计算出每个像素点在三维场景中与物体第一次相遇的交点的位置;并根据初始光线以及第一交点获取到第一反射光线和第一折射光线。第一交点位置,以及第一反射光线和第一折射光线,可以用于计算光路在三维场景中传播的其他交点。相比现有技术中,计算光线在三维场景中与物体每一次相交的交点都需要进行大量运算的方法,本实施例的方法通过构造初始光线以及利用光栅化渲染数据计算交点的方式,降低了计算光线在三维场景中与物体第一次相遇的交点的
计算量。其中,针对每个像素点的计算都降低了计算量;当目标图像的分辨率越高时,像素点的个数越多,整个光线追踪过程中计算效率的提升越显著。
8.根据第一方面,在一种实施方式中,计算出光线在三维场景中的全部交点的坐标之后,还可以根据照射三维场景的光源的光辐射能量,经过目标图像的像素点的光线在三维场景中的全部交点的坐标,以及光线的波长,确定目标图像的像素点的光亮度值。
9.在该方法中,获取到了光线在三维场景中的全部交点,就可以基于模拟的光源的光辐射能量,根据光线在各个交点处的光辐射能量的贡献,计算出像素点的光亮度值。获取到目标图像各个像素点的光亮度值,就可以生成目标图像。
10.根据第一方面,在一种实施方式中,根据目标图像的像素点的图像空间坐标和深度信息,获取目标图像的像素点对应的第一交点的坐标,包括:根据目标图像的像素点的图像空间坐标和深度信息获取目标图像的像素点的三维坐标系坐标;根据视点的空间矩阵和投影矩阵,以及目标图像的像素点的三维坐标系坐标,确定目标图像的像素点对应的第一交点的坐标。
11.在一种实现方式中,可以根据如下公式计算像素点的世界空间坐标(x,y,z):
12.(x’,y’,z’,w’)=inverse(matview*matproj)*(u,v,d,1.0);
13.(x,y,z)=(x’/w’,y’/w’,z’/w’);
14.其中,inverse表示对矩阵取逆;matview为相机的空间矩阵,表示相机在世界空间的坐标;matproj为相机的投影矩阵,表示三维的世界空间到二维的图像空间的坐标变换关系;matview和matproj可以是预先配置的;(u,v,d,1.0)是像素点的标准设备坐标(u,v,d)对应的矩阵。
15.像素点的世界空间坐标(x,y,z)即像素点对应的第一交点的坐标。
16.像素点的深度信息是光栅化渲染生成的数据。光栅化即将三维场景中的物体投影至图像平面,生成图像平面上目标图像的各个像素点。也就是说,光栅化渲染生成的目标图像中每个像素点对应三维场景中物体上一点(该点即光线追踪中像素点对应的第一交点)。像素点的深度信息的物理意义为:该像素点对应的三维场景中物体上一点与视点之间的距离。因此,根据像素点的深度信息的物理意义,可以根据视点的空间矩阵和投影矩阵以及像素点的深度信息计算出像素点对应的第一交点的坐标。
17.其中,目标图像的像素点的三维坐标系坐标在三个坐标轴上的取值均大于或等于负1并且小于或等于1。
18.将像素点的图像空间坐标转化至三维坐标系,并转化为取值范围为[-1,1]的标准坐标,可以便于计算。
[0019]
根据第一方面,在一种实施方式中,根据目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取目标图像的像素点对应的第一反射光线和第一折射光线,包括:根据目标图像的像素点对应的第一交点的坐标获取目标图像的像素点对应的第一交点处的法线信息;根据目标图像的像素点对应的初始光线以及第一交点处的法线信息,确定目标图像的像素点对应的第一反射光线;根据目标图像的像素点对应的初始光线、第一交点处的法线信息以及第一交点处的材质信息,确定目标图像的像素点对应的第一折射光线。
[0020]
在一种实现方式中,可以根据如下公式计算第一反射光线r1。
[0021]
r1=i-2*(dot(n,i))*n
[0022]
其中,dot表示点乘,i表示初始光线,n表示第一交点处的表面法线。
[0023]
可以根据如下公式计算第一折射光线r2。
[0024][0025]
其中,i表示初始光线,n表示第一交点处的表面法线,dot表示点乘,第一交点处物体表面两侧的粗糙度为η1及η2。
[0026]
在该方法中,根据初始光线和第一次交点处的法线可以计算出第一次反射光线。根据第一次交点处的材质信息可以获取该点处的折射率,结合初始光线和第一次交点处的法线,就可以计算出第一次折射光线。
[0027]
根据第一方面,在一种实施方式中,在根据目标图像的像素点的图像空间坐标以及目标图像对应的视点位置,构建目标图像的像素点对应的初始光线之前,还根据目标图像的分辨率获取目标图像的像素点的图像空间坐标。
[0028]
目标图像的分辨率越高,目标图像的像素点个数越多。每个像素点的具体坐标与目标图像的分辨率相关。
[0029]
根据第一方面,在一种实施方式中,在根据目标图像的像素点的图像空间坐标以及目标图像对应的视点位置,构建目标图像的像素点对应的初始光线之前,还对三维场景进行光栅化处理,获取目标图像的像素点的深度信息和法线信息。
[0030]
通过对三维场景进行光栅化处理,可以获取像素点的深度信息和法线信息,用于光线追踪过程中计算交点,降低光线追踪过程中计算交点的运算量。并且,光栅化处理的运算速度较快;利用光栅化处理的中间数据进行光线追踪运算的一部分,也提升了光线追踪的整体速率。
[0031]
根据第一方面,在一种实施方式中,在根据目标图像的像素点的图像空间坐标以及目标图像对应的视点位置,构建目标图像的像素点对应的初始光线之前,获取第一模型的顶点信息,顶点信息用于表示第一模型在三维场景中的位置;根据第一模型的顶点信息获取第一模型的材质信息。其中,材质信息是预配置的;材质信息中包括折射率,可以用于计算折射光线。
[0032]
第二方面,提供了一种图像渲染方法,该方法包括:根据虚拟相机的成像平面上生成的目标图像的像素点的图像空间坐标以及目标图像对应的视点(虚拟相机的镜头)位置,构建从视点出发经过目标图像的像素点的虚拟光线(初始光线);根据目标图像的像素点的图像空间坐标和深度信息(用于表示第一交点与视点之间的距离),获取经过目标图像的像素点的初始光线与用于生成目标图像的三维场景中第一模型第一次相遇的交点(第一交点)的坐标;根据目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取目标图像的像素点对应的第一反射光线和第一折射光线,其中,第一反射光线为初始光线在第一交点处的反射光线,第一折射光线为初始光线在第一交点处的折射光线,材质信息包括粗糙度、反射率和基础色中至少一项;根据目标图像的像素点对应的第一交点的坐标、第一反射光线和第一折射光线,确定经过目标图像的像素点的光线在三维场景中的全部交点的坐标。根据照射三维场景的光源的光辐射能量,经过目标图像的像素点的光线在三维场景中的全部交点的坐标,以及光线的波长,确定目标图像的像素点的光亮度值;根据目标图像的像素点的光亮度值生成目标图像。
[0033]
在采用光线追踪进行图像渲染,生成目标图像的过程中,针对目标图像的每个像素点,通过构造光线以及利用光栅化渲染数据计算交点的方式,降低了计算光线在三维场景中与物体第一次相遇的交点的计算量。当目标图像的分辨率越高时,像素点的个数越多,整个光线追踪过程中计算效率的提升越显著。
[0034]
根据第二方面,在一种实施方式中,计算出光线在三维场景中的全部交点的坐标之后,还可以根据照射三维场景的光源的光辐射能量,经过目标图像的像素点的光线在三维场景中的全部交点的坐标,以及光线的波长,确定目标图像的像素点的光亮度值。
[0035]
在该方法中,获取到了光线在三维场景中的全部交点,就可以基于模拟的光源的光辐射能量,根据光线在各个交点处的光辐射能量的贡献,计算出像素点的光亮度值。获取到目标图像各个像素点的光亮度值,就可以生成目标图像。
[0036]
根据第二方面,在一种实施方式中,根据目标图像的像素点的图像空间坐标和深度信息,获取目标图像的像素点对应的第一交点的坐标,包括:根据目标图像的像素点的图像空间坐标和深度信息获取目标图像的像素点的三维坐标系坐标;根据视点的空间矩阵和投影矩阵,以及目标图像的像素点的三维坐标系坐标,确定目标图像的像素点对应的第一交点的坐标。
[0037]
在一种实现方式中,可以根据如下公式计算像素点的世界空间坐标(x,y,z):
[0038]
(x’,y’,z’,w’)=inverse(matview*matproj)*(u,v,d,1.0);
[0039]
(x,y,z)=(x’/w’,y’/w’,z’/w’);
[0040]
其中,inverse表示对矩阵取逆;matview为相机的空间矩阵,表示相机在世界空间的坐标;matproj为相机的投影矩阵,表示三维的世界空间到二维的图像空间的坐标变换关系;matview和matproj可以是预先配置的;(u,v,d,1.0)是像素点的标准设备坐标(u,v,d)对应的矩阵。
[0041]
像素点的世界空间坐标(x,y,z)即像素点对应的第一交点的坐标。
[0042]
像素点的深度信息是光栅化渲染生成的数据。光栅化即将三维场景中的物体投影至图像平面,生成图像平面上目标图像的各个像素点。也就是说,光栅化渲染生成的目标图像中每个像素点对应三维场景中物体上一点(该点即光线追踪中像素点对应的第一交点)。像素点的深度信息的物理意义为:该像素点对应的三维场景中物体上一点与视点之间的距离。因此,根据像素点的深度信息的物理意义,可以根据视点的空间矩阵和投影矩阵以及像素点的深度信息计算出像素点对应的第一交点的坐标。
[0043]
其中,目标图像的像素点的三维坐标系坐标在三个坐标轴上的取值均大于或等于负1并且小于或等于1。
[0044]
将像素点的图像空间坐标转化至三维坐标系,并转化为取值范围为[-1,1]的标准坐标,可以便于计算。
[0045]
根据第二方面,在一种实施方式中,根据目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取目标图像的像素点对应的第一反射光线和第一折射光线,包括:根据目标图像的像素点对应的第一交点的坐标获取目标图像的像素点对应的第一交点处的法线信息;根据目标图像的像素点对应的初始光线以及第一交点处的法线信息,确定目标图像的像素点对应的第一反射光线;根据目标图像的像素点对应的初始光线、第一交点处的法线信息以及第一交点处的材质信息,确定目标图像的像素点对应
的第一折射光线。
[0046]
在一种实现方式中,可以根据如下公式计算第一反射光线r1。
[0047]
r1=i-2*(dot(n,i))*n
[0048]
其中,dot表示点乘,i表示初始光线,n表示第一交点处的表面法线。
[0049]
可以根据如下公式计算第一折射光线r2。
[0050][0051]
其中,i表示初始光线,n表示第一交点处的表面法线,dot表示点乘,第一交点处物体表面两侧的粗糙度为η1及η2。
[0052]
在该方法中,根据初始光线和第一次交点处的法线可以计算出第一次反射光线。根据第一次交点处的材质信息可以获取该点处的折射率,结合初始光线和第一次交点处的法线,就可以计算出第一次折射光线。
[0053]
根据第二方面,在一种实施方式中,在根据目标图像的像素点的图像空间坐标以及目标图像对应的视点位置,构建目标图像的像素点对应的初始光线之前,还根据目标图像的分辨率获取目标图像的像素点的图像空间坐标。
[0054]
目标图像的分辨率越高,目标图像的像素点个数越多。每个像素点的具体坐标与目标图像的分辨率相关。
[0055]
根据第二方面,在一种实施方式中,在根据目标图像的像素点的图像空间坐标以及目标图像对应的视点位置,构建目标图像的像素点对应的初始光线之前,还对三维场景进行光栅化处理,获取目标图像的像素点的深度信息和法线信息。
[0056]
通过对三维场景进行光栅化处理,可以获取像素点的深度信息和法线信息,用于光线追踪过程中计算交点,降低光线追踪过程中计算交点的运算量。并且,光栅化处理的运算速度较快;利用光栅化处理的中间数据进行光线追踪运算的一部分,也提升了光线追踪的整体速率。
[0057]
根据第二方面,在一种实施方式中,在根据目标图像的像素点的图像空间坐标以及目标图像对应的视点位置,构建目标图像的像素点对应的初始光线之前,获取第一模型的顶点信息,顶点信息用于表示第一模型在三维场景中的位置;根据第一模型的顶点信息获取第一模型的材质信息。其中,材质信息是预配置的;材质信息中包括折射率,可以用于计算折射光线。
[0058]
第三方面,提供了一种电子设备,该电子设备具有实现上述第一方面或第二方面所述的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
[0059]
第四方面,提供了一种电子设备,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该电子设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该电子设备执行如上述第一方面或第二方面中任一项所述的光线追踪方法。
[0060]
第五方面,提供了一种电子设备,包括:处理器;所述处理器用于与存储器耦合,并读取存储器中的指令之后,根据所述指令执行如上述第一方面或第二方面中任一项所述的光线追踪方法。
[0061]
第六方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面或第二方面中任一项所述
的光线追踪方法。
[0062]
第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面或第二方面中任一项所述的光线追踪方法。
[0063]
第八方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持电子设备实现上述第一方面或第二方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
[0064]
其中,第三方面至第八方面中任一种设计方式所带来的技术效果可参见第一方面或第二方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
[0065]
图1为本技术实施例提供的光线追踪方法所适用的一种电子设备的硬件结构示意图;
[0066]
图2为光线追踪方法中模拟的光线路径的一种示意图;
[0067]
图3为光线追踪方法中模拟的光线路径的一种示意图;
[0068]
图4为本技术实施例提供的光线追踪方法的流程图示意图;
[0069]
图5a为本技术实施例提供的光线追踪方法的一种场景实例示意图;
[0070]
图5b为一种光栅化渲染的原理示意图;
[0071]
图6为本技术实施例提供的光线追踪方法的一种原理示意图;
[0072]
图7为本技术实施例提供的一种电子设备结构组成示意图;
[0073]
图8为本技术实施例提供的一种芯片系统的示意图。
具体实施方式
[0074]
在本技术实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本技术以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
[0075]
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
[0076]
在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0077]
本技术实施例提供的方法可以应用于具备图像处理能力的电子设备。上述电子设备可以包括手机、平板电脑、笔记本电脑、个人电脑(personal computer,pc)、超级移动个人计算机(ultra-mobile personal computer,umpc)、智能家居设备(比如,智能电视、智慧屏、大屏等)、个人数字助理(personal digital assistant,pda)、可穿戴设备(比如,智能手表、智能手环等)、车载设备、ar\vr设备、服务器等,本技术实施例对此不做任何限制。
[0078]
在本技术实施例中,上述电子设备是可以运行操作系统,安装应用程序的电子设备。可选地,电子设备运行的操作系统可以是系统,系统,系统等。
[0079]
图1为上述电子设备的一种结构示意图。其中,电子设备100可以包括:处理器110,存储器120,通用串行总线(universal serial bus,usb)接口130,电源模块140,通信模块150,显示屏160,音频模块170,摄像头180,按键190,马达191,指示器192等。
[0080]
可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0081]
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0082]
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0083]
处理110上可以运行操作系统,安装应用程序等。可选地,操作系统可以是系统,系统,系统等。在一种示例中,处理110中运行有渲染器(或称为渲染引擎),用于将3d物体绘制到屏幕上,形成2d图像。在一些实施例中,渲染器可以运行在cpu上,比如光栅化渲染器;在一些实施例中,渲染器可以运行在gpu上,比如光线追踪渲染器。
[0084]
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
[0085]
存储器120可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在存储器120的指令,从而执行电子设备的各种功能应用以及数据处理。例如,在本技术实施例中,处理器110可以通过执行存储在存储器120中的指令,存储器120可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)。存储数据区可存储电子设备使用过程中所创建的数据(比如视频文件)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
[0086]
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0087]
电源模块140用于为电子设备100的各个部件,如处理器110、存储器120等供电。
[0088]
通信模块150可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir),紫峰(zigbee)等无线通信的解决方案。
[0089]
电子设备100通过gpu,显示屏160,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏160和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
[0090]
显示屏160用于显示图像,视频等。例如,用于显示渲染好的图像。该显示屏160包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,amoled),柔性发光二极管(flex light-emitting diode,fled),mini-led,micro-oled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。
[0091]
电子设备100可以通过isp,摄像头180,视频编解码器,gpu,显示屏160以及应用处理器等实现拍摄功能。
[0092]
isp用于处理摄像头180反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头180中。
[0093]
摄像头180用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。
[0094]
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备在频点选择时,数字信号处理器用于对频点能量进行傅里叶
变换等。
[0095]
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
[0096]
npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
[0097]
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
[0098]
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,通知等。
[0099]
下面以上述电子设备100执行本技术实施例提供的光线追踪方法为例进行详细介绍。
[0100]
光线追踪(ray tracing),又称为光线跟踪、光迹追踪或光线追迹等,是一种图像渲染技术,用于通过在图像平面(比如相机屏幕)中以像素为单位跟踪光线的路径并模拟光线与虚拟对象相遇的效果来生成图像。光线追踪技术沿着到达视点(虚拟的相机镜头)的光线的反方向跟踪,经过屏幕上每一个像素点,找出与视线(光线的反方向)相交的物体表面点p1,并继续跟踪,找出影响p1点光线强度(光辐射能量)的所有光源,从而算出p1点上精确的光线强度。在材质编辑中经常用来表现镜面效果。在光线追踪技术中,光线从光源被抛射出来,当光线经过物体表面的时候,对光线应用种种符合物理光学定律的变换。最终,光线进入虚拟的相机屏幕(即虚拟的相机成像平面),图像被生成出来。光线追踪技术是模拟光线在真实物理世界中传播的物理规律,因此可以生成逼近真实世界的渲染结果。通常应用在追求图像极高质量的游戏、ar/vr、广告等场景中。
[0101]
示例性的,图2示出了光线追踪方法中模拟的光线路径的一种示意图。如图2所示,沿着到达视点(虚拟的相机镜头)的光线的反方向构造光线。该构造的光线与光源发出的光线的路径方向相反。构造的光线与场景中一个物体相交,可能会发生反射,还可能会发生折射;反射或折射后形成新的光线。新的光线还可能会碰到物体而发生反射以及折射。经过多次反射或折射后,一些光线最终到达光源。本技术中,从视点出发,经过反射或折射后最终到达光源的光线路径称为有效光路。可以理解的,该有效光路也是从光源出发,经过反射或折射后最终到达视点的光线路径。示例性的,图2示出了4条有效光路上的光线。每条有效光路分别经过图像平面(相机屏幕)上一个像素点。如图2所示,有效光路

上有4根光线,有效光路

上有3根光线,有效光路

上有3根光线,有效光路

上有2根光线。
[0102]
需要说明的是,为了便于理解,图2所示每条有效光路上光线与物体相遇的次数较少,也就是说每条有效光路上交点较少。在实际情况中,一般来说,视点发出的光线会在多次反射或折射后,经过漫长的路径,才会到达光源。每条有效光路上的交点都非常多。示例性的,如图3所示,一根光线(称为光线0)从视点出发,与物体1碰撞产生一个交点p1,在交点
p1处反射后形成新的光线(称为光线1);光线1与物体2碰撞产生交点p2,在交点p2处反射后形成光线2;光线2与物体3碰撞产生交点p3,在交点p3处反射后形成光线3;以此类推,经过k次反射后,光线k到达光源。其中,k是远远大于1的数。
[0103]
光线追踪生成图像,即计算图像中每个像素点的光亮度值;像素点的光亮度值是该像素点所在的有效光路上,所有交点处光辐射能量的加权和。其中,每个交点处的光辐射能量与其所在有效光路上在该交点之前(靠近光源的方向为前)的所有交点处的光辐射能量相关。仍以图3为例,该有效光路对应的像素点的光亮度值是p1处光辐射能量,p2处光辐射能量,p3处光辐射能量
……
与pk处光辐射能量的加权和。其中,p1处光辐射能量与p2处光辐射能量相关,p2处光辐射能量与p3处光辐射能量相关,
……
,p
k-1
处光辐射能量与pk处光辐射能量相关。要计算一个交点处的光辐射能量需要计算该交点之前全部交点的光辐射能量。
[0104]
其中,一条有效光路上交点pi处的光辐射能量可以记为li(pi,ωi,λ,t),表示t时刻(当前时刻)、波长为λ、入射角度为ωi、交点坐标为pi的光线的光辐射能量。
[0105]
示例性的,li(pi,ωi,λ,t)可以由公式1计算得到。
[0106]
li(pi,ωi,λ,t)=le(pi,ωi,λ,t)+∫
ωfr
(pi,ωj,ωi,λ,t)lj(pj,ωj,λ,t)(ωj·
ni)dω
j 公式1
[0107]
其中,j=i+1;ωi是光线在pi处的入射角度;ωj是光线在pi处的出射角度,也是光线在pj处的入射角度;lj(pj,ωj,λ,t)为t时刻(当前时刻)、波长为λ、入射角度为ωj、交点坐标为p j
的光线的光辐射能量;ni为交点pi处的表面法线;fr表示交点pi对应的模型的材质信息;le(pi,ωi,λ,t)表示当交点pi是光源时的光辐射能量。
[0108]
可以看出,采用光线追踪方法生成图像,需要分别针对图像中每个像素点计算该有效光路上各个交点处光辐射能量;要计算各个交点处的光辐射能量,需要先获取各个交点的坐标。现有技术中,计算光线与物体的交点(即求交),一般是将场景中的模型物体分为平面、三角形、圆、圆柱面等几何图形;计算光线与几何图形的交点。每根光线需要遍历场景内的几何图形求交,计算量很大。并且,从视点出发的光线经过反射和折射后形成新的光线,新的光线再经过反射和折射形成新的光线,以此类推,直到光线到达光源或者能量降低到无效范围;每个像素点对应的光线数量巨大。而且,生成图像的分辨率越高,像素点约多;整个光线追踪方法中求交运算量非常庞大。再加上,每个交点处光辐射能量的计算又是一个深层的迭代过程。因此采用光线追踪方法生成图像的计算量非常大,对算力消耗巨大。
[0109]
本技术实施例提供一种光线追踪方法,利用计算速度较快的光栅化渲染方法的输出数据,一次性计算出从视点出发的全部n根初始光线,以及每根初始光线分别与场景中物体第一次相遇的n个交点(初始光线与场景中物体第一次相遇的交点称为第一交点);并计算出每根初始光线在对应的第一交点处反射产生的反射光线(称为第一反射光线),以及每根初始光线在对应的第一交点处折射产生的折射光线(称为第一折射光线)。可以节省光线追踪生成图像过程中所有光路的第一交点计算的计算消耗,降低光线追踪方法中整体的计算量,提升光线追踪方法的整体计算效率。
[0110]
如图4所示,本技术实施例提供的光线追踪方法可以包括:
[0111]
s401、光线追踪渲染器获取三维场景中各个模型的顶点信息和材质信息。
[0112]
采用光线追踪方法生成图像时,用户可以根据需要构造三维场景。比如,用户通过电子设备的输入装置(比如键盘、鼠标、手写笔、触摸屏等)输入三维场景中的各个模型(虚
拟的物体),这些模型构成了三维场景。示例性的,图2所示场景中物体1的模型为球体,物体2的模型为圆柱体,物体3的模型为正方体。当然,模型还可以是天空、地面、墙面等背景物。每种模型的材质信息是预先配置好的;材质信息可以包括粗糙度、反射率、基础色等。示例性的,模型的材质信息可以保存为图片格式。用户选择好模型的类型,即确定了模型的材质。用户还设置每个模型在三维场景中的位置,电子设备根据模型的位置获取模型的位置信息;比如,模型的位置信息可以是模型的各个顶点的坐标信息。示例性的,模型的位置信息可以保存于.obj,.fbx,或.c4d等格式的文件中。
[0113]
光线追踪渲染器根据用户输入获取用户构建的三维场景,即获取三维场景中各个模型的顶点信息和材质信息。
[0114]
s402、光线追踪渲染器获取三维场景对应的深度信息和法线信息。
[0115]
在一种实现方式中,利用光栅化渲染器对三维场景进行离屏渲染(offscreen-rendering),即进行光栅化渲染,获取各个模型对应的深度信息和法线信息。本技术中,将三维场景中所有模型的深度信息和法线信息称为三维场景的深度信息和法线信息。可以理解的,对三维场景进行光栅化渲染,即将三维场景映射至二维图像。获取三维场景对应的深度信息和法线信息,即获取生成的二维图像中各个像素点对应的深度信息和法线信息。
[0116]
示例性的,可以将三维场景的深度信息和法线信息保存为g-buffer(geometry buffer,几何缓冲)信息。可选的,还可以将各个模型的材质信息也保存至g-buffer。在一种示例中,可以根据各个模型的顶点信息获取对应的深度信息和法线信息。深度是指模型(物体)或模型上一点到视点的距离;法线是指模型(物体)的表面法线。光线追踪渲染器获取光栅化渲染器的处理结果g-buffer信息,即获取三维场景的深度信息和法线信息。
[0117]
在一种示例中,将三维场景的深度信息和法线信息渲染到一张图像里面,其中该图像的rgb三个通道分别用于存储法线信息中x轴、y轴和z轴的坐标,图像的a通道用于存储三维场景的深度信息。在一种示例中,还将三维场景的材质信息渲染到另外一张图像进行保存。
[0118]
s403、光线追踪渲染器根据视点位置构建目标图像中每个像素点对应的初始光线。
[0119]
示例性的,如图5a所示,在一条有效光路上,光线从视点出发,经过一个像素点,到达光线与物体第一次相遇的交点(第一交点)。从视点到第一交点之间的光线即光线追踪方法中的初始光线。渲染器可以根据视点位置和目标图像中各个像素点的位置构建目标图像中各个像素点对应的初始光线。比如,目标图像中有m个像素点,则构建m根初始光线。
[0120]
以视点是相机为例。光线追踪渲染器获取相机的空间矩阵;相机的空间矩阵表示相机在世界空间的坐标,光线追踪渲染器可以根据相机的空间矩阵获取相机的位置坐标(x0,y0,z0)。在一种示例中,相机的空间矩阵可以是预先配置的。示例性的,相机的空间矩阵是一个4x4的矩阵,该矩阵中第一行第四列的元素表示相机位置坐标在x轴的取值(即x0的值),矩阵中第二行第四列的元素表示相机位置坐标在y轴的取值(即y0的值),矩阵中第三行第四列的元素表示相机位置坐标在z轴的取值(即z0的值)。光线追踪渲染器获取到该预先配置的4x4的矩阵,就可以从中获取到相机的位置坐标。
[0121]
光线追踪渲染器根据目标图像的图像分辨率获取目标图像上各个像素点的图像空间坐标(u,v)的值。在一种实现方式中,图像空间坐标中u和v的取值范围都为[0.0,1.0]。
还可以进一步将图像空间坐标(u,v)转换为取值范围[-1.0,1.0]的标准设备坐标。比如,将取值范围都为[0.0,1.0]的u和v的每个值乘2后减1,即可以将u和v的取值范围转换至[-1.0,1.0]。然后,取一个较小的深度值dw,与图像空间坐标(u,v)构建成三维的标准设备坐标(u,v,dw);其中,dw的取值与图像平面至视点的距离相关,可以为经验取值,比如0.1。即获取到目标图像上各个像素点的标准设备坐标(u,v,dw)。比如,像素点a的标准设备坐标为(ua,va,dw),像素点b的标准设备坐标为(ub,vb,dw)。
[0122]
根据相机的位置坐标(x0,y0,z0)和各个像素点的标准设备坐标(u,v,dw)连成向量(x
0-u,y
0-v,z
0-dw),即构建了各个像素点对应的初始光线。示例性的,如图5a所示,像素点a对应的初始光线为向量(x
0-ua,y
0-va,z
0-dw),像素点b对应的初始光线为向量(x
0-ub,y
0-vb,z
0-dw)。
[0123]
s404、光线追踪渲染器获取各个初始光线在场景中的第一交点。
[0124]
光栅化(raster)可以理解为,显示屏是由一个个发光点组成的,三维场景中的物体要显示在显示屏上,需要将三维场景中的物体转化为显示屏上一个个发光的点。将三维场景投影为显示屏上一个个发光点的过程即光栅化。示例性的,图5b示出了一种将三角形物体投影到图像平面上像素点的示意图。
[0125]
根据光栅化渲染的技术实质,光栅化渲染生成的图像中每一个像素点,对应从视点(比如相机镜头)往场景中发射的光线与场景中物体第一次相遇的交点。光线追踪渲染器可以根据光栅化渲染器的生成结果获取光栅化渲染生成图像的各个像素点的深度,即可以获取到场景中第一交点与视点的距离。
[0126]
在一种实现方式中,光线追踪渲染器获取场景中第一交点的方法包括:
[0127]
s4041、针对目标图像中各个像素点采样光栅化渲染结果(g-buffer信息)中的深度信息,获取各个像素点的深度值d。
[0128]
s4042、根据目标图像的图像分辨率获取目标图像上各个像素点的图像空间坐标(u,v)的值。在一种实现方式中,图像空间坐标中u和v的取值范围为[0.0,1.0]。还可以进一步将图像空间坐标(u,v)转换为取值范围[-1.0,1.0]的标准设备坐标。根据像素点的深度值d和图像空间坐标(u,v)构建成三维的标准设备坐标(u,v,d)。
[0129]
s4043、根据视点(相机)的空间矩阵matview和投影矩阵matproj,以及像素点的标准设备坐标(u,v,d),获取各个像素点的世界空间坐标(x,y,z)。
[0130]
示例性的,可以根据如下公式2和公式3计算像素点的世界空间坐标(x,y,z):
[0131]
(x’,y’,z’,w’)=inverse(matview*matproj)*(u,v,d,1.0);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式2
[0132]
(x,y,z)=(x’/w’,y’/w’,z’/w’);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式3
[0133]
其中,inverse表示对矩阵取逆;matview为相机的空间矩阵,表示相机在世界空间的坐标;matproj为相机的投影矩阵,表示三维的世界空间到二维的图像空间的坐标变换关系;matview和matproj可以是预先配置的;(u,v,d,1.0)是像素点的标准设备坐标(u,v,d)对应的矩阵。
[0134]
获取了像素点的世界空间坐标(x,y,z),即获取了初始光线在场景中第一交点的坐标(x,y,z)。示例性的,如图5a所示,经过像素点a的初始光线在场景中的第一交点的坐标为(xa,ya,za),经过像素点b的初始光线在场景中的第一交点的坐标为(xb,yb,zb)。
[0135]
s405、光线追踪渲染器根据初始光线、第一交点和三维场景中模型的材质信息获
取第一反射光线和第一折射光线。
[0136]
光线追踪渲染器针对目标图像中各个像素点采样光栅化渲染结果(g-buffer信息)中的法线信息,获得各个像素点对应的第一交点处的表面法线n。
[0137]
光线追踪渲染器针对目标图像中各个像素点采样三维场景的材质信息(比如材质图),获取各个像素点对应的材质信息。材质信息可以包括粗糙度、反射率、基础色等。
[0138]
示例性的,如图6所示,初始光线i到达物体表面发生反射,生成第一反射光线r1;初始光线i到达物体表面发生折射,生成第一折射光线r2。
[0139]
θ1为初始光线i和表面法线n之间的夹角,根据反射的原理,第一反射光线r1与表面法线n之间的夹角也为θ1。因此,根据初始光线i和表面法线n可以计算出第一反射光线r1。示例性的,可以根据公式4计算第一反射光线r1。
[0140]
r1=i-2*(dot(n,i))*n
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式4
[0141]
其中,dot表示点乘。
[0142]
θ2为第一折射光线r2和表面法线n之间的夹角,根据θ1、物体表面两侧的粗糙度η1及η2可以获取θ2。因此,根据初始光线i、表面法线n、物体表面两侧的粗糙度η1及η2可以计算出第一折射光线r2。示例性的,可以根据公式5计算第一折射光线r2。
[0143][0144]
本技术实施例提供的光线追踪方法,利用光栅化渲染的结果计算出目标图像的各个像素点对应的初始光线和第一交点的位置以及第一反射光线和第一折射光线;就可以根据初始光线的入射角度、第一交点的位置、第一反射光线的入射角度和第一折射光线的入射角度获取第一交点处的光辐射能量。示例性的,可以采用公式1所示方法计算第一交点处的光辐射能量。然后从第一交点出发,根据第一交点处的光辐射能量、第一反射光线和第一折射光线,采用本领域可以获取到的光线追踪方法计算剩余交点的位置以及交点处的光辐射能量。根据各有效光路上所有交点处光辐射能量的加权和可以获取各有效光路对应的像素点的光亮度值,即生成了目标图像。
[0145]
参考图3,本技术实施例提供的光线追踪方法中,利用光栅化渲染的结果计算出视点出发到达交点p1的初始光线,交点p1的位置,初始光线在交点p1处的反射光线(第一反射光线)以及初始光线在交点p1处的折射光线(第一折射光线);可以计算出初始光线在交点p1处的入射角度,以及初始光线在交点p1处的折射光线的入射角度,以及初始光线在交点p1处的折射光线的入射角度;就可以计算出交点p1处的光辐射能量。然后可以采用本领域可以获取到的光线追踪方法计算出交点p2、交点p3……
交点pk的位置以及光辐射能量。根据该有效光路上p1处光辐射能量、p2处光辐射能量、p3处光辐射能量
……
与pk处光辐射能量的加权和,可以获取该有效光路对应的像素点的光亮度值。
[0146]
本技术实施例提供的光线追踪方法中,利用光栅化渲染结果计算第一交点的位置,取代了传统光线追踪方法中第一次光线遍历求交的过程;这样就提高了采用光线追踪方法生成图像的整体速度。
[0147]
可以理解的是,本技术实施例提供的电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,
取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
[0148]
本技术实施例可以根据上述方法示例对上述电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0149]
在一种示例中,请参考图7,其示出了上述实施例中所涉及的电子设备的一种可能的结构示意图。该电子设备700包括:处理单元710、存储单元720和显示单元730。
[0150]
其中,处理单元710,用于对电子设备700的动作进行控制管理。存储单元720用于保存电子设备700的程序代码和数据,处理单元710调用存储单元720存储的程序代码,以执行以上方法实施例中的各个步骤。显示单元730用于显示电子设备700的用户界面,还可以用于显示生成的目标图像。
[0151]
当然,上述电子设备700中的单元模块包括但不限于上述处理单元710、存储单元720和显示单元730。例如,电子设备700中还可以包括通信单元、电源单元等。通信单元用于电子设备700与其他电子设备进行通信;电源单元用于对电子设备700供电。
[0152]
其中,处理单元710可以是处理器或控制器,例如可以是中央处理器(central processing unit,cpu),图形处理器(graphics processing unit,gpu),数字信号处理器(digital signal processor,dsp),专用集成电路(application-specific integrated circuit,asic),现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。存储单元720可以是存储器。显示单元730可以是显示屏等。
[0153]
例如,处理单元710为处理器(如图1所示的处理器110),存储单元720可以为存储器(如图1所示的存储器120),显示单元730可以为显示屏(如图1所示的显示屏160)。本技术实施例所提供的电子设备700可以为图1所示的电子设备100。其中,上述处理器、存储器、显示屏等可以连接在一起,例如通过总线连接。处理器调用存储器存储的程序代码,以执行以上方法实施例中的各个步骤。
[0154]
本技术实施例还提供一种芯片系统(例如,片上系统(system on a chip,soc)),如图8所示,该芯片系统包括至少一个处理器801和至少一个接口电路802。处理器801和接口电路802可通过线路互联。例如,接口电路802可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路802可用于向其它装置(例如处理器801或者电子设备的触摸屏或者电子设备的摄像头)发送信号。示例性的,接口电路802可读取存储器中存储的指令,并将该指令发送给处理器801。当所述指令被处理器801执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
[0155]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中各个功能或者步骤。
[0156]
本技术实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运
行时,使得所述计算机执行上述方法实施例中各个功能或者步骤。
[0157]
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0158]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0159]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0160]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0161]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0162]
以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种光线追踪方法,其特征在于,包括:根据目标图像的像素点的图像空间坐标以及所述目标图像对应的视点位置,构建所述目标图像的像素点对应的初始光线,其中,所述视点为虚拟相机的镜头,所述目标图像为在所述虚拟相机的成像平面上生成的图像,所述初始光线为从所述视点出发经过所述目标图像的像素点的虚拟光线;根据所述目标图像的像素点的图像空间坐标和深度信息,获取所述目标图像的像素点对应的第一交点的坐标,其中,所述目标图像的像素点对应的第一交点为经过所述目标图像的像素点的初始光线与用于生成所述目标图像的三维场景中第一模型第一次相遇的交点,所述深度信息用于表示所述目标图像的像素点对应的第一交点与所述视点之间的距离;根据所述目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取所述目标图像的像素点对应的第一反射光线和第一折射光线,其中,所述第一反射光线为所述初始光线在所述第一交点处的反射光线,所述第一折射光线为所述初始光线在所述第一交点处的折射光线,所述材质信息包括粗糙度、反射率和基础色中至少一项;根据所述目标图像的像素点对应的第一交点的坐标、第一反射光线和第一折射光线,确定经过所述目标图像的像素点的光线在所述三维场景中的全部交点的坐标。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据照射所述三维场景的光源的光辐射能量,经过所述目标图像的像素点的光线在所述三维场景中的全部交点的坐标,以及光线的波长,确定所述目标图像的像素点的光亮度值。3.根据权利要求1或2所述的方法,其特征在于,所述根据所述目标图像的像素点的图像空间坐标和深度信息,获取所述目标图像的像素点对应的第一交点的坐标,包括:根据所述目标图像的像素点的图像空间坐标和深度信息获取所述目标图像的像素点的三维坐标系坐标;根据所述视点的空间矩阵和投影矩阵,以及所述目标图像的像素点的三维坐标系坐标,确定所述目标图像的像素点对应的第一交点的坐标。4.根据权利要求3所述的方法,其特征在于,所述目标图像的像素点的三维坐标系坐标在三个坐标轴上的取值均大于或等于负1并且小于或等于1。5.根据权利要求1-4任意一项所述的方法,其特征在于,所述根据所述目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取所述目标图像的像素点对应的第一反射光线和第一折射光线,包括:根据所述目标图像的像素点对应的第一交点的坐标获取所述目标图像的像素点对应的第一交点处的法线信息;根据所述目标图像的像素点对应的初始光线以及第一交点处的法线信息,确定所述目标图像的像素点对应的第一反射光线;根据所述目标图像的像素点对应的初始光线、第一交点处的法线信息以及第一交点处的材质信息,确定所述目标图像的像素点对应的第一折射光线。6.根据权利要求1-5任意一项所述的方法,其特征在于,在所述根据目标图像的像素点的图像空间坐标以及所述目标图像对应的视点位置,构建所述目标图像的像素点对应的初
始光线之前,所述方法还包括:根据目标图像的分辨率获取所述目标图像的像素点的图像空间坐标。7.根据权利要求1-6任意一项所述的方法,其特征在于,在所述根据目标图像的像素点的图像空间坐标以及所述目标图像对应的视点位置,构建所述目标图像的像素点对应的初始光线之前,所述方法还包括:对所述三维场景进行光栅化处理,获取所述目标图像的像素点的深度信息和法线信息。8.根据权利要求1-7任意一项所述的方法,其特征在于,所述材质信息是预配置的,在所述根据目标图像的像素点的图像空间坐标以及所述目标图像对应的视点位置,构建所述目标图像的像素点对应的初始光线之前,所述方法还包括:获取所述第一模型的顶点信息,所述顶点信息用于表示所述第一模型在所述三维场景中的位置;根据所述第一模型的顶点信息获取所述第一模型的材质信息。9.一种图像渲染方法,其特征在于,包括:根据目标图像的像素点的图像空间坐标以及所述目标图像对应的视点位置,构建所述目标图像的像素点对应的初始光线,其中,所述视点为虚拟相机的镜头,所述目标图像为在所述虚拟相机的成像平面上生成的图像,所述初始光线为从所述视点出发经过所述目标图像的像素点的虚拟光线;根据所述目标图像的像素点的图像空间坐标和深度信息,获取所述目标图像的像素点对应的第一交点的坐标,其中,所述目标图像的像素点对应的第一交点为经过所述目标图像的像素点的初始光线与用于生成所述目标图像的三维场景中第一模型第一次相遇的交点,所述深度信息用于表示所述目标图像的像素点对应的第一交点与所述视点之间的距离;根据所述目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取所述目标图像的像素点对应的第一反射光线和第一折射光线,其中,所述第一反射光线为所述初始光线在所述第一交点处的反射光线,所述第一折射光线为所述初始光线在所述第一交点处的折射光线,所述材质信息包括粗糙度、反射率和基础色中至少一项;根据所述目标图像的像素点对应的第一交点的坐标、第一反射光线和第一折射光线,确定经过所述目标图像的像素点的光线在所述三维场景中的全部交点的坐标;根据照射所述三维场景的光源的光辐射能量,经过所述目标图像的像素点的光线在所述三维场景中的全部交点的坐标,以及光线的波长,确定所述目标图像的像素点的光亮度值;根据所述目标图像的像素点的光亮度值生成所述目标图像。10.根据权利要求9所述的方法,其特征在于,所述根据所述目标图像的像素点的图像空间坐标和深度信息,获取所述目标图像的像素点对应的第一交点的坐标,包括:根据所述目标图像的像素点的图像空间坐标和深度信息获取所述目标图像的像素点的三维坐标系坐标;根据所述视点的空间矩阵和投影矩阵,以及所述目标图像的像素点的三维坐标系坐标,计确定所述目标图像的像素点对应的第一交点的坐标。
11.根据权利要求9或10所述的方法,其特征在于,所述根据所述目标图像的像素点对应的初始光线、第一交点的坐标以及第一交点处的材质信息,获取所述目标图像的像素点对应的第一反射光线和第一折射光线,包括:根据所述目标图像的像素点对应的第一交点的坐标获取所述目标图像的像素点对应的第一交点处的法线信息;根据所述目标图像的像素点对应的初始光线以及第一交点处的法线信息,确定所述目标图像的像素点对应的第一反射光线;根据所述目标图像的像素点对应的初始光线、第一交点处的法线信息以及第一交点处的材质信息,确定所述目标图像的像素点对应的第一折射光线。12.根据权利要求9-11任意一项所述的方法,其特征在于,在所述根据目标图像的像素点的图像空间坐标以及所述目标图像对应的视点位置,构建所述目标图像的像素点对应的初始光线之前,所述方法还包括:对所述三维场景进行光栅化处理,获取所述目标图像的像素点的深度信息和法线信息。13.一种电子设备,其特征在于,包括:处理器和存储器;所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如权利要求1-12任意一项所述的方法。14.一种计算机可读存储介质,其特征在于,包括计算机指令;当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-12任意一项所述的方法。

技术总结
本申请实施例公开了一种光线追踪方法和电子设备,涉及图像处理领域。根据目标图像的像素点的坐标以及视点位置构建初始光线;根据像素点的坐标和深度信息计算初始光线在三维场景中与物体第一次相遇的交点的坐标;根据像素点对应的初始光线、第一交点的坐标和材质信息得到对应的第一反射光线和第一折射光线;用于计算经过像素点的光线在三维场景中的全部交点。降低了计算光线在三维场景中与物体第一次相遇的交点的计算量;目标图像的分辨率越高,整个光线追踪过程中计算效率的提升越显著。可以应用于追求图像高质量的游戏、广告、AR/VR等场景中,提高生成图像的速率。提高生成图像的速率。提高生成图像的速率。


技术研发人员:刘智超
受保护的技术使用者:荣耀终端有限公司
技术研发日:2022.09.19
技术公布日:2023/9/11
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐