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

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

2022-06-05 18:38:00 来源:中国专利 TAG:


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


背景技术:

2.渲染是指用软件从三维模型生成图像的过程,其中,三维模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。渲染这个术语类似于“艺术家对于场景的渲染”,另外,渲染也用于描述“计算视频编辑文件中的效果,以生成最终视频输出的过程”。渲染可以包括预渲染(pre-rendering/offline rendering)或者实时渲染(real-time rendering/online rendering),其中,预渲染通常是用于电影、广告等有预定脚本的实景仿真;实时渲染通常是用于飞行训练、3d游戏和交互式建筑演示等无预定脚本的实景仿真。
3.实时渲染对计算的速度要求是非常高的。以3d游戏为例,对于每秒30帧的刷新速率来说,每一帧图像的时间约为33毫秒,因此,每一帧图像的渲染时间绝对不能超过33毫秒。在现有技术中,实时渲染通常采用的是光线追踪渲染(ray tracing render)。
4.但是,光线追踪渲染需要的计算量非常大,因此,需要耗费比较长的时间,实时性不佳。


技术实现要素:

5.为了解决上述问题,本技术提供了一种渲染方法、设备以及系统,能够有效地减少光线追踪渲染所需要耗费的时间。
6.第一方面,提供了一种渲染系统,包括渲染应用服务端、渲染应用客户端、渲染引擎,所述渲染应用客户端部署于终端设备,所述渲染应用服务端和所述渲染引擎部署于远程计算节点;
7.所述渲染应用服务端,用于接收渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息,根据所述m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵,对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果,根据所述m条光线和所述n个网格的求交结果生成渲染图像;
8.所述渲染应用客户端,用于生成所述渲染请求;接收所述渲染图像。
9.在一些可能的设计中,所述网格为对目标场景的三维模型进行分割得到的三角形。
10.在一些可能的设计中,所述n个网格的位置信息包括:所述n个网格的顶点坐标,或者,所述n个网格的各条边的矢量。
11.在一些可能的设计中,所述多个矩阵包括:矩阵d
3m*3
,矩阵e2
3*n
,矩阵e1
n*3
,矩阵s
3mn*3
,矩阵e1'
3*n
以及矩阵e2'
n*3
,其中,所述d
3m*3
为所述m条光线的方向矢量组成的矩阵,所述矩阵e2
3*n
为n个网格的第二条边e2的矢量组成的大小为3*n的矩阵,所述矩阵e1
n*3
为所述
n个网格的第一条边e1的矢量组成的大小为n*3的矩阵,所述矩阵s
3mn*3
为所述m条光线的起点和所述n个网格的顶点v0的矢量组成的矩阵;所述矩阵e1'
3*n
为所述n个网格的第一条边e1的矢量组成的大小为3*n的矩阵,所述e2'
n*3
为所述n个网格的第二条边e2的矢量组成的大小为n*3的矩阵。
12.在一些可能的设计中,所述矩阵d
3m*3
为:
[0013][0014]
其中,d1为第一条光线的方向矢量,d2为第二条光线的方向矢量,

,dm为第m条光线的方向矢量;
[0015]
所述矩阵e2
3*n
为:
[0016][0017]
其中,为第一个网格的第二条边e2的矢量在x轴上的投影,为第一个网格的第二条边e2的矢量在y轴上的投影,为第一个网格的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影;
[0018]
所述矩阵e1
n*3
为:
[0019][0020]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第二条边e1的矢量在y轴上的投影,为第n个网格的第二条边e1的矢量在z轴上的投影;
[0021]
所述矩阵s
3mn*3
为:
[0022][0023]
其中,s
11
为第一条光线的起点和第一个网格的顶点v0的矢量,

,s
1n
为第一条光线的起点和第n个网格的顶点v0的矢量;s
21
为第二条光线的起点和第一个网格的顶点v0的矢量,

,s
2n
为第二条光线的起点和第n个网格的顶点v0的矢量;

;s
m1
为第m条光线的起点和第一个网格的顶点v0的矢量,

,s
mn
为第m条光线的起点和第n个网格的顶点v0的矢量;
[0024]
所述矩阵e1'
3*n
为:
[0025][0026]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第一条边e1的矢量在y轴上的投影,为第n个网格的第一条边e1的矢量在z轴上的投影;
[0027]
所述矩阵e2'
n*3
为:
[0028][0029]
其中,为第一个三角形的网格的第二条边e2的矢量在x轴上的投影,为第一个三角形的网格的第二条边e2的矢量在y轴上的投影,为第一个三角形的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0030]
在一些可能的设计中,所述矩阵运算为:
[0031][0032]
第二方面,提供了一种渲染系统,包括管理设备、渲染应用服务端、渲染应用客户
端、渲染引擎,所述渲染应用客户端部署于终端设备,所述管理设备、所述渲染应用服务端和所述渲染引擎部署于远程计算节点;
[0033]
所述管理设备,用于生成渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息,将所述渲染请求发送至所述渲染应用服务端;
[0034]
所述渲染应用服务端,用于接收所述渲染请求,根据所述渲染请求指示的m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵,对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果,根据所述m条光线和所述n个网格的求交结果生成渲染图像;
[0035]
所述渲染应用客户端,用于接收所述渲染图像。
[0036]
在一些可能的设计中,所述网格为对目标场景的三维模型进行分割得到的三角形。
[0037]
在一些可能的设计中,所述n个网格的位置信息包括:所述n个网格的顶点坐标,或者,所述n个网格的各条边的矢量。
[0038]
在一些可能的设计中,所述多个矩阵包括:矩阵d
3m*3
,矩阵e2
3*n
,矩阵e1
n*3
,矩阵s
3mn*3
,矩阵e1'
3*n
以及矩阵e2'
n*3
,其中,所述d
3m*3
为所述m条光线的方向矢量组成的矩阵,所述矩阵e2
3*n
为n个网格的第二条边e2的矢量组成的大小为3*n的矩阵,所述矩阵e1
n*3
为所述n个网格的第一条边e1的矢量组成的大小为n*3的矩阵,所述矩阵s
3mn*3
为所述m条光线的起点和所述n个网格的顶点v0的矢量组成的矩阵;所述矩阵e1'
3*n
为所述n个网格的第一条边e1的矢量组成的大小为3*n的矩阵,所述e2'
n*3
为所述n个网格的第二条边e2的矢量组成的大小为n*3的矩阵。
[0039]
在一些可能的设计中,所述矩阵d
3m*3
为:
[0040][0041]
其中,d1为第一条光线的方向矢量,d2为第二条光线的方向矢量,

