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

文档序号:30347660发布日期:2022-06-08 09:40阅读:86来源:国知局
渲染方法、设备以及系统与流程

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


背景技术:

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.图1a-图1b是本技术提供的一些渲染系统的结构示意图;
42.图2是本技术涉及的从不同角度观察目标场景的结构示意图;
43.图3是本技术提供的逆向光线跟踪的示意图;
44.图4a-图4b是本技术提供的一些网格的示意图;
45.图5是本技术提供的观察目标场景的视角的示意图;
46.图6是本技术提供的视点e发出的n条光线与目标场景中的m个网格进行求交的示意图;
47.图7a-图7d是本技术提供的一些正向光线跟踪的示意图;
48.图8是本技术提供的每个单位面积采样得到的光线的数量的示意图;
49.图9a-图9b是本技术提供的反向光线追踪渲染的示意图;
50.图10是本技术提供的反向光线追踪渲染的角度的示意图;
51.图11是本技术提供的从视点e发出的光线与三维模型相交的示意图;
52.图12是本技术提供的一种渲染方法的流程交互图;
53.图13是本技术提供的另一种渲染方法的流程交互图;
54.图14是本技术提供的一种渲染应用服务端的结构示意图。
具体实施方式
55.参见图1a,图1a是本技术涉及的一种渲染系统的结构示意图。本技术的渲染系统用于通过渲染方法对目标场景的3d模型进行渲染得到的2d图像,即渲染图像。其中,渲染方法可以包括光栅化渲染以及光线跟踪渲染等等。图1a提供的渲染系统可以包括:多个终端设备110、网络设备120以及远程渲染平台130。远程渲染平台130具体可以部署在公有云上。远程渲染平台130和终端设备一般部署在不同的数据中心乃至地理区域内。
56.终端设备110可以是需要显示渲染图像的设备,例如,可以是用于飞行训练的虚拟现实设备(virtual reality,vr),可以是用于虚拟游戏的电脑以及用于虚拟商城的智能手机等等,此处不作具体限定。终端设备可以是高配置、高性能(例如,多核、高主频、内存大等等)的设备,也可以是低配置,低性能(例如,单核、低主频、内存小等等)的设备。在一具体的实施例中,终端设备110上运行有操作系统以及渲染应用客户端。
57.网络设备120用于在终端设备110通过任何通信机制/通信标准的通信网络与远程渲染平台130之间传输数据。其中,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
58.远程渲染平台130包括多个渲染节点,每个渲染节点自下而上包括渲染硬件、操作系统、渲染引擎以及渲染应用服务端。其中,渲染硬件包括计算资源、存储资源以及网络资源。
59.计算资源可以采用异构计算架构,例如,可以采用中央处理器(central processing unit,cpu)+图形处理器(graphics processing unit,gpu)架构,cpu+ai芯片,cpu+gpu+ai芯片架构等等,此处不作具体限定。存储资源可以包括内存等等。这里,计算资源可以被分成多个计算单位资源,存储资源可以被分成多个存储单位资源,网络资源可以被分成多个网络单位资源。因此,远程渲染平台130可以按照用户的资源需求以单位资源为基础进行自由组合,从而用户的需要提供资源。例如,通过虚拟化服务按照用户的需要灵活地隔离出相互独立的资源以运行渲染引擎和/或渲染应用服务端。常见地,虚拟化服务可以隔离出虚拟机(virtual machine,vm)服务、裸金属服务器(bare metal server,bms)服务
以及容器(container)等独立的计算资源。渲染引擎可以用于实现图像渲染算法。渲染引擎允许渲染应用按照其接口调用渲染引擎内置的渲染算法(管道)来完成图像渲染。渲染应用服务端可以用于调用渲染引擎以完成渲染图像的渲染。
60.终端设备110上运行的渲染应用客户端和远程渲染平台130上运行的渲染应用服务端分别构成了渲染应用的前端和后端。其中,常见的渲染应用可以包括:游戏应用、vr应用、电影特效以及动画等等。渲染应用可以通过调用渲染引擎进行实时图像渲染,从而得到渲染图像。
61.在一具体的实施方式中,渲染应用服务端和渲染应用客户端可以是渲染应用提供商提供的,渲染引擎可以是云服务提供商提供的。举个例子说明,渲染应用可以是游戏应用,游戏应用的游戏开发商将游戏应用服务端安装在云服务提供商提供的远程渲染平台上,游戏应用的游戏开发商将游戏应用客户端通过互联网提供给用户下载,并安装在用户的终端设备上。此外,云服务提供商还提供了渲染引擎,渲染引擎可以为游戏应用提供计算能力。在另一种具体的实施方式中,渲染应用客户端、渲染应用服务端和渲染引擎可以均是云服务提供商提供的。
62.在图1b所示的云渲染系统中,还包括管理设备140。管理设备140上可以是用户的终端设备和云服务提供商的远程渲染平台130之外的第三方提供的设备,也可以部署和远程渲染平台130一起部署在公有云上。例如,管理设备140可以是渲染应用提供商提供的。渲染应用提供商可以通过管理设备140对渲染应用进行管理,例如,渲染应用提供商可以通过管理设备140指定渲染应用服务端向渲染应用客户端提供的初始的渲染图像的质量参数等等。
63.在多用户参与的虚拟场景中,为了能够让每个用户都产生置身其中的真实感,往往不同的用户需要的是从不同的角度生成的同一个目标场景的渲染图像。如图2所示,假设目标场景如图2中的(a)所示,当使用终端设备1的第一用户从第一视角进行观察时,需要生成的渲染图像如图2中的(b)所示,当使用终端设备2的第二用户从第二视角进行观察时,需要生成的渲染图像如图2中的(c)所示。那么,终端设备1和终端设备2可以分别独立地对目标场景进行光线跟踪渲染(ray tracing render),从而得到不同角度的渲染图像。具体地,
64.终端设备1通过网络设备120向远程渲染平台130发出第一渲染请求,远程渲染平台130调用渲染引擎根据第一渲染请求从第一用户的视角出发采用光线跟踪渲染单独对目标场景进行光线跟踪,从而得到第一用户的视角生成的该目标场景的渲染图像。
65.终端设备2通过网络设备120向远程渲染平台130发出第二渲染请求,远程渲染平台130调用渲染引擎根据第二渲染请求从第二用户的视角出发采用光线跟踪渲染单独对目标场景进行光线跟踪,从而得到第二用户的视角生成的该目标场景的渲染图像。
66.但是,从第一用户的视角生成的渲染图像和从第二用户的视角生成的渲染图像存在大量的重复计算,从而导致大量的计算资源被浪费。
67.下面将详细对终端设备1以及终端设备2采用的光线跟踪渲染方法进行详细的介绍。光线跟踪渲染是通过跟踪沿从相机(或者人眼)的视点朝着渲染图像的每个像素发射的光线入射目标场景的光的路径来产生渲染图像的渲染方法。其中,目标场景包括光源以及三维模型。光线追踪渲染的核心思想在于,从相机(或者人眼)的视点(当视点确定时,视角自然也确定了)出发,逆向跟踪光线。由于只有最后能够进入相机(或者人眼)的光线才是有
用的,因此,逆向跟踪光线能够有效减少数据量。
68.如图3所示,假设目标场景只有一个光源311以及一个不透明球体312。从相机313的视点e发出一条光线,投射到渲染图像314的像素点o1上,然后,继续出射到不透明球体312的一个点p1,然后,被反射到光源l,此时,点p1的光线强度和颜色决定了像素点o1的光线强度和颜色。从相机311的视点e发出另一条光线,投射到渲染图像314中的另一个像素点o2,然后,继续出射到不透明球体312的一个点p2,然后,被反射到光源l,并且,点p2和光源l之间存在障碍物不透明球体312,此时,点p2位于不透明球体312的阴影中,像素点o2的光线强度为零,颜色为黑色。
69.可以理解,图3中假设目标场景中仅仅存在一个不透明球体,在实际应用中,目标场景远远比图3要复杂,例如,目标场景中可能同时存在多个不透明物体以及多个透明物体,因此,光线会被多次反射、折射和透射,从而导致光线的跟踪变得非常复杂,对计算资源的消耗非常大。并且,在上述实施例中,是以渲染系统只包括终端设备1以及终端设备2为例进行说明的,但是,在实际应用中,终端设备的数量远远不止两个,不同终端设备的用户的视角往往都是不一样的,因此,随着用户数量的增多,需要生成的不同视角的渲染图像的数量也随之增多,计算量会非常庞大。
70.假设目标场景中存在一个或者多个光源,以及,一个或者多个三维模型。光源产生的光线照射到三维模型上。其中,光源可以是点光源、线光源或者面光源等等。三维模型的形状可以是多种多样的,例如,可以是球体、锥体、曲面物体、平面物体以及表面不规则物体等等。
71.将目标场景中的三维模型的表面分割成大量的网格。即,网格是场景中的三维模型的表面的部分区域。其中,形状不同的三维模型的网格的形状可以是不同的,例如,球体的网格和曲面物体的网格的形状可以完全不同。网格可以具有唯一的网格标识。下面将分别结合具体的实施例对网格进行说明。
72.如图4a所示,以三维模型为球体为例,网格可以表示为中心点以及中心点邻域的点构成的球体表面上的四边略鼓的近似方块。以球体的球心作为原点构建三维正交坐标系,其中,三维正交坐标系包括x轴,y轴以及z轴。中心点p的各个坐标中,r表示为球心o至中心点p的线段op的长度,θ表示为线段op与正z轴之间的夹角,表示为线段op在xoy平面上的投影与x轴之间的夹角。在一具体的实施例中,可以在球体上均匀地设置n个中心点p1,p2,

