一种光线追踪方法、光线追踪装置、电子设备及存储介质与流程
未命名
10-25
阅读:71
评论:0
1.本技术涉及计算机技术领域,尤其是涉及一种光线追踪方法、光线追踪装置、电子设备及存储介质。
背景技术:
2.光线追踪技术是一种特殊的三维计算机图形渲染算法,其基本原理是追踪光线从光源发出,照射到物体表面,然后从表面反射的光线路径。这种技术自从rtx系列显卡发售以来,逐渐吸引了游戏开发者和玩家的关注,一些游戏已经开始利用光线追踪技术提升游戏画质。光线追踪技术在与局部光照模型相结合的情况下,可以更加真实地模拟光线在场景中的传播。
3.目前,光线追踪算法需要建立复杂的数据结构,与此同时存储量也随之增加,例如,基于bvh(bounding volume hierarchy)的光线追踪算法,并且针对动态场景还需要重新构建与更新bvh树,会随之带来额外的计算量,影响光线追踪的效率。因此,如何进行光线追踪,以降低计算量以及减小数据存储量,成为了亟待解决的问题。
技术实现要素:
4.有鉴于此,本技术的目的在于提供一种光线追踪方法、光线追踪装置、电子设备及存储介质,能够通过逆向光线与几何体的交点坐标,确定交点与搜索面元的相对位置关系,根据相对位置关系确定需要遍历的下一个面元,实现逆向光线的追踪,无需建立复杂的数据结构,降低传统逆向光线追踪方法的计算量以及存储量,提高了逆向光线追踪的效率,缩短后续图像渲染的时间。
5.本技术主要包括以下几个方面:
6.第一方面,本技术实施例提供了一种光线追踪方法,所述光线追踪方法包括:
7.获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;
8.在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;
9.根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;
10.若是,则确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;
11.若否,则将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
12.进一步的,通过以下步骤确定所述逆向光线与所述几何体的交点的坐标:
13.获取逆向光线的光线起点、光线传播方向向量、所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量;
14.基于逆向光线的光线起点以及光线传播方向向量,确定所述逆向光线的光线方
程,并基于所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量,确定所述目标面元的平面方程;
15.联立所述逆向光线的光线方程以及所述目标面元的平面方程,确定所述光线方程中的光线参数;
16.将所述光线参数代入所述光线方程中,得到所述逆向光线与所述几何体的交点的坐标。
17.进一步的,所述基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系的步骤,包括:
18.获取所述当前搜索面元的顶点坐标;其中,所述当前搜索面元为多边形形面元;
19.基于所述交点的坐标以及所述顶点坐标,确定第一系数以及第二系数;
20.在多个预设条件中,确定所述第一系数以及所述第二系数均符合的目标预设条件;
21.在预设条件与位置关系的映射关系中,确定所述目标预设条件对应的目标位置关系,并将所述目标位置关系确定为所述交点与所述当前搜索面元的相对位置关系。
22.进一步的,所述根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元的步骤,包括:
23.在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元内,则停止遍历;
24.在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元外,则确定获取当前搜索面元的下一个面元。
25.进一步的,所述确定是否获取当前搜索面元的下一个面元之后,所述光线追踪方法还包括:
26.获取搜索次数,确定所述搜索次数是否达到预设最大迭代次数;
27.若是,则确定不获取当前搜索面元的下一个面元;
28.若否,则将搜索次数加一,并确定获取当前搜索面元的下一个面元。
29.进一步的,通过以下步骤确定当前搜索面元的下一个面元:
30.在所述交点与所述当前搜索面元的相对位置关系中,获取所述交点对应的目标边;
31.在预设边与搜索方向的映射关系中,确定所述目标边对应的目标搜索方向;
32.将所述当前搜索面元在目标搜索方向上的面元确定为当前搜索面元的下一个面元。
33.进一步的,所述基于所述交点的坐标以及所述顶点坐标,确定第一系数以及第二系数的步骤,包括:
34.将所述当前搜索面元的顶点中的任意一个顶点确定为目标顶点,基于所述顶点坐标,得到所述目标顶点在所述当前搜索面元中所在的每条边的向量;
35.基于所述交点的坐标以及所述目标顶点的坐标,得到所述目标顶点到所述交点的向量;
36.基于所述目标顶点在所述当前搜索面元中所在的每条边的向量以及所述目标顶
点到所述交点的向量,确定第一系数以及第二系数。
37.第二方面,本技术实施例还提供了一种光线追踪装置,所述光线追踪装置包括:
38.确定模块,用于获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;
39.处理模块,用于在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;
40.判断模块,用于根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;
41.更新模块,用于在确定获取当前搜索面元的下一个面元时,确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;
42.追踪模块,用于在确定不获取当前搜索面元的下一个面元时,将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
43.第三方面,本技术实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的光线追踪方法的步骤。
44.第四方面,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的光线追踪方法的步骤。
45.本技术实施例提供的一种光线追踪方法、光线追踪装置、电子设备及存储介质,所述光线追踪方法包括:获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;若是,则确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;若否,则将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
46.这样,采用本技术提供的技术方案能够通过逆向光线与几何体的交点坐标,确定交点与搜索面元的相对位置关系,根据相对位置关系确定需要遍历的下一个面元,实现逆向光线的追踪,无需建立复杂的数据结构,降低传统逆向光线追踪方法的计算量以及存储量,提高了逆向光线追踪的效率,缩短后续图像渲染的时间。
47.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
48.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对
范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
49.图1示出了本技术实施例所提供的一种光线追踪方法的流程图;
50.图2示出了本技术实施例所提供的另一种光线追踪方法的流程图;
51.图3示出了本技术实施例所提供的一种逆向光线与物体交点搜索路径的示意图;
52.图4示出了本技术实施例所提供的一种光线追踪装置的结构示意图;
53.图5示出了本技术实施例所提供的一种电子设备的结构示意图。
具体实施方式
54.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解,本技术中的附图仅起到说明和描述的目的,并不用于限定本技术的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本技术中使用的流程图示出了根据本技术的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本技术内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
55.另外,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本技术保护的范围。
56.为了使得本领域技术人员能够使用本技术内容,结合特定应用场景“光线追踪”,给出以下实施方式,对于本领域技术人员来说,在不脱离本技术的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。
57.本技术实施例下述方法、装置、电子设备或计算机可读存储介质可以应用于任何需要进行光线追踪的场景,本技术实施例并不对具体的应用场景作限制,任何使用本技术实施例提供的一种光线追踪方法、光线追踪装置、电子设备及存储介质的方案均在本技术保护范围内。
58.值得注意的是,光线追踪技术是一种特殊的三维计算机图形渲染算法,其基本原理是追踪光线从光源发出,照射到物体表面,然后从表面反射的光线路径。这种技术自从rtx系列显卡发售以来,逐渐吸引了游戏开发者和玩家的关注,一些游戏已经开始利用光线追踪技术提升游戏画质。光线追踪技术在与局部光照模型相结合的情况下,可以更加真实地模拟光线在场景中的传播。
59.目前,有基于bvh(bounding volume hierarchy)的光线追踪算法,该算法是一种利用包围体分层技术进行物体碰撞检测的方法;在这个算法中,所有包围体被分层逐次地再次包围,形成一个更大的包围体,直到包围住所有物体,形成一个树形结构。bvh树在物理引擎的碰撞粗测阶段中被广泛应用,如bullet和havok,使用动态层次aabb包围盒树(dynamic bounding volume hierarchy based on aabb tree)结构存储动态的aabb形状,通过包围盒树的性质(不同父包围盒必定不会碰撞)快速过滤大量不可能发生碰撞的物体;
所以,目前的光线追踪方法需要建立复杂的数据结构,导致存储量也随之增加;与此同时针对动态场景还需要重新构建与更新bvh树,增加额外的计算量,因此,如何进行光线追踪,以降低计算量以及减小数据存储量,成为了亟待解决的问题。
60.基于此,本技术提出了一种光线追踪方法、光线追踪装置、电子设备及存储介质,所述光线追踪方法包括:获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;若是,则确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;若否,则将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
61.这样,采用本技术提供的技术方案能够通过逆向光线与几何体的交点坐标,确定交点与搜索面元的相对位置关系,根据相对位置关系确定需要遍历的下一个面元,实现逆向光线的追踪,无需建立复杂的数据结构,降低传统逆向光线追踪方法的计算量以及存储量,提高了逆向光线追踪的效率,缩短后续图像渲染的时间。
62.为便于对本技术实施例进行理解,首先对本技术实施例所公开的一种光线追踪方法进行详细介绍。
63.请参阅图1,图1为本技术实施例所提供的一种光线追踪方法的流程图,如图1中所示,所述光线追踪方法包括:
64.s101、获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;
65.该步骤中,光线照射到物体表面后会从表面进行反射,逆向光线是光线反射后从逆向方向的角度所追踪的光线;几何体是进行网格化处理的物体,每个网格是一个面元,面元为多边形面元,可以是三角形或者四边形等多边形的形状;
66.这里,在确定逆向光线与几何体的交点之前,需要将几何体每个面元上的所有顶点坐标进行存储;例如,面元若为三角形的形状,则将每个面元的三个顶点坐标进行存储。
67.作为示例,可以读取几何体上某三角形网格面上的顶点坐标,得到该面的法向量,结合光线的物理表达式可得光线与该三角形网格所在平面的交点。
68.需要说明的是,请参阅图2,图2为本技术实施例所提供的另一种光线追踪方法的流程图,如图2中所示,通过以下步骤确定逆向光线与几何体的交点的坐标:
69.s201、获取逆向光线的光线起点、光线传播方向向量、所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量;
70.s202、基于逆向光线的光线起点以及光线传播方向向量,确定所述逆向光线的光线方程,并基于所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量,确定所述目标面元的平面方程;
71.s203、联立所述逆向光线的光线方程以及所述目标面元的平面方程,确定所述光线方程中的光线参数;
72.s204、将所述光线参数代入所述光线方程中,得到所述逆向光线与所述几何体的交点的坐标。
73.在上述步骤s201至步骤s204中,是求解逆向光线与几何体某面元所在平面的交点,以一条逆向光线为例,逆向光线的光线方程如下:
74.r(t)=+td,0≤t《∞;
75.其中,o为光线起点;d为光线传播方向向量;t为光线参数,表征光线从起点到与物体交点的距离。平面方程可以表示如下:
76.(p-p
′
)
·
=0;
77.其中,p
′
为交点所在平面上的某已知点(顶点);n为交点所在平面的平面法向量;p为光线与该平面的交点。联立光线方程与平面方程可确定光线参数t,具体如下:
78.(p-p
′
)
·
=(o+td-p
′
)
·
=0;
[0079][0080]
进一步的,可将t代入光线方程o+td中得到光线与平面交点p的坐标。
[0081]
s102、在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;
[0082]
该步骤中,搜索起始面元是预先设置的,也可以是在多个面元中随机确定的,从搜索起始面元开始搜索,到交点所在的面元停止搜索,确定搜索路径。
[0083]
需要说明的是,基于交点的坐标确定交点与当前搜索面元的相对位置关系的步骤,包括:
[0084]
s1021、获取所述当前搜索面元的顶点坐标;
[0085]
该步骤中,获取当前搜索面元中的所有顶点坐标,若面元为三角形,则获取当前搜索面元的三个顶点的坐标,分别为p1、p2以及p3。
[0086]
s1022、基于所述交点的坐标以及所述顶点坐标,确定第一系数以及第二系数;
[0087]
需要说明的是,基于交点的坐标以及顶点坐标,确定第一系数以及第二系数的步骤,包括:
[0088]
s10221、将所述当前搜索面元的顶点中的任意一个顶点确定为目标顶点,基于所述顶点坐标,得到所述目标顶点在所述当前搜索面元中所在的每条边的向量;
[0089]
s10222、基于所述交点的坐标以及所述目标顶点的坐标,得到所述目标顶点到所述交点的向量;
[0090]
s10223、基于所述目标顶点在所述当前搜索面元中所在的每条边的向量以及所述目标顶点到所述交点的向量,确定第一系数以及第二系数。
[0091]
在上述步骤s10221至步骤s10223中,以三角形面元为例,三角形面元所在平面上的任何一点都可以表示为如下关系式:
[0092]
p=p1+u
×
(p
2-p1)+v
×
(p
3-p1);
[0093]
其中,u、v分别为第一系数和第二系数。将p1确定为目标顶点,将用v0表示,用v1表示,目标顶点p1到交点p的向量用v2表示;由于当前搜索面元的三个顶点坐标均为已知,所以v0以及v1为已知向量,通过步骤s204得到的交点坐标,所以v2也为已知向量,可以通过v0、v1以及v2确定第一系数和第二系数,具体公式如下:
[0094][0095][0096]
s1023、在多个预设条件中,确定所述第一系数以及所述第二系数均符合的目标预设条件;
[0097]
该步骤中,预设条件可以是第一系数和第二系数的不同范围;例如,第一预设条件为:u≥0,v≥0,u+v≤1;第二预设条件为:u≥0,v≥0,u+v》1;第三预设条件为:u≥0,v≤0;第四预设条件为:u≤0,v≥0。可以在这四个预设条件中确定出步骤10223计算得到的u和v的所属范围,从而确定出目标预设条件。
[0098]
s1024、在预设条件与位置关系的映射关系中,确定所述目标预设条件对应的目标位置关系,并将所述目标位置关系确定为所述交点与所述当前搜索面元的相对位置关系。
[0099]
该步骤中,位置关系可以是交点在当前搜索面元内或者是交点在当前搜索面元外;例如,以三角形面元为例,预设条件与位置关系的映射关系可以是:
①
、u≥0,v≥0,u+v≤1:交点在三角形内;
②
、u≥0,v≥0,u+v》1:交点在三角形外;
③
、u≥0,v≤0:交点在三角形外;
④
、u≤0,v≥0:交点在三角形外。通过步骤s1023确定出的目标预设条件,可以确定出对应的目标位置关系,从而确定交点是否在当前搜索面元内。
[0100]
s103、根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;
[0101]
该步骤中,根据相对位置关系决定光线与物体的交点是否在该面元内,否则给出下一个待求的面元代号。
[0102]
需要说明的是,根据交点与当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元的步骤,包括:
[0103]
s1031、在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元内,则停止遍历;
[0104]
s1032、在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元外,则确定获取当前搜索面元的下一个面元。
[0105]
在上述步骤s1031至步骤s1032中,若基于相对位置关系确定出交点在当前搜索面元内,则停止遍历,将之前遍历的所有当前搜索面元进行连接,所连接的路径即是光线追踪路径,若是交点在当前搜索面元外,则需要确定下一个遍历的面元,继续进行搜索。
[0106]
需要说明的是,通过以下步骤确定当前搜索面元的下一个面元:
[0107]
1)、在所述交点与所述当前搜索面元的相对位置关系中,获取所述交点对应的目标边;
[0108]
该步骤中,在预设条件与位置关系的映射关系中若是交点在当前搜索面元外,映射关系还包括交点具体在当前搜索面元的那个边外;例如,以三角形面元为例,预设条件与位置关系的映射关系可以是:
①
、u≥0,v≥0,u+v≤1:交点在三角形内;
②
、u≥0,v≥0,u+v》1:交点在三角形外且在p3p2边外;
③
、u≥0,v≤0:交点在三角形外且在p1p2边外;
④
、u≤0,v
≥0:交点在三角形外且在p1p3边外。如果满足
①
条件,则找到光线与物体的交点位于该三角形网格内,停止计算;否则需要根据u、v的取值判断下一迭代步需要计算的三角形网格标号(即下一个需要遍历的面元)。
[0109]
2)、在预设边与搜索方向的映射关系中,确定所述目标边对应的目标搜索方向;
[0110]
该步骤中,判断下一个待判定的面元信息,确定搜索路径,在判断下一个待判断的面元时,需要确定出搜索方向,在当前搜索面元的周围相邻的所有面元中基于搜索方向确定最终搜索的下一个面元;例如,以上述三角形面元为例,预设边与搜索方向的映射关系为:
②
、交点在三角形外且在p3p2边外时,搜索方向为右上方,则下一步需要遍历该三角形面元的右上方三角形面元;
③
、交点在三角形外且在p1p2边外时,搜索方向为下方,则下一步需要遍历该三角形面元的下方三角形面元;
④
、交点在三角形外且在p1p3边外时,搜索方向为左上方,则下一步需要遍历该三角形面元的左上方三角形面元。通过步骤1)确定出的目标边,可以确定出对应的搜索方向。
[0111]
3)、将所述当前搜索面元在目标搜索方向上的面元确定为当前搜索面元的下一个面元。
[0112]
在步骤s103之后,即确定是否获取当前搜索面元的下一个面元之后,光线追踪方法还包括:
[0113]
一、获取搜索次数,确定所述搜索次数是否达到预设最大迭代次数;
[0114]
二、若是,则确定不获取当前搜索面元的下一个面元;
[0115]
三、若否,则将搜索次数加一,并确定获取当前搜索面元的下一个面元。
[0116]
在上述步骤一至步骤三中,可以通过搜索次数确定是否继续进行遍历,若搜索次数达到预设最大迭代次数,则停止遍历,将之前遍历过的面元进行连接得到搜索路径,若搜索次数未达到预设最大迭代次数,则继续进行遍历,将搜索次数加一获取下一个需要搜索的面元。
[0117]
s104、若是,则确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;
[0118]
s105、若否,则将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
[0119]
在步骤s104至步骤s105中,若是继续搜索,则进行步骤s104将确定的下一个遍历的面元更新为当前搜索面元继续确定与交点的相对位置关系,直到找到光线与物体的交点在当前搜索面元内或搜索次数达到预设最大迭代次数(光线与物体无交点)停止遍历,进入步骤s105得到搜索路径。
[0120]
作为示例,在相同分辨率(200*100)的前提下对比未使用与使用本实施例方法的计算速度。实验用电脑配置为:amd r7 5800h处理器,基准频率3.8ghz;16g ram,频率3200mhz。球体网格总数为1000。未使用时,针对每个像素生成20条逆向光线,共花费约3.5小时结束计算。使用本实施例的方法时,针对每个像素生成100条逆向光线,共花费约17分钟结束计算。理论上计算量增加了五倍,但是计算时长却减少为原计算量的约1/14,故理论上该算法可以实现14*5=70倍的加速计算效果,得益于算法为判断逆向光线与物体的交点提供了一条搜索路径,避免了对所有网格进行遍历计算。实现加速效果的同时并未对物体几何信息进行修改,未增添额外的存储量,证明本实施例提供的方法在保证存储量的前提
下具有十分明显的加速效果。
[0121]
请参阅图3,图3为本技术实施例所提供的一种逆向光线与物体交点搜索路径的示意图,如图3中所示,以部分网格与某条逆向光线为例说明逆向光线与物体交点的搜索路径,图中p点代表该逆向光线与物体的交点,数字(0-4)表明逆向光线与物体交点的搜索路径中经过的面元标号,0面元为搜索起始面元,4为逆向光线与物体交点所在的面元。箭头指示的路径即为逆向光线与物体交点的搜索路径。从图3中可以清晰看出最多遍历了5个面元即找到了逆向光线与物体交点所在的面元即4号面元,而如果采用传统方法最多需要遍历9个面元才能找到逆向光线与物体交点所在的面元,该算法的优势会在三维场景中更加明显。本实施例基于光线与物体面元交点与面元的位置关系确定了一条合适且距离最短的搜索路径,与现有逆向光线追踪加速算法相比,避免了对所有面元的遍历计算,大幅减少计算量,相比于bvh方法无需复杂的数据结构,无需增加额外数据存储量,大大减少内存开支且易于操作实现,经实际验证,使用本实施例的方法能够显著提升逆向光线追踪算法的效率。
[0122]
本技术实施例提供的一种光线追踪方法,所述光线追踪方法包括:获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;若是,则确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;若否,则将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
[0123]
这样,采用本技术提供的技术方案能够通过逆向光线与几何体的交点坐标,确定交点与搜索面元的相对位置关系,根据相对位置关系确定需要遍历的下一个面元,实现逆向光线的追踪,无需建立复杂的数据结构,降低传统逆向光线追踪方法的计算量以及存储量,提高了逆向光线追踪的效率,缩短后续图像渲染的时间。
[0124]
基于同一发明构思,本技术实施例还提供了与上述一种光线追踪方法对应的一种光线追踪装置,由于本技术实施例中的装置解决问题的原理与本技术实施例上述方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
[0125]
请参阅图4,图4为本技术实施例所提供的一种光线追踪装置的结构示意图,如图4中所示,所述光线追踪装置410包括:
[0126]
确定模块411,用于获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;
[0127]
处理模块412,用于在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;
[0128]
判断模块413,用于根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;
[0129]
更新模块414,用于在确定获取当前搜索面元的下一个面元时,确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;
[0130]
追踪模块415,用于在确定不获取当前搜索面元的下一个面元时,将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
[0131]
可选的,所述确定模块411在用于确定所述逆向光线与所述几何体的交点的坐标时,所述确定模块411具体用于:
[0132]
获取逆向光线的光线起点、光线传播方向向量、所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量;
[0133]
基于逆向光线的光线起点以及光线传播方向向量,确定所述逆向光线的光线方程,并基于所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量,确定所述目标面元的平面方程;
[0134]
联立所述逆向光线的光线方程以及所述目标面元的平面方程,确定所述光线方程中的光线参数;
[0135]
将所述光线参数代入所述光线方程中,得到所述逆向光线与所述几何体的交点的坐标。
[0136]
可选的,所述处理模块412在用于基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系时,所述处理模块412具体用于:
[0137]
获取所述当前搜索面元的顶点坐标;其中,所述当前搜索面元为多边形面元;
[0138]
基于所述交点的坐标以及所述顶点坐标,确定第一系数以及第二系数;
[0139]
在多个预设条件中,确定所述第一系数以及所述第二系数均符合的目标预设条件;
[0140]
在预设条件与位置关系的映射关系中,确定所述目标预设条件对应的目标位置关系,并将所述目标位置关系确定为所述交点与所述当前搜索面元的相对位置关系。
[0141]
可选的,所述判断模块413在用于根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元时,所述判断模块413具体用于:
[0142]
在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元内,则停止遍历;
[0143]
在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元外,则确定获取当前搜索面元的下一个面元。
[0144]
可选的,所述判断模块413还用于:
[0145]
获取搜索次数,确定所述搜索次数是否达到预设最大迭代次数;
[0146]
若是,则确定不获取当前搜索面元的下一个面元;
[0147]
若否,则将搜索次数加一,并确定获取当前搜索面元的下一个面元。
[0148]
可选的,所述更新模块414在用于确定当前搜索面元的下一个面元时,所述更新模块414具体用于:
[0149]
通过以下步骤确定当前搜索面元的下一个面元:
[0150]
在所述交点与所述当前搜索面元的相对位置关系中,获取所述交点对应的目标边;
[0151]
在预设边与搜索方向的映射关系中,确定所述目标边对应的目标搜索方向;
[0152]
将所述当前搜索面元在目标搜索方向上的面元确定为当前搜索面元的下一个面
元。
[0153]
可选的,所述处理模块412在用于基于所述交点的坐标以及所述顶点坐标,确定第一系数以及第二系数时,所述处理模块412具体用于:
[0154]
将所述当前搜索面元的顶点中的任意一个顶点确定为目标顶点,基于所述顶点坐标,得到所述目标顶点在所述当前搜索面元中所在的每条边的向量;
[0155]
基于所述交点的坐标以及所述目标顶点的坐标,得到所述目标顶点到所述交点的向量;
[0156]
基于所述目标顶点在所述当前搜索面元中所在的每条边的向量以及所述目标顶点到所述交点的向量,确定第一系数以及第二系数。
[0157]
本技术实施例提供的一种光线追踪装置,所述光线追踪装置包括:确定模块,用于获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;处理模块,用于在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;判断模块,用于根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;更新模块,用于在确定获取当前搜索面元的下一个面元时,确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;追踪模块,用于在确定不获取当前搜索面元的下一个面元时,将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。
[0158]
这样,采用本技术提供的技术方案能够通过逆向光线与几何体的交点坐标,确定交点与搜索面元的相对位置关系,根据相对位置关系确定需要遍历的下一个面元,实现逆向光线的追踪,无需建立复杂的数据结构,降低传统逆向光线追踪方法的计算量以及存储量,提高了逆向光线追踪的效率,缩短后续图像渲染的时间。
[0159]
请参阅图5,图5为本技术实施例所提供的一种电子设备的结构示意图。如图5中所示,所述电子设备500包括处理器510、存储器520和总线530。
[0160]
所述存储器520存储有所述处理器510可执行的机器可读指令,当电子设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时,可以执行如上述图1至图2所示方法实施例中的光线追踪方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
[0161]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1至图2所示方法实施例中的光线追踪方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
[0162]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0163]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接
耦合或通信连接,可以是电性,机械或其它的形式。
[0164]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0165]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0166]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0167]
最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种光线追踪方法,其特征在于,所述光线追踪方法包括:获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;若是,则确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;若否,则将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。2.根据权利要求1所述的光线追踪方法,其特征在于,通过以下步骤确定所述逆向光线与所述几何体的交点的坐标:获取逆向光线的光线起点、光线传播方向向量、所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量;基于逆向光线的光线起点以及光线传播方向向量,确定所述逆向光线的光线方程,并基于所述交点所在的目标面元上的任意一个顶点坐标以及所述目标面元的平面法向量,确定所述目标面元的平面方程;联立所述逆向光线的光线方程以及所述目标面元的平面方程,确定所述光线方程中的光线参数;将所述光线参数代入所述光线方程中,得到所述逆向光线与所述几何体的交点的坐标。3.根据权利要求1所述的光线追踪方法,其特征在于,所述基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系的步骤,包括:获取所述当前搜索面元的顶点坐标;其中,所述当前搜索面元为多边形面元;基于所述交点的坐标以及所述顶点坐标,确定第一系数以及第二系数;在多个预设条件中,确定所述第一系数以及所述第二系数均符合的目标预设条件;在预设条件与位置关系的映射关系中,确定所述目标预设条件对应的目标位置关系,并将所述目标位置关系确定为所述交点与所述当前搜索面元的相对位置关系。4.根据权利要求1所述的光线追踪方法,其特征在于,所述根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元的步骤,包括:在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元内,则停止遍历;在所述交点与所述当前搜索面元的相对位置关系中,若所述交点与所述当前搜索面元的相对位置关系为所述交点在所述当前搜索面元外,则确定获取当前搜索面元的下一个面元。5.根据权利要求1所述的光线追踪方法,其特征在于,所述确定是否获取当前搜索面元的下一个面元之后,所述光线追踪方法还包括:获取搜索次数,确定所述搜索次数是否达到预设最大迭代次数;若是,则确定不获取当前搜索面元的下一个面元;
若否,则将搜索次数加一,并确定获取当前搜索面元的下一个面元。6.根据权利要求1所述的光线追踪方法,其特征在于,通过以下步骤确定当前搜索面元的下一个面元:在所述交点与所述当前搜索面元的相对位置关系中,获取所述交点对应的目标边;在预设边与搜索方向的映射关系中,确定所述目标边对应的目标搜索方向;将所述当前搜索面元在目标搜索方向上的面元确定为当前搜索面元的下一个面元。7.根据权利要求3所述的光线追踪方法,其特征在于,所述基于所述交点的坐标以及所述顶点坐标,确定第一系数以及第二系数的步骤,包括:将所述当前搜索面元的顶点中的任意一个顶点确定为目标顶点,基于所述顶点坐标,得到所述目标顶点在所述当前搜索面元中所在的每条边的向量;基于所述交点的坐标以及所述目标顶点的坐标,得到所述目标顶点到所述交点的向量;基于所述目标顶点在所述当前搜索面元中所在的每条边的向量以及所述目标顶点到所述交点的向量,确定第一系数以及第二系数。8.一种光线追踪装置,其特征在于,所述光线追踪装置包括:确定模块,用于获取逆向光线以及由多个面元构成的几何体,确定所述逆向光线与所述几何体的交点的坐标;处理模块,用于在所述多个面元中获取所述几何体的搜索起始面元,将所述搜索起始面元作为当前搜索面元,基于所述交点的坐标确定所述交点与所述当前搜索面元的相对位置关系;判断模块,用于根据所述交点与所述当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;更新模块,用于在确定获取当前搜索面元的下一个面元时,确定当前搜索面元的下一个面元,并将所述当前搜索面元的下一个面元更新为当前搜索面元,继续确定所述交点与所述当前搜索面元的相对位置关系;追踪模块,用于在确定不获取当前搜索面元的下一个面元时,将遍历到的每个当前搜索面元的连线确定为所述逆向光线的搜索路径。9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至7任一所述光线追踪方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述光线追踪方法的步骤。
技术总结
本申请提供了一种光线追踪方法、光线追踪装置、电子设备及存储介质,光线追踪方法包括:获取逆向光线以及由多个面元构成的几何体,确定逆向光线与几何体的交点的坐标;在多个面元中获取几何体的搜索起始面元,将搜索起始面元作为当前搜索面元,基于交点的坐标确定交点与当前搜索面元的相对位置关系;根据交点与当前搜索面元的相对位置关系确定是否获取当前搜索面元的下一个面元;若是,则将当前搜索面元的下一个面元更新为当前搜索面元,继续确定交点与当前搜索面元的相对位置关系;若否,则将遍历到的每个当前搜索面元的连线确定为逆向光线的搜索路径。采用本申请提供的技术方案无需建立复杂的数据结构,提高了逆向光线追踪的效率。效率。效率。
技术研发人员:师迎晨 王兵 孙卫涛
受保护的技术使用者:上海清华国际创新中心
技术研发日:2023.07.24
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种可调节按键力度的鼠标 下一篇:一种800W高功率高密度双色光源的制作方法