一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

渲染方法、设备以及系统与流程

2021-11-09 21:36:00 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种渲染方法、设备以及系统。


背景技术:

2.渲染是指用软件从三维模型生成图像的过程,其中,三维模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。渲染这个术语类似于“艺术家对于场景的渲染”,另外,渲染也用于描述“计算视频编辑文件中的效果,以生成最终视频输出的过程”。根据模型渲染出图像的过程所需的计算量大,消耗的计算资源多。


技术实现要素:

3.为了解决上述问题,本技术提供了一种渲染方法、设备以及系统,能够有效提升渲染效率。
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.图1a和图1b是本技术提供的渲染系统的结构示意图;
50.图2是本技术提供的不同角度观察虚拟场景得到的渲染图像的示意图;
51.图3a至图3c是本技术提供的光线跟踪渲染的示意图;
52.图4是本技术提供的光线跟踪渲染的另一示意图;
53.图5是本技术提供的各个用户单独进行计算时的计算量与抽取公共部分统一进行计算时的计算量的对比示意图;
54.图6a和图6b是本技术提供的各种三维模型的网格的示意图;
55.图7a至图7d是本技术提供的正向光线跟踪渲染的示意图;
56.图8是本技术提供的正向光线跟踪渲染的另一示意图;
57.图9是本技术提供的光源每单位面积通过的光线数量的示意图;
58.图10是本技术提供的反向光线跟踪渲染的各个预设视角的示意图;
59.图11a和图11b是本技术提供的反向光线追踪渲染的示意图;
60.图12是本技术提供的获取从用户角度可观察到的物体表面集合的示意图;
61.图13a和图13b是本技术提供的三维模型中每网格的光线采样数分别为1和n的对比图;
62.图14是本技术提出的一种预光线追踪结果的生成方法的流程示意图;
63.图15是本技术提出的一种渲染方法的流程示意图;
64.图16是本技术提出的一种渲染节点的结构示意图;
65.图17是本技术提出的另一种渲染节点的结构示意图。
具体实施方式
66.参见图1a,图1a是本技术涉及的一种渲染系统的结构示意图。本技术的渲染系统用于通过渲染方法对虚拟场景的3d模型进行渲染得到的2d图像,即渲染图像。本技术的渲
染系统可以包括:一个或多个终端设备10、网络设备20以及远程渲染平台30。远程渲染平台30具体可以部署在公有云上。远程渲染平台30和终端设备10一般部署在不同的数据中心内。
67.终端设备10可以是需要实时显示渲染图像的设备,例如,可以是用于飞行训练的虚拟现实设备(virtual reality,vr)、可以是用于虚拟游戏的电脑以及用于虚拟商城的智能手机等等,此处不作具体限定。终端设备可以是高配置、高性能(例如,多核、高主频、内存大等等)的设备,也可以是低配置,低性能(例如,单核、低主频、内存小等等)的设备。在一具体的实施例中,终端设备10可以包括硬件、操作系统以及渲染应用客户端。
68.网络设备20用于在终端设备10通过任何通信机制/通信标准的通信网络与远程渲染平台30之间传输数据。其中,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
69.远程渲染平台30包括一个或多个远程渲染节点,每个远程渲染节点自下而上包括渲染硬件、虚拟化服务、渲染引擎以及渲染应用服务端。其中,渲染硬件包括计算资源、存储资源以及网络资源。计算资源可以采用异构计算架构,例如,可以采用中央处理器(central processing unit,cpu) 图形处理器(graphics processing unit,gpu)架构,cpu ai芯片,cpu gpu ai芯片架构等等,此处不作具体限定。存储资源可以包括内存、显存等存储设备。网络资源可以包括网卡、端口资源、地址资源等。虚拟化服务是通过虚拟化技术将渲染节点的资源虚拟化为vcpu等自已,并按照用户的需要灵活地隔离出相互独立的资源以运行用户的应用程序的服务。常见地,虚拟化服务可以包括虚拟机(virtual machine,vm)服务以及容器(container)服务,vm和容器可以运行渲染引擎和渲染应用服务端。渲染引擎用于实现渲染算法。渲染应用服务端用于调用渲染引擎以完成渲染图像的渲染。
70.终端设备10上的渲染应用客户端和远程渲染平台30的渲染应用服务端合称渲染应用。常见的渲染应用可以包括:游戏应用、vr应用、电影特效以及动画等等。用户通过渲染应用客户端输入操作指令,渲染应用客户端将操作指令发送给渲染应用服务端,渲染应用服务端调用渲染引擎生成渲染结果,将渲染结果发送至渲染应用客户端。然后再由渲染应用客户端将渲染结果转换成图像呈现给用户。可在一具体的实施方式中,渲染应用服务端和渲染应用客户端可以是渲染应用提供商提供的,渲染引擎可以是云服务提供商提供的。举个例子说明,渲染应用可以是游戏应用,游戏应用的游戏开发商将游戏应用服务端安装在云服务提供商提供的远程渲染平台上,游戏应用的游戏开发商将游戏应用客户端通过互联网提供给用户下载,并安装在用户的终端设备上。此外,云服务提供商还提供了渲染引擎,渲染引擎可以为游戏应用提供计算能力。在另一种具体的实施方式中,渲染应用客户端、渲染应用服务端和渲染引擎可以均是云服务提供商提供的。
71.在图1b所示的渲染系统中,还包括管理设备40。管理设备40可以是用户的终端设备和云服务提供商的远程渲染平台30之外的第三方提供的设备。例如,管理设备40可以是游戏开发商提供的设备。游戏开发商可以通过管理设备40对渲染应用进行管理。可以理解,管理设备40可以设置于远程渲染平台之上,也可以设置于远程渲染平台之外,此处不作具体限定。
72.以图1a或图1b所示的渲染系统为例,在多用户参与的虚拟场景中,为了能够让每个用户都产生置身其中的真实感,用户a通过终端设备1以及用户b通过终端设备2加入到同
一个虚拟场景中。因此,如图2所示,假设虚拟场景如图2中的(a)所示,终端设备1需要显示从用户a的视角生成的如图2中的(b)所示的该虚拟场景的渲染图像,终端设备2需要显示从用户b的视角生成的如图2中的(c)所示的该虚拟场景的渲染图像。终端设备1和终端设备2可以分别独立地利用远程渲染平台30的资源对虚拟场景进行光线跟踪渲染(ray tracing render),从而得到不同角度的渲染图像。具体地,
73.终端设备1通过网络设备20向远程渲染平台30发出第一渲染请求,远程渲染平台30调用渲染引擎根据第一渲染请求从用户a的视角出发采用光线跟踪渲染单独对虚拟场景进行光线跟踪,从而得到用户a的视角生成的该虚拟场景的渲染图像。
74.终端设备2通过网络设备20向远程渲染平台30发出第二渲染请求,远程渲染平台30调用渲染引擎根据第二渲染请求从用户b的视角出发采用光线跟踪渲染单独对虚拟场景进行光线跟踪,从而得到用户b的视角生成的该虚拟场景的渲染图像。
75.下面将详细对终端设备1以及终端设备2采用的光线跟踪渲染方法进行详细的介绍。光线跟踪渲染是通过跟踪从观察者(例如相机或者人眼)的视点朝着渲染图像的每个像素发射的光线射入射入虚拟场景的光的路径来产生渲染图像的渲染方法。其中,虚拟场景包括光源以及三维模型。光线追踪渲染的方法中,从观察者的视点(当视点确定时,视角自然也确定了)出发,逆向跟踪能够到达光源的光线。由于只有最后能够进入观察者的视点的光线才是有用的,因此,逆向跟踪光线能够有效减少数据的处理量。光线追踪渲染中主要存在反射、折射以及透射三种场景,下面将分别结合具体的实施例进行说明。
76.如图3a所示,反射场景中,假设虚拟场景只有一个光源111以及一个不透明球体112。从相机113(以相机113位观察者为例)的视点e发出一条光线,投射到渲染图像114的像素点o1上,然后,继续射出到不透明球体112的一个点p1,然后,被反射到光源l,此时,点p1的光线强度和颜色决定了像素点o1的光线强度和颜色。从相机111的视点e发出另一条光线,投射到渲染图像114中的另一个像素点o2,然后,继续射出到不透明球体112的一个点p2,然后,被反射到光源l,并且,点p2和光源l之间存在障碍物不透明球体112,此时,点p2位于不透明球体112的阴影中,像素点o2的光线强度为零,颜色为黑色。
77.如图3b所示,折射场景中,假设虚拟场景只有一个光源121以及一个透明球体122。从相机123的视点e发出一条光线,投射到渲染图像124上的像素点o3上,然后,继续射出到透明球体122的一个点p3,然后,被折射到光源l,此时,点p3的光线强度和颜色决定了像素点o3的光线强度和颜色。
78.如图3c所示,透射场景中,假设虚拟场景只有一个光源131以及一个透明薄体132。从相机133的视点e发出一条光线,投射到网格的点o4,然后,继续射出到透明薄体132的一个点p4,然后,被透射到光源l,此时,点p4的光线强度和颜色决定了像素点o4的光线强度和颜色。
79.但是,上述图3a中的反射场景、图3b中的折射场景以及图3c中的透射场景都是最简单的场景,图3a中假设虚拟场景中仅仅存在一个不透明球体,图3b中假设虚拟场景中仅仅存在一个透明球体,图3c中假设虚拟场景中仅仅存在一个透明薄体,在实际应用中,虚拟场景远远比图3a至图3c要复杂,例如,虚拟场景中可能同时存在多个不透明物体以及多个透明物体,因此,光线会被多次反射、折射和透射,从而导致光线的跟踪变得非常复杂,对计算资源的消耗非常大。
80.如图4所示的复杂的虚拟场景中,假设虚拟场景包括有一个光源140、两个透明球体141、142以及一个不透明物体143。从相机144的视点e发出一条光线,投射到渲染图像145中的一个像素点o4,并继续射出到透明球体141的一个点p1,从p1向光源l作一条阴影测试线s1,其间没有遮挡的物体,于是,可以用局部光照明模型计算光源对p1在其视线e的方向上的光线强度,作为该点的局部光线强度。同时,还要跟踪该点处反射光线r1和折射光线t1,它们也对p1点的光线强度有贡献。在反射光线r1方向上,没有再与其他物体相交,那么就设该方向的光线强度为零,并结束这光线方向的跟踪。然后,继续对折射光线t1方向进行跟踪,来计算该光线的光线强度贡献。折射光线t1在透明物体141内部传播,继续射出与透明物体142相交于点p2,由于该点在透明物体142内部,可以假设它的局部光线强度为零,同时,产生了反射光线r2和折射光线t2,在反射光线r2方向,可以继续递归跟踪下去计算它的光线强度,在这里就不再继续下去了。继续对折射光线t2进行跟踪,t2与不透明物体143交于点p3,作p3与光源l的阴影测试线s3,没有物体遮挡,那么计算该处的局部光线强度,由于不透明物体143是非透明的,那么,可以继续跟踪反射光线r3方向的光线强度,结合局部光线强度来得到p3处的光线强度。反射光线r3的跟踪与前面的过程类似,算法可以递归的进行下去。重复上面的过程,直到光线满足跟踪终止条件。这样我们就可以得到像素点o4的光线强度,也就是它相应的颜色值。
81.在上述实施例中,是以渲染系统只包括终端设备1以及终端设备2为例进行说明的,在实际应用中,终端设备的数量可能远远不止两个,不同终端设备的用户的视角往往都是不一样的。因此,随着用户数量的增多,在同一虚拟场景中需要生成的不同视角的渲染图像的数量也随之增多,计算量会非常庞大。并且,由于这些终端设备都是对同一虚拟场景进行光线跟踪渲染从而得到的不同角度的渲染图像,可能有很多的计算都是重复的,导致了不必要的计算资源的浪费。
82.本技术提出的渲染系统能够从同一虚拟场景的不同角度的光线跟踪渲染中抽取出公共计算部分统一计算,每个用户只需要单独计算与视觉相关的私人部分即可,从而有效节省渲染所需的计算资源,提升渲染效率。参见图5,图5是各个用户单独进行计算时的计算量与抽取公共部分统一进行计算时的计算量的对比示意图。其中,图5的左边是各个用户单独进行计算时的计算量,图5的右边是抽取公共部分统一进行计算时的计算量。
83.图5的左边所示,各个用户单独进行计算时,总的计算量等于各个用户单独进行计算的计算量之和。即,总的计算量=用户1的单独计算量1 用户2的单独计算量2

