1.本技术涉及三维可视化技术领域,具体而言,本技术涉及一种模型渲染方法、装置、电子设备及计算机可读存储介质。
背景技术:
2.三维模型是物体的多边形表示,通常用计算机或者其它视频设备进行显示。如今,三维模型已经用于各种不同的领域,例如智能医疗、电影娱乐和智慧城市等应用方向。
3.目前,在浏览器中展示三维模型时,可以选择后端渲染。其中,三维模型进行后端渲染时,一般是通过运行在浏览器中的web(world wide web,万维网)应用调用渲染引擎与后端服务器进行通讯,来完成对三维场景的实时渲染,但是当展示需求是针对大型或者超大型三维场景模型时,会出现展示场景卡顿、和图形运算性能低下等问题,导致应用没有实时渲染的能力。
技术实现要素:
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.第六方面,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述任一实施例的模型渲染方法。
50.上述的模型渲染方法,通过将客户端的渲染任务分摊到至少一台服务器,减少了客户端的资源消耗,同时,用二进制格式为基础制定一套远程渲染通讯协议,基于该协议来封装一个相应的渲染引擎,使其可以直接将渲染结果数据写入显卡,从而提升了渲染效率和图形运算性能,即便是针对展示需求为大型或者超大型三维场景模型,可以保证实时渲染能力。
附图说明
51.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
52.图1为本技术实施例提供的一种模型渲染方法的流程示意图;
53.图2为本技术实施例提供的一种模型渲染方法的流程示意图;
54.图3为本技术实施例提供的一种模型渲染方法的流程示意图;
55.图4为本技术实施例提供的示例中模型渲染方法的流程示意图;
56.图5为本技术实施例提供的一种模型渲染装置的结构示意图;
57.图6为本技术实施例提供的一种模型渲染装置的结构示意图;
58.图7为本技术实施例提供的一种模型渲染的电子设备的结构示意图。
具体实施方式
59.下面详细描述本技术的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本发明的限制。
60.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、
“”
和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
61.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
62.三维模型即3d(three-dimensional)模型,指三维的、立体的模型,在计算机领域则是指三维软件建造的立体模型,包括各种建筑、人物、植被、机械和多种模型类型集合场景等等。
63.对于目前的三维应用程序来说,追求画面真实感是一个无止尽的目标,因此三维模型场景变得更加复杂和多元化,给图形硬件带来了极大的负荷,出现图形处理计算资源不足等问题,导致无法达到实时的绘制帧率。
64.本技术提供的模型渲染方法、装置、电子设备和计算机可读存储介质,旨在解决现有技术的如上技术问题。
65.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
66.本技术实施例中提供的模型加载的方法,该方法可以应用于服务器,也可以应用于终端。
67.本技术领域技术人员可以理解,这里所使用的“终端”可以是手机、平板电脑、pda(personal digital assistant,个人数字助理)、mid(mobile internet device,移动互联网设备)等;“服务器”可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
68.本技术实施例中涉及的ip(internet protocol,国际互连协议)是指tcp/ip体系中的网络层协议,是整个tcp/ip协议族的核心,也是构成互联网的基础。ip协议提供了主机
和主机间的通信,完成不同主机通信是用来唯一确定一台主机的标识就是ip地址,通过ip地址,ip协议就能够将数据包发送给另一台主机。ip协议提供了主机和主机间的通信,tcp(transmission control protocol)协议则是在ip协议提供的主机间通信功能的基础上,完成这两个主机上进程与进程之间的通信。
69.本技术实施例中提供了一种模型渲染的方法,如图1所示,该方法可以应用于渲染引擎,包括以下步骤:
70.步骤s101,接收针对应用的访问指令,分别建立与至少一个渲染服务器之间的连接;其中,渲染引擎是基于远程渲染通讯协议封装获得,远程渲染通讯协议是以二进制格式为基础制定的一套远程渲染通讯协议。
71.在本技术实施例中,对于三维模型的渲染方式可以选择为后端渲染,即ssr(server side render,服务端渲染)方式,比如浏览器可以直接接收到经过服务器计算之后呈现给用户的最终html(hyper text markup language,超级文本标记语言)字符串,此时浏览器可以只进行对渲染结果数据的解析操作,通过操作系统提供的操纵显示器显示内容的系统调用显示器把渲染结果数据所代表的图像呈现给用户。
72.其中,渲染引擎可以是设置于浏览器中,当渲染任务需要交给渲染服务器计算并返回渲染结果时,客户端与服务端需要进行通讯。因此,当浏览器接收到对应用的访问指令,例如用户点开三维模型展示界面时,浏览器可以调用渲染引擎与渲染服务器进行连接,该连接可以为socket(套接字)连接。
73.socket可以理解为tcp层的封装,是应用层与tcp/ip协议族通信的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个门面模式,它把复杂的tcp/ip协议族隐藏在socket接口后面,让socket去组织数据,以符合指定的协议,达到tcp通信的目的。
74.其中,socket连接可以是socket长链接,在整个通讯过程中,客户端和服务端只用于一个socket对象,长期保持socket的链接。要保持socket连接,可以不断地给另一端写数据,然后读取另一端的数据,可以将此过程简单理解为“心跳”,只要“心跳”在,socket连接就被保持,写数据的间隔,可以根据实际的应用需求来确定。其中,“心跳包”不是实际的业务数据,可以根据通信协议的不同,做不同的处理。比如,可以使用json(javascript object notation,js对象简谱)通信,可以加一个“type”字段,来表明这个json是心跳还是业务数据。也可以使用二进制协议,处理方法类似,能达到可以区别一个数据包是“心跳”还是真实数据的要求即可。
75.在本技术实施例中,远程渲染通讯协议是基于二进制格式制定的。具体的,二进制格式可以是webassembly。webassembly是一种二进制格式,可以解决javascript(简称“js”)的一些性能缺陷。js最初的定位是作为一种解释型语言,面向非专业编程人员和设计师,但最终却成为互联网领域中最重要的语言之一,广泛运用于网页应用,随着网页日渐精美复杂,js的性能无法再满足人们的需求,而webassembly提供了一条途径,可以使各种语言编写的代码都可以以接近原生代码的速度在web中运行,大幅度提高了js的性能,并且网页的移植性更强。
76.在本技术实施例中,渲染引擎可以基于远程渲染通讯协议封装获得。
77.其中,渲染引擎又称排版引擎,负责取得网页的内容,整理信息,以及计算网页的显示方式输出至显示器或者打印机,渲染引擎可以应用于网页浏览器、电子邮件客户端以
及爱他需要编辑、显示网络内容的应用程序。而封装是指隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。
78.在一个实施例中渲染引擎由远程渲染通讯协议封装获得,其中的远程渲染通讯协议可以是基于网络通信原理开发的应用级协议,可以提供以下功能:
79.(1)提供一种更加易于使用或者贴合语言的标准传输格式;
80.(2)替用户完成将传输格式转化为流,通过任一种传输协议传输至远端计算机(渲染服务器),远端计算机在接收到流后转化为传输格式,并进行存储或以其他方式通知远端计算机。
81.具体的,远程渲染通讯协议还可以是使用webassembly格式实现的一套基于socket的协议,渲染引擎也可以是基于该协议封装获得,该引擎可以只接收显卡能识别的二进制数据格式,并且直接与显卡通信,从而进一步提升了渲染效率和程序运行速度。
82.步骤s102,向渲染路由器发送模型渲染任务;渲染路由器用于将模型渲染任务分别发送至至少一个渲染服务器;任一渲染服务器用于基于模型渲染任务获取对应的结果数据,并将结果数据发送至渲染路由器。
83.在本技术实施例中,可以由渲染引擎向渲染路由器发送模型渲染任务。其中,渲染路由器可以是连接两个或多个网络的硬件设备,可以完成网络层中继以及第三层中继任务,对不同的网络之间的数据包进行存储、分组转发处理。
84.在本技术实施例中,渲染路由器可以根据预设规则将渲染模型任务分别发送至至少一个渲染服务器。这里的至少一个渲染服务器可以是渲染服务器集群,渲染服务器集群是一组计算机通过通信协议连接在一起,能够将工作负载从一个超载的计算机迁移到集群中的其他计算机上,具有负载均衡特性。
85.其中,预设规则可以是根据模型渲染任务不同的大小和类别来制定的路由策略。任一渲染服务器接收渲染路由器分别发送的模型渲染任务后,对模型渲染任务进行处理得到处理后的结果数据。处理内容可以包括通过计算的方式把三维模型从三维模型网格转化为呈现出真实感的图像,计算过程可以包含光线及辅助光线,材料的材质和纹理,相机相关设置等综合变量。获取模型渲染任务对应的结果数据以后,渲染服务器将结果数据发送至渲染路由器。
86.步骤s103,接收渲染路由器发送的协议响应报文;协议响应报文是基于模型渲染任务的结果数据生成的。
87.在本技术实施例中,可以是渲染引擎接收渲染路由器发送的协议响应报文,协议响应报文可以是由渲染路由器基于处理模型渲染任务得到的结果数据根据预设算法生成的。
88.在一个实施例中,若远程渲染协议基于webassembly二进制格式而制定,而对应的渲染引擎是由该远程渲染通讯协议封装,则此时包含有模型渲染结果的结果数据也为二进制格式。而协议响应报文由结果数据生成,此时也为二进制格式。
89.步骤s104,解析协议响应报文,以获取模型渲染任务的渲染结果;渲染结果用于生成应用的展示页面。
90.在本技术实施例中,渲染引擎接收到协议响应报文后对协议响应报文进行解析,从协议响应报文中获取包含模型渲染任务渲染结果的数据。
91.其中,不含有渲染结果的数据可以舍去,例如协议响应报文响应头中用于通讯的部分,而包含渲染结果的数据可能进行了编码或者压缩,也需要进一步解析得到可以用于生成应用展示界面的渲染结果数据。
92.在一个实施例中,当模型渲染任务是针对大型模型或超大型模型时,渲染路由器可以将模型渲染任务拆分成至少一个子任务,再将子任务分别发送到至少一个渲染服务器;任一渲染服务器可以对子任务进行处理,得到子任务对应的结果数据。
93.其中,路由器将模型渲染任务拆分为多个子任务时,可以对模型渲染任务进行划分、分配和协调。其中,子任务可以是一个简单的渲染对象或者一个大型渲染任务的一部分,还以是基于图块渲染(tiled rendering,瓦片渲染)来划分,每一个子任务可以对应一个网格或图块。渲染路由器可以用于将子任务根据预设的分配规则分别发送给至少一个渲染服务器,任一渲染服务器对分配给自己的子任务进行处理,得到该子任务对应的结果数据。渲染服务器可以基于自身高性能硬件和软件并行处理子任务,处理内容可以包括通过计算的方式把三维模型从三维模型网格转化为呈现出真实感的图像,计算过程可以包含光线及辅助光线,材料的材质和纹理,相机相关设置等综合变量等。
94.在一个实施例中,协议响应报文由渲染路由器将子任务对应的结果数据合并所得。
95.具体的,当模型渲染任务被拆分成至少一个子任务时,任一渲染服务器对分配至自己的子任务进行处理,处理后获取该子任务对应的结果数据。当有多个子任务时,便获取多个结果数据。渲染路由器可以用于将多个结果数据按照预设算法合并为协议响应报文。
96.在一个实施例中,步骤s104,解析协议响应报文,以获取模型渲染任务的渲染结果还包括:
97.(1)解析协议响应报文,获得至少一个渲染块数据;
98.(2)将渲染块数据写入显卡;显卡用于处理渲染块数据以获取模型渲染任务的渲染结果。
99.其中,协议响应报文可以是二进制格式。渲染引擎可以用于对协议响应报文进行解析,获得至少一个渲染块数据。其中,渲染块数据可以是代表了图像每个网格或者图块渲染结果的数据集,块数据与块数据间相互关联,具有先后顺序。
100.在一个实施例中,若远程渲染协议基于webassembly二进制格式而制定,而对应的渲染引擎是由该远程渲染通讯协议封装,则此时包含有模型渲染结果的结果数据也为二进制格式。而协议响应报文由结果数据生成,此时也可以为二进制格式,进一步的,渲染引擎可以解析协议响应报文得到至少一个可以直接被显存识别的二进制渲染块数据,再根据特定的算法可以直接将二进制渲染块数据写入显卡,显卡对渲染块数据进行显示,以达到快速展示三维模型的效果。
101.本技术实施例中提供了一种模型渲染的方法,如图2所示,该方法可以应用于渲染路由器,包括以下步骤:
102.步骤s201,接收渲染引擎发送的模型渲染任务;渲染引擎与至少一个渲染服务器之间分别建立有连接;渲染引擎是基于远程渲染通讯协议封装获得,远程渲染通讯协议是以二进制格式为基础制定的一套远程渲染通讯协议。
103.在本技术实施例中,渲染路由器可以接受渲染引擎发送的模型渲染任务。其中,渲
染路由器可以是连接两个或多个网络的硬件设备,可以完成网络层中继以及第三层中继任务,对不同的网络之间的数据包进行存储、分组转发处理;渲染路由器还可以是具有路由功能的中转服务器,进一步对接收到的模型渲染任务进行分类或者预处理;渲染路由器还可以是包含了路由器或者中转服务器的云计算渲染系统,也具有将任务分别发送和接收、整合的功能。
104.在本技术实施例中,渲染引擎可以与至少一个渲染服务器之间分别建立有连接,该连接可以为socket(套接字)长连接。渲染引擎可以是基于远程渲染通讯协议封装获得,而远程渲染通讯协议可以是基于webassembly制定的。
105.其中,webassembly是一种二进制格式,提供了一条途径,可以使各种语言编写的代码都可以以接近原生的速度在web中运行,大幅度提高了js的性能,并且网页的移植性更强。
106.步骤s202,将模型渲染任务分别发送至至少一个渲染服务器;任一渲染服务器用于基于模型渲染任务获取对应的结果数据并发送结果数据。
107.在本技术实施例中,渲染路由器可以根据预设规则将渲染模型任务分别发送至至少一个渲染服务器。预设规则可以是指路由策略,路由策略就是路由发布和接收的策略,确定路由策略,可以先确定使用何种路由协议。相同的网络结构,不同的路由协议因为实现的机制不同、开销计算规则不同、优先级定义不同可能会产生不同的路由表。而路由策略可以基于正常的路由协议之上,根据需求来设定规则,可以通过改变参数或者控制方式在改变路由的产生、发布、选择的结果。
108.渲染服务器可以是渲染服务器集群,渲染服务器集群是一组计算机通过通信协议连接在一起,能够将工作负载从一个超载的计算机迁移到集群中的其他计算机上,具有负载均衡特性。任一渲染服务器接收到模型渲染任务后,可以对其进行处理,处理内容可以包括基于三维模型生成具有真实感效果的场景图形。渲染服务器可以将处理后获得的模型渲染任务对应的结果数据发送给渲染路由器。
109.步骤s203,接收渲染服务器发送的结果数据,基于模型渲染任务的结果数据生成协议响应报文。
110.在本技术实施例中,渲染路由器接收渲染服务器发送的结果数据,基于模型渲染任务的结果数据生成协议响应报文,协议响应报文可以是根据预设算法生成的,协议响应报文可以包含响应行、响应头和响应体。其中,响应行可以包括协议版本、状态码和状态说明等信息;响应头可以包含服务器应用程序软件的名称和版本、发送给接收者的实体正文的媒体类型和实体正文的长度;响应体可以存放结果数据。
111.在一个实施例中,若远程渲染协议基于webassembly二进制格式而制定,而对应的渲染引擎是由该远程渲染通讯协议封装,则此时包含有模型渲染结果的结果数据也为二进制格式。而协议响应报文由结果数据生成,此时也为二进制格式。
112.步骤s204,发送协议响应报文至渲染引擎;渲染引擎用于解析协议响应报文得到模型渲染任务对应的渲染结果;渲染结果用于生成应用的展示页面。
113.在本技术实施例中,渲染路由器将协议响应报文发送至渲染引擎,渲染引擎对协议响应报文进行解析,从协议响应报文中获取包含模型渲染任务渲染结果的数据。其中,不含有渲染结果的数据可以舍去,例如协议响应报文响应头中用于通讯的部分,而包含渲染
结果的数据可能进行了编码或者压缩,也需要进一步解析得到可以用于生成应用展示界面的渲染结果数据。
114.在一个实施例中,当模型渲染任务是针对大型模型或超大型模型时,渲染路由器可以将模型渲染任务拆分成至少一个子任务,再将子任务分别发送到至少一个所述渲染服务器;任一所述渲染服务器用于对子任务进行处理,得到子任务对应的结果数据。
115.在一个实施例中,渲染路由器对模型渲染任务进行拆分前,还可能包括解析过程。渲染路由器将模型渲染任务拆分为多个子任务时,可以对模型渲染任务进行划分、分配和协调。
116.其中,任务划分可以是提供结构化的任务定义方式,遵循自顶向下逐步细化的原则,将模型渲染任务拆分为一个个相对独立且互有关联的子任务,分解结果可以以表的形式存放在数据库中。
117.其中,子任务可以是一个简单的渲染对象或者一个大型模型渲染任务的一部分,还以是基于图块渲染(tiled rendering,瓦片渲染)来划分,每一个子任务可以对应一个网格或图块。模型渲染任务的划分还可以以任务约束为依据,任务约束是指在渲染对象内部存在的各种约束关系,例如尺寸、位置和拓扑关系等,将模型渲染任务拆分后,这些约束关系就表现为各个子任务之间的约束。模型渲染任务的划分还可以是对三维模型场景内的几何元素进行划分,即将渲染对象划分为若干独立不相交的子区域,这些子区域可以作为子任务由渲染路由器分别发送至至少一个渲染服务器,渲染完成后再将所有子任务渲染后的结果数据合并。
118.在一个实施例中,协议响应报文由渲染路由器将子任务对应的结果数据合并所得。
119.具体的,渲染路由器可以将模型渲染任务拆分成至少一个子任务,并将子任务分别发送给至少一个渲染服务器,任一渲染服务器对分配至自己的子任务进行处理,处理后获取该子任务对应的结果数据。当有多个子任务时,便获取多个结果数据。
120.渲染路由器可以将多个结果数据按照预设算法合并为协议响应报文,协议响应报文可以包含响应行、响应头和响应体,结果数据可以存放在响应体中。其中,预设的算法可以与模型渲染任务的划分和分配方法进行对应。例如,按图像网格将渲染模型任务进行划分时,接收到渲染服务器反馈回的各个子任务结果数据后,将这些结果数据按照一定的网格排列顺序进行合成,有序地存放入协议响应报文的响应体中,便于后续对协议响应报文进行解析。
121.在一个实施例中,渲染引擎可以用于解析协议响应报文,获得至少一个渲染块数据并将渲染块数据写入显卡;显卡用于处理渲染块数据以获取模型渲染任务的渲染结果。若远程渲染协议基于webassembly二进制格式而制定,而对应的渲染引擎是由该远程渲染通讯协议封装,则此时包含有模型渲染结果的结果数据也为二进制格式。而协议响应报文由结果数据生成,此时也可以为二进制格式,进一步的,渲染引擎可以解析协议响应报文得到至少一个二进制渲染块数据,再根据特定的算法可以直接将二进制渲染块数据写入显卡,显卡对渲染块数据进行显示,以达到快速展示三维模型的效果。
122.为了更清楚阐释本技术的模型加载方法,以下将结合具体示例对模型加载方法进行进一步说明。
123.在一个实施例中,本技术提供模型渲染方法,如图3,包括如下步骤:
124.步骤s300,浏览器调用渲染引擎;
125.步骤s301,渲染引擎与渲染服务器建立连接;
126.步骤s302,渲染引擎将模型渲染任务发送给渲染路由器;
127.步骤s303,渲染路由器将模型渲染任务拆分成至少一个子任务;
128.步骤s304,渲染路由器解析模型渲染任务,并将至少一个子任务分别发送给渲染服务器集群中至少一个渲染服务器;
129.步骤s305,任一渲染服务器对分配至自己的子任务进行处理;
130.步骤s306,任一渲染服务器将子任务对应的结果数据发送至渲染路由器;
131.步骤s307,渲染路由器将所有子任务对应的结果数据合并为协议响应报文;
132.步骤s308,渲染路由器向渲染引擎发送协议响应报文;
133.步骤s309,渲染引擎解析协议响应报文,获取报文内多个渲染块数据;
134.步骤s310,将渲染块数据写入显存;
135.步骤s311,浏览器展示对应的3d模型。
136.以渲染后的模型在客户端浏览器进行展示为例,结合具体示例进行进一步说明。
137.在一个示例中,本技术提供模型渲染方法,如图4,包括如下步骤:
138.(1)用户通过浏览器a访问web三维可视化应用,浏览器a通过渲染引擎与渲染服务器建立socket长连接;其中,渲染引擎由远程渲染协议封装所得,远程渲染通讯协议基于webassembly制定;
139.(2)渲染引擎将渲染任务请求发送给渲染路由器;
140.(3)渲染路由器解析渲染任务请求并拆分成多个子任务,将至少一个子任务根据路由规则分别发送到至少一个渲染服务器;
141.(4)渲染服务器基于自身高性能硬件和软件并行处理子任务,获得对应的结果数据,并将结果数据发送给渲染路由器;
142.(5)渲染路由器待某个人物的所有子任务都完成渲染后,将所有子任务的结果数据按照算法合并为协议响应报文,该报文包含能够被显存识别的二进制渲染块数据;渲染路由器将协议响应报文发送给渲染引擎;
143.(6)渲染引擎解析协议响应报文,识别出报文内多个二进制渲染块数据,将二进制渲染块数据根据特定算法直接按先后顺序写入显存,浏览器将快速展示出对应的3d场景。
144.上述事例中,通过将客户端的渲染任务分摊到硬件配置更好、计算能力更强的后端渲染夫妇器集群中进行处理,减少了客户端的资源消耗;同时,用webassembly二进制格式为基础制定一套远程渲染通讯协议,基于该协议来封装一个相应的渲染引擎,使其可以直接将二进制格式的渲染结果数据写入显卡,并且提高程序在web中的运行速度,到达了提升渲染效率和图形运算性能的效果,即便是针对展示需求为大型或者超大型三维场景模型,可以保证实时渲染能力。
145.本技术实施例提供了一种模型渲染装置,如图5所示,该模型渲染装置500可以包括:连接模块501、渲染模块502、第一接收模块503以及第一解析模块504,其中,
146.连接模块501,用于接收针对应用的访问指令,分别建立与至少一个渲染服务器之间的连接;其中,渲染引擎是基于远程渲染通讯协议封装获得,远程渲染通讯协议是以二进
制格式为基础制定的一套远程渲染通讯协议;
147.渲染模块502,用于向渲染路由器发送模型渲染任务;渲染路由器用于将模型渲染任务分别发送至至少一个渲染服务器;任一渲染服务器用于基于模型渲染任务获取对应的结果数据,并将结果数据发送至渲染路由器;
148.第一接收模块503,用于接收渲染路由器发送的协议响应报文;协议响应报文是基于模型渲染任务的结果数据生成的;
149.第一解析模块504,用于解析协议响应报文,以获取模型渲染任务的渲染结果;渲染结果用于生成应用的展示页面。
150.在本技术实施例中,渲染路由器用于将模型渲染任务拆分成至少一个子任务,再将子任务分别发送到至少一个渲染服务器;任一渲染服务器用于对子任务进行处理,得到子任务对应的结果数据。
151.在其中一个实施例中,协议响应报文由渲染路由器将子任务对应的结果数据合并所得。
152.在其中一个实施例中,第一解析模块504解析协议响应报文,以获取模型渲染任务的渲染结果时,具体用于:
153.解析协议响应报文,获得至少一个渲染块数据;
154.将渲染块数据写入显卡;显卡用于处理渲染块数据以获取模型渲染任务的渲染结果。
155.本技术实施例提供了一种模型渲染装置,如图6所示,该模型渲染装置600可以包括:接收模块601、发送模块602、第二接收模块603以及第二解析模块604,其中,
156.接收模块601,接收渲染引擎发送的模型渲染任务;渲染引擎与至少一个渲染服务器建立有连接;渲染引擎是基于远程渲染通讯协议封装获得,远程渲染通讯协议是以二进制格式为基础制定的一套远程渲染通讯协议;
157.发送模块602,将模型渲染任务分别发送至至少一个渲染服务器;任一渲染服务器用于基于模型渲染任务获取对应的结果数据并发送结果数据;
158.第二接收模块603,用于接收渲染路由器发送的协议响应报文;协议响应报文是基于模型渲染任务的结果数据生成的;
159.第二解析模块604,用于解析协议响应报文,以获取模型渲染任务的渲染结果;渲染结果用于生成应用的展示页面。
160.在本技术的实施例中,发送模块602将模型渲染任务分别发送至至少一个渲染服务器时,具体用于:
161.将模型渲染任务拆分成至少一个子任务,再将子任务分别发送到至少一个渲染服务器;
162.其中,任一渲染服务器用于对子任务进行处理,得到子任务对应的结果数据。
163.在其中一个实施例中,第二接收模块603基于模型渲染任务的结果数据生成协议响应报文时,具体用于:
164.将子任务对应的结果数据合并获得协议响应报文。
165.在其中一个实施例中,渲染引擎用于解析协议响应报文,获得至少一个渲染块数据并将渲染块数据写入显卡;显卡用于处理渲染块数据以获取模型渲染任务的渲染结果。
166.上述的模型渲染装置,通过将客户端的渲染任务分摊到硬件配置更好、计算能力更强的后端渲染集群中处理,减少了客户端的资源消耗,同时,用二进制格式为基础制定一套远程渲染通讯协议,基于该协议来封装一个相应的渲染引擎,使其可以直接将渲染结果数据写入显卡,从而提升了渲染效率和图形运算性能,即便是针对展示需求为大型或者超大型三维场景模型,可以保证实时渲染能力。
167.本技术实施例中提供了一种电子设备,该电子设备包括:存储器和处理器;至少一个程序,存储于存储器中,用于被处理器执行时,与现有技术相比可实现:通过将客户端的渲染任务分摊到硬件配置更好、计算能力更强的后端渲染集群中处理,减少了客户端的资源消耗,同时,用二进制格式为基础制定一套远程渲染通讯协议,基于该协议来封装一个相应的渲染引擎,该引擎可以接收显卡能识别的二进制格式数据并且能直接与显卡通讯,从而提升了渲染效率和图形运算性能,即便是针对展示需求为大型或者超大型三维场景模型,可以保证实时渲染能力。
168.在一个可选实施例中提供了一种电子设备,如图7所示,图7所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本技术实施例的限定。
169.处理器4001可以是cpu(central processing unit,中央处理器),通用处理器,dsp(digital signal processor,数据信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
170.总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
171.存储器4003可以是rom(read only memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
172.存储器4003用于存储执行本技术方案的应用程序代码,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的应用程序代码,以实现前述方法实施例所示的内容。
173.其中,电子设备包括但不限于诸如移动电话、笔记本电脑、pad等等移动终端以及诸如数字tv、台式计算机等等固定终端。
174.本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。
175.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
176.以上仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
技术特征:
1.一种模型渲染的方法,其特征在于,应用于渲染引擎,包括:接收针对应用的访问指令,分别建立与至少一个渲染服务器之间的连接;其中,所述渲染引擎是基于远程渲染通讯协议封装获得,所述远程渲染通讯协议是以二进制格式为基础制定的一套远程渲染通讯协议;向渲染路由器发送模型渲染任务;所述渲染路由器用于将所述模型渲染任务分别发送至至少一个所述渲染服务器;任一所述渲染服务器用于基于所述模型渲染任务获取对应的结果数据,并将所述结果数据发送至渲染路由器;接收渲染路由器发送的协议响应报文;所述协议响应报文是基于所述模型渲染任务的结果数据生成的;解析所述协议响应报文,以获取所述模型渲染任务的渲染结果;所述渲染结果用于生成应用的展示页面。2.根据权利要求1所述的模型渲染方法,其特征在于,所述渲染路由器用于将所述模型渲染任务拆分成至少一个子任务,再将所述子任务分别发送到至少一个所述渲染服务器;任一所述渲染服务器用于对所述子任务进行处理,得到所述子任务对应的结果数据。3.根据权利要求2所述的模型渲染方法,其特征在于,所述协议响应报文由渲染路由器将所述子任务对应的结果数据合并所得。4.根据权利要求1所述的模型渲染方法,其特征在于,解析所述协议响应报文,以获取所述模型渲染任务的渲染结果,包括:解析所述协议响应报文,获得至少一个渲染块数据;将所述渲染块数据写入显卡;所述显卡用于处理所述渲染块数据以获取所述模型渲染任务的渲染结果。5.一种模型渲染的方法,其特征在于,应用于渲染路由器,包括:接收渲染引擎发送的模型渲染任务;所述渲染引擎与至少一个渲染服务器之间分别建立有连接;所述渲染引擎是基于远程渲染通讯协议封装获得,所述远程渲染通讯协议是以二进制格式为基础制定的一套远程渲染通讯协议;将所述模型渲染任务分别发送至至少一个所述渲染服务器;任一所述渲染服务器用于基于所述模型渲染任务获取对应的结果数据并发送所述结果数据;接收所述渲染服务器发送的所述结果数据,基于所述模型渲染任务的结果数据生成协议响应报文;发送所述协议响应报文至所述渲染引擎;所述渲染引擎用于解析所述协议响应报文得到所述模型渲染任务对应的渲染结果;所述渲染结果用于生成应用的展示页面。6.根据权利要求5所述的模型渲染方法,其特征在于,将所述模型渲染任务分别发送至至少一个所述渲染服务器,包括:将所述模型渲染任务拆分成至少一个子任务,再将所述子任务分别发送到至少一个所述渲染服务器;其中,任一所述渲染服务器用于对所述子任务进行处理,得到所述子任务对应的结果数据。7.根据权利要求6所述的模型渲染方法,其特征在于,基于所述模型渲染任务的结果数据生成协议响应报文,包括:
将所述子任务对应的结果数据合并获得协议响应报文。8.根据权利要求5所述的模型渲染方法,其特征在于,所述渲染引擎用于解析所述协议响应报文,获得至少一个渲染块数据并将所述渲染块数据写入显卡;所述显卡用于处理所述渲染块数据以获取所述模型渲染任务的渲染结果。9.一种模型渲染装置,其特征在于,包括:连接模块,用于接收针对应用的访问指令,分别建立与至少一个渲染服务器之间的连接;其中,所述渲染引擎是基于远程渲染通讯协议封装获得,所述远程渲染通讯协议是以二进制格式为基础制定的一套远程渲染通讯协议;渲染模块,用于向渲染路由器发送模型渲染任务;所述渲染路由器用于将所述模型渲染任务分别发送至至少一个所述渲染服务器;任一所述渲染服务器用于基于所述模型渲染任务获取对应的结果数据,并将所述结果数据发送至渲染路由器;第一接收模块,用于接收渲染路由器发送的协议响应报文;所述协议响应报文是基于所述模型渲染任务的结果数据生成的;第一解析模块,用于解析所述协议响应报文,以获取所述模型渲染任务的渲染结果;所述渲染结果用于生成应用的展示页面。10.一种模型渲染装置,其特征在于,包括:接收模块,接收渲染引擎发送的模型渲染任务;所述渲染引擎与至少一个渲染服务器建立有连接;所述渲染引擎是基于远程渲染通讯协议封装获得,所述远程渲染通讯协议是以二进制格式为基础制定的一套远程渲染通讯协议;发送模块,将所述模型渲染任务分别发送至至少一个所述渲染服务器;任一所述渲染服务器用于基于所述模型渲染任务获取对应的结果数据并发送所述结果数据;第二接收模块,用于接收渲染路由器发送的协议响应报文;所述协议响应报文是基于所述模型渲染任务的结果数据生成的;第二解析模块,用于解析所述协议响应报文,以获取所述模型渲染任务的渲染结果;所述渲染结果用于生成应用的展示页面。11.一种电子设备,其特征在于,其包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据权利要求1~8任一项所述的模型渲染方法。12.一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述权利要求1至8中任一项所述的模型渲染方法。
技术总结
本申请实施例提供了一种模型渲染方法、装置、电子设备及计算机可读存储介质,涉及三维可视化领域。该方法包括:将客户端的模型渲染任务分摊到至少一台渲染服务器,渲染服务器对模型渲染任务进行处理后将结果数据返回渲染引擎;同时,用二进制格式为基础制定一套远程渲染通讯协议,基于该协议来封装一个相应的渲染引擎,使其可以直接识别二进制格式数据并能将二进制结果数据直接写入显卡,从而达到提升渲染效率和图形运算性能的效果。渲染效率和图形运算性能的效果。渲染效率和图形运算性能的效果。
技术研发人员:周克 王涛亮 单东林
受保护的技术使用者:亚信科技(中国)有限公司
技术研发日:2020.11.04
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-25774.html