,dm为第m条光线的方向矢量;
[0042]
所述矩阵e2
3*n
为:
[0043][0044]
其中,为第一个网格的第二条边e2的矢量在x轴上的投影,为第一个网格的第二条边e2的矢量在y轴上的投影,为第一个网格的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影;
[0045]
所述矩阵e1
n*3
为:
[0046][0047]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第二条边e1的矢量在y轴上的投影,为第n个网格的第二条边e1的矢量在z轴上的投影;
[0048]
所述矩阵s
3mn*3
为:
[0049][0050]
其中,s
11
为第一条光线的起点和第一个网格的顶点v0的矢量,

,s
1n
为第一条光线的起点和第n个网格的顶点v0的矢量;s
21
为第二条光线的起点和第一个网格的顶点v0的矢量,

,s
2n
为第二条光线的起点和第n个网格的顶点v0的矢量;

;s
m1
为第m条光线的起点和第一个网格的顶点v0的矢量,

,s
mn
为第m条光线的起点和第n个网格的顶点v0的矢量;
[0051]
所述矩阵e1'
3*n
为:
[0052][0053]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第一条边e1的矢量在y轴上的投影,为第n个网格的第一条边e1的矢量在z轴上的投影;
[0054]
所述矩阵e2'
n*3
为:
[0055]
[0056]
其中,为第一个三角形的网格的第二条边e2的矢量在x轴上的投影,为第一个三角形的网格的第二条边e2的矢量在y轴上的投影,为第一个三角形的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0057]
在一些可能的设计中,所述矩阵运算为:
[0058][0059]
第三方面,提供了一种渲染方法,应用于渲染系统,所述渲染系统包括渲染应用服务端、渲染应用客户端、渲染引擎,所述渲染应用客户端部署于终端设备,所述渲染应用服务端和所述渲染引擎部署于远程计算节点;
[0060]
所述渲染应用客户端生成渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息;
[0061]
所述渲染应用服务端接收所述渲染请求,根据所述渲染请求指示的所述m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵,对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果,根据所述m条光线和所述n个网格的求交结果生成渲染图像;
[0062]
所述渲染应用客户端接收所述渲染图像。
[0063]
在一些可能的设计中,所述网格为对目标场景的三维模型进行分割得到的三角形。
[0064]
在一些可能的设计中,所述n个网格的位置信息包括:所述n个网格的顶点坐标,或者,所述n个网格的各条边的矢量。
[0065]
在一些可能的设计中,所述多个矩阵包括:矩阵d
3m*3
,矩阵e2
3*n
,矩阵e1
n*3
,矩阵s
3mn*3
,矩阵e1'
3*n
以及矩阵e2'
n*3
,其中,所述d
3m*3
为所述m条光线的方向矢量组成的矩阵,所述矩阵e2
3*n
为n个网格的第二条边e2的矢量组成的大小为3*n的矩阵,所述矩阵e1
n*3
为所述n个网格的第一条边e1的矢量组成的大小为n*3的矩阵,所述矩阵s
3mn*3
为所述m条光线的起点和所述n个网格的顶点v0的矢量组成的矩阵;所述矩阵e1'
3*n
为所述n个网格的第一条边e1的矢量组成的大小为3*n的矩阵,所述e2'
n*3
为所述n个网格的第二条边e2的矢量组成的大小为n*3的矩阵。
[0066]
在一些可能的设计中,所述矩阵d
3m*3
为:
[0067][0068]
其中,d1为第一条光线的方向矢量,d2为第二条光线的方向矢量,

,dm为第m条光线的方向矢量;
[0069]
所述矩阵e2
3*n
为:
[0070][0071]
其中,为第一个网格的第二条边e2的矢量在x轴上的投影,为第一个网格的第二条边e2的矢量在y轴上的投影,为第一个网格的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影;
[0072]
所述矩阵e1
n*3
为:
[0073][0074]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第二条边e1的矢量在y轴上的投影,为第n个网格的第二条边e1的矢量在z轴上的投影;
[0075]
所述矩阵s
3mn*3
为:
[0076][0077]
其中,s
11
为第一条光线的起点和第一个网格的顶点v0的矢量,

,s
1n
为第一条光线的起点和第n个网格的顶点v0的矢量;s
21
为第二条光线的起点和第一个网格的顶点v0的矢量,

,s
2n
为第二条光线的起点和第n个网格的顶点v0的矢量;

;s
m1
为第m条光线的起点和第一个网格的顶点v0的矢量,