用户n的单独计算量n。
84.图5的右边所示,将公共计算部分统一进行计算时,总的计算量等于公共计算部分统一进行计算的计算量加上各个用户私人部分进行计算的计算量之和。即,总的计算量=公共计算部分的计算量 用户1的角度计算量1 用户2的角度计算量2

用户n的角度计算量n。
85.从图上的对比可以明显看出,抽取公共部分统一进行计算能够比各个用户单独进行计算节约计算量,并且,用户的数量越多,节约的计算量越多。
86.该渲染系统的渲染引擎可以通过如下的渲染算法进行图像渲染:
87.假设虚拟场景中存在一个或者多个光源,以及一个或者多个三维模型。光源产生的光线照射到三维模型上。其中,光源可以是点光源、线光源或者面光源等等。三维模型的
形状可以是多种多样的,例如,可以是球体、锥体、曲面物体、平面物体以及表面不规则物体等等。
88.在公共部分的计算:
89.远程渲染平台将虚拟场景中的三维模型的表面分割成多个网格。其中,形状不同的三维模型的网格的形状可以是不同的,例如,球体的网格和曲面物体的网格的形状可以完全不同,下面将分别结合具体的实施例对网格进行说明。
90.如图6a所示,以三维模型为球体为例,网格可以表示为中心点以及中心点邻域的点构成的球体表面上的四边略鼓的近似方块。以球体的球心作为原点构建三维正交坐标系,其中,三维正交坐标系包括x轴,y轴以及z轴。中心点p的各个坐标中,r表示为球心o至中心点p的线段op的长度,θ表示为线段op与正z轴之间的夹角,表示为线段op在xoy平面上的投影与x轴之间的夹角。在一具体的实施例中,可以在球体上均匀地设置n个中心点p1,p2,

