一种基于改进的三维渲染引擎分布式渲染方法及系统与流程

文档序号:12787372阅读:366来源:国知局
一种基于改进的三维渲染引擎分布式渲染方法及系统与流程

本发明涉及显示渲染技术领域,特别是涉及一种基于改进的三维渲染引擎分布式渲染方法及系统。



背景技术:

在医学、地质勘探等领域需要展示超高清的图片以及更加精细的源数据,因此在采集视频或者创建完模型之后,为了观察实际效果,通常需要对视频或模型进行渲染。

目前,常规渲染方式是在本地主机上进行渲染,这就要求本地主机上存储所有的渲染要素,而单台主机的硬件资源毕竟有限,显示器像素及系统运算能力都达不到要求,这样就不能渲染出超高分辨率的效果,不利于观察图像中精细部分,并且渲染效率低耗时长。尤其是在用户想要获得更大的显示尺寸、更宽的视野、更高的显示分辨率和更具冲击力的视觉效果的情形下,会导致GPU(graphics processing unit,图形显示卡)运算量成倍增长。

上述单台主机由于自身硬件的计算力和显示性能有限,而导致的实时或及时渲染无法达到预期效果,以及大尺寸、超高分辨率三维场景渲染带来的实现较困难的技术问题,已经成为了本领域技术人员亟待解决的技术难题。



技术实现要素:

本发明实施例中提供了一种基于改进的三维渲染引擎分布式渲染方法及系统,以解决现有技术中单台主机由于自身硬件计算力和显示性能有限,而导致的实时或及时渲染无法达到预期效果,以及大尺寸、超高分辨率三维场景渲染难于实现的技术问题。

为了解决上述技术问题,本发明实施例公开了如下技术方案:

本发明实施例的第一方面,提供了一种基于改进的三维渲染引擎分布式渲染方法,所述方法包括:

通过主控制台将待渲染数据实时发送给与所述主控制台相连接的所有渲染节点,所述待渲染数据包括三维模型或视频图像数据;

所述渲染节点接收所述待渲染数据,并对所述待渲染数据中的每一帧待渲染数据依次进行三维渲染运算、相应得到每一帧的三维图像数据,同时所述渲染节点每处理完一帧待渲染数据便向所述主控制台发送帧渲染完毕信号;

所述主控制台判断是否接收到所有所述渲染节点发送的所述帧渲染完毕信号;

当所述主控制台接收到所有所述渲染节点返回的所述帧渲染完毕信号时,发送显示指令给所有所述渲染节点,以使所有所述渲染节点同步显示所述三维图像数据。

优选地,所述方法还包括:

所述主控制台判断是否接收到渲染节点改变指令;

如果接收到渲染节点改变指令,则根据所述渲染节点改变指令重新计算所述渲染节点的位置,得到新的渲染节点组织结构。

优选地,所述根据所述渲染节点改变指令重新计算所述渲染节点的位置,包括:

根据所述渲染节点改变指令,获取所述渲染节点的需求数目;

根据所述需求数目,对整个渲染屏幕重新进行划分;

根据重新划分后的所述整个渲染屏幕,计算所述渲染节点在所述整个渲染屏幕中的位置。

优选地,所述通过主控制台将待渲染数据实时发送给与所述主控制台相连接的所有渲染节点,包括:

通过主控制台获取采集目标的实时高清图像;

将所述高清图像进行信号处理、图形变换、坐标变换和明暗变换,实时生成待渲染数据;

通过所述主控制台将所述待渲染数据发送给与所述主控制台相连接的所有渲染节点。

优选地,所述通过主控制台将待渲染数据实时发送给与所述主控制台相连接的所有渲染节点,还包括:

所述主控制台按照待渲染对象中的节点对所述待渲染对象进行划分,得到待渲染数据;

将划分好的所述待渲染数据分别实时发送给与所述主控制台相连接的所有渲染节点。

优选地,所述渲染节点接收所述待渲染数据之后,还包括:

所述渲染节点通过一组模板类模型对所述待渲染数据进行封装,得到具有八叉树结构的二进制文件,并加载所述二进制文件;

判断所述二进制文件是否加载成功;

如果加载失败,则直接加载所述待渲染数据。

优选地,所述渲染节点接收所述待渲染数据,并对所述待渲染数据中的每一帧数据依次进行三维渲染运算、相应得到每一帧的三维图像数据,同时所述渲染节点每处理完一帧数据便向所述主控制台发送帧渲染完毕信号,包括:

所述渲染节点将接收完毕的所述待渲染数据中的一帧待渲染数据发送给GPU;