,pn,如果非中心点qj与中心点pi的距离最短,则非中心点qj与中心点pi属于同一个网格。
73.如图4b所示,以三维模型为曲面物体为例,网格可以表示为p(u,t)所代表的曲面表面上的方块。以曲面的一个设定原点构建二维正交坐标系,其中,坐标系包括u轴,t轴。u表示为曲面设定原点一个方向的偏移量,t表示另一个正交方向的偏移量,p(u,t)表示如图4b所示的(u,t)坐标系中四个顶点所组成的方块。
74.可以理解,上述的网格的形状仅仅是作为具体的举例,在实际应用中,网格还可能是其他的形状,例如,六边形等等,此处不作具体限定。另外,网格的大小可以根据需要进行设置,当精度要求越高,网格的大小可以设置得越小,当精度要求越低,网格的大小可以设置得越大。
75.确定用户观察目标场景的视角集合。其中,视角集合中可以包括一个视角或者多个视角。如图5所示,对于单个视点e来说,该视点e的视角可以表示为(p,θ),其中,p为视点e到渲染图像的垂直距离,θ为该视点e到渲染图像的中心点o的连线与水平线的夹角。视角集合中的视角可以是同一个用户在不同时刻的各个视角,可以是不同用户在同一时刻的各个视角,可以是多个用户在不同时刻的各个视角等等。其中,视角集合的确定方法至少包括如下几种:
76.在第一种方式中,视角集合可以是预先设置的。也就是说,视角集合中的每个视角均是用户预先设置的。例如,远程渲染平台可以收集不同终端设备的用户在同一时刻的各个视角,并预先设置为视角集合。或者,渲染应用为游戏应用时,游戏应用给出了特定的游戏路径,远程渲染平台可以收集用户在该特定的游戏路径中的各个视角,并预先设置为视角集合。
77.在第二种方式中,视角集合可以是统计得到的。例如,可以对多个历史视角进行统计,并将出现概率大于预设阈值的历史视角设置为视角集合。这里,对多个历史视角进行统计可以采用正态分布、泊松分布等等。
78.在第三种方式中,视角集合可以是预测得到的。例如,渲染应用为游戏应用时,可以根据游戏应用给出的已有游戏路径通过预测算法预测之后的游戏路径,并将预测得到的游戏路径的可能出现的视角设置为视角集合。这里,预测算法可以包括:决策树算法、人工神经网络以及支持向量机等等。
79.应理解,上述视角集合的确定方法仅仅是作为具体的实施例,在实际应用中,视角集合还可以通过迭代的方式确定的,例如,渲染应用为游戏应用时,如果游戏场景发生切换,则每个游戏场景的视角都会发生变化,因此,每次游戏场景发生切换时,每个游戏场景的视角集合都会产生迭代。
80.在所述多个网格中确定所述视角集合对应的k个有效网格。以视角集合中的一个视角为例,该视角对应的有效网格具体该视角对应的视点能够观察到的网格。如图6所示,从该视角对应的视点e出发,向渲染图像的每个像素点发射每单位像素的采样数的光线。也就是说,从该视点e发出的总光线数n=渲染图像的宽度像素*渲染图像的高度像素*每单位像素的采样数的光线。需要说明的是,为了便于观察,图6仅仅示出了从该视点e向渲染图像的四个角像素点发出的一条光线,其他光线均被省略。将从该视点e发出的n条光线与目标场景中的m个网格进行求交。如果第i条光线和第j个网格相交,则该第j个网格为有效网格,其中,1≤i≤n,1≤j≤m,i,j,n,m均为正整数。相反,如果视角集合中任意一个视角产生的光线都没和第j个网格相交,那么,该第j个网格为无效网格。为了减少数据量,有效网格只需存储一次,例如,如果第i条光线和第j个网格相交,第i+1条光线也和第j个网格相交,那么第j个网格只需要被存储一次即可,而,无效网格不需要被存储。在对有效网格进行存储时,可以只存储有效网格的网格标识以及有效网格所在的三维模型的标识,也可以存储有效网格的网格标识、有效网格所在的三维模型的标识、有效网格的空间坐标、入射有效网格的光线的方向等等。
81.有效网格的材料可以包括漫反射材料以及光学材料。其中,漫反射材料通常是表面比较粗糙的材料,例如,布料、纸张、木材以及岩石等等。光学材料通常是表面比较光滑的材料,或者,透明的材料,例如,湖面、镜面以及露珠等等。以第k个有效网格为例,如果第k个
有效网格为漫反射材料,那么从目标场景中的光源出发,向该有效网格发射光线,并对光线进行正向光线跟踪;如果第k个有效网格为光学材料,则从多个角度对该第k个有效网格进行反向光线跟踪。其中,
82.正向光线跟踪是指从光源出发,正向跟踪光线在目标场景中的传递过程。正向光线跟踪主要存在反射、折射、透射以及直射四种场景,下面将分别结合图7a-图7d以及具体的实施例进行说明。
83.如图7a所示,假设目标场景为反射场景时,假设目标场景只有一个光源411、不透明球体412以及不透明球体413。从光源411发出一条光线,投射到不透明球体412的一个点p1上,然后,被反射到不透明球体413的一个中心点为点q1的有效网格上。因此,可以通过局部光照明模型计算光源411产生的光线在不透明球体412的点p1上产生的光线强度,然后,继续跟踪光线被不透明球体412反射之后在不透明球体413的中心点为点q1的有效网格上产生的光线强度。
84.如图7b所示,假设目标场景为折射场景时,假设目标场景只有一个光源421、透明球体422以及不透明球体423。从光源421发出一条光线,投射到透明球体422的一个点p2上,然后,被折射到不透明球体423的一个中心点为点q2的有效网格上。因此,可以通过局部光照明模型计算光源421产生的光线在透明球体422的点p2上产生的光线强度,然后,继续跟踪光线被透明球体422折射之后在不透明球体423的中心点为点q2的有效网格上产生的光线强度。
85.如图7c所示,假设目标场景为透射场景时,假设目标场景只有一个光源431、透明薄体432以及不透明球体433。从光源421发出一条光线,投射到透明薄体432的一个点p3,然后,被透射到不透明球体433的一个中心点为点q3的有效网格。因此,可以通过局部光照明模型计算光源431产生的光线在透明薄体432的点p3上产生的光线强度,然后,继续跟踪光线被透明薄体432透射之后在不透明球体433的中心点为点q3的有效网格上产生的光线强度。
86.如图7d所示,假设目标场景为直射场景时,假设目标场景只有一个光源441以及不透明球体443。从光源441发出一条光线,投射到不透明球体443的一个中心点为点q4的有效网格上。因此,可以通过局部光照明模型计算光源441产生的光线在不透明球体443的中心点为点q4的有效网格上产生的光线强度。
87.但是,上述图7a中的反射场景、图7b中的折射场景、图7c中的透射场景以及图7d的直射场景都是最简单的场景,在实际应用中,目标场景远远比图7a至图7d要复杂,例如,目标场景中可能同时存在多个不透明物体以及多个透明物体,因此,光线会被多次反射、折射和透射,另外光源可以可能不止一个,而是两个或者更多。
88.由于光线的数量是无限的,计算资源是有限的,通常情况下,不可能对所有的光线进行正向光线跟踪,于是,需要对部分光线进行采样。
89.在对正向光线跟踪的光线进行采样时,采样涉及的参数主要包括每单位空间的采样数以及光线反弹次数(bounce)等等。下面将分别以每单位面积的采样数(sample perunit area,spua)以及光线反弹次数为例,进行详细的介绍。
90.spua可以定义为每个单位面积采样得到的光线的数量。以图8所示为例,以光源l为中心,构建球面s,并将球面s划分为多个单位面积,那么,spua等于光源l产生的光线中透
过单位面积a的数量。理论上来说,单位面积通过的光源l产生的光线的数量是无穷的,但是,在实际的跟踪进行过程中,不可能对所有光线进行跟踪,只能对部分的,有限的光线进行跟踪。这里,spua的数量越大,跟踪的光线数量越多,图像质量也就越好,但是,计算量越大。相反,spua的数量越小,跟踪的光线数量越少,图像质量也就越差,但是,计算量越小。
91.光线返弹次数为在光线的正向跟踪终止前,对光线进行跟踪的最大反射次数和折射次数之和。因为在复杂场景中,光线会被多次反射和折射,理论上来说,光线被反射和折射的次数可以是无限次,但是,在实际的跟踪进行过程中,不可能对光线进行无穷的跟踪,因而需要给出一些跟踪的终止条件。在应用中,可以有以下的终止条件:光线在经过许多次反射和折射以后,就会产生衰减,光线对于视点的光强贡献很小;或者,光线返弹次数即跟踪深度大于一定值。这里,光线返弹次数越多,可以被跟踪到的有效光线越多,多个透明物体之间的折射效果越好,越逼真,图像质量也就越好,但是,计算量越大。相反,光线返弹次数越少,可以被跟踪到的有效光线越少,多个透明物体之间的折射效果越差,越失真,图像质量也就越差,但是,计算量越少。
92.可以理解,上述采样参数仅仅是作为具体的示例,在实际应用中,还可以采用其他的采样参数,此处不作具体限定。
93.在正向光线跟踪过程中,光线可能被传递至有效网格,也可能被传递至无效网格。举例子说明,光线可能先从有效网格传递至无效网格,然后,从无效网格传递至有效网格;或者,光线可能从有效网格传递至无效网格。如果被传递至有效网格,则需要对该光线在该有效网格产生的光线强度进行统计;如果被传递至无效网格,则不需要对该光线在该无效网格产生的光线强度进行统计。
94.反向光线追踪渲染是通过跟踪从特定角度进入三维模型的有效网格的光线,在目标场景中的传递至光源的过程。上述从特定角度进行反向跟踪得到的光线只有人眼或者相机处于该特定角度才能观看得到,因此,为了能够实现全视野,需要从多个特定角度进行反向光线跟踪。反向光线追踪渲染的核心思想在于,从进入有效网格的光线出发,逆向跟踪光线。反向光线追踪渲染中主要存在反射以及折射两种场景,下面将分别结合具体的实施例进行说明。
95.如图9a所示,在目标场景为反射场景时,假设目标场景只有一个光源511以及一个不透明球体512。从特定角度发出一条光线,投射到不透明球体512的一个有效网格的点p1上,然后,被反射到光源511。此时,可以通过局部光照明模型计算光源511产生的光线在不透明球体512的该有效网格上产生的光线强度。
96.如图9b所示,在目标场景为折射场景时,假设目标场景只有一个光源521以及一个透明球体522。从特定角度发出一条光线,投射到透明球体522的一个有效网格上的点p2,然后,被折射到透明球体522的另一个点q2,然后,被折射到光源l,此时,可以通过局部光照明模型计算光源521产生的光线在点q2上产生的光线强度,然后,再计算光线从点q2折射到点p2时在中心点为p2的有效网格上产生的光线强度。
97.但是,上述图9a中的反射场景以及图9b中的折射场景都是最简单的场景,图9a中假设目标场景中仅仅存在一个不透明球体,图9b中假设目标场景中仅仅存在一个透明球体,在实际应用中,目标场景远远比图9a至图9b要复杂,例如,目标场景中可能同时存在多个不透明物体以及多个透明物体,因此,光线会被多次反射、折射和透射,从而导致光线的
跟踪变得非常复杂,对计算资源的消耗非常大。
98.如图10所示,同一个有效网格上不同角度所汇聚的光线也是存在差异的,特别是对于光学材料而言,差异会非常明显。每个有效网格都存在一个朝向其法线方向的开放半球空间,进入该半球空间光线可以表达为以有效网格中心p为终点,以半球空间的球面上任意一点o(例如,o1,o2或者o3)为起点。空间是连续的,但我们可以根据算力和精度要求,对每个有效网格的不同方向角分别进行反向光线跟踪,这里说的方向角是指光线op在半球坐标系中的(θ,π),其中,0《θ《180,0《π《360。因此,上述特定角度可以是该半球空间中的任意一个方向角。由于光线的数量是无限的,计算资源是有限的,通常情况下,不可能对所有的光线进行反向光线跟踪,于是,需要对部分光线进行采样。在对反向光线跟踪的光线进行采样时,采样涉及的参数主要包括每个有效网格的采样数以及光线反弹次数等等。
99.假设目标场景中的有效网格集合包括a个漫反射材料的有效网格t1,t2,