,p
n
,如果非中心点q
j
与中心点p
i
的距离最短,则非中心点q
j
与中心点p
i
属于同一个网格。
91.如图6b所示,以三维模型为曲面物体为例,网格可以表示为p(u,t)所代表的曲面表面上的方块。以曲面的一个设定原点构建二维正交坐标系,其中,坐标系包括u轴,t轴。u表示为曲面设定原点一个方向的偏移量,t表示另一个正交方向的偏移量,p(u,t)表示如图6b所示的(u,t)坐标系中四个顶点所组成的方块。
92.可以理解,上述的网格的形状仅仅是作为具体的举例,在实际应用中,网格还可能是其他的形状,此处不作具体限定。另外,网格的尺寸可以根据需要进行设置,对渲染出的图像的精度要求越高的情况下,网格的尺寸可以设置得越小。
93.上述网格的材料可以是光滑的,也可以是粗糙的。其中,光滑的材料为存在镜面反射的材料或者存在透射的材料,例如,镜面、金属表面以及水珠等等。粗糙的材料为存在漫反射的材料,例如,天然的木头以及布等等。当虚拟场景中的三维模型的网格均是粗糙的材料时,远程渲染平台可以只进行正向光线跟踪,或者,远程渲染平台可以进行正向光线跟踪并对所有网格进行反向光线跟踪;当虚拟场景中的三维模型的网格包括光滑的材料以及粗糙的材料时,远程渲染平台可以进行正向光线跟踪并对材料为光滑的网格进行反向光线跟踪,或者,远程渲染平台可以进行正向光线跟踪并对所有网格进行反向光线跟踪;当虚拟场景中的三维模型的网格均为光滑的材料时,远程渲染平台可以只进行正向光线跟踪,或者,远程渲染平台可以进行正向光线跟踪并对所有网格进行反向光线跟踪。下面将详细介绍正向光线跟踪和反向光线跟踪的概念。
94.正向光线跟踪是指从光源出发,正向跟踪光线在虚拟场景中的传递过程。远程渲染平台对虚拟场景中的光源产生的光线进行正向光线跟踪,从而得到虚拟场景中的三维模型中每个网格的光线强度。正向光线跟踪主要存在反射、折射、透射以及直射四种场景,下面将分别结合图7a