所述GPU接收所述一帧待渲染数据,并启动三维渲染运算,得到一帧三维图像数据;

所述渲染节点判断是否接收到所述GPU发送的帧渲染完毕信号;

当所述渲染节点接收所述GPU发送的帧渲染完毕信号后,从所述GPU中读取所述一帧三维图像数据并存入板载内存,同时将所述帧渲染完毕信号发送给所述主控制台。

优选地,所述主控制台发送显示指令给所有所述渲染节点,以使所有所述渲染节点同步显示所述三维图像数据,包括:

所述主控制台发送显示指令给所有所述渲染节点;

所有所述渲染节点接收到所述显示指令后,把最新渲染完毕的一帧三维图像数据输出显示;

所述渲染节点判断是否接收到下一个显示指令;

如果接收到下一个显示指令,则切换到渲染完毕的下一帧三维图像数据进行输出显示。

本发明实施例的第二方面,提供了一种基于改进的三维渲染引擎分布渲染系统,所述系统包括主控制台和与所述主控制台通信连接的渲染节点,其中:

所述主控制台包括控制机和服务器;

所述主控制机,用于通过所述服务器将待渲染数据发送所述渲染节点,所述主控制机还用于接收所有所述渲染节点发送的帧渲染完毕信号,当接收到所有所述渲染节点返回的所述帧渲染完毕信号时,便发送显示指令给所有所述渲染节点;

所述渲染节点包括数据显示器和数据处理器,所述数据显示器的屏幕分辨率包括4096*2160;

所述数据处理器,用于接收所述待渲染数据,并对所述待渲染数据中的每一帧待渲染数据依次进行三维渲染运算、相应得到每一帧的三维图像数据,同时所述数据处理器每处理完一帧待渲染数据便向所述主控制机发送帧渲染完毕信号;

所述数据处理器,还用于接收所述显示指令,并在所述数据显示器上同步显示所述三维图像数据。

优选地,所述主控制机,还用于判断是否接收到渲染节点改变指令;所述服务器,还用于根据所述渲染节点改变指令重新计算所述渲染节点的位置,得到新的渲染节点组织结构,并重新加载所述新的渲染节点组织结构。

由以上技术方案可见,本发明实施例提供的一种基于改进的三维渲染引擎分布式渲染方法及系统,通过主控制台将待渲染数据实时发送给与所述主控制台相连接的所有渲染节点;所述渲染节点接收所述待渲染数据后,对所述待渲染数据中的每一帧数据依次进行三维渲染运算、相应得到每一帧的三维图像数据,通过采用各个渲染节点渲染三维模型或者视频图像的方法,降低了数据传输对系统总线带宽与CPU处理时间的浪费,提高了整个系统的运行效率。同时,通过设置所述渲染节点每处理完一帧数据便向所述主控制台发送帧渲染完毕信号,当所述主控制台接收到所有所述渲染节点返回的所述帧渲染完毕信号时,发送显示指令给所有所述渲染节点,以使所有所述渲染节点同步显示所述三维图像数据,实现了各个渲染节点之间每帧图像显示的完全同步,进而保证了渲染系统快速、正确的显示,在三维图像的生成、演示及仿真方面有较高的实用价值。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于改进的三维渲染引擎分布式渲染方法的流程示意图;

图2为本发明实施例提供的渲染节点处理待渲染数据的流程示意图;

图3为本发明实施例提供的改变渲染节点组织结构的渲染方法的流程示意图;

图4为本发明实施例提供的整个渲染屏幕在二维坐标系中的示意图;

图5为本发明实施例提供的渲染节点的屏幕在二维坐标系中的示意图;

图6为本发明实施例提供的一种基于改进的三维渲染引擎的分布式渲染系统的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本 发明保护的范围。

参见图1,为本发明实施例提供的一种基于改进的三维渲染引擎分布式渲染方法的流程示意图,具体包括如下步骤:

S110:通过主控制台将待渲染数据实时发送给与所述主控制台相连接的所有渲染节点,所述待渲染数据包括三维模型或视频图像数据。

为实现对待渲染对象的实时渲染,在步骤S110之前,可以包括如下步骤:

S1101:通过主控制台获取采集目标的实时高清图像。

比如,应用在医学检测仿真系统,将微型植入型摄像头,定向植入到靶器官,实时拍摄并传输,通过蓝牙、红外、wifi等传输途径,将高清图像传输到所述主控制台,所述摄像头在完成给定任务后可自行降解或自行排出体外。当然,所述方法还可以用于油气管道检修等技术领域。

