一种用于云渲染的对象获取系统和方法与流程

文档序号:14520009阅读:159来源:国知局
一种用于云渲染的对象获取系统和方法与流程

本发明涉及计算机技术领域,尤其涉及一种用于云渲染的对象获取系统和方法。



背景技术:

渲染在电脑绘图中是指用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于3d物体的描述,它包括几何、视点、纹理以及照明信息。随着三维(three-dimensional,3d)模型技术在工业设计、工业制造等众多领域的广泛应用,已经积累了丰富的数字化3d模型。尤其是3d打印技术的飞速发展,一方面为如何应用已有的大量3d模型提供了丰富的途径;另一方面,各个细分专业领域的用户通过对现有3d模型的修改,进一步产生了更大数量且具有更多细节的3d模型。从海量的且具有大量细节的3d模型数据中搜索出与特定需求匹配的3d模型,并快速展现给用户需要依赖于云渲染技术,例如分布在网络中不同位置的具有渲染资源的分布式云计算机系统。

授权公告号为205193879u的实用新型专利公开了一种云计算渲染系统,其包括任务分配服务器、模板管理服务器、合成服务器和云渲染集群,其中渲染场景文件分散地存储在影视制作中心的各台制作电脑上,当不同的制作电脑需要使用同一场景文件进行云渲染时,每一台制作电脑都需要将场景文件发送给任务分配服务器,云渲染集群根据渲染任务分别从任务分配服务器获取相同的场景文件。当影视制作中心中的制作电脑物理上分布范围更广且数量更大时,或者在例如前述的3d模型搜索展示时所需要的实时云渲染等应用场景,对任务分配服务器的带宽需求将成倍增长,而大量重复对相同场景等渲染对象文件进行传输,不仅造成带宽的巨大浪费,而且会在影响带宽的同时降低云渲染的实时性。



技术实现要素:

本发明的目的之一至少在于,针对上述现有技术存在的问题,提供一种用于云渲染的对象获取系统和方法,能够提高模型文件的利用率,避免重复下载,降低渲染服务器与对象存储服务器之间的带宽需求,缩短渲染对象获取的时间并增强渲染的实时性,增强渲染的实时性。

一种用于云渲染的对象获取系统,其包括:通过网络连接的调度服务器、对象存储服务器、数据库服务器、以及一个或者多个3d渲染服务器;其中,

调度服务器,用于响应接收到的渲染请求,将该渲染请求分配给对应的3d渲染服务器;

对象存储服务器,用于存储模型文件;数据库服务器,用于提供主模型数据库,主模型数据库存储有模型文件摘要信息和对应的模型文件在对象存储服务器中的外部存储地址;

3d渲染服务器包括3d渲染模块和热点存储模块,其中,3d渲染模块用于,根据渲染请求建立3d渲染进程,通过3d渲染进程向热点存储模块发送读取模型文件请求;热点存储模块用于,当热点存储模块中的热点对象存储单元中存储有请求渲染的模型文件时,返回对应的模型文件在热点对象存储单元中的内部存储地址;3d渲染进程还用于,根据内部存储地址读取对应的模型文件,根据渲染请求中的渲染要求对读取的模型文件进行云渲染。

优选地,所述3d渲染模块还用于:

当热点对象存储单元中没有请求渲染的模型文件时,通过3d渲染进程从数据库服务器获取请求渲染的模型文件在对象存储服务器中的外部存储地址,并根据外部存储地址从对象存储服务器下载对应的模型文件,根据渲染请求中的渲染要求对下载的模型文件进行云渲染。

优选地,所述热点存储模块还用于:当热点对象存储单元的可用存储空间大于预设阈值时,将从对象存储服务器下载的模型文件存储到热点对象存储单元中。

优选地,所述热点存储模块用于:统计热点对象存储单元中存储的模型文件在预设时间段内被3d渲染进程读取的次数,获取热点对象存储单元中存储的模型文件的使用频率。