图7d以及具体的实施例进行说明。
95.如图7a所示,反射场景中,假设虚拟场景只有一个光源211、不透明球体212以及不透明球体213。从光源211发出一条光线,投射到不透明球体212的一个点p1上,然后,被反射到不透明球体213的一个中心点为点q1的网格上。因此,可以通过局部光照明模型计算光源211产生的光线在不透明球体212的点p1上产生的光线强度,然后,继续跟踪光线被不透明
unit area,spua)以及光线反弹次数为例,进行详细的介绍。
104.spua定义了每个单位面积采样得到的光线的数量。以图9所示为例,以光源l为中心,构建球面s,并将球面s划分为多个单位面积,那么,spua等于光源l产生的光线中透过单位面积a的光线的数量。理论上来说,单位面积通过的光源l产生的光线的数量是无穷的,但是,在实际的跟踪进行过程中,不可能对所有光线进行跟踪,只能对有限的光线进行跟踪。spua的数量越大,跟踪的光线数量越多,图像质量也就越好,但是,计算量越大。相反,spua的数量越小,跟踪的光线数量越少,图像质量也就越差,但是,计算量越小。
105.光线返弹次数为在光线的正向跟踪终止前,对光线进行跟踪的最大反射次数和最大折射次数之和。因为在复杂场景中,光线会被多次反射和折射,理论上来说,光线被反射和折射的次数可以是无限次,但是,在实际的跟踪进行过程中,不可能对光线进行无穷的跟踪,因而需要给出一些跟踪的终止条件。在应用中,可以有以下的终止条件:光线在经过许多次反射和折射以后,就会产生衰减,光线对于视点的光线强度贡献很小;或者,光线返弹次数即跟踪深度大于一定值。这里,光线返弹次数越多,可以被跟踪到的有效光线越多,多个透明物体之间的折射效果越好,越逼真,图像质量也就越好,但是,计算量越大。相反,光线返弹次数越少,可以被跟踪到的有效光线越少,多个透明物体之间的折射效果越差,越失真,图像质量也就越差,但是,计算量越少。
106.可以理解,上述采样参数仅仅是作为具体的示例,在实际应用中,还可以采用其他的采样参数,此处不作具体限定。
107.为了减少计算量,如果虚拟场景中的光源产生的光线不是照射三维模型方向的光线,可以不必进行正向光线跟踪。
108.反向光线追踪渲染是通过跟踪从预设视角进入三维模型的网格的光线,在虚拟场景中的传递至光源的过程。这里,预设视角是用户观察虚拟场景的某个角度。举例来说,假设用户垂直观看虚拟场景时,预设视角为(90,90),用户从左侧45度观看虚拟场景时,预设视角为(45,0),用户从右侧45度观看虚拟场景时,预设视角为(135,0)等等。上述从预设视角进行反向跟踪得到的光线只有人眼或者相机处于该预设视角才能观看得到,因此,为了能够实现不同角度对虚拟场景的观察,需要从各个预设视角进行反向光线跟踪。以图10所示为例对各个预设视角进行说明,每个网格都存在一个朝向其法线方向的开放半球空间,进入该半球空间光线可以表达为以网格中心p为终点,以半球空间的球面上任意一点o(例如,o1,o2或者o3)为起点,对每个网格的不同的预设视角分别进行反向光线跟踪,这里说的预设视角是指光线op在半球坐标系中的(θ,π),其中,0<θ<180,0<π<360。空间是连续的,但我们可以根据算力和精度要求,对预设视角进行量化,例如,可以每个1度设定一个预设视角,也可以每隔2度设定一个预设视角。可以理解,预设视角的数量越多,量化误差越小,准确度越高。
109.反向光线追踪渲染中主要存在反射以及折射两种场景,下面将分别结合具体的实施例进行说明。
110.如图11a所示,反射场景中,假设虚拟场景只有一个光源311以及一个不透明球体312。从预设视角发出一条光线,投射到不透明球体312的一个网格的点p1上,然后,被反射到光源311。此时,可以通过局部光照明模型计算光源311产生的光线在不透明球体312的该网格上产生的光线强度。
111.如图11b所示,折射场景中,假设虚拟场景只有一个光源321以及一个透明球体322。从预设视角发出一条光线,投射到透明球体322的一个网格的点p2,然后,被折射到透明球体322的另一个点q2,然后,被折射到光源l,此时,可以通过局部光照明模型计算光源321产生的光线在点q2上产生的光线强度,然后,再计算光线从点q2折射到点p2时在中心点为p2的网格上产生的光线强度。
112.但是,上述图11a中的反射场景以及图11b中的折射场景都是最简单的场景,图11a中假设虚拟场景中仅仅存在一个不透明球体,图11b中假设虚拟场景中仅仅存在一个透明球体,在实际应用中,虚拟场景远远比图11a至图11b要复杂,例如,虚拟场景中可能同时存在多个不透明物体以及多个透明物体,因此,光线会被多次反射、折射和透射,从而导致光线的跟踪变得非常复杂,此处不再展开描述。
113.在反向光线跟踪时,虚拟场景中的三维模型的每个网格的光线强度根据所有反射到该网格上所有光线产生的光线强度、所有折射到该网格上所有光线产生的光线强度、所有透射到该网格上所有光线产生的光线强度以及所有直射到该网格上所有光线产生的光线强度计算得出,例如,可以是这些光线强度之和。
114.应理解,上述例子均是以从某个预设视角出发进行反向光线跟踪为例进行说明的,但是,实际上同一个网格上不同角度所汇聚的光线也是存在差异的,特别是对于光滑表面而言,因此,需要从各个预设视角出发进行反向光线跟踪。
115.在只需要进行正向光线跟踪的情况下,在远程渲染平台进行了正向光线跟踪之后,就可以得到各三维模型的网格的预光线追踪结果。假设虚拟场景中存在n个网格t1,t2,

,t
n
,在进行正向光线跟踪之后,可以得到通过正向光线跟踪之后n个网格t1,t2,