,ta,以及,b个光学材料的有效网格t1,t2,

,tb,则对a个漫反射材料的有效网格t1,t2,

,ta进行正向光线跟踪以及分别从k个特定角度对b个光学材料的有效网格t1,t2,

,tb进行反向光线跟踪。
100.在进行正向光线跟踪之后,a个漫反射材料的有效网格t1,t2,

,ta分别可以得到正向光线强度f1,f2,

,fa。
101.对b个光学材料的有效网格t1,t2,

,tb分别从第一特定角度进行反向光线跟踪之后,可以得到从第一特定角度对b个光学材料的有效网格t1,t2,

,tb分别进行反向光线跟踪得到的第一反向光线强度
102.对b个光学材料的有效网格t1,t2,

,tb分别从第二特定角度进行反向光线跟踪之后,可以得到从第二特定角度对b个光学材料的有效网格t1,t2,

,tb分别进行反向光线跟踪得到的第二反向光线强度
103.…

104.对b个光学材料的有效网格t1,t2,

,tb分别从第k特定角度进行反向光线跟踪之后,可以得到从第k特定角度对b个光学材料的有效网格t1,t2,

,tb分别进行反向光线跟踪得到的第k反向光线强度
105.将正向光线强度f1,f2,

,fa,第一反向光线强度第二反向光线强度第k反向光线强度作为有效表面光发射场存储进行存储。为了降低存储有效表面光发射场所需要的空间,可以采用稀疏矩阵的方式对有效表面光发射场进行存储。
106.可以理解,上述有效表面光发射场仅仅作为具体的实施例,在实际应用中,在上述例子的基础上,还可以对b个光学材料进行正向光线跟踪,并将正向光线跟踪得到的正向光线强度f1,f2,