优选地,所述热点存储模块还用于:统计热点对象存储单元中存储的模型文件在预设时间段内被多个3d渲染进程读取的次数之和。

优选地,所述热点存储模块还用于:当热点对象存储单元的可用存储空间小于或者等于预设阈值时或者根据预设的时间周期,按照使用频率从小到大依次删除热点对象存储单元中使用频率小于预设阈值的模型文件。

优选地,所述热点存储模块还用于提供热点数据库;热点数据库存储有模型文件摘要信息和对应的模型文件在热点对象存储单元中的内部存储地址,以及模型文件的使用频率。

优选地,所述热点存储模块还用于:根据读取模型文件请求中的模型文件摘要信息,判断热点对象存储单元中是否存储有相同的模型文件。

优选地,所述内部存储地址为模型文件在3d渲染服务器中的数据逻辑地址。

一种用于云渲染的对象获取方法,其包括以下步骤:

响应接收到的渲染请求,将该渲染请求分配给对应的3d渲染服务器的调度步骤;

根据渲染请求建立3d渲染进程,通过3d渲染进程向热点存储模块发送读取模型文件请求;

当热点存储模块中的热点对象存储单元中存储有请求渲染的模型文件时,返回对应的模型文件在热点对象存储单元中的内部存储地址;

根据内部存储地址读取对应的模型文件,根据渲染请求中的渲染要求对读取的模型文件进行云渲染。

综上所述,由于采用了上述技术方案,本发明至少具有以下有益效果:

通过3d渲染进程向热点存储模块发送读取模型文件请求,当热点存储模块中的热点对象存储单元中存储有请求渲染的模型文件时,根据内部存储地址直接读取对应的模型文件,根据渲染请求中的渲染要求对读取的模型文件进行云渲染,能够提高模型文件的利用率,避免热点模型文件的重复下载,降低渲染服务器与对象存储服务器之间的带宽需求,缩短渲染对象获取的时间并增强渲染的实时性。

附图说明

图1是本发明实施例一提供的用于云渲染的对象获取系统的结构示意图;

图2是本发明实施例一提供的用于云渲染的对象获取系统中3d渲染服务器的结构示意图;

图3是本发明实施例二提供的用于云渲染的对象获取系统中主要数据流向示意图;

图4是本发明实施例三提供的用于云渲染的对象获取系统和方法应用于3d对象搜索场景的云渲染示意图;

图5是本发明实施例四提供的用于云渲染的对象获取系统中云渲染计算资源的结构示意图;

图6是使用本发明实施例四提供的用于云渲染的对象获取系统中云渲染计算资源实施云渲染的流程图。

具体实施方式

下面结合附图及实施例,对本发明进行进一步详细说明,以使本发明的目的、技术方案及优点更加清楚明白。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

实施例一

如图1所示,本发明实施例一提供的一种用于云渲染的对象获取系统包括:通过网络连接的调度服务器、对象存储服务器、数据库服务器、以及一个或者多个3d渲染服务器。其中,网络可以包括局域网lan、城域网man、广域网wan、tdd-lte、fdd-lte移动通信网络等,连接方式包括通过各种有线、无线通信接口实现的连接。

图2示出了本发明实施例一提供的一种用于云渲染的对象获取系统中3d渲染服务器的结构示意图。如图2所述,3d渲染服务器主要包括3d渲染模块和热点存储模块。其中,3d渲染模块用于根据渲染请求建立一个或者多个3d渲染进程,3d渲染进程根据渲染请求中的渲染要求获取对应的模型文件,并调用3d渲染服务器的云渲染计算资源对模型文件进行云渲染,以获取渲染结果。