,s
mn
为第m条光线的起点和第n个网格的顶点v0的矢量;
[0078]
所述矩阵e1'
3*n
为:
[0079]
[0080]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第一条边e1的矢量在y轴上的投影,为第n个网格的第一条边e1的矢量在z轴上的投影;
[0081]
所述矩阵e2'
n*3
为:
[0082][0083]
其中,为第一个三角形的网格的第二条边e2的矢量在x轴上的投影,为第一个三角形的网格的第二条边e2的矢量在y轴上的投影,为第一个三角形的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0084]
在一些可能的设计中,所述矩阵运算为:
[0085][0086]
第四方面,提供了一种渲染方法,应用于渲染系统,所述渲染系统包括管理设备、渲染应用服务端、渲染应用客户端、渲染引擎,所述渲染应用客户端部署于终端设备,所述管理设备、所述渲染应用服务端和所述渲染引擎部署于远程计算节点;
[0087]
所述管理设备生成渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息;将所述渲染请求发送至所述渲染应用服务端;
[0088]
所述渲染应用服务端接收所述渲染请求,根据所述渲染请求指示的m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵,对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果,根据所述m条光线和所述n个网格的求交结果生成渲染图像;
[0089]
所述渲染应用客户端接收所述渲染图像。
[0090]
在一些可能的设计中,所述网格为对目标场景的三维模型进行分割得到的三角形。
[0091]
在一些可能的设计中,所述n个网格的位置信息包括:所述n个网格的顶点坐标,或者,所述n个网格的各条边的矢量。
[0092]
在一些可能的设计中,所述多个矩阵包括:矩阵d
3m*3
,矩阵e2
3*n
,矩阵e1
n*3
,矩阵s
3mn*3
,矩阵e1'
3*n
以及矩阵e2'
n*3
,其中,所述d
3m*3
为所述m条光线的方向矢量组成的矩阵,所述矩阵e2
3*n
为n个网格的第二条边e2的矢量组成的大小为3*n的矩阵,所述矩阵e1
n*3
为所述n个网格的第一条边e1的矢量组成的大小为n*3的矩阵,所述矩阵s
3mn*3
为所述m条光线的起点和所述n个网格的顶点v0的矢量组成的矩阵;所述矩阵e1'
3*n
为所述n个网格的第一条边e1的矢量组成的大小为3*n的矩阵,所述e2'
n*3
为所述n个网格的第二条边e2的矢量组成的
大小为n*3的矩阵。
[0093]
在一些可能的设计中,所述矩阵d
3m*3
为:
[0094][0095]
其中,d1为第一条光线的方向矢量,d2为第二条光线的方向矢量,

,dm为第m条光线的方向矢量;
[0096]
所述矩阵e2
3*n
为:
[0097][0098]
其中,为第一个网格的第二条边e2的矢量在x轴上的投影,为第一个网格的第二条边e2的矢量在y轴上的投影,为第一个网格的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影;
[0099]
所述矩阵e1
n*3
为:
[0100][0101]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第二条边e1的矢量在y轴上的投影,为第n个网格的第二条边e1的矢量在z轴上的投影;
[0102]
所述矩阵s
3mn*3
为:
[0103][0104]
其中,s
11
为第一条光线的起点和第一个网格的顶点v0的矢量,

,s
1n
为第一条光线的起点和第n个网格的顶点v0的矢量;s
21
为第二条光线的起点和第一个网格的顶点v0的矢量,

,s
2n
为第二条光线的起点和第n个网格的顶点v0的矢量;

;s
m1
为第m条光线的起点和第一个网格的顶点v0的矢量,

,s
mn
为第m条光线的起点和第n个网格的顶点v0的矢量;
[0105]
所述矩阵e1'
3*n
为:
[0106][0107]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第一条边e1的矢量在y轴上的投影,为第n个网格的第一条边e1的矢量在z轴上的投影;
[0108]
所述矩阵e2'
n*3
为:
[0109][0110]
其中,为第一个三角形的网格的第二条边e2的矢量在x轴上的投影,为第一个三角形的网格的第二条边e2的矢量在y轴上的投影,为第一个三角形的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0111]
在一些可能的设计中,所述矩阵运算为:
[0112][0113]
第五方面,提供了一种渲染方法,应用于渲染系统的渲染应用服务端、所述渲染系
统还包括渲染应用客户端、渲染引擎,所述渲染应用客户端部署于终端设备,所述渲染应用服务端和所述渲染引擎部署于远程计算节点;
[0114]
所述渲染应用服务端接收渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息;
[0115]
所述渲染应用服务端根据所述渲染请求指示的所述m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵;
[0116]
所述渲染应用服务端对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果;
[0117]
所述渲染应用服务端根据所述m条光线和所述n个网格的求交结果生成渲染图像。
[0118]
在一些可能的设计中,所述网格为对目标场景的三维模型进行分割得到的三角形。
[0119]
在一些可能的设计中,所述n个网格的位置信息包括:所述n个网格的顶点坐标,或者,所述n个网格的各条边的矢量。
[0120]
在一些可能的设计中,所述多个矩阵包括:矩阵d
3m*3
,矩阵e2
3*n
,矩阵e1
n*3
,矩阵s
3mn*3
,矩阵e1'
3*n
以及矩阵e2'
n*3
,其中,所述d
3m*3
为所述m条光线的方向矢量组成的矩阵,所述矩阵e2
3*n
为n个网格的第二条边e2的矢量组成的大小为3*n的矩阵,所述矩阵e1
n*3
为所述n个网格的第一条边e1的矢量组成的大小为n*3的矩阵,所述矩阵s
3mn*3
为所述m条光线的起点和所述n个网格的顶点v0的矢量组成的矩阵;所述矩阵e1'
3*n
为所述n个网格的第一条边e1的矢量组成的大小为3*n的矩阵,所述e2'
n*3
为所述n个网格的第二条边e2的矢量组成的大小为n*3的矩阵。
[0121]
在一些可能的设计中,所述矩阵d
3m*3
为:
[0122][0123]
其中,d1为第一条光线的方向矢量,d2为第二条光线的方向矢量,

,dm为第m条光线的方向矢量;
[0124]
所述矩阵e2
3*n
为:
[0125][0126]
其中,为第一个网格的第二条边e2的矢量在x轴上的投影,为第一个网格的第二条边e2的矢量在y轴上的投影,为第一个网格的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影;
[0127]
所述矩阵e1
n*3
为:
[0128][0129]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第二条边e1的矢量在y轴上的投影,为第n个网格的第二条边e1的矢量在z轴上的投影;
[0130]
所述矩阵s
3mn*3
为:
[0131][0132]
其中,s
11
为第一条光线的起点和第一个网格的顶点v0的矢量,