,fb分别和第一反向光线强度第二反向光线强度第k反向光线强度进行叠加,从而得到有效表面光发射场等等。
107.当从不同的视角观察目标场景时,可以采用投射式求交方法,从预先计算好的有效表面光发射场中提出相应的数据,从而快速获取从该视角可观察到的有效网格集合,并
最终生成所需要的渲染图像。下面将结合图9以及相关具体实施例对如何获取用户可观察到的物体表面集合进行详细的介绍。
108.如图11所示,假设相机611(或者人眼)从视点e对应的视角出发对目标场景进行观察,并且,观察生成的渲染图像612具有m个像素点。
109.首先,从视点e发出一条光线,投射到渲染图像612的第一个像素点上,然后,继续出射到目标场景中的三维模型的其中第一网格上,如果该被第一网格是漫反射材料,则将该第一网格的正向光线强度作为第一像素点的光线强度,如果该第一网格是光学材料,则确定该光线入射该第一网格的第一入射角度,并根据第一入射角度查找该第一网格的相匹配的特定角度对应的光线强度,并将该对应的光线强度作为第一像素点的光线强度。
110.然后,从视点e发出一条光线,投射到渲染图像612的第二个像素点上,然后,继续出射到目标场景中的三维模型的其中第二网格上,如果该被第二网格是漫反射材料,则将该第二网格的正向光线强度作为第二像素点的光线强度,如果该第二网格是光学材料,则确定该光线入射该第二网格的第二入射角度,并根据第二入射角度查找该第二网格的相匹配的特定角度对应的光线强度,并将该对应的光线强度作为第二像素点的光线强度。
111.…