,t
n
各自的正向光线追踪结果f1,f2,

,f
n
,以作为n个网格t1,t2,

,t
n
的预光线追踪结果。远程渲染平台将n个网格t1,t2,

,t
n
以及n个网格t1,t2,

,t
n
各自的预光线追踪结果f1,f2,

,f
n
关联存储到光强表格1中。在一具体的实施例中,光强表格1可以是如表1所示的表格:
116.表1光强表格1
117.网格标识t1t2…
t
n
预光线追踪结果f1f2…
f
n
118.在需要进行正向光线跟踪和反向光线跟踪的情况下,在进行了正向光线跟踪和反向光线跟踪之后,就可以对正向光线跟踪得到的正向光线追踪结果和反向光线跟踪得到的反向光线追踪结果进行处理,得到各三维模型的网格的预光线追踪结果。具体地,
119.假设虚拟场景中存在n个网格t1,t2,

,t
n
,进行正向光线跟踪以及分别从k个角度对n个网格t1,t2,

,t
n
进行反向光线跟踪。
120.对光源发出的光线进行正向光线跟踪之后,可以得到通过正向光线跟踪之后n个网格t1,t2,

,t
n
各自的正向光线追踪结果f1,f2,

,f
n

121.对n个网格t1,t2,

,t
n
分别从第一角度进行反向光线跟踪之后,可以得到从第一角度对n个网格t1,t2,

,t
n
分别进行反向光线跟踪得到的反向光线追踪结果对n个网格t1,t2,

,t
n
分别从第二角度进行反向光线跟踪之后,可以得到从第二角度对n个网格t1,t2,

,t
n
分别进行反向光线跟踪得到的反向光线跟踪结果对n个网格t1,t2,

,t
n
分别从第k角度进行反向光线跟踪之后,可以得到从第k角度对n个网格t1,
t2,

,t
n
分别进行反向光线跟踪得到的反向光线跟踪结果
122.将n个网格t1,t2,

,t
n
各自通过正向光线跟踪得到的正向光线跟踪结果f1,f2,

,f
n
分别和从第一角度对n个网格t1,t2,

,t
n
进行反向光线跟踪得到的反向光线跟踪结果进行线性叠加,从而得到第一角度的n个网格t1,t2,

,t
n
的预光线追踪结果将n个网格t1,t2,

,t
n
各自通过正向光线跟踪得到的正向光线跟踪结果f1,f2,

,f
n
分别和从第二角度对n个网格t1,t2,

,t
n
进行反向光线跟踪得到的反向光线跟踪结果进行线性叠加,从而得到第二角度的n个网格t1,t2,

,t
n
的预光线追踪结果将n个网格t1,t2,

,t
n
各自通过正向光线跟踪得到的正向光线跟踪结果f1,f2,

,f
n
分别和从第k角度对n个网格t1,t2,

,t
n
进行反向光线跟踪得到的反向光线跟踪结果进行线性叠加,从而得到第k角度的n个网格t1,t2,

,t
n
的预光线追踪结果
123.这里,第一角度的n个网格t1,t2,

,t
n
的预光线追踪结果第二角度的n个网格t1,t2,

,t
n
的预光线追踪结果第k角度的n个网格t1,t2,

,t
n
的预光线追踪结果应理解,在一些实施例中,还可以进行归一化处理。为了降低存储各三维模型的网格的预光线追踪结果所需要的空间,可以采用稀疏矩阵的方式对各三维模型的网格的预光线追踪结果进行存储。
124.远程渲染平台将n个网格t1,t2,

,t
n
以及n个网格t1,t2,

,t
n
各自的预光线追踪结果关联存储到光强表格2中。在一具体的实施例中,光强表格2可以是如表2所示的表格:
125.表2光强表格2
[0126][0127]
为了简便起见,上述内容是以对虚拟场景中的n个网格均进行反向光线跟踪为例进行说明的,在实际应用中,可能只对n个网格中的部分网格(t个网络)进行反向光线跟踪,此时,只需要将t个网格的每个网格的正向光线跟踪结果和t个网格的每个网格的k个角度的反向光线跟踪结果进行线性叠加以作为预光线追踪结果,剩余的n

t个网格的预光线追踪结果记录为正向光线跟踪结果即可。这里,需要进行反向光线跟踪的网格可以是镜面、透明物体等存在反射和折射现象的物体的表面。远程渲染平台将n个网格t1,t2,

,t
n
以及n个网格t1,t2,

,t
n
各自的预光线追踪结果关联存储到光强表格3中。在一具体的实施例中,光强表格3可以是如表3所示的表格:
[0128]
表3光强表格3
[0129][0130]
可以看出,表3中假设网格t1以及网格t
n
均为粗糙材料的网格,因此,不需要进行反向光线跟踪,也自然只存在正向光线跟踪结果,不存在反向光线跟踪结果。
[0131]
上述例子中均以预光线追踪结果的直接相加为例进行说明,在实际应用中,预光线追踪结果还可以是加权相加等等,此处不作具体限定。
[0132]
在私人部分的计算:
[0133]
当不同的用户从不同的预设视角观察虚拟场景时,远程渲染平台或者终端设备采用投射式求交方法,从预先计算好的各三维模型的网格的预光线追踪结果中提出相应的可观察到的网格的渲染结果,并最终生成用户所需要的渲染图像。下面将结合图12以及相关具体实施例对如何获取可观察到的网格的渲染结果进行详细的介绍。
[0134]
如图12所示,假设观察者511从视点e出发对虚拟场景进行观察,并且,观察生成的渲染图像512具有m个像素点。
[0135]
首先,从视点e发出一条光线,投射到渲染图像512的第一个像素点上,然后,假设光线继续射出到虚拟场景中的三维模型的其中一个网格t1上,并且,该光线射入该网格的第一射入角度为第一角度,那么可以根据第一射入角度为第一角度从如表2所示的各三维模型的网格的预光线追踪结果中查找到该网格相同角度的预光线追踪结果并将该预光线追踪结果作为第一像素点的渲染结果
[0136]
然后,从视点e发出一条光线,投射到渲染图像512的第二个像素点上,然后,假设光线继续射出到虚拟场景中的三维模型的其中一个网格t
10
上,并且,该光线射入该网格的第二射入角度为第五角度,那么可以根据第二射入角度为第二角度从如表2所示的各三维模型的网格的预光线追踪结果中查找该网格相同角度的预光线追踪结果并将该预光线追踪结果作为第二像素点的渲染结果。
[0137]