,s
1n
为第一条光线的起点和第n个网格的顶点v0的矢量;s
21
为第二条光线的起点和第一个网格的顶点v0的矢量,

,s
2n
为第二条光线的起点和第n个网格的顶点v0的矢量;

;s
m1
为第m条光线的起点和第一个网格的顶点v0的矢量,

,s
mn
为第m条光线的起点和第n个网格的顶点v0的矢量;
[0133]
所述矩阵e1'
3*n
为:
[0134][0135]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第一条边e1的矢量在y轴上的投影,为第n个网格的第一条边e1的矢量在z轴上的投影;
[0136]
所述矩阵e2'
n*3
为:
[0137]
[0138]
其中,为第一个三角形的网格的第二条边e2的矢量在x轴上的投影,为第一个三角形的网格的第二条边e2的矢量在y轴上的投影,为第一个三角形的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0139]
在一些可能的设计中,所述矩阵运算为:
[0140][0141]
第六方面,提供了一种渲染应用服务端,所述渲染应用服务端包括:通信模块以及渲染模块,
[0142]
所述通信模块用于接收渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息;
[0143]
所述渲染模块用于根据所述渲染请求指示的所述m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵;对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果;根据所述m条光线和所述n个网格的求交结果生成渲染图像。
[0144]
在一些可能的设计中,所述网格为对目标场景的三维模型进行分割得到的三角形。
[0145]
在一些可能的设计中,所述n个网格的位置信息包括:所述n个网格的顶点坐标,或者,所述n个网格的各条边的矢量。
[0146]
在一些可能的设计中,所述多个矩阵包括:矩阵d
3m*3
,矩阵e2
3*n
,矩阵e1
n*3
,矩阵s
3mn*3
,矩阵e1'
3*n
以及矩阵e2'
n*3
,其中,所述d
3m*3
为所述m条光线的方向矢量组成的矩阵,所述矩阵e2
3*n
为n个网格的第二条边e2的矢量组成的大小为3*n的矩阵,所述矩阵e1
n*3
为所述n个网格的第一条边e1的矢量组成的大小为n*3的矩阵,所述矩阵s
3mn*3
为所述m条光线的起点和所述n个网格的顶点v0的矢量组成的矩阵;所述矩阵e1'
3*n
为所述n个网格的第一条边e1的矢量组成的大小为3*n的矩阵,所述e2'
n*3
为所述n个网格的第二条边e2的矢量组成的大小为n*3的矩阵。
[0147]
在一些可能的设计中,所述矩阵d
3m*3
为:
[0148][0149]
其中,d1为第一条光线的方向矢量,d2为第二条光线的方向矢量,

,dm为第m条光线的方向矢量;
[0150]
所述矩阵e2
3*n
为:
[0151][0152]
其中,为第一个网格的第二条边e2的矢量在x轴上的投影,为第一个网格的第二条边e2的矢量在y轴上的投影,为第一个网格的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影;
[0153]
所述矩阵e1
n*3
为:
[0154][0155]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第二条边e1的矢量在y轴上的投影,为第n个网格的第二条边e1的矢量在z轴上的投影;
[0156]
所述矩阵s
3mn*3
为:
[0157][0158]
其中,s
11
为第一条光线的起点和第一个网格的顶点v0的矢量,

,s
1n
为第一条光线的起点和第n个网格的顶点v0的矢量;s
21
为第二条光线的起点和第一个网格的顶点v0的矢量,

,s
2n
为第二条光线的起点和第n个网格的顶点v0的矢量;

;s
m1
为第m条光线的起点和第一个网格的顶点v0的矢量,