112.最后,从视点e发出一条光线,投射到渲染图像612的第m个像素点上,然后,继续出射到目标场景中的三维模型的其中第m网格上,如果该被第m网格是漫反射材料,则将该第m网格的正向光线强度作为第m像素点的光线强度,如果该第m网格是光学材料,则确定该光线入射该第m网格的第m入射角度,并根据第m入射角度查找该第m网格的相匹配的特定角度对应的光线强度,并将该对应的光线强度作为第m像素点的光线强度。
113.至此,m个像素点的光线强度都已经确定了,渲染图像612已经可以确定出来了。
114.需要说明的是,第一入射角度和第一网格的特定角度相匹配包括:第一入射角度和第一网格的特定角度相同,或者,第一入射角度和第一网格的特定角度的差值小于预设阈值,此处不作具体限定。第二入射角度和第二网格的特定角度相匹配至第m入射角度和第m网格的特定角度相匹配也相类似,此处不再展开描述。
115.为了简便起见,上述图11对应的实施例是以每像素采样数(sample perpixel,spp)等于1为例进行说明,其中,spp可以定义为每个像素采样得到的光线的数量,但是,在实际应用中,为了提高渲染图像的画质,通常令spp的数值更大。
116.上述方案中,对于b个光学材料的有效网格t1,t2,