热点存储模块主要包括热点对象存储单元,热点对象存储单元中存储有一定数量的模型文件,即云渲染的渲染对象,可以包括各种固定或者动态的3d场景模型文件、色彩、光影、材质等模型元素文件。这些模型文件是在3d渲染进程从对象存储服务器下载后保存到热点对象存储单元中的,并可以根据模型文件的使用频率大小来确定其保存时间的长短,并可以统计模型文件的使用频率,将使用频率高于预设值的模型文件标记为热点模型文件。当3d渲染进程向热点存储模块请求读取模型文件时,热点存储模块直接根据请求读取的模型文件的摘要信息,向3d渲染进程返回对应于热点对象存储单元的内部存储地址,例如,模型文件在3d渲染服务器中的数据逻辑地址,3d渲染进程因此可以直接从热点对象存储单元读取对应的模型文件,而不需要从外部的其他服务器(例如对象存储服务器)中远程下载模型文件,从而减少了获取渲染对象所需的时间,提高了云渲染的实时性。

当进一步增大热点对象存储单元中所存储的模型文件的规模时,为了更高效地管理所存储的热点模型文件,热点存储模块还可以进一步包括热点数据库,用于存储模型文件摘要信息和对应于热点对象存储单元的内部存储地址,以及模型文件的使用频率。当3d渲染进程向热点存储模块请求读取模型文件时,热点存储模块通过查询热点数据库,向3d渲染进程返回对应的内部存储地址,3d渲染进程进而可以根据返回的内部地址从热点对象存储单元读取对应的模型文件。

实施例二

图3示出了本发明实施例二公开的一种用于云渲染的对象获取系统的主要数据流向。

调度服务器收到来自用户或者负载均衡服务器的渲染请求后,根据其管辖的3d渲染服务器的运行状态,将渲染请求分配给合适的3d渲染服务器,例如在预设时间段内执行过相同或者类似渲染请求的3d渲染服务器,或者有相应渲染计算资源的3d渲染服务器。

3d渲染服务器中的3d渲染模块根据渲染请求建立相应的3d渲染进程,3d渲染进程直接根据热点存储模块返回的内部存储地址从热点对象存储单元读取热点模型文件,并调用3d渲染服务器的计算资源对模型文件进行云渲染。进一步地,还可以将渲染结果以视频流的形式发送给用户并相应用户的操作反馈再次执行云渲染。

当热点存储模块中没有请求渲染的模型文件时,3d渲染模块根据模型文件的摘要信息从数据库服务器获取对应的模型文件在存储服务器中的外部存储地址。例如,包括对象存储服务器的ip地址、端口号、存储id等的地址信息。

3d渲染模块根据模型文件的外部存储地址从对象存储服务器下载对应的模型文件,3d渲染进程调用3d渲染服务器的计算资源对下载的模型文件进行云渲染。

进一步地,热点存储模块可以将下载的模型文件存储到热点对象存储单元,统计热点对象存储单元中存储的模型文件在预设时间段内被3d渲染进程读取的次数,获取热点对象存储单元中存储的模型文件的使用频率。当热点对象存储单元的可用存储空间小于或者等于预设阈值时或者根据预设的时间周期,按照使用频率从小到大依次删除热点对象存储单元中使用频率小于预设阈值的模型文件,以进一步提高热点模型文件的应用效率。

并且,热点对象存储单元中存储的模型文件可以同时被多个3d渲染进程读取,因此,可以在预设时间段内统计被多个3d渲染进程读取的次数之来更精确地获取相应模型文件的使用频率。热点存储模块可以根据读取模型文件请求中的模型文件摘要信息,判断热点对象存储单元中是否存储有相同的模型文件,具体地,例如可以通过消息摘要算法第五版md5、散列hash算法等获取的固定长度或者非固定长度模型文件摘要信息来判断两个模型文件是否相同。

实施例三

下文结合图4对本发明实施例三提供的用于云渲染的对象获取系统和方法,应用于展示3d对象搜索云渲染结果场景进行详细描述。

如图4所示,该应用场景中,用于处理用户搜索请求的3d对象搜索系统402包括:第一负载均衡服务器4021、集群缓存(memcache)数据库服务器4023、一个或多个3d对象搜索网页(worldwideweb,web)服务器4024。