,s
mn
为第m条光线的起点和第n个网格的顶点v0的矢量;
[0159]
所述矩阵e1'
3*n
为:
[0160]
[0161]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第一条边e1的矢量在y轴上的投影,为第n个网格的第一条边e1的矢量在z轴上的投影;
[0162]
所述矩阵e2'
n*3
为:
[0163][0164]
其中,为第一个三角形的网格的第二条边e2的矢量在x轴上的投影,为第一个三角形的网格的第二条边e2的矢量在y轴上的投影,为第一个三角形的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0165]
在一些可能的设计中,所述矩阵运算为:
[0166][0167]
第七方面,提供了一种计算节点,其特征在于,所述计算节点包括处理器以及存储器,所述处理器执行所述存储器中的程序,从而执行如第五方面任一项所述的方法。
[0168]
第八方面,提供了一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算节点上运行时,使得所述计算节点执行如第五方面任一项所述的方法。
[0169]
上述方案中,可以将m条光线与n个三角形的网格相交的运算转化为多个矩阵之间的矩阵运算,从而使得m条光线与n个三角形的网格相交的运算的步骤的数量级远远小于m*n个步骤的数量的数量级,能够有效减少光线追踪渲染所需要耗费的时间。
附图说明
[0170]
为了更清楚地说明本技术实施例或背景技术中的技术方案,下面将对本技术实施例或背景技术中所需要使用的附图进行说明。
[0171]
图1a-图1b是本技术涉及的一些渲染系统的结构示意图;
[0172]
图2a-图2b是本技术提供的一些网格的结构示意图;
[0173]
图3是本技术提供的光线跟踪渲染的示意图;
[0174]
图4是本技术提供的光线和网格相交的示意图;
[0175]
图5a-图5b是一些像素点的采样率的示意图;
[0176]
图6是本技术提供的一种渲染方法的流程交互图;
[0177]
图7是本技术提供的另一种渲染方法的流程交互图;
[0178]
图8是本技术提供的一种渲染应用服务端的结构示意图。
具体实施方式
[0179]
参见图1a,图1a是本技术涉及的一种渲染系统的结构示意图。本技术的渲染系统用于通过渲染方法对目标场景的3d模型进行渲染得到的2d图像,即渲染图像。其中,渲染方法可以包括光栅化渲染以及光线跟踪渲染等等。图1a提供的渲染系统可以包括:多个终端设备110、网络设备120以及远程渲染平台130。远程渲染平台130具体可以部署在公有云上。远程渲染平台130和终端设备一般部署在不同的数据中心乃至地理区域内。
[0180]
终端设备110可以是需要显示渲染图像的设备,例如,可以是用于飞行训练的虚拟现实设备(virtual reality,vr),可以是用于虚拟游戏的电脑以及用于虚拟商城的智能手机等等,此处不作具体限定。终端设备可以是高配置、高性能(例如,多核、高主频、内存大等等)的设备,也可以是低配置,低性能(例如,单核、低主频、内存小等等)的设备。在一具体的实施例中,终端设备110上运行有操作系统以及渲染应用客户端。
[0181]
网络设备120用于在终端设备110通过任何通信机制/通信标准的通信网络与远程渲染平台130之间传输数据。其中,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
[0182]
远程渲染平台130包括多个渲染节点,每个渲染节点自下而上包括渲染硬件、操作系统、渲染引擎以及渲染应用服务端。其中,渲染硬件包括计算资源、存储资源以及网络资源。
[0183]
计算资源可以采用异构计算架构,例如,可以采用中央处理器(central processing unit,cpu) 图形处理器(graphics processing unit,gpu)架构,cpu ai芯片,cpu gpu ai芯片架构等等,此处不作具体限定。存储资源可以包括内存等等。这里,计算资源可以被分成多个计算单位资源,存储资源可以被分成多个存储单位资源,网络资源可以被分成多个网络单位资源。因此,远程渲染平台130可以按照用户的资源需求以单位资源为基础进行自由组合,从而用户的需要提供资源。例如,通过虚拟化服务按照用户的需要灵活地隔离出相互独立的资源以运行渲染引擎和/或渲染应用服务端。常见地,虚拟化服务可以隔离出虚拟机(virtual machine,vm)服务、裸金属服务器(bare metal server,bms)服务以及容器(container)等独立的计算资源。渲染引擎可以用于实现图像渲染算法。渲染引擎允许渲染应用按照其接口调用渲染引擎内置的渲染算法(管道)来完成图像渲染。渲染应用服务端可以用于调用渲染引擎以完成渲染图像的渲染。
[0184]
终端设备110上运行的渲染应用客户端和远程渲染平台130上运行的渲染应用服务端分别构成了渲染应用的前端和后端。其中,常见的渲染应用可以包括:游戏应用、vr应用、电影特效以及动画等等。渲染应用可以通过调用渲染引擎进行实时图像渲染,从而得到渲染图像。
[0185]
在一具体的实施方式中,渲染应用服务端和渲染应用客户端可以是渲染应用提供商提供的,渲染引擎可以是云服务提供商提供的。举个例子说明,渲染应用可以是游戏应用,游戏应用的游戏开发商将游戏应用服务端安装在云服务提供商提供的远程渲染平台上,游戏应用的游戏开发商将游戏应用客户端通过互联网提供给用户下载,并安装在用户的终端设备上。此外,云服务提供商还提供了渲染引擎,渲染引擎可以为游戏应用提供计算能力。在另一种具体的实施方式中,渲染应用客户端、渲染应用服务端和渲染引擎可以均是云服务提供商提供的。
[0186]
在图1b所示的云渲染系统中,还包括管理设备140。管理设备140上可以是用户的终端设备和云服务提供商的远程渲染平台130之外的第三方提供的设备,也可以部署和远程渲染平台130一起部署在公有云上。例如,管理设备140可以是渲染应用提供商提供的。渲染应用提供商可以通过管理设备140对渲染应用进行管理,例如,渲染应用提供商可以通过管理设备140指定渲染应用服务端向渲染应用客户端提供的初始的渲染图像的质量参数等等。
[0187]
光线追踪渲染是通过跟踪沿从相机(或者人眼)的视点朝着渲染图像的每个像素发射的光线入射模型的光的路径来产生渲染图像的渲染方法。光线追踪渲染的核心思想在于,从相机(或者人眼)的视点出发,逆向跟踪光线在目标场景中的传播情况。由于只有最后能够进入相机(或者人眼)的光线才是有用的,因此,逆向跟踪光线能够有效减少数据量。
[0188]
目标场景通常包括光源以及三维模型,其中,光源产生的光线照射在三维模型上。光源可以是自然光源、点光源、线光源或者面光源等等。三维模型可以是球型、长方体、正方体、锥形甚至是不规则物体。
[0189]
网格是将对目标场景中的三维模型的表面进行分割得到的多边形,即,网格是目标场景中的三维模型的表面的部分区域。其中,形状不同的三维模型的网格的形状可以是不同的,例如,球体的网格和曲面物体的网格的形状可以完全不同。每个网格可以具有唯一的网格标识。下面将分别结合具体的实施例对网格进行说明。
[0190]
如图2a所示,以三维模型为球体为例,网格可以表示为中心点以及中心点邻域的点构成的球体表面上的四边略鼓的近似方块。以球体的球心作为原点构建三维正交坐标系,其中,三维正交坐标系包括x轴,y轴以及z轴。中心点p的各个坐标中,r表示为球心o至中心点p的线段op的长度,θ表示为线段op与正z轴之间的夹角,表示为线段op在xoy平面上的投影与x轴之间的夹角。在一具体的实施例中,可以在球体上均匀地设置n个中心点p1,p2,