[0138]
最后,从视点e发出一条光线,投射到渲染图像512的第m个像素点上,然后,假设光线继续射出到虚拟场景中的三维模型的其中一个网格t
n
‑9上,并且,该光线射入该网格的第m射入角度为第k角度,那么可以根据第m射入角度为第k角度从如表2所示的各三维模型的网格的预光线追踪结果中查找该网格相同角度的预光线追踪结果并将该预光线追踪结果作为第m像素点的渲染结果。
[0139]
至此,m个像素点的渲染结果都已经确定了,渲染图像512已经可以确定出来了。
[0140]
上述例子中,均假设第一射入角恰好等于第一角度,第二射入角恰好等于第二角度,第m射入角恰好等于第k角度,但是,由于在实际应用中,预设视角通常进行了量化,可能存在射入角不是恰好等于预设视角的情况,例如,第一射入角可以位于第一角度和第二角
度之间,此时,可以通过向上取整或者向下取整等等方式进行处理,此处不作具体限定。
[0141]
为了简便起见,上述图12对应的实施例是以每像素采样数(sample per pixel,spp)等于1为例进行说明,即,每个像素点仅仅通过一条光线,其中,spp可以定义为每个像素采样得到的光线的数量,但是,在实际应用中,为了提高渲染图像的画质,通常令spp的数值更大。
[0142]
假设spp等于2时,下面将以渲染图像的一个像素点为例,说明获得该渲染图像的光线强度的过程。
[0143]
从视点e发出一条光线,投射到渲染图像512的第i个像素点上,然后,假设光线继续射出到虚拟场景中的三维模型的其中一个网格t3上,并且,该光线射入该网格的第一射入角度为第一角度,那么可以根据第一射入角度为第一角度从如表2所示的各三维模型的网格的预光线追踪结果中查找到该网格相同角度的预光线追踪结果从视点e发出另一条光线,投射到渲染图像512的第i个像素点上,然后,假设光线继续射出到虚拟场景中的三维模型的其中一个网格t4上,并且,该光线射入该网格的第一射入角度为第三角度,那么可以根据第一射入角度为第三角度从如表2所示的各三维模型的网格的预光线追踪结果中查找到该网格相同角度的预光线追踪结果那么,可以将预光线追踪结果以及预光线追踪结果的平均值作为第i像素点的渲染结果。
[0144]
可以理解,当spp的值更高的时候,可以以此进行类推,为了简便起见,此处不再展开赘述。
[0145]
spp的数量可以影响到渲染图像的画质的原因在于:以图13a所示为例,如果spp为1(即每像素只有一条光线经过),那么,即使光线发生微小偏移,像素点的渲染结果也可能发生很大的变化。以图13a所示为例,如果光线从像素点a经过,那么光线将会被投射到光线强度较低的不透明物体1上,此时,像素点a的渲染结果是由不透明物体1上的投射点所在的网格决定的,即,像素点a的光线强度较低。如果光线从像素点b经过,那么光线将会被投射到光线强度较高的不透明物体2上,此时,像素点b的渲染结果是由不透明物体2上的投射点所在的网格决定的,即,像素点b的光线强度较高的。因此,尽管像素点a和像素点b是相邻像素,但是,像素点a和像素点b的渲染结果会相差甚远,从而产生锯齿效应。为了解决上述问题,以图13b所示为例,如果spp为n(即从视点向渲染图像上的同一像素点发射n条光线,n为大于1的整数),然后,这n条光线透过像素点各自投射在不透明物体1或不透明物体2的n个投射点所在的网格上,从而可以根据n个投射点所在的网格的光线强度分别确定该像素点的n个光线强度,最后,对这n个光线强度求平均,从而得到该像素的渲染结果。如果该像素渲染结果符合画面参考帧(数学期望值),则采样噪声越低。因此,spp的数量越多,渲染图像的抗锯齿效果越好,噪声指标越低,渲染图像的画质也自然越好。
[0146]
整个过程至少可以分成两个部分:第一部分:用户预先将虚拟场景上传到远程渲染平台,远程渲染平台执行上述的公共部分的计算,从而得到多个网格的光线强度并进行存储以备用。第二部分远程渲染平台在接收到终端设备发送的渲染请求之后,再执行私人部分的计算,得到渲染图像。下面将结合具体的例子对两部分的过程进行详细的说明,其中,图14所示的例子主要说明第一部分的过程,图15所示的例子主要说明第二部分的过程。
[0147]
参见图14,图14是本技术提出的一种预光线追踪结果的生成方法的流程示意图。
如图14所示,本方法是在图1a或者图1b所示的渲染系统的基础上实现的,包括如下步骤:
[0148]
s101:远程渲染平台获取虚拟场景。
[0149]
在一具体的实施方式中,虚拟场景可以是终端设备发送给远程渲染平台,也可以是管理设备发送给远程渲染平台。
[0150]
在一具体的实施方式中,虚拟场景可以具有唯一的标识,即,虚拟场景的标识。这里,不同的虚拟场景具有不同的虚拟场景的标识。例如,虚拟场景1的虚拟场景的标识为s1,虚拟场景2的虚拟场景的标识为s2,