本发明实施例三公开的用于云渲染的对象获取系统403除了包括上述通过网络连接的调度服务器4033、对象存储服务器4037、数据库服务器(包括可写数据库服务器4034和可读数据库服务器4035)、以及一个或者多个3d渲染服务器400,还包括:第二负载均衡服务器4031、第三负载均衡服务器4032、一个或多个网页服务代理(webserversproxy)服务器4036。

下文所述的步骤可以分别单独执行,也可以并行执行或者按照预设的顺序来执行。其中,标号相同的步骤,表示数据交互流程的主体相同,但数据交互的具体内容可以相同,也可以有所不同,即该步骤可以包括多项数据交互内容,根据要实现的功能,可以选择不同的数据交互内容组合。

在用户执行3d对象搜索之前,3d渲染服务器403可以通过如下实施例的步骤来完成其运行状态的上报和渲染环境的准备:

步骤18:3d渲染模块4038启动后,在预设的时间或者周期地,通过调度服务器4033提供的接口主动向调度服务器4033所在的负载均衡服务器(例如,第二负载均衡服务器4031)上报注册信息;

步骤20:网页服务代理服务器4036在预设的时间或者周期地,通过调度服务器4033提供的接口主动向调度服务器4033所在的载均衡服务器(例如,第二负载均衡服务器4031)上报其运行状态信息;

步骤19:第二负载均衡服务器4031按照传输控制协议(transmissioncontrolprotocol,tcp)代理的规则,将接收到的运行状态信息分发给较空闲的调度服务器4033进行处理;

步骤21:调度服务器4033通过处理其他服务器定期上报的运行状态信息,获取系统中各个功能模块的运行状态,并将结果存储到可写数据库服务器4034;

步骤22:可写数据库服务器4034和可读数据库服务器4035通过数据库的配置进行自动同步,同时可以实现主模型数据库的冗余备份。

步骤13:memcache数据库服务器4023从可读数据库服务器4035同步主模型数据库中存储的模型文件摘要信息和对应的模型文件在对象存储服务器4037中的外部存储地址的url。

通过3d对象搜索装置401登录3d对象搜索系统402后,进行3d对象搜索的流程可以通过如下实施例的步骤实现:

步骤1:用户通过3d对象搜索装置401上的浏览器在3d对象搜索的首页,向第一负载均衡服务器4021发送包括3d对象描述信息的3d对象搜索请求,例如将3d模型名称作为搜索关键字;

步骤4:第一负载均衡服务器4021按照tcp代理的规则,将收到的3d对象搜索请求发送给较空闲的3d对象搜索web服务器4024进行处理;

步骤16:3d对象搜索web服务器4024通过调用memcache数据库服务器4023提供的表述性状态传递应用程序编程接口(representationalstatetransferapplicationprograminterface,restfulapi),获取包括3d对象索引信息的搜索结果列表,并生成搜索结果页面;

步骤5:3d对象搜索web服务器4024将搜索结果页面发送给第一负载均衡服务器4021;

步骤2:第一负载均衡服务器4021将搜索结果页面发送给3d对象搜索装置401。

用于云渲染的对象获取系统403响应于渲染请求并显示3d对象实时离屏渲染结果的流程可以通过如下实施例的步骤实现:

步骤1:用户通过3d对象搜索装置401上的浏览器点击搜索结果页面里的模型文件的缩略图,向第一负载均衡服务器4021发送渲染请求;

步骤4:第一负载均衡服务器4021按照http代理的规则,将收到的渲染请求发送给较空闲的3d对象搜索web服务器4024进行处理;

步骤16:3d对象搜索web服务器4024通过memcache数据库服务器4023查询该模型文件分类、渲染要求、计算资源预算等信息,并为本次渲染请求分配sessionid;

步骤17:3d对象搜索web服务器4024将包括sessionid以及渲染要求的渲染请求发送给调度服务器4033对应的第二负载均衡服务器4031;

步骤19:第二负载均衡服务器4031分配合适的调度服务器4033对渲染请求进行处理;

