第1节 渲染农场基础
1. 集群渲染技术产生的背景
集群计算机(或高性能计算机)通常分为SMP和MPP两种:
(1)SMP(symmetric multiprocessing,对称多处理),计算机的I/O总线、多处理器、内存等所有的控制都运行在一个操作系统中(通常为Unix或Linux),可以对单位任务进行处理。
(2)MPP(massively parallel processing,大规模并行处理):每个处理器都有属于自己的操作系统,通过某种通信协议连接这些操作系统,从而可以同时处理同一程序的不同部分。MPP方式一般都使用通用的计算机,具有较高性价比,但是系统也变得更为复杂。通过自己的协议或者通信接口来使CPU彼此连接,这需要照顾到系统资源以及任务分配等很多问题,特别是网络性能。
在CG行业,通常称Cluster(集群)为“Render Farm(渲染农场)”。Render Farm(集群渲染)是实现高效渲染的解决方案,可以渲染多种操作系统下如AE、Digital Fusion、Combustion、Shake等合成软件场景,主要应用于电影电视、CG行业的三维场景渲染、三维模型渲染、特效制作等需要长时间渲染的图形图像。
集群渲染技术具有以下优点:
● 多颗多核处理器的密集式服务器渲染节点将计算能力发挥至极至;
● 满足高速带宽的任务分发管理中心;
● 支持多应用,需要复杂运算的场景统一部署;
● 兼容多操作系统、多软件;
● 实时监控渲染动态,随时调整任务;
● 数据共享;
● 易操作、易管理;
● 稳定性,安全的数据与足够的网络带宽环境;
● 单机具备升级空间,系统具备扩容性。
2. 渲染农场
集群(Cluster)指的是一组计算机通过通信协议连接在一起的计算机群,它们能够将工作负载从一个超载的计算机迁移到集群中的其他计算机上,这一特性称为负载均衡(load balancing),它的目标是使用主流的硬件设备组成网格计算能力,达到、甚至超过天价的超级计算机的计算性能。典型的超级计算机生产厂商包括IBM、SGI,以及其他一些大学、科研组织。目前的集群技术应用于电影电视、CG行业时,主要用来解决长时间的图像渲染问题,所以被称为“Render Farm(渲染农场)”。
Most render farms are considered to be a cluster rather than a Gridas the computers are situated within the same location and with a singleadministration.
渲染农场(Render Farm)是“分布式并行集群计算系统”的通俗叫法,是一种利用现成的CPU、以太网和操作系统构建的超级计算机,利用连接在网络中的多台渲染节点通过管理服务器和管理软件分发任务来达到批量运算的目的。它使用主流的专业计算机硬件设备达到或接近超级计算机的计算能力,利用多台计算机的集群计算能力来减少渲染时间,类似“人多好干活”的道理。其中,易管理、可监控、计算容错、安全数据处理、多任务是实现集群效率的关键。
一个渲染集群是由一个管理节点和多个渲染节点通过网络互联组成,在后台为前端制作人员使用的工作站提供渲染服务,作为运行环境的渲染集群管理软件则是整个网络的神经中枢,用于完成主机的管理、协调任务的提交和分配、与安装在渲染节点上的渲染引擎通信等工作。工作站先通过网络将渲染任务提交到渲染集群的管理节点上,然后由其负责分派到与之联网的多个渲染节点,在渲染节点上由一个定制开发的可执行模块负责与安装在渲染节点上的负责渲染当前分配的任务的渲染引擎直接通讯,控制其完成渲染。出于管理渲染任务数据的需要,通常管理节点会有一个大容量并能提供很高读写带宽的本地存储用于共享数据。
集群渲染平台(Render Farm)是利用集群计算机的优势,通过网络分发软件和并行3D 渲染软件,充分利用集群网络中的计算机硬件资源,将复杂的3D 场景通过大量的计算,生成预览图像或最终动画图像,以供效果调整审定或后期制作合成之用。集群渲染系统能够对整个网络上的资源进行合理的分配和优化,对提交给系统的作业进行管理,实施跨平台、多引擎、多任务的大规模渲染。它打破了一般的分散渲染的工作模式,大大的提高了软硬件资源利用率。对系统规模而言,它可以在数台到上千台的规模间灵活配置,并且还能够对不同平台系统进行管理,扩展性好;对资源管理而言,能够根据任务需求,动态的增加或减少渲染节点数量,动态性好;对任务类型而言,能够针对多种软件实施渲染,实用性强。
在集群系统中,所有提交和管理的工作可以在图形工作站或者PC机上完成,并且可以监视整个渲染进程,这些正在渲染和等待渲染的工作,在集群渲染管理软件中叫Queued(渲染队列)。
利用渲染集群进行渲染作业的处理,可以有效提高渲染作业处理的效率,节约人力资源成本,降低三维动画制作的成本。
渲染农场是指一种专门用作渲染的计算机集群技术,它采用分布式计算的方式,将渲染任务均衡的分配到集群的各个计算节点,最终将渲染结果回收。和用作高性 能计算的超级计算机比起来,渲染农场的每个节点都是独立的,一般情况下它只和文件服务器和任务调度服务器等通信,和其他计算节点不做通信。而超级计算机则 要求每个节点之间的网络带宽足够大,延迟足够小,因为计算时各个计算节点之间将会频繁的通信。
渲染农场的技术,包括渲染农场架构的选择,硬件的选型,机房的装修,以及渲染农场建立起来后的运维管理技术等等,是一个系统复杂的过程。而这里边最核心的则属于渲染集群管理软件,它管理着整个渲染农场的核心硬件设备,整个系统的效率很大程度依赖于此。渲染农场管理软件不仅仅管理硬件,对运维中的各种问题也需提供技术支持,例如计费系统等。
3. 渲染农场的基本原理
3.1 负载均衡
分布式并行计算分为空间上的并行和时间上的并行。空间上的并行是指用多个处理器并发的执行计算,比如Mental ray渲染器就支持单帧画面分割渲染,时间上的并行就是指流水线技术,比如使用强氧Render Farm提交渲染电影序列。现在的集群计算系统的前沿科学研究主要是空间并行方面的,时间上的流式并行计算已经得到广泛应用。
以电影制作为例,一段电影图像序列需要很长时间的渲染,(通常2K分辨率所需要的渲染时间能被大家接受的大概是在每帧1小时左右),管理节点将序列图像分割为若干单元通过Web分配给其他节点,这个过程是动态的,集群软件会检查每个节点的当前负载,如果某个计算节点硬件配置比较高,很快完成了第一次分配的渲染工作,那么管理节点继续会将剩余工作分割为若干单元然后再发送给这个已完成渲染的空闲计算节点,直到渲染工作完成。
目前用于CG渲染的商业Render Farm软件的核心功能其实就是动态分配渲染进程、网络监控和数据管理。负载均衡系统使计算负载可以在计算机集群中尽可能平均分摊处理。负载一般是需要应用程序处理,这样的系统适合于运行同一组应用程序的大量用户,比如用于Maya渲染的工作组,每个节点都可以处理一部分工作,并且可以在集群节点之间动态分配负载,以实现平衡。集群计算管理需要涉及网络流量和流量管理。负载均衡应用服务要求集群软件检查每个节点的当前负载,并确定哪些节点可以接受新的作业,这最适合运行如数据分析等串行和批处理作业,所以很容易允许具有批渲染能力的应用软件加载集群功能,一些集群软件被开发出来,它们通过TCP/IP 进行流量管理,并且针对特定的应用程序的API或Script接口编写批处理命令,如Muster,并且这些集群软件还可以配置成关注某特定节点的硬件或操作系统功能(受应用软件制约),这样,群集中的节点就没有必要是一致的,硬件和系统异构也就很容易实现。实现负载均衡的方式可以分为软件负载均衡和硬件负载均衡两种方式,由于硬件负载均衡的实现非常昂贵,很多集群系统都采用了软件负载均衡。
3.2 并行计算
并行计算是将整个数据分割成N个模块分配给N个CPU计算,在每一个CPU中启动计算进程,由主进程调度各CPU的计算。 并行集群计算有一个效率发挥的问题,理论上CPU数量和渲染时间与实际会有差异,而且不同系统的实际时间也不尽相同。 理论上说CPU数量越大,渲染时间越短,它们成反比关系。然而事实上,动画渲染花费的时间和CPU的数量并非成线性反比。 当计算节点到某个数量级别的时候,简单地增加CPU数量或者计算节点根本无法有效地提高渲染的效率。
CPU个数达到一定数量后系统效率不但不增加,还有可能减少。造成这种问题的瓶颈主要在于通信(不止网络通信,还包括PC内部CPU、内存和硬盘之间的通信)和软件的算法,系统中使用多少个节点计算机(基于CPU的数量)也是需要考虑的问题。这就需要一个拥有优秀算法的集群渲染管理软件进行调度并发挥每个CPU的效能并且使用性能优异的硬件配置。
4. 渲染农场的基本构成
Most render farms are considered to be a cluster rather than a Gridas the computers are situated within the same location and with a singleadministration.
一般来说,渲染农场主要硬件和软件两大部分构成。其中,硬件包括渲染用户所使用的图形工作站、个人计算机,用来管理渲染农场及其处理渲染作业的服务器、工作站等;软件主要包括操作系统(Operating System)、资源管理软件(Resource ManagementSoftware for Computer Grids or Clusters)、集群渲染管理软件(Rendering Management Software)、渲染引擎(Render Engine)与渲染器(Renderer)。
但是,这些软件往往并不是独立实现的,一个软件有时可以同时实现渲染作业分发、渲染引擎、渲染器中的多项功能,如EnFuzion是一种分布式并行渲染集群管理软件(Render Farm Management Software),其插件EnFuzion 3ds Max Plug-in、EnFuzion After Effects Plug-in、EnFuzion Maya Plug-in、EnFuzion mental ray Standalone等相当于一个渲染引擎(Render Engine),它可以使用三维建模软件3DS Max、Maya等自带的渲染工具作为渲染器,也可以使用mental ray、LightWave、Renderman等专业渲染器进行渲染。
4.1 操作系统(Operating System)
The decision here is Linux or Windows and 32 or 64 bit. This willaffect the cost of the render engine, so choose carefully. Linux is moreefficient and will provide for faster render times. 但是,并不是所有的数字内容开发软件、与其兼容的渲染器和渲染引擎都可以运行在Linux操作系统平台上。
4.2 资源管理软件(Resource Management Software for Computer Grids or Clusters)
这里的资源管理软件是指管理本地集群或网格计算资源的软件,如Axceleon EnFuzion、Platform LSF、Sun Grid Engine等,主要用于管理每个集群或网格计算节点的资源、获取集群计算节点的状态,当接收到提交的批处理作业时进行资源的调度。以使渲染节点及时处理由集群渲染管理软件(Rendering Management Software)提交到计算节点的渲染作业。
4.3 集群渲染管理软件(Rendering Management Software/Software)
集群渲染管理软件(Render Management System/Rendering Management Software/Queue Manager/Render Manager/Render Queue)是可以用来管理渲染集群的一种集群管理,能够实现集群内渲染作业的分发与资源调度,如Axceleon EnFuzion、Virtual Vertex Muster、Frantic Film Deadline、PipelineFX Qube!等;
如Virtual Vertex Muster is a Cross-platformdistributed rendering management system.EnFuzion is a render farm managementsoftware for Windows, Linux, OS X, and it supports all major renderingpackages.Qube! is Render farm management software - for distributed builds,rendering, and production pipelines.Maxwell Render is a new render engine basedon the physics of real light.
集群渲染管理软件的作用:
4.4 渲染引擎(Render Engine)
渲染引擎(Render Engine)既可以用于模型的渲染,也可以用于分发渲染作业,如Maxwell Render,针对集群渲染管理软件开发的一个渲染插件也相当于一个渲染引擎,它是渲染器与渲染作业之间交互的工具,用于在渲染农场中分发渲染作业,如分布式并行渲染集群管理软件EnFuzion的插件EnFuzion 3ds MaxPlug-in、EnFuzion AfterEffects Plug-in、EnFuzion LightWavePlug-in、EnFuzion MayaPlug-in、EnFuzion mentalray Standalone、EnFuzion mentalray from Softimage Plug-in。
如The EnFuzion 3ds Max plug-in is a program which integrates EnFuzionwith 3ds Max to enable distributed rendering on a render farm administered byEnFuzion.The EnFuzion 3ds Max plug-in is a standard part of the EnFuzion for RenderFarms software distribution.
渲染引擎的作用:实现集群渲染管理软件与三维建模软件之间的交互,以便通过集群渲染管理软件将渲染作业提交到渲染农场中相应的渲染节点上。提交到渲染节点之后,器渲染作业由三维建模软件自带的渲染器或专门的渲染器来完成渲染作业;渲染作业完成之后,再由渲染引擎将渲染结果返回到渲染作业提交的客户端。
渲染引擎的作用是按照一定方式调度计算资源(硬件),通过渲染器来完成渲染任务,最终得到用户指定渲染结果;而渲染器的作用是在渲染引擎的协调下对用户提交的渲染作业进行处理,以得到用户预期的渲染结果。
4.5 渲染器(Renderer)
渲染器(Render)包括3DS Max等数字内容创作软件自带的渲染工具,Autodesk 3DS Max自带扫描线渲染器(Scanline rendering),以及专门为渲染而开发的独立渲染工具包(rendering packages),如RenderMan、mental ray standalone、Maxwell render、Pixie Renderer等;
渲染器的作用:渲染是指根据所指定的材质、场景的布光来计算明暗程度和阴影以及背景与大气等环境的设置,将场景中创建的集合体(创建的模型)实体显示出来。
Metal ray渲染器的工作原理:在Metal ray对场景进行渲染之前,Metal ray利用“场景藐视”语言程序将场景的数据先翻译。其基本过程为:首先选择Metal ray对场景进行渲染,这时场景中的数据被转换翻译给Metal ray,然后Metal ray在对场景进行重新计算,最终根据需要,场景被渲染成单帧图像或文件。
渲染(Render)是由3D模型、光照模型经过透视投影得到平面图形的过程。
渲染,英文为Render,也有的把它称为着色,但我更习惯把Shade称为着色,把Render称为渲染。因为 Render和Shade值两个词在三维软件中是截然不同的两个概念,虽然它们的功能很相似,但却有不同。Shade是一种显示方案,一般出现在三维软件的主要窗口中,和三维模型的线框图一样起到辅助观察模型的作用。很明显,着色模式比线框模式更容易让我们理解模型的结构,但它只是简单的显示而已,数字图像中把它称为明暗着色法。在像Maya这样的高级三维软件中,还可以用Shade显示出简单的灯光效果、阴影效果和表面纹理效果,当然,高质量的着色效果是需要专业三维图形显示卡来支持的,它可以加速和优化三维图形的显示。但无论怎样优化,它都无法把显示出来的三维图形变成高质量的图像,这时因为 Shade采用的是一种实时显示技术,硬件的速度限制它无法实时地反馈出场景中的反射、折射等光线追踪效果。而现实工作中我们往往要把模型或者场景输出成图像文件、视频信号或者电影胶片,这就必须经过Render程序。
Shade视窗,提供了非常直观、实时的表面基本着色效果,根据硬件的能力,还能显示出纹理贴图、光源影响甚至阴影效果,但这一切都是粗糙的,特别是在没有硬件支持的情况下,它的显示甚至会是无理无序的。
Render效果就不同了,它是基于一套完整的程序计算出来的,硬件对它的影响只是一个速度问题,而不会改变渲染的结果,影响结果的是看它是基于什么程序渲染的,比如是光影追踪还是光能传递。
渲染的基本过程
首先,必须定位三维场景中的摄像机,这和真实的摄影是一样的。一般来说,三维软件已经提供了四个默认的摄像机,那就是软件中四个主要的窗口,分为顶视图、正视图、侧视图和透视图。我们大多数时候渲染的是透视图而不是其他视图,透视图的摄像机基本遵循真实摄像机的原理,所以我们看到的结果才会和真实的三维世界一样,具备立体感。接下来,为了体现空间感,渲染程序要做一些“特殊”的工作,就是决定哪些物体在前面、哪些物体在后面和那些物体被遮挡等。空间感仅通过物体的遮挡关系是不能完美再现的,很多初学三维的人只注意立体感的塑造而忽略了空间感。要知道空间感和光源的衰减、环境雾、景深效果都是有着密切联系的。
渲染程序通过摄像机获取了需要渲染的范围之后,就要计算光源对物体的影响,这和真实世界的情况又是一样的。许多三维软件都有默认的光源,否则,我们是看不到透视图中的着色效果的,更不要说渲染了。因此,渲染程序就是要计算我们在场景中添加的每一个光源对物体的影响。和真实世界中光源不同的是,渲染程序往往要计算大量的辅助光源。在场景中,有的光源会照射所有的物体,而有的光源只照射某个物体,这样使得原本简单的事情又变得复杂起来。在这之后,还要是使用深度贴图阴影还是使用光线追踪阴影?这往往取决于在场景中是否使用了透明材质的物体计算光源投射出来的阴影。另外,使用了面积光源之后,渲染程序还要计算一种特殊的阴影--软阴影(只能使用光线追踪),场景中的光源如果使用了光源特效,渲染程序还将花费更多的系统资源来计算特效的结果,特别是体积光,也称为灯光雾,它会占用代量的系统资源,使用的时候一定要注意。
在这之后,渲染程序还要根据物体的材质来计算物体表面的颜色,材质的类型不同,属性不同,纹理不同都会产生各种不同的效果。而且,这个结果不是独立存在的,它必须和前面所说的光源结合起来。如果场景中有粒子系统,比如火焰、烟雾等,渲染程序都要加以“考虑”。
5. 渲染农场的体系结构
Most render farms are considered to be a cluster rather than a Gridas the computers are situated within the same location and with a singleadministration.
5.1 渲染农场的功能模块
在渲染集群系统中,所有提交和管理的工作可以在图形工作站或者PC上完成,并且可以监视整个渲染进程。这些正在渲染和等待渲染的工作,在集群渲染管理软件中叫Queue(渲染队列)。渲染任务的提交过程是动态的。集群渲染系统的管理软件会检查每个节点的当前工作状态:如果某个计算服务器硬件配置比较高,很快完成了第一次分配的渲染农场工作,那么集群管理软件继续会将剩余工作分割为若干单元,然后再发送给这个已经完成渲染的空闲计算节点,直到渲染工作完成。
集群渲染系统从节点类型来看,包括计算节点、管理节点、存储节点、渲染节点等功能模块。
(1)管理节点
管理节点主要完成两项工作,一是对渲染作业进行调度和管理,二是为计算节点提供基本的网络服务。一般集群渲染管理系统的管理端运行在该节点上。
(2)计算节点(渲染节点)
计算节点是整个集群渲染系统的计算核心,它的功能就是执行计算。实际渲染任务就是在计算节点上完成的。通常集群渲染管理系统的渲染客户端运行在该类节点上。计算节点可以是多种平台、多种配置的机器。一般来说,为提高渲染效率,多处理器节点具有更快的渲染速度和更高的性价比。
(3)存储节点
存储节点主要是为计算节点和管理节点进行大量数据I/O而设置的。集群渲染系统在运行过程中,需要频繁读取各种场景、贴图、材质等文件,同时还会生成大量的图片序列,因此,存储节点必须能够外挂大容量磁盘阵列以满足工作需要,负责整个集群渲染系统的数据共享、文件存储管理。
群渲染系统的高效运行需要高速硬件连接设备,计算机之间的数据传输,需要选择的设备主要包括千兆网卡、交换机或者光纤卡以及相应的光纤交换机等。对于中小型的集群系统来说,千兆的传输速率完全能够满足了。
集群渲染系统采用分布式渲染技术,系统将自动确定网络中可用的渲染节点和资源,并将任务按照需求分发到相应渲染节点。如果某一个渲染节点出现故障,管理服务器会自动将作业重新分发到渲染集群中的其他渲染节点,确保渲染作业如期完成。
(4)渲染节点
渲染节点是整个集群系统的计算核心,其功能就是执行渲染,具体选择什么样的硬件配置,需要根据自己的需求和预算来决定。主流的制作公司都会选择1U服务器、布置2颗处理器,也有很多公司选择刀片服务器,刀片服务器在企业级别的应用中有很不错的优势,如节省布置空间、方便连接、方便管理等。
渲染节点的配置主要考虑以下几个方面的问题:
(1)CPU架构灵活
一般的情况下,集群系统都是很灵活的,允许不同的服务器、工作站乃至办公用机,灵活加入渲染队列。但是特别是AMD和INTEL平台的混用容易出现问题,如在渲染同一任务时,AMD平台和Intel平台渲染出来的同一个画片,其色彩亮度和饱和度可能会出现不一致的情况。而且,由于混合渲染的方式,渲染结果都混合在了一起组成电影序列,很难在后期进行整理,出现这样的情况就只能重新渲染了。
所以渲染节点的配置一定要注意以下两个方面的问题:
● 渲染集群规划时,要统一硬件平台,避免关键硬件设备混合不同型号、不同厂家;
● 如果一定要使用混合平台,就有必要进行分组,一个组渲染节点一个任务。
(2)操作系统自主选择
Linux是做集群服务器的最佳操作系统,它的网络访问速度比Windows快1倍以上,而且几乎没有病毒烦恼,稳定性也比Windows优秀。但采用Linux做渲染集群的操作系统也有不足之处,如当前有些三维建模或动画编辑软件不支持Linux操作系统平台,如3DS Max/After Effects等,虽然已有部分Windows应用软件可以通过Wine技术安装在Linux操作系统平台运行,如Flash/Photoshop等。所以,以Maya为主的数字媒体公司Linux平台是最佳选择,而对于3DS MAX和MAYA混合使用的数字媒体公司可以同时采用Linux平台和Windows平台组合使用的方式,当然也可以仅使用Windows操作系统。
(3)渲染管理和任务分发服务器
单个渲染节点再强劲,没有好的管理,同样会造成非常大的浪费。渲染管理不是简单地调用渲染器进行渲染,真正经受过数字内容产品创作考验的渲染管理方案都有着精心设计的系统架构,关键的技术指标不同,方案之间就差别非常大。可以说,硬件的选择与搭建仅完成了构建渲染农场整体的20%,还需要花50%的精力对渲染投资进行规划。
渲染管理和任务分发服务器主要承担两种任务:提供基本的网络服务和调度渲染服务器上的任务。作业分发软件既可以安装渲染引擎,也可以假如渲染队列,但是实际上我们需要安装集群渲染管理软件。
(4)网络和存储
集群系统需要连接海量存储以保存渲染出来的数字内容产品,渲染1小时的高清序列大概需要1TB左右的存储资源。当所有的渲染服务器同时向中央存储写入数据时,网络规划成为衡量集群系统最终性能的标尺,中央存储访问技术可以选择以下几种:
● NAS(Network Attached Storage,网络附加存储),它使用NFS(Net File System,网络文件系统)、Samba等协议。其中,NFS 由Sun microsystems 公司开发的一种网络操作系统,是使用底层传输层协议TCP/IP的应用层协议。NFS允许一个系统在网络上与它人共享目录和文件,通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。
● Direct Attached SAN,需要使用SAN管理软件;
● IP SCSI(Small Computer System Interface,小型计算机系统接口)
Digital Weta的集群系统是一个典型的不太成功的案例。他们的CPU数量远远多于梦工厂和迪斯尼,整体硬件配置也比他们更新一代,但是在超级计算机500强的排名中远远落后这两家。原因就是他们在整体规划的时候没有作好,网络出现了瓶颈。所以,并不是CPU越多,集群系统就会越强大。
(5)通信性能
可以简单的把集群渲染管理软件分为高端和低端两种。高端的管理和任务分发服务器由于其优秀的算法,可以让系统能够接近线性的性能提高,而低端管理软件在达到一定规模以后,会影响任务调度的性能。如中小型数字梅子内容开发团队常用的Muste在达到25—40个节点以后,性能会明显下降,甚至在渲染时会丢失数据。
集群计算有一个效率发挥的问题,理论上CPU的数量和渲染时间与实际情况会有差别,而且不同系统所用的实际时间也不尽相同。CPU数量越大,渲染时间越短,他们成反比关系。但事实上,动画渲染花费的时间和CPU的数量并非成线性反比关系。问题的关键在于通信(不止网络通信,还包括PC内部CPU、内存和硬盘之间的通信)和软件的算法;系统中使用多少个节点计算机(基于CPU的数量)也是需要考虑的问题。这就需要一个拥有优秀算法的集群渲染管理软件进行调度,并发挥每个CPU的效能,使用性能优异的硬件配置。
5.2 并行集群渲染系统的体系结构(以Axceleon EnFuzion软件为例)
图1 并行集群渲染系统的体系结构
User Submit Computers
These are desktop machines thatartists use to create scenes.You can have as many User Submit Computers asneeded.
Control Root Computer
Designate one machine per renderfarm to serve as the Root Computer.This computer controls all activities on therender farm.
Compute Nodes
These are the workermachines,dedicated or shared,that make up your render farm,i.e.the machinesthat do the rendering.
Shared Repository File Server(共享资源文件服务器)
Plug-ins for renderingpackages(e.g.Maya,After Effects,XSI) require that all rendering project filesare stored in a repository,which must be accessible by all the Compute Nodesand by all the User Submit Computers.The Shared Repository File Server is thecomputer which stores the repository of project files.
这里的共享资源文件服务器主要保存的是渲染用户提交的要渲染的模型源文件、渲染完成的渲染结果、渲染需要使用的一些纹理、材质、贴图等素材。
5.3 网格渲染系统(Grid Render System)的体系结构(Framework)
这里主要介绍新加坡南洋理工学院(Nanyang Technological University,Singapore)提出的一个网格渲染系统的体系结构。
Figure 1 shows a general framework of the proposed Grid renderingsystem.There can be two different approaches to building the Grid-basedrendering system under this general framework.One approach is to set up aportal though which a user can submit a rendering job on-demand and downloadthe rendered images from the remote server at a later time.A portal can be consideredlocal to the rendering cluster,when it is accessed from the same location,orglobal,when remote clusters of computers are used.Another approach is to submitthe job to the Grid through a GUI plug-in within the 3D modelling software environmentwhere every rendered image will be sent back individually to the clientconcurrently.
In networking communication,there are 3 main factors which have tobe considered,as mentioned in[Crockett 1997]:latency, bandwidth andcontention.Latency is the time required to set up a communicationoperation,irrespective of the amount of data to be transmitted.Bandwidth is theamount of data which can be transmitted over a channel per unit time.Contentionoccurs when multiple processors are trying to route data through the samesegment of the network at the same time and there is insufficient bandwidth tosupport the aggregate demand.
Fig 1. Framework of the Gridrendering system
When building the Grid rendering framework,the main emphasis is tofocus on the friendly usability,security and stability of the framework.Ourframework is customized to provide a simple, friendly,secure,and optimizedGrid-based rendering environment for animators to submit and handle theirrendering tasks either via a portal or a GUI plug-in in the modelling tool.
For submission of jobs to the Grid rendering system a portal is proposed(Figure 2).This portal is also an entrypoint for accessing the web services,meta-scheduler,Data Service(DS) andExecution Service Container(ESC)as shown in Figure 3.We compress the original scene representation files beforeuploading them to the rendering servers via the portal.
In the portal implementation,all computers in the Grid were installedwith Globus Toolkit[Globus],[Foster and Kesselman 1998].Globus also providesGlobus Security Infrastructure(GSI) core service and manages accesses andauthorization using a public key infrastructure based on X.509.v3 and SecureSocket Layer(SSL)Protocol/Transport Layer Security(TLS)protocols forauthentications.
Fig 2.Using a portal for rendering jobs submission.Client will haveto upload the animation frame sequences to the portal.The LSF(Load SharingFacility)meta-scheduler will manage and distribute the rendering jobs to the clustersfor rendering.Each individual cluster has a local-scheduler(Sun Grid Engine)formanaging the distribution of the rendering tasks.In case,if any job has failedto complete,it will be detected by the scheduler and re-submitted to othermachines.The rendered images can be downloaded from the database through theportal.
Fig 3.Portal rendering applicationframework
The meta-scheduler resides on top of the local job schedulers, whichmanage computational resources for individual computer clusters and highperformance computers.The meta-scheduler coordinates computing resourcemanagement across the collection of computer clusters.The meta-schedulerprovides central job and resource management,enabling users to submit jobswithout requiring knowledge of the Grid configuration and status.The meta-schedulercoordinates with all local schedulers to understand the current systemstatus,and makes scheduling decisions when job submission is received.
Execution Service Container(ESC)encapsulates the local scheduler ofthe computer cluster and provides a Web service interface to access thecomputing resources.ESC has different adapters interacting with various localresource managers,such as Portable Batch System(PBS),Load SharingFacility(LSF)and Sun Grid Engine(SGE).ESC invokes and manages execution of theapplications deployed on the associated resource when a computation request isreceived.
Data Service(DS)runs at the portal server and it automates data transferbetween the portal server and ESCs(Stage-in information to render and Stage-outrendered images to storage server)using data transfer protocols(GridFTP andFTP).For each job submission,the meta-scheduler coordinates DS and theassociated ESC to complete the input and output data transfer.Both ESC and DS interactwith the meta-scheduler scheduled by a Grid compliant protocol.
6. 渲染农场的基本工作流程
集群渲染的基本流程:每个工作站制作好的三维场景文件提交给集群管理节点服务器,由集群管理节点服务器将任务分发给系统中任意数量的计算/渲染节点,渲染作业完成后每个节点再将结果返回管理节点服务器,最后由集群管理服务器把渲染完成的文件返回给提交渲染作业的三维工作站。
集群渲染的主要工作流程:
(1)用三维软件制作三维场景后,输出渲染器能接受的文件;
(2)通过管理软件接口将该文件提交给管理软件;
(3)管理软件自动启动以后,通知管理服务器,有工作需要进行渲染;
(4)管理服务器查找网络上的空闲节点,并把工作分配下去;
(5)空闲渲染节点接到任务后,开始渲染工作,并把工作情况实时报告给管理服务器;
(6)管理服务器把收到的信息反馈给管理软件,同时把信息反馈给用户;
(7)整个场景渲染完成,用户得到可以应用的图片序列。
7. 渲染农场的特性
(1)高性能
渲染集群的高性能表现在以下两个方面:
● 单节点性能高
当单个节点性能提高时,可以有效控制集群规模,增加渲染速度,提高渲染效率。
● 整体性能的可扩展性
集群渲染系统有着很强的可扩展性,性能随着节点机数量的增加而增强。跟单台PC机相比,集群渲染的渲染速度可以是一个甚至是两个数量级的提高。另一个衡量集群性能优劣的重要标准就是性能扩展的线性度。从理论上说,CPU数量越大,渲染时间就越短,它们成反比关系。但实际上,动画渲染的时间和CPU的数量并非成线性反比。简单地增加CPU 数量或PC节点根本无法有效地提高渲染效率。当CPU 数量达到一定值后系统效率不但不增加,反而还有可能降低。造成这种问题的原因主要在于通信(不止网络通信,还包括PC 内部、CPU与内存和硬盘之间的通信)和软件的算法。另外,系统中使用多少个节点的计算机(基于CPU 的数量)也是需要考虑的问题,越小越可以使用更多的CPU。一个好的集群渲染管理软件,可以发挥系统80%,甚至90%以上的性能。
(2)高可靠性
首先是计算节点的可靠性。渲染集群节点机具有较高级别的可靠性,以确保渲染工作按时完成。其次是作业执行的可靠性。就是要求集群还具有容错特性,单个节点机出现故障时,不会对渲染任务造成影响。
(3)使用方式灵活低成本
就是一般所说的总体成本(TCO)要较低。首先是软硬件投入成本低,购置硬件和配套软件的费用要低。其次后期的维护费用、管理费用、升级成本等要低。允许用户根据自身需要制定渲染集群中进行工作的节点。在节点的选择和工作时间上提供较大的灵活性。比如在下班时间让空闲的工作站参与渲染,而在上班之前停止渲染工作。集群渲染应该具有丰富的渲染方式和灵活的参数修改方式,可以直观地修改渲染的各类参数,也可以通过对输出属性的调整,及时改变输出结果特性与类型。
(4)易于管理
首先是集群本身要方便管理,能够进行有效的监视,能及时发现和解决可能存在的故障和隐患。其次对渲染任务能够进行方便有效的管理,这对于大型项目而言尤为重要。
第2节 云渲染平台
1. 云渲染技术
云渲染(Rendering Cloud)是指将由客户端处理的图形渲染(2D、3D)转移至服务器端(云端)的技术;云渲染技术的应用,可以使客户端大大简化,简化至只需要具备显示能力以及网络接入能力,即可享有顶级的图形处理能力,这将使同一图形应用在众多终端设备上无差别呈现成为十分简单的工作,要做的只需接入即可!
2. 云渲染平台
2.1 云渲染的组成
(1)图形资源工具
按指定格式输出图形资源的工具,用户可以通过该工具生成图形资源并提交至渲染云;
(2)渲染云
由资源存储服务器、渲染脚本解析服务器、渲染服务器、图形压缩服务器共同组成,用户提交的图形资源由资源存储服务器存储,渲染请求经过渲染脚本服务器解析后转换为渲染信息,由渲染服务器获取对应图形资源进行渲染,产生图像信息提交至图形压缩服务器压缩后,形成最终图片、视频资源返回给请求者;
(3)终端
终端为渲染请求的提交者和渲染结果的接收者,在需要渲染服务时,终端将提交请求至渲染云,收到图片、视频信息的结果后,终端将负责最终呈现给用户;
第3节 渲染农场的构建
1. 分布式并行渲染系统的分类
这里主要按照数字内容产品创作软件(这里重点指渲染节点所使用的渲染器)、渲染节点使用的操作系统、渲染节点使用的CPU类型对渲染农场进行分类,这里所谓的渲染农场指分布式并行渲染集群系统或网格渲染系统。这样对渲染农场进行分类是十分有意义的,因为:
(1)渲染节点所使用的处理器类型不同的问题:如在渲染同一任务时,使用AMD处理器的平台和使用Intel处理器的平台渲染出来的同一个画片,其色彩亮度和饱和度可能会出现不一致的情况。而且,由于混合渲染的方式,渲染结果都混合在了一起组成电影序列,很难在后期进行整理,出现这样的情况就只能重新渲染了。
(2)渲染节点所使用的渲染器不同的问题:即时使用的是基于同一个型号的处理器平台,如果渲染节点所使用的渲染器不同(包括同一渲染器的不同版本),渲染得到的同一个画面的效果也是不一样的。所以,在构建渲染农场的时候,对于渲染节点要根据使用的处理器的类型及其型号、渲染器等进行分组,这样才可以保证同一个画片多得到的渲染效果是最好的。
为了渲染农场的设计与实现,这里主要探讨按照数字内容产品创作软件与渲染节点使用的操作系统进行分类的情况。
1.1 按照渲染器的种类来分
按照数字内容创作软件的种类可将渲染农场分为基于xx(软件)渲染农场与混合平台(跨平台)渲染农场。
(1)基于xx(软件)的渲染农场
如基于Maya/3DS Max的渲染农场。
(2)混合平台渲染农场
混合平台渲染农场可以同时进行Maya、3DS Max、After Effect等渲染作业的渲染农场,如基于Linux平台的3DS Max渲染农场(3DS Max render farm for Linux)。
1.2 按照操作系统进行分类
按照渲染节点操作系统的不同,可以将渲染农场分为异构渲染农场与同构渲染农场。
2. 渲染农场搭建方案及其软件选择
渲染节点是整个集群系统的计算核心,选择什么样的渲染引擎则要根据各个制作公司的流程来决定的,而不同的工作流程又决定了渲染引擎的多种搭配方案。
2.1 以3DS Max为主要制作工具的公司
用户 山东某展览馆
规模 小型公司
业务范围 建筑动画
应用软件 3DSMax
渲染引擎 Deadline
为3DS Max搭建集群系统情况很少,因为3DS Max用户主要集中在建筑动画和视景仿真领域,而这些行业主要对静帧图像质量有较高要求,对与序列图像的精度要求却很低,3DS Max自带的backburner Manager 足以解决渲染问题。Frantic Film 开发的Deadline将3DS Max作为主要的工具,并完全整合了著名的Render pass Manager管理软件,对3DS Max及其各种插件有很好的支持。
2.2 以Maya为主要制作工具的公司
用户 北京天文馆
规模 大中型公司
业务范围 流体动画
应用软件 mental ray for Maya
渲染引擎 Enfuzion
在国内,以Maya为主要工具的制作公司一般使用Maya 内置的渲染器和mental ray渲染器,很少使用Renderman作为渲染引擎。
用户 北京中视远图科技有限公司
规模 小型公司
业务范围 影视特效
应用软件 Maya
渲染引擎 Muster
北京中视远图科技有限公司在工作站上使用Maya制作特效,然后使用Combustion合成,使用1台千兆交换机和1台服务器作为分发管理,利用Muster集群渲染管理软件连接闲暇的图形工作站,让渲染组在较好的网络环境下运行。这是一种典型的小型制作公司的渲染农场,成本低而且非常有效。
2.3 混合环境的制作公司
用户 央视动画股份有限公司(原中央电视台动画制作中心)
规模 大型公司
业务范围 动画制作
应用软件 Maya
渲染引擎 EnFuzion
对于混合平台来说,更多要考虑到的问题主要集中在项目管理的方面,使用渲染分发管理软件很有必要,可以防止操作失误而导致单机多任务渲染的情况。央视动画股份有限公司(原中央电视台动画制作中心)早在2002年就开始使用渲染农场,他们从美国定制了使用EnFuzion与LSF构建渲染集群的解决方案,北京强氧科技发展有限公司为其提供相关的技术支持。这样,央视动画股份有限公司(原中央电视台动画制作中心)在命令行形式EnFuzion内核的基础上自主研发出了中文图形用户界面,一直使用到现在。
2.4 不同渲染集群应用效果分析
在使用Muster和Deadline的某些版本对mental ray场景进行任务分发的时候,会出现下述情况:
(1)渲染第一个任务以后服务器停止渲染;
(2)重启服务器开始渲染,完成第一个任务后,又停止渲染;
(3)这里的停止渲染指不停地队列渲染,但是没有渲染结果;
(4)网络中只有一台渲染服务器正常工作;
(5)日志报告不能找到错误原因;
(6)Deadline报告找不到License。
出现这一问题在于任务提交的模板错误,但将渲染管理软件替换成Enfuzion以后,没有再出现类似问题。
3. 构建渲染农场需要注意的问题
对于渲染农场的搭建,技术难度并不在硬件设备的挑选上,而是整体工作流程的科学规划。检验集群渲染软件的技术指标主要有以下几点:
(1)能否保证渲染引擎能够正常调用
(2)在相同硬件和网络平台下,提交任务的速度和性能如何
(3)能否保证渲染过程不丢失数据
(4)单机拓机,是否影响整体网络性能,并且修复失败渲染任务的方便性如何
(5)能否支持现有的主流三维动画和后期合成软件
(6)能否支持静帧分割渲染?(EnFuzion和Muster支持面片渲染)
(7)是否简单易用
(8)是否易于维护,网格计算功能与渲染功能集成在同一个网格平台之后,如何更好地处理其兼容性问题,以便网格平台的维护;
(9)按照渲染节点所使用的处理器、渲染器对渲染节点进行适当的分组。
国内使用较多的集群渲染管理软件有EnFuzion、Muster、FranticFilm Deadline、PipelineFX Qube等,其他集群渲染管理软件如Alfred、LSF、SPIDER、DRDUEUE、ROYALRENDER等在国内三维动画渲染方面的应用比较少。其中SPIDER和DRDUEUE是开源软件项目,对于有开发能力的制作公司来说,是可以考虑的方案;而 LSF目前只是一个网格计算数据库,并没有专门对渲染农场的工具,开发难度会相对高一些。例如,上影数码曾在SPIDER项目上进行开发,作为自有软件使用。