[0151]
在一具体的实施方式中,虚拟场景的定义,虚拟场景中的光源、虚拟场景中的三维模型以及各三维模型中的网格等等的介绍请参见上文,此处不再重复赘述。
[0152]
s102:所述远程渲染平台根据所述虚拟场景的光源对所述虚拟场景的各三维模型的网格进行正向光线追踪,得到各三维模型的网格的正向光线追踪结果。
[0153]
在一具体的实施方式中,在执行步骤s102之前,所述方法还包括:虚拟场景的提供者以及发出渲染请求的用户设置正向光线追踪参数。此时,步骤s102可以包括:远程渲染平台获取虚拟场景的提供者或发出渲染请求的用户设置的正向光线追踪参数,并根据虚拟场景的光源和正向光线追踪参数对虚拟场景的各三维模型的网格进行正向光线追踪,得到正向光线跟踪结果。其中,所述正向光线追踪参数包括以下至少一个:每单位面积的采样数以及光线反弹次数等等。
[0154]
在一具体的实施方式中,正向光线追踪的介绍可以参加上文中的相关内容,此处不再进行赘述。
[0155]
s103:所述远程渲染平台根据所述虚拟场景的光源对所述虚拟场景的各三维模型的部分或全部网格进行多个预设视角的反向光线追踪,得到各三维模型的网格的反向光线追踪结果。
[0156]
在一具体的实施方式中,在执行步骤s103之前,所述方法还包括:虚拟场景的提供者以及发出渲染请求的用户设置反向光线追踪参数。此时,步骤s103可以包括:远程渲染平台获取虚拟场景的提供者或发出渲染请求的用户设置的反向光线追踪参数,并根据虚拟场景的光源和反向光线追踪参数对虚拟场景的各三维模型的部分或者全部网格进行反向光线追踪,得到各三维模型的网格的反向光线追踪结果。其中,所述反向光线追踪参数包括以下至少一个:预设视角参数以及光线反弹次数等等。其中,预设视角参数可以是预设视角的数量,或者,可以是多个预设视角。
[0157]
s104:所述远程渲染平台根据正向光线跟踪结果反向光线跟踪结果,确定各三维模型的网格的预光线追踪结果。
[0158]
在一具体的实施方式中,远程渲染平台根据所述第一可观察到的网格的反向光线追踪结果和所述第一可观察到的网格的正向光线追踪结果,确定所述第一可观察到的网格的渲染结果的过程可以参见上文中确定各三维模型的网格的预光线追踪结果的过程,此处不再赘述。
[0159]
可以理解,上述例子是以虚拟场景中存在需要进行反向光线跟踪的网格为例进行说明的,在虚拟场景不存在需要进行反向光线跟踪的网格的情况下,则不需要执行步骤s103,并且,在步骤s104中直接根据正向光线跟踪结果确定各三维模型的网格的预光线追踪结果即可,此处不再展开描述。
[0160]
参见图15,图15是本技术提出的一种渲染方法的流程示意图。如图15所示,本渲染方法是在图1a或者图1b所示的渲染系统的基础上实现的,包括如下步骤:
[0161]
s201:第一终端设备通过网络设备向远程渲染平台发送第一渲染请求。相应地,远程渲染平台接收第一终端设备通过网络设备发送的第一渲染请求。
[0162]
在一具体的实施方式中,所述第一渲染请求包括虚拟场景的标识以及第一用户的视角视角,其中,所述虚拟场景的标识为所述虚拟场景的唯一标识,所述第一用户的视角为第一用户观察所述虚拟场景的角度。
[0163]
s202:第二终端设备通过网络设备向远程渲染平台发送第二渲染请求。相应地,远程渲染平台接收第二终端设备通过网络设备发送的第二渲染请求。
[0164]
在一具体的实施方式中,所述第二渲染请求包括所述虚拟场景的标识以及第二用户的视角,其中,所述第二用户的视角为第二用户观察所述虚拟场景的角度。
[0165]
s203:所述远程渲染平台接收第一渲染请求,确定所述第一渲染请求在所述虚拟场景的各三维模型的第一可观察到的网格,从存储的所述虚拟场景的各三维模型的网格的预光线追踪结果中,确定所述第一可观察到的网格的渲染结果,从而生成第一渲染图像。
[0166]
在一具体的实施方式中,远程渲染平台确定所述第一渲染请求在所述虚拟场景的各三维模型的第一可观察到的网格,从存储的所述虚拟场景的各三维模型的网格的预光线追踪结果中,确定所述第一可观察到的网格的渲染结果的方式可以参照上文中的私人部分的计算,此处不再赘述。
[0167]
s204:所述远程渲染平台接收第二渲染请求,确定所述第二渲染请求在所述虚拟场景的各三维模型的第二可观察到的网格,从存储的所述虚拟场景的各三维模型的网格的预光线追踪结果中,确定所述第二可观察到的网格的渲染结果,从而生成第二渲染图像。
[0168]
在一具体的实施方式中,远程渲染平台确定所述第二渲染请求在所述虚拟场景的各三维模型的第二可观察到的网格,从存储的所述虚拟场景的各三维模型的网格的预光线追踪结果中,确定所述第二可观察到的网格的渲染结果的方式可以参照上文中的私人部分的计算,此处不再赘述。
[0169]
s205:远程渲染平台将第一渲染图像通过网络设备发送给第一终端设备。相应地,第一终端设备接收远程渲染平台通过网络设备发送的第一渲染图像。
[0170]
s206:远程渲染平台将第二渲染图像通过网络设备发送给第二终端设备。相应地,第二终端设备接收远程渲染平台通过网络设备发送的第二渲染图像。
[0171]
可以理解,上述步骤顺序仅仅是作为一种具体的示例,在其他的例子中,执行顺序也可以是步骤s201