步骤24:调度服务器4033通知对应的3d渲染模块4038创建3d渲染进程4039,为渲染请求中的sessionid分配合适的3d渲染进程4039;

步骤21:调度服务器4033将sessionid与3d渲染进程4039的映射关系存储到可写数据库服务器4034,进一步地,可以通过步骤22将该映射关系同步到可读数据库服务器4035;

步骤26:3d渲染模块4038根据调度服务器4033的通知创建3d渲染进程4039;

在上述步骤16之后,可以在执行步骤17、19、21、24、以及26时,并行执行如下步骤:

步骤5:3d对象搜索web服务器4024将包括sessionid和3d渲染服务器400的ip地址的3d对象渲染信息,发送给第一负载均衡服务器4021;

步骤2:第一负载均衡服务器4021将该3d对象渲染信息发送给3d对象搜索装置401;

步骤8:3d对象搜索装置401解析(例如,通过java脚本语言解析)该3d对象渲染信息后,根据3d渲染服务器400的ip地址,通过第三负载均衡服务器4032连接到于云渲染的对象获取系统403,并发送获取3d对象渲染结果请求;

步骤9:第三负载均衡服务器4032为该获取3d对象渲染结果请求分配合适的web服务代理服务器4036;

步骤23:web服务代理服务器4036通过将请求中的sessionid与从可读数据库服务器4035获取的sessionid进行匹配,来标识不同的3d对象搜索装置401发起的会话;

步骤11:web服务代理服务器4036根据步骤23的匹配结果为该获取3d对象渲染结果请求分配对应的3d渲染进程4039;

步骤25:成功创建的3d渲染进程4039启动后,3d渲染进程4039从热点存储模块4040获取模型文件在热点对象存储单元4041的内部存储地址;

步骤27:3d渲染进程4039根据内部存储地址直接从热点对象存储单元4041读取对应的模型文件,进行3d对象实时离屏渲染,获取实时离屏渲染结果;

当步骤25中热点存储模块4040返回的结果表示热点对象存储单元4041中没有请求渲染的模型文件时,还可以进一步包括步骤28:3d渲染进程4039从可读数据库服务器4035获取请求渲染的模型文件在对象存储服务器4037中的外部存储地址;以及步骤29:3d渲染进程4039根据外部存储地址从对象存储服务器4037下载对应的模型文件,进行3d对象实时离屏渲染,获取实时离屏渲染结果;

步骤12:3d渲染进程4039将3d对象实时离屏渲染结果发送给web服务代理服务器4036;

步骤10:web服务代理服务器4036根据该3d对象实时离屏渲染结果生成3d对象实时离屏渲染结果页面,发送给第三负载均衡服务器4032;

步骤7:第三负载均衡服务器4032将3d对象实时离屏渲染结果页面发送给3d对象搜索装置401。

实施例四

下文结合图5和图6对本发明一实施例提供的3d渲染服务器通过实时离屏渲染实现云渲染的具体过程进行详细说明。其中,3d渲染服务器可以是分布在多个物理和/或逻辑位置的分布式服务器,例如基于多家云计算平台服务商提供的云计算服务器。

如图5所示,3d渲染服务器的云渲染计算资源可以包括:宿主机、多个图形处理器(graphicprocessingunit,gpu)、内存、以及内存管理单元(memorymanagementunit,mmu)。

在宿主机上设置多个虚拟机v1、vn,宿主机上运行的虚拟机软件可以选择模拟处理器软件qemu,操作系统可以选择linux操作系统,多个gpu可以选择英伟达nvidia公司生产的gtx970显卡。当一个虚拟机启动时,3d渲染服务器创建3d渲染进程时分配一个未被使用的gpu与该虚拟机进行绑定,该gpu被该虚拟机独占使用,直到该虚拟机注销或者重置,该gpu不被其他虚拟机共享使用;当另一个虚拟机启动时,分配另一个未被使用的gpu与该另一个虚拟机进行绑定,来处理另一项渲染任务。