S1102:将所述高清图像进行信号处理、图形变换、坐标变换和明暗变换,实时生成待渲染数据。然后,通过所述主控制台将所述待渲染数据发送给与所述主控制台相连接的所有渲染节点。

当然,也可以不经过所述处理步骤S1102,即直接将所述高清图像通过所述主控制台发送给与所述主控制台相连接的所有渲染节点。

进一步地,在主控制台待渲染数据发送给与所述主控制台相连接的所有渲染节点之前,需要对待渲染对象进行场景分割,本发明实施采用静态节点分割的方式,具体包括如下步骤:

S1103:所述主控制台按照待渲染对象中的节点对所述待渲染对象进行划分,得到待渲染数据。

S1104:将划分好的所述待渲染数据分别实时发送给与所述主控制台相连接的所有渲染节点。

本实施例,在开始渲染之前,采用容易实现的节点划分法对所述待渲染对象进行划分、并将划分好的待渲染数据发送给各个渲染节点,减轻了渲染前主控制台中处理器的任务量,进而可有效防止渲染过程中帧延迟情形的发生。

步骤S120:所述渲染节点接收所述待渲染数据,并对所述待渲染数据中的每一帧待渲染数据依次进行三维渲染运算、相应得到每一帧的三维图像数据,同时所述渲染节点每处理完一帧待渲染数据便向所述主控制台发送帧渲染完毕信号。

其中,所述渲染节点接收所述待渲染数据后,首先需要对所述待渲染数据进行数据 加载,本发明实施例中,根据待渲染数据以顶点和面作为基本构成元素的特点,按照以下步骤进行待渲染数据加载:

首先,所述渲染节点通过一组模板类模型对所述待渲染数据进行封装,得到具有八叉树结构的二进制文件,并加载所述二进制文件。然后,判断所述二进制文件是否加载成功,如果加载失败,则直接加载所述待渲染数据。

其中,所述八叉树类似于轴对齐BSP树,沿着长方体的三条轴对所述长方体进行同时分割,分割点必须位于所述长方体的中心,这样可以生成8个新的长方体。每个包围盒以其长方体的顶点坐标中的最大值、最小值两个三维向量进行描述。

这样,所述渲染节点便可以对加载好的所述待渲染数据以八叉树的包围盒结构进行管理,其中,每个包围盒节点包含包围盒数据、包围球数据以及其中的多边形面数据。进而在渲染过程中,在渲染某个具体节点时,可以首先根据该根节点的包围球与视锥的信息进行可视化检测,若该包围球完全位于视锥内则认为该包围盒内的多边形均为可见,则遍历该节点下的所有节点并逐个执行各个节点的渲染指令;若包围球只是部分位于视锥内,则该节点为部分可见,此时需要对该节点的所有子节点进行可见性的检测。上述迭代过程从模型对象的根节点开始,直至对模型的所有节点进行检测和渲染后结束。当确定某个节点可以进行渲染时,首先查找该节点的对应显示列表是否存在,若存在则直接采用显示列表进行渲染,否则根据节点内存储的多边形面数据创建显示列表并据此进行渲染。通过上述待渲染数据的加载以及管理方式,提高了数据加载的速度,以及渲染速度。

进一步地,如图2所示,所述渲染节点对所述待渲染数据中的每一帧待渲染数据依次进行三维渲染运算、相应得到每一帧的三维图像数据,同时发送帧渲染完毕信号,包括如下步骤:

S1201:所述渲染节点将接收完毕的所述待渲染数据中的一帧待渲染数据发送给GPU。

S1202:所述GPU接收所述一帧待渲染数据,并启动三维渲染运算,得到一帧三维图像数据。

S1203:所述渲染节点判断是否接收到所述GPU发送的帧渲染完毕信号。

S1204:当所述渲染节点接收所述GPU发送的帧渲染完毕信号后,从所述GPU中读取所述一帧三维图像数据并存入板载内存,同时将所述帧渲染完毕信号发送给所述主控制台。

步骤S130:所述主控制台判断是否接收到所有所述渲染节点发送的所述帧渲染完毕信号。

步骤S140:当所述主控制台接收到所有所述渲染节点返回的所述帧渲染完毕信号时,发送显示指令给所有所述渲染节点,以使所有所述渲染节点同步显示所述三维图像数据。

在显示方式上,本实施例采用方法为:当所有所述渲染节点接收到所述显示指令后,把最新渲染完毕的一帧三维图像数据输出显示;然后,所述渲染节点判断是否接收到下一个显示指令,如果接收到下一个显示指令,则切换到渲染完毕的下一帧三维图像数据进行输出显示。这样,便可以将处理完的三维图像数据进行连续显示。