>步骤s203

>步骤s205

>步骤s202

>步骤s204

>步骤s206等等,此处不作具体限定。
[0172]
可以理解,上述例子中是以由远程渲染平台生成第一渲染图像以及第二渲染图像为例进行说明,在其他的实施方式中,远程渲染平台可以将各三维模型的网格的预光线追踪结果分别发送给第一终端设备以及第二终端设备,并由第一终端设备根据各三维模型的网格的预光线追踪结果生成第一渲染图像,并且,由第二终端设备根据各三维模型的网格的预光线追踪结果生成第二渲染图像,此处不作具体限定。
[0173]
参见图16,图16是本技术提出的一种渲染节点的结构示意图。如图16所示,渲染节点包括包括:渲染应用服务端610以及渲染引擎620。
[0174]
所述渲染应用服务端610,用于获取虚拟场景,所述虚拟场景包括光源和至少一个三维模型;
[0175]
所述渲染引擎620,用于根据所述虚拟场景的光源对所述虚拟场景的各三维模型的网格进行正向光线追踪,其中,所述虚拟场景的三维模型的表面分割得到所述虚拟场景的三维模型的网格;根据所述虚拟场景的各三维模型的网格的正向光线追踪结果生成所述虚拟场景的各三维模型的网格的预光线追踪结果;存储所述虚拟场景的各三维模型的网格的预光线追踪结果;
[0176]
所述渲染应用服务端610,用于接收第一渲染请求,确定所述第一渲染请求在所述虚拟场景的各三维模型的第一可观察到的网格;
[0177]
所述渲染引擎620,用于从存储的所述虚拟场景的各三维模型的网格的预光线追踪结果中,确定所述第一可观察到的网格的渲染结果。
[0178]
为了简便起见,本实施例中并没有对虚拟场景的定义,虚拟场景中的光源、虚拟场景中的三维模型以及各三维模型中的网格、正向光线追踪、各三维模型的网格的预光线追踪结果、第一可观察到的网格以及第一可观察到的网格的渲染结果等等进行介绍,具体请参见上文相关内容,此处不作具体限定。另外,本实施例中的渲染应用服务端610以及渲染引擎620可以设置于图1a以及图1b的渲染节点中,具体请参见图1a以及图1b,此处不再赘述。本实施方式中的渲染节点还可以执行图14中渲染节点执行的步骤,以及图15中渲染节点执行的步骤。
[0179]
图17是一种渲染节点的结构示意图。如图17所示,渲染节点包括:处理系统910、第一存储器920、智能网卡930以及总线940。
[0180]
处理系统910可以是采用异构结构,即,包括一个或者多个通用处理器,以及,一个或者多个特殊处理器,例如,gpu或者ai芯片等等,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括中央处理器(central processing unit,cpu)、微处理器、微控制器、主处理器、控制器以及专用集成电路(application specific integrated circuit,asic)等等。通用处理器执行各种类型的数字存储指令,例如存储在第一存储器920中的软件或者固件程序。在一具体的实施例中,通用处理器可以是x86处理器等等。通用处理器通过物理接口将命令发送给第一存储器920,以完成存储相关的任务,例如,通用处理器可以提供的命令包括读取命令、写入命令、复制命令以及擦除命令等等。所述命令可以指定与第一存储器920的特定页和块有关的操作。特殊处理器用于完成图像渲染的复杂运算等等。
[0181]
第一存储器920可以包括是随机存取存储器(random access memory,ram)、快闪存储器(flashmemory)等,也可以是ram,只读存储器(read

onlymemory,rom)或者硬盘(hard disk drive,hdd)或固态硬盘(solid

statedrive,ssd)。第一存储器920存储了实现渲染引擎以及渲染应用服务端的程序代码。
[0182]
智能网卡930,还被称为网络接口控制器、网络接口卡或者局域网(local area network,lan)适配器。每块智能网卡930都有一个唯一的mac地址,是智能网卡930厂家在生产时烧入只读存储芯片中的。智能网卡930包括处理器931、第二存储器932以及收发器933。处理器931与通用处理器相类似,但是,处理器931的性能要求可以低于通用处理器的性能要求。在一具体的实施例中,处理器931可以是arm处理器等等。第二存储器932也可以是快闪存储器、hdd或者sdd,第二存储器932的存储容量可以小于第一存储器920的存储容量。收
发器933可以用于接收和发送报文,并将接收到的报文上传给处理器931进行处理。智能网卡930还可以包括多个端口,端口可以是粗缆接口、细缆接口和双绞线接口三种接口类型中的任意一种或者多种。
[0183]
为了简便起见,本实施例中并没有对虚拟场景的定义,虚拟场景中的光源、虚拟场景中的三维模型以及各三维模型中的网格、正向光线追踪、各三维模型的网格的预光线追踪结果、第一可观察到的网格以及第一可观察到的网格的渲染结果等等进行介绍,具体请参见上文相关内容,此处不作具体限定。另外,图16中的渲染应用服务端610以及渲染引擎620的程序代码可以设置于图17的第一存储器920中。本实施方式中的渲染节点还可以执行图14中渲染节点执行的步骤,以及图15中渲染节点执行的步骤。
[0184]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态存储盘solid state disk(ssd))等。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献