,pn,如果非中心点qj与中心点pi的距离最短,则非中心点qj与中心点pi属于同一个网格。
[0191]
如图2b所示,以三维模型为曲面物体为例,网格可以表示为p(u,t)所代表的曲面表面上的三角形。以曲面的一个设定原点构建二维正交坐标系,其中,坐标系包括u轴,t轴。u表示为曲面设定原点一个方向的偏移量,t表示另一个正交方向的偏移量,p(u,t)表示如图2b所示的(u,t)坐标系中三个顶点所组成的三角形。
[0192]
可以理解,上述的网格的形状仅仅是作为具体的举例,在实际应用中,网格还可能是其他的形状,例如,六边形等等,此处不作具体限定。另外,网格的大小可以根据需要进行设置,当精度要求越高,网格的大小可以设置得越小,当精度要求越低,网格的大小可以设置得越大。为了便于理解,下文中将以网格为三角形为例进行详细的说明。
[0193]
下面将分别结合具体的实施例对光线跟踪渲染过程中,光线如何在目标场景中进行传播进行详细的说明。
[0194]
如图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的光线强度为零,颜色为黑色。
[0195]
从上面图3的所示的光线跟踪渲染的过程可以看出:光线与网格求交是最基本的运算。
[0196]
其中,一次光线和网格的求交可以通过以下公式(1)算出:
[0197][0198]
其中,如图4所示,t为光线起点o与光线与网格的交点p之间的距离,s为光线起点o至网格的顶点v0的矢量,e1为网格的顶点v1至网格的顶点v0的矢量,e2为网格的顶点v2至网格的顶点v0的矢量。
[0199]
从上面的陈述可以看出,在光线跟踪渲染中,光线和网格的求交次数的影响变量包括:渲染图像的像素点的个数以及每个像素点的采样率。其中,渲染图像的像素点的个数取决于渲染图像的宽度的像素点个数以及渲染图像的高度的像素点个数。假设渲染图像的宽度为width个像素点,高度为height个像素点,那么渲染图像的像素点个数为width*height。每个像素点的采样率定义为每个像素采样得到的光线的数量。以图5a所示为例,每个像素点采样的光线为1条,那么,每个像素点的采样率为1;以图5b所示为例,每个像素点采样的光线为9条,那么,每个像素点的采样率为9。这里,渲染图像的像素点的个数越多,光线和网格的求交次数越多;每个像素点的采样率越高,光线和网格的求交次数越多。假设渲染图像114的宽度为width个像素点,高度为height个像素点,每个像素点的采样率为spp,场景中网格的数量为n,那么,进行光线跟踪渲染时,光线的数量m=width*height*spp,至少需要进行m*n次光线和网格的求交。这里,m可能为百万级别甚至千万级别的,n也可能为百万级别甚至千万级别的。云平台可以按照以下顺序计算m条光线和n个网格的求交:
[0200]
通过公式(1)计算第一条光线和第一个网格的求交,通过公式(1)计算第二条光线和第一个网格的求交,

,通过公式(1)计算第m条光线和第一个网格的求交;
[0201]
通过公式(1)计算第一条光线和第二个网格的求交,通过公式(1)计算第二条光线和第二个网格的求交,

,通过公式(1)计算第m条光线和第二个网格的求交;
[0202]


[0203]
通过公式(1)计算第一条光线和第n个网格的求交,通过公式(1)计算第二条光线和第n个网格的求交,

,通过公式(1)计算第m条光线和第n个网格的求交。
[0204]
因此,当采用上述方式对m条光线与n个网格进行求交时,需要耗费比较多的时间。
[0205]
为了解决上述问题,本技术提出了一种求交运算方法、设备以及系统,能够批量地进行求交运算,从而有效地减少计算所需要的时间。
[0206]
下面将结合图4说明,如何将m*n次通过公式(1)对m条光线和n个网格进行的求交运算转变为公式(2)的矩阵运算,以期望尽量一次计算出更多的光线和网格进行求交的运算结果。其中,m,n均为正整数,并且,1<m,1<n。
[0207][0208]
其中,所述d
3m*3
为所述m条光线的方向矢量组成的矩阵,所述矩阵e2
3*n
为n个网格的第二条边e2的矢量组成的大小为3*n的矩阵,所述矩阵e1
n*3
为所述n个网格的第一条边e1
的矢量组成的大小为n*3的矩阵,所述矩阵s
3mn*3
为所述m条光线的起点和所述n个网格的顶点v0的矢量组成的矩阵;所述矩阵e1'
3*n
为所述n个网格的第一条边e1的矢量组成的大小为3*n的矩阵,所述e2'
n*3
为所述n个网格的第二条边e2的矢量组成的大小为n*3的矩阵。
[0209]
对于分母来说:
[0210]
首先,构建m条光线的方向矢量组成的矩阵d
3m*3
。其中,d
3m*3
可以为:
[0211][0212]
其中,d1为第一条光线的方向矢量,d2为第二条光线的方向矢量,

,dm为第m条光线的方向矢量。其中,第i条光线的方向矢量di可以表示为,1≤i≤m:
[0213][0214]
其中,xi为第i条光线在x轴上的投影,yi为第i条光线在y轴上的投影,zi为第i条光线在z轴上的投影。
[0215]
然后,构建n个网格的第二条边e2的矢量组成的大小为3*n的矩阵e2
3*n
。其中,e2
3*n
可以为:
[0216][0217]
其中,为第一个网格的第二条边e2的矢量在x轴上的投影,为第一个网格的第二条边e2的矢量在y轴上的投影,为第一个网格的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0218]
最后,构建n个网格的第一条边e1的矢量组成的大小为n*3的矩阵e1
n*3
。其中,e1
n*3
可以是:
[0219][0220]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第二条边e1的矢量在y轴上的投影,为第n个网格的第二条边e1的矢量在z轴上的投影。
[0221]
对于分子来说:
[0222]
首先,构建m条光线的起点o和n个网格的顶点v0的矢量组成的矩阵s
3mn*3
。其中,s
3mn*3
可以为:
[0223][0224]
其中,s
11
为第一条光线的起点o和第一个网格的顶点v0的矢量,