本实施例采用各个渲染节点渲染三维模型或者视频图像的方法,降低了数据传输对系统总线带宽与CPU处理时间的浪费,提高了整个系统的运行效率。同时,通过设置所述渲染节点每处理完一帧数据便向所述主控制台发送帧渲染完毕信号,当所述主控制台接收到所有所述渲染节点返回的所述帧渲染完毕信号时,发送显示指令给所有所述渲染节点,以使所有所述渲染节点同步显示所述三维图像数据,实现了各个渲染节点之间每帧图像显示的完全同步,进而保证了渲染系统快速、正确的显示。

如图3所示,本实施例中提供的方法还包括所有所述待渲染节点处理完一帧待渲染数据后,动态改变渲染节点的过程,具体包括如下步骤:

S150:所述主控制台判断是否接收到渲染节点改变指令。

S160:如果接收到渲染节点改变指令,则根据所述渲染节点改变指令重新计算所述渲染节点的位置,得到新的渲染节点组织结构。

所述主控制台中的服务器重新加载所述新的渲染节点组织结构后,再执行步骤S110。相反,如果所述主控制台未接收到渲染节点改变指令,则直接执行步骤S110,即直接开始渲染下一帧待渲染数据。

其中,所述根据所述渲染节点改变指令重新计算所述渲染节点的位置,具体包括:

S1601:根据所述渲染节点改变指令,获取所述渲染节点的需求数目。

S1602:根据所述需求数目,对整个渲染屏幕重新进行划分。

如图4所示,所述整个渲染屏幕在一个二维坐标系中,其中,x、y轴长度为1。如图5所示,所述渲染节点的个数为16个,则在所述二维坐标系中,所述渲染节点的屏幕都有对应好的x、y值。所以如果需要改变渲染节点时,则对所述整个渲染屏幕重新进行划分。

S1603:根据重新划分后的所述整个渲染屏幕,计算所述渲染节点在所述整个渲染屏幕中的位置。

本实施例,通过所述主控制台接收渲染节点改变指令,重新计算所述渲染节点的位 置,能够根据用户的需求或者渲染精度的要求动态改变渲染组织结构,使用户可以一键设置渲染节点,从而提高所述分布式渲染方法的灵活性,提高工作效率。

本实施例还提供了一种基于改进的三维渲染引擎分布渲染系统,如图6所示,所述系统包括主控制台6100和与所述主控制台6100通信连接的渲染节点6200。

所述主控制台6100是系统的主控器级系统对外的总交互接口,负责待渲染数据、数据集同步控制的命令分发;所述渲染节点6200主要负责本节点范围内的三维模型或者视频图像数据同步运算,图形生成及图像同步输出显示等。

所述主控制台6100包括控制机6101和服务器6102,其中,所述主控制机6101用于通过所述服务器6102将待渲染数据发送所述渲染节点6200;所述主控制机6101还用于接收所有所述渲染节点6200发送的帧渲染完毕信号,当接收到所有所述渲染节点6200返回的所述帧渲染完毕信号时,便发送显示指令给所有所述渲染节点6200。

所述渲染节点6200包括图像数据显示器6201和数据处理器6202,其中,所述数据处理器6202,包括CPU、图形显示卡等,用于接收所述待渲染数据,并对所述待渲染数据中的每一帧待渲染数据依次进行三维渲染运算、相应得到每一帧的三维图像数据,同时所述数据处理器6202每处理完一帧待渲染数据便向所述主控制机6101发送帧渲染完毕信号;所述数据处理器6202,还用于接收所述显示指令,并在所述数据显示器6201上同步显示所述三维图像数据。

所述数据显示器6200的屏幕采用4096*2160超高分辨率屏幕,当然,还可以采用7680*4320等其它高分辨率屏幕,本实施例通过采用高分辨率屏幕在科学可视化以及虚拟现实等领域中,能获得更多的显示细节。

进一步地,所述主控制机6101,还用于判断是否接收到渲染节点改变指令;所述服务器6102,还用于根据所述渲染节点改变指令重新计算所述渲染节点的位置,得到新的渲染节点组织结构,并重新加载所述新的渲染节点组织结构。

本实施例提供的分布式渲染系统,在执行渲染任务时,所述主控制台自动地将每帧画面分割成不同的区域,分配到不同的节点,由各个所述渲染节点各自单独完成渲染,最后把各个渲染节点所渲染的图像合并成一张大的图像,从而实现超大分辨率三维场景的快速渲染。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过 程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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