在绑定过程中,可以通过虚拟功能输入/输出外设组件互连标准(virtualfunctioninput/outputperipheralcomponentinterconnection,vfio-pci)驱动根据映射关系来配置mmu与输入/输出内存管理单元(input/outputmemorymanagementunit,iommu)(图6中f和g步骤),从而使虚拟机的gpu驱动可以直接访问gpu硬件(图6中c步骤),gpu硬件可以直接访问虚拟机的内存(图6中d步骤)。

具体的,宿主机将内存映射到物理地址空间(hostphysicaladdressspace,hpaspace)的内存地址区域,对该区域的访问即可实现对内存的访问,将宿主机的gpu的物理资源映射到物理地址空间的gpu地址区域,虚拟机的gpu驱动可以访问该段地址空间,实现对gpu进行控制。进一步地,由于可以同时设置多个虚拟机分别处理多个渲染任务,将不连续的虚拟机内存区域映射为连续的vfio-pci地址空间段。因此,每个虚拟机的内存在访问内存时,先访问位于地址空间的内存地址空间,内存地址空间提供与该虚拟机内存地址对应的宿主机内存,继而进行数据的读写操作;虚拟机的gpu驱动在访问gpu时先通过gpu地址空间得到映射设于gpu地址空间的gpu控制寄存器地址,通过gpu控制寄存器,继而控制gpu进行实时离屏渲染渲染。

如图6所示,使用如上述配置的3d渲染服务器的云渲染计算资源进行实时离屏渲染渲染包括以下步骤:

步骤a:虚拟机中的3d应用程序将从热点存储模块读取或者从对象存储服务器中下载的模型文件写入虚拟机的内存中;

步骤b:虚拟机中的3d应用程序将渲染请求发送到虚拟机的gtx970驱动程序;

步骤c、gtx970驱动访问gpu地址空间段,将渲染请求写入gtx970控制寄存器中;

步骤d:gtx970根据控制寄存器的信息,对映射的连续的vfio-pci地址空间段进行直接内存访问,获取渲染所需的数据;

步骤e:gtx970对渲染数据进行处理,将渲染结果输出至请求端。

上述实施例中,通过采用gpu虚拟化技术,将多块gpu的计算能力资源化,根据客户端提交的实时3d渲染请求在3d渲染服务器端按需进行3d云渲染,并将实时3d渲染结果以视频流的方式发送到客户端屏幕,并可以对客户端的键盘、鼠标、游戏操纵设备进行操作映射,使服务器端的3d渲染对象可以实时响应客户的操作需求,上述云渲染具有如下优点:

1、gpu运算能力资源化,按需弹性分配,是大型3d软件(例如,计算机辅助工程(computeraidedengineering,cae)工具、游戏等)软件即服务(software-as-a-service,saas)化的基本条件;2、不消耗客户端gpu资源,可在任何客户端运行大型3d应用;3、跨平台能力强,部署成本低,现有的gpu虚拟化技术仅支持nvidia的专业显卡价格昂贵,并且只支持directx3d和windows7虚拟机,本发明还利用gpu虚拟技术支持nvidia的普通游戏,支持windows和linux虚拟机,同时支持opengl、directx3d带来灵活的跨平台能力;4、客户端无需下载任何3d模型就可以直接在浏览器或app中直接显示、操纵3d内容。

并且,通过3d渲染进程向热点存储模块发送读取模型文件请求,当热点存储模块中的热点对象存储单元中存储有请求渲染的模型文件时,根据内部存储地址直接读取对应的模型文件,根据渲染请求中的渲染要求对读取的模型文件进行云渲染,能够提高模型文件的利用率,避免热点模型文件的重复下载,降低渲染服务器与对象存储服务器之间的带宽需求,缩短渲染对象获取的时间并增强渲染的实时性。

以上实施方式仅用于说明本发明的较佳实施例,而非对本发明的限制。相关技术领域的技术人员在不脱离本发明的原则和范围的情况下,做出的各种替换、变型以及改进均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1