,s
1n
为第一条光线的起点o和第n个网格的顶点v0的矢量;s
21
为第二条光线的起点o和第一个网格的顶点v0的矢量,

,s
2n
为第二条光线的起点o和第n个网格的顶点v0的矢量;

;s
m1
为第m条光线的起点o和第一个网格的顶点v0的矢量,

,s
mn
为第m条光线的起点o和第n个网格的顶点v0的矢量。其中,第i条光线的起点o和第j个网格的顶点v0的矢量可以表示为s
ij
,1≤i≤m,1≤j≤n:
[0225][0226]
其中,x
ij
为第i条光线的起点o和第j个网格的顶点v0的矢量在x轴上的投影,y
ij
为第i条光线的起点o和第j个网格的顶点v0的矢量在y轴上的投影,z
ij
为第i条光线的起点o和第j个网格的顶点v0的矢量在z轴上的投影。
[0227]
然后,构建n个网格的第二条边e1的矢量组成的大小为3*n的矩阵e1'
3*n
。其中,e1'
3*n
可以为:
[0228][0229]
其中,为第一个网格的第一条边e1的矢量在x轴上的投影,为第一个网格的第一条边e1的矢量在y轴上的投影,为第一个网格的第一条边e1的矢量在z轴上的投影,

,为第n个网格的第一条边e1的矢量在x轴上的投影,为第n个网格的第一条边e1的矢量在y轴上的投影,为第n个网格的第一条边e1的矢量在z轴上的投影。
[0230]
最后,构建n个网格的第二条边e2的矢量组成的大小为n*3的矩阵e2'
n*3
。其中,e2'
n*3
可以是:
[0231][0232]
其中,为第一个三角形的网格的第二条边e2的矢量在x轴上的投影,为第一个三角形的网格的第二条边e2的矢量在y轴上的投影,为第一个三角形的第二条边e2的矢量在z轴上的投影,

,为第n个网格的第二条边e2的矢量在x轴上的投影,为第n个网格的第二条边e2的矢量在y轴上的投影,为第n个网格的第二条边e2的矢量在z轴上的投影。
[0233]
可以理解,上述例子中s
3mn*3
均以m条光线的起点均为点o为例进行说明,但是,在实际应用中,m条光线的起点可以是不同的,例如,光线的起点可以是点o,也可以是场景中的其他点,此处不作具体限定。
[0234]
将矩阵d
3m*3
和矩阵e2
3*n
相乘,从而得到矩阵r
3m*n
。其中,矩阵r
3m*n
可以表示为:
[0235][0236]
由于矩阵r
3m*n
中每三行表示一条光线与所有三角形的网格进行d
×
e2的值,因此,可以将矩阵r
3m*n
按照顺序拆成m个3*n的子矩阵sr1,sr2,

,srm。其中,sr1,sr2,

,srm可以分别表示为:
[0237][0238]
将子矩阵sr1,sr2,

,srm分别和e1
n*3
进行相乘。以第i个子矩阵sri为例,在进行sri和e1
n*3
运算时,只需要计算矩阵sri的第j行和矩阵e1
n*3
的第j列即可,也就是只需要计算矩阵sr
i*
e1
n*3
对角线上的值即可,其中,1≤i≤m,1≤j≤n。这样,对于每个sri都可以获得n个值,最终结果组成m*n的矩阵r1
m*n

[0239]
将矩阵s
3mn*3
和矩阵e1'
3*n
相乘,从而得到矩阵t
3mn*n
。其中,矩阵t
3mn*n
可以表示为:
[0240][0241]
对于t
3mn*n
来说,每三行表示一条光线与所有三角形的网格s
×
e1的结果,因为s与e1只有在它们来自同一个三角形才有意义,因此t
3mn*n
可分为m个子矩阵st
3n*n
,每个矩阵表
明一条光线与所有三角形的s
×
e1值,因此,可以将矩阵t
3mn*n
按照顺序拆成m个3n*n的子矩阵st1,st2,

,stm。其中,st1,st2,

,stm可以分别表示为:
[0242][0243][0244]
将子矩阵st1,st2,

,stm分别和e2'
n*3
进行相乘。对于sti来说,因为只有其中间的三条对角线上的值才有意义,因此可以只保留sti三条正对角线上的值,并将其重组成一个(nti)
3*n
。然后,m个子矩阵st1,st2,

,stm可以重组成m个子矩阵(nt1)
3*n
,(nt2)
3*n


,(ntm)
3*n
。将m个子矩阵(nt1)
3*n
,(nt2)
3*n


,(ntm)
3*n
组成为n
3m*n
,然后,n
3m*n
和r
3m*n
具有相同的意义,因此可以采用和r
3m*n
和e1
n*3
相乘类似的方法将矩阵n
3m*n
和e2'
n*3
进行相乘,获得一个m*n的矩阵r2
m*n

[0245]
利用r1
m*n
和r2
m*n
矩阵获取最终的光线与三角形相交的结果矩阵r3。特别的,在mt算法中,分母如果小于等于0,则表示光线与三角形没有相交,可以直接将相应结果矩阵的位置设置为默认最大值。因此r3中第i行和第j列的值可以用如下表示方式:
[0246]
[0247]
在上述计算过程中,可以按照如下的步骤顺序执行,从而有效减少计算所需要的时间。
[0248]
第一步,计算r
3m*n
=d
3m*3
*e2
3*n

[0249]
第二步,拆分矩阵r
3m*n
为m个子矩阵smi,1≤i≤m。
[0250]
第三步,计算每个子矩阵smi和e1
n*3
,并保留对角线,累计获得矩阵r1
m*n

[0251]
第四步,计算t
3mn*n
=s
3mn*3
*e1'
3*n

[0252]
第五步,拆分矩阵t
3mn*3
为m个子矩阵sti,1≤i≤m。
[0253]
第六步,将m子矩阵sti,保留其三条正对角线,组成m个子矩阵(nti)
3*n
,并将重组生成n
3m*n