,tb,如果不采用本方案基于视角位置的渲染方案,那么需要对每一个光学材料的有效网络ti的上半球都发射光线进行反向追踪,假设放射光线的角度(θ,π),其中,0《θ《180,0《π《360,每隔1度发射一条光线,总共需要θ*π=64800条光线,b个光学材料的有效网络需要64800b条光线,也就是需要做64800b次反向光线追踪。但是如果采用本方案基于视角位置的渲染方案,假设视角位置数为k个,每个光学材料最多需要发射k条不同的光学,那么b个光学材料的有效网络最多只需要k*b条光线,也就是需要做kb次反向光线追踪。当k《《64800时,可以有效减少反向光线追踪的次数。而且,为了渲染图像更加精确,每一个光学材料网络需要发射更细精度的光线,也就是每个光线材料网络可能发射大于64800条光线。在这种情况下,本方案对每个光学材料的有效网络最多发射k条光线,从而大大减少了数据的计算量。
117.参见图12,图12是本技术提供的一种渲染方法的流程交互图。本实施方式的渲染
方法可以应用于图1a所示的渲染系统中,所述方法包括:
118.s101:终端设备的渲染应用客户端向网络设备发送第一视角。相应地,网络设备接收终端设备的渲染应用客户端发送的第一视角。
119.在本技术具体的实施例中,第一视角可以是单个视角,也可以是多个视角,例如,第一视角可以是渲染应用客户端的用户当前观看游戏的角度,也可以是,渲染应用客户端的用户所玩的游戏路径的多个角度等等。
120.s102:网络设备向远程渲染平台的渲染应用服务端发送第一视角。相应地,远程渲染平台的渲染应用服务端接收网络设备发送的第一视角。
121.s103:远程渲染平台的渲染应用服务端根据第一视角调用所述渲染引擎在有效网格集合中查找所述第一视角对应的有效网格。
122.在本技术具体的实施例中,所述有效网格集合为网格集合中视角集合中的每个视角对应的有效网格构成的子集。即,有效网格集合通常小于网格集合。所述网格集合为所述网格组成的集合。其中,视角集合的内容可以参见上文中关于视角集合的介绍,此处不再展开描述,所述网格为对目标场景中的三维模型的表面进行划分得到的,网格的定义可以参见上文中图4a-图4b以及相关描述,此处不再展开描述。
123.在本技术具体的实施例中,所述第一视角对应的有效网格具体为:从所述第一视角对应的视点能够观察到的网格。远程渲染平台在接收到第一视角之后,确定第一视角属于视角集合。这里,远程渲染平台预先已经存储了视角集合中的各个视角与有效网格的对应关系,具体请参见上文中在所述多个网格中确定所述视角集合对应的k个有效网格中的陈述。因此,远程渲染平台在确定第一视角属于视角集合之后,远程渲染平台可以采用投射式求交方法快速获取从该第一视角可观察到的有效网格集合。其中,投射式求交方法的内容可以参见图11以及相关描述,此处不再展开描述。
124.s104:远程渲染平台的渲染应用服务端调用所述渲染引擎根据所述第一视角对应的有效网格的光线强度生成渲染图像。
125.在本技术具体的实施例中,远程渲染平台预先已经存储了各个视角对应的有效网格的光线强度。明显地,所述有效网格的材料包括漫反射材料以及光学材料,在有效网格的材料为漫反射材料的情况下,所述有效网格的光线强度包括对所述有效网格进行正向光线跟踪得到的光线强度;在有效网格的材料为光学材料的情况下,所述有效网格的光线强度包括从各个特定角度进行反向光线跟踪得到的光线强度。这里,正向光线跟踪和反向光线跟踪的内容可以参见上文中图7a-图7d涉及的正向光线跟踪的相关内容,以及上文中图9a-图9b涉及的反向光线的相关内容的介绍,此处不再展开描述。
126.在本技术具体的实施例中,远程渲染平台根据第一视角获取第一视角对应的有效网格的光线强度。所述第一视角对应的有效网格至少包括三种情况:第一种情况,第一视角对应的有效网格的材料均为漫反射材料,此时,只需要获取这些有效网格通过正向光线跟踪得到的光线强度即可。第二种情况,第一视角对应的有效网格的材料均为光学材料,此时,只需要获取这些有效网格通过第一视角进行反向光线跟踪得到光线强度即可。第三种情况,所述第一视角对应的有效网格的材料中即包括漫反射材料,也包括光学材料,此时,需要获取材料为漫反射材料的有效网格通过正向光线跟踪得到的光线强度,获取材料为光学材料的有效网格通过第一视角进行反向光线跟踪得到光线强度。
127.s105:远程渲染平台的渲染应用服务端向网络设备发送渲染图像。相应地,网络设备接收远程渲染平台的渲染应用服务端发送的渲染图像。
128.s106:网络设备向终端设备的渲染应用客户端发送渲染图像。相应地,终端设备的渲染应用客户端接收网络设备发送的渲染图像。
129.为了简便起见,图12所示的实施例并没有进行详细的介绍,具体请参见上文中图1a-图1b、图2-图3、图4a-图4b、图5-图6、图7a-图7d、图8、图9a-图9b、图10-图11以及相关描述,此处不再展开描述。
130.参见图13,图13是本技术提供的一种渲染方法的流程交互图。本实施方式的渲染方法可以应用于图1b所示的渲染系统中,所述方法包括:
131.s201:管理设备向网络设备发送第一视角。相应地,网络设备接收管理设备发送的第一视角。
132.在本技术具体的实施例中,第一视角可以是单个视角,也可以是多个视角,例如,第一视角可以是终端设备的渲染应用客户端的用户当前观看游戏的角度,也可以是,终端设备的渲染应用客户端的用户所玩的游戏路径的多个角度等等。
133.s202:网络设备向远程渲染平台的渲染应用服务端发送第一视角。相应地,远程渲染平台的渲染应用服务端接收网络设备发送的第一视角。
134.s203:远程渲染平台的渲染应用服务端根据第一视角调用所述渲染引擎在有效网格集合中查找所述第一视角对应的有效网格。
135.s204:远程渲染平台的渲染应用服务端调用所述渲染引擎根据所述第一视角对应的有效网格的光线强度生成渲染图像。
136.s205:远程渲染平台的渲染应用服务端向网络设备发送渲染图像。相应地,网络设备接收远程渲染平台的渲染应用服务端发送的渲染图像。
137.s206:网络设备向终端设备的渲染应用客户端发送渲染图像。相应地,终端设备的渲染应用客户端接收网络设备发送的渲染图像。
138.为了简便起见,图12所示的实施例并没有进行详细的介绍,具体请参见上文中图1a-图1b、图2-图3、图4a-图4b、图5-图6、图7a-图7d、图8、图9a-图9b、图10-图11以及相关描述,此处不再展开描述。
139.参见图14,图14是本技术提供的一种渲染应用服务端的结构示意图。本实施方式的渲染应用服务端,包括:接收模块710、渲染模块720以及发送模块730。
140.所述接收模块710用于接收第一视角。
141.所述渲染模块720用于根据第一视角调用所述渲染引擎在有效网格集合中查找所述第一视角对应的有效网格,根据所述第一视角对应的有效网格的光线强度生成渲染图像,其中,所述有效网格集合为预设的视角集合对应的有效网格的集合,所述第一视角属于所述视角集合。
142.所述发送模块730用于向所述渲染应用客户端发送所述渲染图像。
143.为了简便起见,图12所示的实施例并没有进行详细的介绍,具体请参见上文中图1a-图1b、图2-图3、图4a-图4b、图5-图6、图7a-图7d、图8、图9a-图9b、图10-图11以及相关描述,此处不再展开描述。
144.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实
现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态存储盘solid state disk(ssd))等。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1