[0254]
第七步,拆分矩阵n
3m*n
为m个子矩阵sni,1≤i≤m。
[0255]
第八步,计算每个子矩阵sni和e2'
n*3
,并保留对角线,累计获得矩阵r2
m*n

[0256]
第九步,计算m条光线与n个三角形的网格相交的结果矩阵
[0257]
上述计算步骤,只需要通过9个步骤的计算,就可以将m条光线与n个三角形的网格相交的结果求出来,比现有技术中需要通过m*n个步骤进行m条光线与n个三角形的网格相交,能够有效减少时间。可以理解,上述步骤也可以进行改进,例如,第一步和第四步可以同时执行,第二步和第五步可以同时执行等等,从而更进一步地减少时间。
[0258]
参见图6,图6是本技术提供的一种渲染方法的流程交互图。如图6所示,本技术的渲染方法能够在图1a所示的渲染系统上实现的,包括如下步骤:
[0259]
s101:终端设备上的渲染应用客户端生成渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息。
[0260]
贯穿本技术各个实施例,渲染请求既可以指代在网络设备上传输的网络报文,也可以指代在渲染应用客户端内部使用的程序指令。
[0261]
在本技术具体的实施例中,渲染请求可以携带目标场景的标识以及用户观察所述目标场景的角度,这样,远程渲染平台可以根据目标场景的标识以及用户观察所述目标场景的角度生成m条光线的方向矢量以及n个网格的位置信息。
[0262]
在本技术具体的实施例中,渲染请求可以携带m条光线的方向矢量以及n个网格的位置信息。此时,m条光线的方向矢量以及n个网格的位置信息可以是终端设备上的渲染应用客户端根据目标场景的标识以及用户观察所述目标场景的角度计算得到的。
[0263]
s102:终端设备上的渲染应用客户端将渲染请求发送给网络设备。相应地,网络设备接收终端设备上的渲染应用客户端发送的渲染请求。
[0264]
s103:网络设备向远程渲染平台发送渲染请求。相应地,远程渲染平台接收网络设备发送的渲染请求。
[0265]
s104:远程渲染平台根据渲染请求指示的所述m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵。
[0266]
s105:远程渲染平台对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果。
[0267]
在本技术具体的实施例中,远程渲染平台构建的多个矩阵可以包括矩阵d
3m*3
,矩阵e2
3*n
,矩阵e1
n*3
,矩阵s
3mn*3
,矩阵e1'
3*n
,矩阵e2'
n*3
,这里,各个矩阵的定义请参见上文中
的记载,此处不再展开描述。
[0268]
在本技术具体的实施例中,矩阵运算可以是:
[0269][0270]
应理解,上述矩阵仅仅是作为具体的举例,在其他实施例中,矩阵还可以是其他矩阵,例如,将上述矩阵进行行变换、列变换,或者进行转置等等,当然,在矩阵发生变化的时候,矩阵运算也会相应发生变化。
[0271]
s106:远程渲染平台根据所述m条光线和所述n个网格的求交结果生成渲染图像。
[0272]
s107:远程渲染平台向网络设备发送渲染图像。相应地,网络设备接收远程渲染平台发送的渲染图像。
[0273]
s108:网络设备向终端设备发送渲染图像。相应地,终端设备接收网络设备发送的渲染图像。
[0274]
为了简便起见,图6所示的渲染方法并没有对多个矩阵的构造方法、以及矩阵运算的过程进行详细的介绍,具体请参见上文中的记载,此处不再展开描述。
[0275]
参见图7,图7是本技术提供的另一种渲染方法的流程交互图。如图7所示,本技术的渲染方法能够在图1b所示的渲染系统上实现的,包括如下步骤:
[0276]
s201:管理设备生成渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息。
[0277]
s202:管理设备将渲染请求发送给网络设备。相应地,网络设备接收管理设备发送的渲染请求。
[0278]
s203:网络设备向远程渲染平台发送渲染请求。相应地,远程渲染平台接收网络设备发送的渲染请求。
[0279]
s204:远程渲染平台根据渲染请求指示的所述m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵。
[0280]
s205:远程渲染平台对所述多个矩阵进行矩阵运算从而获得所述m条光线和所述n个网格的求交结果。
[0281]
s206:远程渲染平台根据所述m条光线和所述n个网格的求交结果生成渲染图像。
[0282]
s207:远程渲染平台向网络设备发送渲染图像。相应地,网络设备接收远程渲染平台发送的渲染图像。
[0283]
s208:网络设备向终端设备发送渲染图像。相应地,终端设备接收网络设备发送的渲染图像。
[0284]
为了简便起见,图7所示的渲染方法并没有对多个矩阵的构造方法、以及矩阵运算的过程进行详细的介绍,具体请参见上文中的记载,此处不再展开描述。
[0285]
参见图8,图8是本技术提供的一种渲染应用服务端的结构示意图。本实施方式的所述渲染应用服务端包括:通信模块410以及渲染模块420。
[0286]
所述通信模块410用于接收渲染请求,其中,所述渲染请求用于指示m条光线的方向矢量以及n个网格的位置信息。
[0287]
所述渲染模块420用于根据所述渲染请求指示的所述m条光线的方向矢量以及所述n个网格的位置信息调用所述渲染引擎构建多个矩阵;对所述多个矩阵进行矩阵运算从
而获得所述m条光线和所述n个网格的求交结果;根据所述m条光线和所述n个网格的求交结果生成渲染图像。
[0288]
为了简便起见,图8所示的渲染应用服务端并没有对多个矩阵的构造方法、以及矩阵运算的过程进行详细的介绍,具体请参见上文中的记载,此处不再展开描述。
[0289]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态存储盘solid state disk(ssd))等。
再多了解一些

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

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

相关文献