CN102088472A - 面向广域网的动漫渲染任务分解支持方法及实现系统 - Google Patents
面向广域网的动漫渲染任务分解支持方法及实现系统 Download PDFInfo
- Publication number
- CN102088472A CN102088472A CN2010105437562A CN201010543756A CN102088472A CN 102088472 A CN102088472 A CN 102088472A CN 2010105437562 A CN2010105437562 A CN 2010105437562A CN 201010543756 A CN201010543756 A CN 201010543756A CN 102088472 A CN102088472 A CN 102088472A
- Authority
- CN
- China
- Prior art keywords
- node
- scene
- task
- playing
- play
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
面向广域网的动漫渲染任务分解支持方法及实现系统属于计算机网络领域。本发明根据动漫渲染任务的计算密集型特点和广域网环境下传输速率受限于网络瓶颈带宽的特点,包括基于可视域的场景文件和贴图集拆分方法、节点性能评估方法和作业分配策略,以及上述方法的集成和过程控制。在分解用户的渲染任务时,使用本发明所涉及的场景数据和贴图集的拆分方法,根据当前场景摄像机可见和不可见物体及贴图的分析来优化场景,以达到减小最终渲染文件的目的。精简后的模型场景可以有效减少网络中的传输数据量,实现了场景文件和计算量的对等拆分,有利于渲染作业的细粒度分发和执行。本发明充分发挥各渲染客户端的计算效率,具有很强的可扩展性。
Description
技术领域
本发明涉及面向广域网的动漫渲染任务分解支持方法及实现系统,广泛适用于三维影视动漫制作、建筑设计等与媒体制作相关的数字创作领域,能显著地提高分布式动漫渲染的效率,具有很强的可扩展性。通过基于可视域的场景文件和贴图集拆分方法,解决在渲染过程中因广域网环境下用于传输3DS Max场景文件和贴图所占用的较大传输数据量问题,实现了渲染场景数据量和计算量的等粒度、精细拆分;通过实时采集渲染客户端节点的性能,形成了任务与节点性能匹配的优化作业分解与分配方案;通过本发明设计的实现系统,用户能便捷地通过B/S方式提交渲染任务,渲染客户端能自动对场景文件和贴图集进行压缩和解压缩功能、执行渲染任务,提供了高效、快捷的渲染服务平台。
背景技术
基于计算机平台的数字多媒体内容制作近年来在广播电视专业领域得到了广泛应用。随着音视频采集设备的普及,数字多媒体内容制作开始走向个性化、公众化,并通过专业及公众应用正在形成巨大的市场需求,将成为当前新兴的、基于Web2.0的UGC(UserGenerated Content-用户生产内容)业务中最具发展前景的新业务之一。同时,计算机和网络技术的迅速普及,也为数字多媒体内容制作个性化、公众化奠定了强有力的技术基础。上述需求正在推动多媒体内容制作业务向分布式在线协同方向的演进。
随着计算机CPU性能的提高,大量过去只能依靠专业多媒体工作站和专用硬件加速设备实现的功能已经能在普通计算机上实现,其能力已可涵盖大部分影视动漫制作环节。但是,对于部分高密度计算环节,如动漫渲染(一个繁重低效的过程,被称为“渲染瓶颈”),仍难以在个人PC上实现。单机渲染视图和动画所需时间往往让人难以忍受,30帧动画就可能耗费数小时。为提高计算效率,基于局域网的集群渲染技术开始被广泛采用。集群渲染平台(又称渲染农场,Render Farm)开始提供专业服务模式。但因其专业化、专用性、费用问题以及地域限制而难以向广大网络公众提供可接受的服务。同时其计算效率仍与用户的希望有较大差距。目前出现的分布式渲染环境充分整合网络中的高性能集群节点和闲散的普通PC,以在线方式实现高效、高质、低费用(甚至免费)的作品渲染,为广大的网络公众提供了渲染平台。
如图1所示的“典型的分布式动漫渲染流程”中,用户从提交渲染任务、上传场景文件和贴图到从存储系统中下载渲染输出的图片序列的过程可以划分为如下4个阶段:
(1)软件调度阶段:渲染管理软件通过用户提交的作业描述和网络中可用的渲染节点资源分析进行调度,产生作业分解与分配方案;
(2)上传阶段:上传场景文件和贴图;
(3)渲染执行阶段:渲染器操作场景文件和贴图完成渲染;
(4)下载阶段:用户下载渲染完成后的图片序列。
由此可见,在目前的渲染农场和分布式渲染环境中,无论渲染Client承担的渲染作业粒度,它都需要得到用户制作场景文件(一般大小在10M-500M之间)的完整拷贝。由于渲染集群节点的性能要比普通PC的性能强,这样渲染管理服务在任务分配上将采用“集群优先、兼顾散户”的任务分配策略。然而分分散在广域网环境下的各个渲染Client(包括集群和普通PC)的网络带宽存在着很大的差异,主干网带宽在G bps级别,而瓶颈带宽只有100K bps左右。这样即使给渲染Client分配1帧的任务,渲染Client也必须从存储系统下载大小约为10M-500M的场景文件和贴图,这样文件的传输时延将渲染总时延的很大比例,于是一旦同时执行渲染作业的渲染Client数增多时,就容易造成网络拥塞、性能瓶颈甚至当机。
目前在分布式动漫渲染环境下,采用Muster、Royal Render等集群管理工具进行作业管理时,只能实现对渲染任务的拆分,尚未实现对场景文件数据的拆分,这样各个渲染客户端为执行渲染任务需要获得整个场景文件和贴图的全部。
中国专利公告号CN 101458824A,公告日是2009年6月17日,名称为“一种基于web的全景图的光照渲染方法”中公开了一种基于web全景图的光照渲染方法,可以得到逼真的HDR效果虚拟展示效果;但该发明只限于对来自网络服务器的LDRI(low dynamic rangeimage)全景图和HDRI(high dynamic range image)全景图的渲染,而不适用于采用Maya或3DS Max制作的场景文件。
中国专利公告号CN 101587583A,公告日是2009年11月25日,名称为“基于GPU集群的渲染农场”中公开了一种利用高效率低能耗GPU构建分布式并行集群渲染系统,能显著地提高渲染效率;但该发明是通过改善硬件性能来提升渲染速速,尚未实现对场景文件进行按指定帧范围的、物理的切分以适用于分布式动漫渲染环境。
发明内容
本发明针对广域网环境下瓶颈带宽较窄、动漫爱好者制作的场景文件和贴图集数据较大的特点,提出了面向广域网的动漫渲染任务分解支持方法及实现系统,有效地整合了网络中的可用渲染资源,能有效地对动漫渲染任务进行分解与分配,部署在分布式节点的各渲染客户端软件负责接收任务、下载场景和上传渲染计算输出的图片序列或视频。用户通过渲染门户的Browser端提交作业后,Web服务器将提供对用户作业的全程管理,用户在作业完成后可以下载指定的渲染输出结果。
本发明提供了一种面向广域网的动漫渲染任务分解实现系统,其特征在于,由以下组成:
该实现系统的中心部分为集中式;边缘部分为分布式,用于用户提交待渲染的作业;
中心的集中式包括Web服务器,数据库服务器,调度服务器,存储服务器,部署了渲染客户端软件的局域网节点;
Web服务器:用于接收用户通过B/S方式提交的作业,负责响应用户提交的作业请求;
数据库服务器:至少记录了渲染用户的基本信息和作业信息;
调度服务器:保持与渲染客户端软件的通信,实现对渲染任务的分解与分配,指挥和控制渲染客户端的任务执行;
存储服务器:至少存储了用户上传的场景文件和贴图文件、各渲染客户端执行渲染输出的图片序列或视频文件;
局域网节点:至少部署了3DS Max制作软件、渲染客户端软件,由集群节点或普通PC节点组成;
边缘的分布式包括广域网节点;
广域网节点:至少部署了支持大文件传输的插件、渲染客户端软件,由集群节点或普通PC节点组成。
应用所述的面向广域网的动漫渲染任务分解实现系统进行动漫渲染任务分解支持方法,其特征在于,包括以下步骤:
(1)用户通过渲染门户提交作业
当广域网节点上部署了三维制作软件,时根据调用部署在该节点上的渲染客户端软件中的数据拆分脚本,将提交渲染任务单中指定起始帧和结束帧范围内的场景文件和贴图集从原始场景文件中进行剥离,避免了整个原始场景文件和贴图集的完整传输;如果没有广域网节点上安装3DS Max制作软件,也允许通过B/S方式提交渲染作业,此时直接将包含场景文件和贴图集的压缩包上传至存储服务器;然后,由调度服务器来完成后续的作业分解与分配任务;
(2)渲染调度服务器生成作业分解与分配方案
局域网节点和广域网节点向调度服务器汇报该节点的性能信息,该信息至少包括CPU主频、CPU利用率、可用RAM大小、剩余硬盘空间、是否安装有三维制作软件及版本,调度服务器根据作业的任务量和节点的性能评价形成作业的分解与分配方案——渲染子任务和执行渲染计算的客户端节点的对应表;
(3)渲染客户端执行渲染计算并将结果上传至存储服务器
部署在调度服务器的服务器端程序向执行渲染任务的各客户端发送渲染子任务信息,渲染客户端收到该信息后,从存储服务器上下载子任务所对应的场景文件和贴图集的压缩包,进行本机解压缩,同时调用安装在本机上的三维制作软件渲染器,通过命令行方式执行渲染计算,按用户规定的渲染参数要求完成作业的渲染,生成图片序列或视频文件;同时客户端软件负责将渲染输出结果上传至存储服务器;
(4)Web服务器以B/S方式呈现用户的作业状态并提供下载
当渲染客户端完成了用户提交的某个渲染作业后,会对数据库服务器的作业信息表进行状态更新,这样当用户通过B/S方式查询作业状态时会显示“已完成”,这样用户可以通过门户上显示的链接实现文件的下载。
所述的面向广域网的动漫渲染任务分解支持方法,其特征在于,包括如下用于支持渲染任务分解的方法:(1)基于可视域的场景文件和贴图集拆分方法;(2)节点性能评估方法和作业分配策略;(3)将计算机图形学中的物体消隐方法应用到场景文件中物体的保留或剔除选择过程中,将场景中不可见并不对场景产生阴影的物体剔除后将剩下的物体保留成一个新的场景文件,同时将这些保留物体所用到的贴图拷贝到目标文件夹。
其中,节点性能评估方法和作业分配策略基于资源选择公式和作业分配公式,具体如下:
(1)资源选择公式
在考虑CPU和RAM的情况下,计算公式如下:
E=(1-C)(1-R)×100×(CPURatio×RAMSize)/(CPURatios×RAMSizes) ①
其中E为评估值,C为CPU占用率,R为内存占用率,CPURatio为CPU的主频(以G Hz为单位),RAMSize为RAM的大小(以GB为单位),CPURatios为基准的CPU主频大小,RAMSizes为基准的RAM大小;
其中,当节点为多核时,CPURatio=m×CPURatiosingle,其中m为节点的CPU个数,CPURatiosingle为单核的主频;
如式①所示,当CPU占用率或RAM占用率为1即100%时,认为该节点不可用,评估值为0,而当CPU和RAM的可用率越高时,表明该节点具备了渲染计算的硬件条件,相应地评估值也就越高;
(2)作业分配公式
作业选择与资源选择的目的都是为了实现作业的优化分配,以实现该调度算法在分布式动漫渲染系统中的优越性,在此,以渲染场景文件的帧数为度量,提出了一种直接根据资源评估值确定分配作业任务量的算法,公式如下:
其中n为节点数,Tn为作业总量,Ti为分配在该客户端节点的帧数,Ej为第j个节点的评估值。
其中,所述的基于可视域的场景文件和贴图集拆分方法包括下述步骤:
(1)读取外部配置文件,获取开始帧frameStart、结束帧frameEnd、拆分步长frameStep、原始场景文件所在的目录和文件名SourcePath、拆分后存放的路径ResultPath参数;
(2)获取场景文件对应的全部贴图路径,将环境贴图添加到贴图集中;
(3)从开始帧为循环初始值,结束帧为终止值,拆分步长为循环增量,对场景进行如下操作:(i)保留直接在视域内的物体以及因遮挡关系对直接可见物体产生阴影的物体;(ii)删除场景中物体的不可见面;将需要保留的物体分为三类:蒙皮物体、在光线追踪情况下对目标物体产生阴影遮挡关系的源物体和网格;
上述步骤(3)具体步骤如下:
a)将所有当前帧的可见静态物体合并成一个网格;
b)调用判断蒙皮骨骼算法,找到当前蒙皮修改器骨骼的父物体及所有子物体;
c)根据a)步生成的可见网格,将静止物体复制后合并,移除静止物体的不可见面;
d)调用判断阴影遮挡算法,获取对目标物体产生阴影遮挡关系的源物体列表;
e)将所有需要存储的物体存储下来,至少包括c)步生成的网格、b)步生成的骨骼对象、d)步生成的有遮挡关系的物体、灯光源、摄像机和空间扭曲对象,收集贴图、添加环境贴图,将所有用到的贴图复制到输出路径。
蒙皮骨骼算法步骤如下:
(1)判断当前物体是否为静态模型,如果是则不做处理,转向结束;
(2)判断当前物体是否为蒙皮物体,如果不是则不做处理,转向结束;
(3)从蒙皮修改器的关联物体中找到一个骨骼;
(4)找到这个骨骼的根父骨骼;
(5)从这个根骨骼往下递归找到所有子骨骼。
本发明以节省网络传输带宽资源为目标,在深入分析3D场景内部几何模型的基础上,设计合理的数据拆分方法,最大限度地减小渲染计算所需要的场景数据,形成了渲染任务和节点性能匹配的作业分解和分配方案,同时提出了用于支持动漫渲染任务分解的实现系统;通过渲染场景文件和贴图集的拆分,对典型的动漫渲染流程进行了改进和优化,避免了集中式处理架构中存储系统或渲染管理服务器成为瓶颈而导致的可扩展性差的问题,实现了渲染任务的按需拆分和细粒度渲染。
附图说明
图1典型的分布式动漫渲染流程
图2实现系统的总体架构图
图3场景文件和贴图集拆分方法的处理流程
图4查找当前蒙皮修改器骨骼的父物体的流程图
图5查找当前蒙皮修改器骨骼的所有子物体的流程图
图6判断点在灯光源内部的流程图
图7启用双向光线追踪算法判断投影关系的流程图
具体实施方式
本发明提供了面向广域网的动漫渲染任务分解实现系统,如图2所示,其特征在于,由以下组成:
该实现系统的中心部分为集中式;边缘部分为分布式,用于用户提交待渲染的作业;
1、中心的集中式包括Web服务器,数据库服务器,调度服务器,存储服务器,部署了渲染客户端软件的局域网节点;
WS(Web Server):Web服务器,用于接收用户通过渲染门户以B/S方式提交的作业,负责响应用户提交的作业请求,其中部署了IIS系统组件;
DS(Database Server):数据库服务器,至少记录了渲染用户的基本信息和作业信息,作为Web服务器、调度服务器所共同访问的数据区域,其中部署了SQL Server 2005数据库管理系统,为用户的大量并发数据访问和记录存储提供了可靠保障;
SS1(Scheduling Server):调度服务器,保持与渲染客户端软件的通信,实现对渲染任务的分解与分配,指挥和控制渲染客户端的任务执行。
SS2(Storage Server):存储服务器,至少存储了用户上传的场景文件和贴图文件、各渲染客户端执行渲染输出的图片序列或视频文件;
LN(LAN Node):局域网节点,至少部署了3DS Max制作软件、渲染客户端软件,由集群节点或普通PC节点组成;
2、边缘的分布式包括广域网节点;
WN(WAN Node):广域网节点:至少部署了支持大文件传输的插件、渲染客户端软件,由集群节点或普通PC节点组成。
其中实现系统的各节点之间均采用Socket通信方式。
本发明提供了面向广域网的动漫渲染任务分解的实现系统,其特征在于,包括以下步骤:
1)用户通过渲染门户提交作业:
当广域网节点上部署了3DS Max制作软件,时根据调用部署在该节点上的渲染客户端软件中的数据拆分脚本,将提交渲染任务单中指定起始帧和结束帧范围内的场景文件和贴图集从原始场景文件中进行剥离,避免了整个原始场景文件和贴图集的完整传输;如果没有广域网节点上安装3DS Max制作软件,也允许通过B/S方式提交渲染作业,此时直接将包含场景文件和贴图集的压缩包上传至存储服务器。然后,由调度服务器来完成后续的作业分解与分配任务。
2)渲染调度服务器生成作业分解与分配方案:
局域网节点和广域网节点向调度服务器汇报该节点的性能信息,该信息至少包括CPU主频、CPU利用率、可用RAM大小、剩余硬盘空间、是否安装有3DS Max软件及版本,调度服务器根据作业的任务量和节点的性能评价形成作业的分解与分配方案——渲染子任务和执行渲染计算的客户端节点的对应表。
3)渲染客户端执行渲染计算并将结果上传至存储服务器:
部署在调度服务器的服务器端程序向执行渲染任务的各客户端发送渲染子任务信息,渲染客户端收到该信息后,从存储服务器上下载子任务所对应的场景文件和贴图集的压缩包,进行本机解压缩,同时调用安装在本机上的3DS Max渲染器,通过命令行方式执行渲染计算,按用户规定的渲染参数要求完成作业的渲染,生成图片序列或视频文件。同时客户端软件负责将渲染输出结果上传至存储服务器。
4)Web服务器以B/S方式呈现用户的作业状态并提供下载
当渲染客户端完成了用户提交的某个渲染作业后,会对数据库服务器的作业信息表进行状态更新,这样当用户通过B/S方式查询作业状态时会显示“已完成”,这样用户可以通过门户上显示的链接实现文件的下载。
本发明提出了面向广域网的动漫渲染任务分解支持方法,其特征在于,包括如下用于支持渲染任务分解的方法:(1)基于可视域的场景文件和贴图集拆分方法;(2)节点性能评估方法和作业分配策略;(3)将计算机图形学中的物体消隐方法应用到场景文件中物体的保留或剔除选择过程中,将场景中不可见并不对场景产生阴影的物体剔除后将剩下的物体保留成一个新的场景文件,同时将这些保留物体所用到的贴图拷贝到目标文件夹,避免贴图资源的不必要的浪费。
在处理方式上,我们借鉴了游戏引擎中常用的消隐方法,但在处理阴影上采取了不同于游戏引擎开发的方式:在游戏设计中由于渲染的实时性要求,常采用烘焙生成贴图的策略,即预先生成贴图集而在生成阴影时根据不同情形进行匹配;而针对用户基于Maya、3DS Max软件制作的场景而言,通过分析场景中不同物体间的遮挡关系,将在指定帧范围、可视域内的直接物体及有遮挡关系的间接物体均保留而剔除无关的物体,并进一步通过有关的渲染算法来计算出阴影效果。
本方法基于可视域判断原则,即在视椎体范围内的物体和模型认为是可见的或部分可见的,将场景中模型的空间包围盒和相机的视椎体进行相交判断和裁剪处理。因此本方法通过保留模型中物体的可见面、剔除不可见部分,达到场景数据拆分、减小场景文件大小的目的。
(1)本发明提供了一种节点性能评估方法和作业分配策略。
在节点性能方面,主要考虑硬件资源和软件资源;其中硬件资源主要包括CPU主频、RAM大小、CPU占用率,RAM使用率。以Pentium 4 3.2G Hz、2GB RAM的PC为例,当RAM占用率达到了60%时,那么可用的RAM大小为2GB×(1-60%)=0.8GB。对于计算密集型的渲染计算而言,在执行渲染过程中需要消耗大量的CPU资源和内存资源。以3DS Max 9.0为例,打开一个150MB左右的较复杂场景可能消耗内存高达2GB,有时在PC上打开时会因内存不足而异常退出。因此在判断节点的性能时,我们关注的是可用的系统资源,至少包括可用CPU资源、可用的RAM大小。
在软件资源方面,主要考虑部署在各个渲染客户端的渲染器情况,如是否部署了场景在渲染输出时所需要的各种渲染器。以主流的3D制作软件3DS Max和Maya为例,可以有菜单方式和命令行两种渲染方式。而在分布式动漫渲染环境中,用户在一段时间内提交了大量的作业,如果采用菜单方式进行处理,将占用大量的CPU资源,极大地降低了渲染的效率。因此在执行渲染计算时,我们将采用命令行方式来实现渲染计算。由于用户制作的场景文件可能是3DS Max格式或Maya格式,以3DS Max格式的“.max”文件为例,要实现对场景文件的渲染,需要调用3DS Max的命令行渲染执行程序“3dsmaxcmd.exe”;而对于Maya格式的“.ma”或“.mb”文件而言,渲染场景时则使用Maya的命令行程序“render.exe”。
在设计调度策略时,我们对渲染客户端节点的性能评价时不仅仅要考虑其硬件性能,还要分析其软件部署情况。由于3DS Max无法兼容Maya制作的场景文件,因此,我们在分配任务时不能将3DS Max格式的“.max”场景任务指定给只部署了Maya的客户端节点上,反之亦然。
节点性能评估方法和作业分配策略主要基于资源选择公式和作业分配公式,同时通过实验对所提出的节点性能评估方法和作业分配策略进行了验证。具体如下:
1)资源选择公式
资源选择的过程是为一个给定的作业从资源列表中选择资源.因为在资源列表中的所有资源都能在最小程度上满足所分配的作业,所以需要给出一个算法,为执行作业选择最好的资源。虽然随机选择也是一种选择方式,但它不是最佳资源选择策略。资源选择算法应该考虑资源目前的状态,并根据定量评估选择一个最佳的算法。
在考虑CPU和RAM的情况下,计算公式如下:
E=(1-C)(1-R)×100×(CPURatio×RAMSize)/(CPURatios×RAMSizes) ①
其中E为评估值,C为CPU占用率,R为内存占用率,CPURatio为CPU的主频(以G Hz为单位),RAMSize为RAM的大小(以GB为单位),CPURatios为基准的CPU主频大小,RAMSizes为基准的RAM大小。
其中,当节点为多核时,CPURatio=m×CPURatiosingle,其中m为节点的CPU个数,CPURatiosingle为单核的主频。
如式①所示,当CPU占用率或RAM占用率为1即100%时,认为该节点不可用,评估值为0,而当CPU和RAM的可用率越高时,表明该节点具备了渲染计算的硬件条件,相应地评估值也就越高。
2)作业分配公式
作业选择与资源选择的目的都是为了实现作业的优化分配,以实现该调度算法在分布式动漫渲染系统中的优越性,在此,以渲染场景文件的帧数为度量,我们提出了一种直接根据资源评估值确定分配作业任务量的算法,公式如下:
其中n为节点数,Tn为作业总量,Ti为分配在该客户端节点的帧数,Ej为第j个节点的评估值。
由上可知,对于评估值较高的节点,分配的资源应当越多,比如评估值分别为60和20的两个节点,其各自一次性分配的任务数量之比则为60∶20。由此,实现了评估值越高,反应的节点性能就越高,分配的资源数则越多,反之亦然。
3)基于渲染时间测试的验证
分别选取了双核两台PC作为渲染节点参与计算,由于节点两台PC的CPU主频、RAM大小相差不大,所以将公式(1)简化为:
E=(1-C)(1-R)×100 ②
节点1硬件配置情况:
CPU型号:Intel Pentium(R)Dual Core@2.4G
CPU主频:4.80G Hz
CPU利用率:0%
RAM大小:2047MB
RAM利用率:24%
节点2硬件配置情况:
CPU型号:Intel Pentium(R)Dual Core@1.86G
CPU主频:3.73G Hz
CPU利用率:1%
RAM大小:1535MB
RAM利用率:57%
渲染作业数为10帧,由此通过公式②计算得到的节点1的评估值E1=72.352,E2=41.3961。
于是有:
节点1承担的渲染任务T1=Tn×E1/(E1+E2)=10×72.352/(41.3961+72.352)=6.4,由于渲染任务的粒度为帧,四舍五入取整为6。
节点2承担的渲染任务T2=Tn×E2/(E1+E2)=10×41.3961/(41.3961+72.352)=3.6,由于渲染任务的粒度为帧,四舍五入取整为4。
由此可见,根据节点性能的评估值和作业分配公式,由节点1承担6帧的渲染任务,由节点2承担4帧的渲染任务。
为了分析基于节点性能评估的作业分配方案的优越性,我们进行了3组实验,即作业分配比例分别按照7∶3(相对接近E1/E2)、5∶5(平均分配)、6∶4(最接近于E1/E2)。
由于两个渲染节点可以并行地完成渲染计算,为此总的渲染时间取两个节点中渲染时间较长的值。总渲染时间统计如表1所示。
表1不同作业分配方案的渲染时间(单位格式:mm:ss)
由上面的数据可以看出,在所有分配方案中,6∶4的调度方案所用时间最短,而5∶5的平均分配方案所用的时间则最长,7∶3的调度方案虽然由于作业容量较小而显得优势不大。
因实验资源所限,在开展大容量作业的渲染实验上有较大难度,但从以上数据可以分析出:本调度方案与其他分配方案相比有着较大的优越性,特别是针对较大作业规模的渲染任务,本调度方案将明显地缩短总的渲染时间。
(2)本发明提供了一种基于可视域的场景文件和贴图集拆分方法。
该方法将计算机图形学中的消隐方法应用到场景文件的拆分上,对场景文件中的摄像机、物体之间的遮挡关系进行智能判断,保证了拆分后的子场景文件和贴图集的独立性,便于分派到网络环境中分散的客户端进行渲染;将当前场景中渲染需要的物体和贴图保存出来,以减少最终渲染场景对网络的负载。该方法可以有效针对摄影机局部可见的场景有比较明显的拆分;而对于摄影机全部可见的场景进行拆分的效果不是很明显。
该场景文件和贴图集拆分方法的处理流程如图3所示,包括下述步骤:
1)读取外部配置文件,获取开始帧frameStart、结束帧frameEnd、拆分步长frameStep、原始场景文件所在的目录和文件名SourcePath、拆分后存放的路径ResultPath参数;
2)获取场景文件对应的全部贴图路径,将环境贴图添加到贴图集中;
3)从开始帧为循环初始值,结束帧为终止值,拆分步长为循环增量,对场景进行如下操作:(i)保留直接在视域内的物体以及因遮挡关系对直接可见物体产生阴影的物体;(ii)删除场景中物体的不可见面,其特征为:
a)将所有当前帧的可见静态物体合并成一个网格;
b)调用判断蒙皮骨骼算法,找到当前蒙皮修改器骨骼的父物体及所有子物体;
c)根据a)步生成的可见网格,将静止物体复制后合并,移除静止物体的不可见面;
d)调用判断阴影遮挡算法,获取对目标物体产生阴影遮挡关系的源物体列表;
e)将所有需要存储的物体存储下来,至少包括c)步生成的网格、b)步生成的骨骼对象、d)步生成的有遮挡关系的物体、灯光源、摄像机和空间扭曲对象,收集贴图、添加环境贴图,将所有用到的贴图复制到输出路径。
其中“判断蒙皮骨骼算法”的流程图在图3中的“区域A”处标出;“判断阴影遮挡算法”在图3中的“区域B”处标出。
“判断蒙皮骨骼算法”的整体处理流程步骤:
1)判断当前物体是否为静态模型,如果是则不做处理,转向结束;
2)判断当前物体是否为蒙皮物体,如果不是则不做处理,转向结束;
3)从蒙皮修改器的关联物体中找到一个骨骼;
4)找到这个骨骼的根父骨骼;
5)从这个根骨骼往下递归找到所有子骨骼。
其中包括(i)查找当前蒙皮修改器骨骼的父物体和(ii)查找当前蒙皮修改器骨骼的所有子物体两个子程序,其流程图分别如图4和图5所示。
由于传统的蒙皮骨骼算法采用高级语言来自行编码实现,存在着与三维制作软件的访问和操作问题,开发有一定的难度,我们采取的是基于MAXScript脚本方式,利用3DS Max提供的有关API来实现,存在着兼容性好、效率高的优点。
(i)“查找当前蒙皮修改器骨骼的父物体”的特征为:
a)将返回父物体参数值retBone设置为undefined;
b)获取蒙皮物体(模型)的依赖节点,作为修改器;
c)依次判断refNodes[i]是否为BoneNodeTypes类型,其中BoneNodeTypes类为枚举型,包括BoneGeometry和Biped_Object两个值;
d)依次迭代执行“retBone=retBone.parent”获取蒙皮修改器骨骼的父物体;
e)将retBone作为返回值返回。
(ii)“查找当前蒙皮修改器骨骼的所有子物体”的特征为:
a)将根骨骼节点rootBone存放到数组retBones中;
b)依次便利各个子物体并存放到添加到数组retBones中;
c)将retBones作为返回值返回。
针对“判断蒙皮骨骼算法”的示例分析:
我们对具有蒙皮骨骼角色的3ds max场景文件(test2.max)进行了测试,采用包含“判断蒙皮骨骼算法”的脚本来进行处理,将存储有骨骼Bones的对象写入到日志文件中。部分日志内容如下:
[Bones:9000]#($Biped_Object:Bip01@[-117.081848,-161.764450,28.401211],$Biped_Object:Bip01 Footsteps@[-117.081848,-161.764450,-1.499820],$Biped_Object:Bip01Pelvis@[-116.706123,-161.554138,28.442028],$Biped_Object:Bip01 Spine@[-117.086655,-161.519135,31.709208],$Biped_Object:Bip01 L Thigh@[-115.468979,-157.295837,28.847418],$Biped_Object:Bip01 R Thigh@[-117.943268,-165.812439,28.036623],$Biped_Object:Bip01 Spinel@[-118.033485,-161.710205,39.082798],$Biped_Object:Bip01 L Calf@[-113.787048,-155.936615,15.300476],$Biped_Object:Bip01 R Calf@[-116.003677,-168.803177,14.789379],$Biped_Object:Bip01 Neck@[-119.745750,-161.691223,46.320194],$Biped_Object:Bip01 L Foot@[-118.903099,-154.521240,3.054805],$Biped_Object:Bip01 R Foot@[-122.414795,-166.919083,3.235962],$Biped_Object:Bip01 Head@[-121.053658,-162.589157,51.848904],$Biped_Object:Bip01 L Clavicle@[-119.733788,-159.932037,46.318409],$Biped_Object:Bip01 R Clavicle@[-119.748802,-163.450439,46.324085],$Biped_Object:Bip01 L Toe0@[-114.195961,-151.738037,-1.492454],$Biped_Object:Bip01 R Toe0@[-117.418022,-168.048553,-1.697342],$Dummy:Bip01 HeadNub@[-130.369247,-165.096863,72.848343],$PolyMesh:Object05@[-125.683075,-159.212906,44.739819],$PolyMesh:she@[-115.534218,-164.792786,57.514160],...)
其中[Bones:9000]表示所有当前蒙皮修改器骨骼的父物体和所有子物体的总数是9000,形如“$Biped_Object:Bip01@[-117.081848,-161.764450,28.401211]”则表示具体骨骼对象的名称和在3ds max坐标系下的位置。
“判断阴影遮挡算法”针对聚光灯、平行光灯、泛光灯类型的灯光源进行物体的遮挡关系判断,主要步骤如下:
1)初始化用于存放物体间存在遮挡关系的数组shadowCasters=#();
2)通过AABB方法获取删除不可见面后生成网格finalPloy的空间包围盒;
3)根据模型中网格数作为循环上限,依次得到网格节点的空间包围盒;
4)启用双向光线追踪算法实现遮挡关系的判断;
5)将存在着遮挡关系的物体Meshnode[j]添加到ShadowCasters节点数组中。
在本算法中涉及到子程序1——AABB获取空间包围盒方法、子程序2——判断点在灯光照射范围内部、子程序3——判断点在摄像机内部、子程序4——启用双向光线追踪算法判断投影关系。
子程序1——AABB获取空间包围盒方法如下:
fn getAABBLoc inObj=
BSize=inObj.max-inObj.min
P2=inObj.min+[BSize.x,0,0]
P3=inObj.min+[BSize.x,BSize.y,0]
P4=inObj.min+[0,BSize.y,0]
P5=inObj.min+[0,0,BSize.z]
P6=inObj.min+[BSize.x,0,BSize.z]
P8=inObj.min+[0,BSize.y,BSize.z]
返回数值:#(BSize,inOb.min,P2,P3,P4,P5,P6,inObj.max,P8)。
子程序2——判断点在灯光照射范围内部
本程序针对聚光灯、平行光灯、泛光灯类型的灯光源情形下,在给定点位置信息的情况下进行照射范围判断,主要包括下述步骤:
a)初始作为算法返回值的变量retVal=false;
b)判断灯光类型,当灯光源为平行光灯或泛光灯类型时,转向d);当灯光源为聚光灯类型时,对角度值deg1和灯光的衰减区光椎的角度进行大小比较判断,确定物体之间的遮挡关系,其中角度值deg1的计算公式为:
deg1=acos(dot(normalize-inlight.dir)(normailize(inpoint-inlight.pos)))
其中acos()表示反余弦函数,normalize是对矢量进行归一化运算,运算后的矢量长度为1;inlight.dir表示灯光的方向矢量,-inlight.dir则表示灯光的反方向矢量,inlight.pos表示灯光的位置坐标,inpoint表示物体上点的位置坐标,dot()表示点积运算;
deg1的含义为灯光的反方向矢量与从inpoint指向inlight.pos的方向矢量之间的夹角,判断遮挡关系的不等式为:θ<inlight.falloff/2③
其中inlight.falloff表示聚光灯的衰减区光椎的角度;
c)当关系不等式③满足时,表示点在灯光范围内,转向f),否则转向结束;
d)当灯光源为平行光灯或泛光灯类型时,对光源到物体上点的距离d和灯光的衰减区进行大小比较判断,确定物体之间的遮挡关系,其中距离d的计算公式为:
而PtoS矢量的计算公式为:PtoS=inpoint*(inverse inlight.transform)
其中,inpoint表示物体上点的位置坐标,PtoS矢量表示将inpoint点在3ds max坐标系下的坐标转换到了inlight灯光局部坐标系下的坐标,PtoS.x、PtoS.y分别表示PtoS矢量的横坐标值、纵坐标值,*表示乘法运算,inlight.transform表示inlight的局部坐标矩阵,inverse表示求出矩阵的逆矩阵,d表示inpoint在inlight灯光局部坐标系下距离坐标原点(即inlight的位置坐标)的长度。
在这种情况下,遮挡关系的判断关系不等式为:d<inlight.falloff ④
其中inlight.falloff表示平行光灯或泛光灯的衰减区距离;
e)当关系不等式④满足时,转向f),否则转向结束;
f)变量retVal=true,添加遮挡关系记录信息。
子程序2——“判断点在灯光源内部”的流程如图6所示。
子程序3——判断点在摄像机内部
本程序将摄像机看作为点光源来进行快速检测,主要包括下述步骤:
a)初始化返回参数值retVal=false
b)将角度值degTmp和摄像机的fov(视野角度)进行大小比较判断,确定点是否在摄像机视域范围内,其中角度值degTmp的计算公式为:
degTmp=acos(dot(normalize-inCam.dir)(normailize(inPos-inCam.pos)))
其中degTmp角度的含义与子程序2中的deg1角度的含义类似。
其中acos()表示反余弦函数,normalize是对矢量进行归一化运算,运算后的矢量长度为1;-inCam.dir表示摄像机的反方向矢量,inCam.pos表示摄像机的位置坐标,inPos表示点的位置坐标,dot()表示点积运算;
点在摄像机视域范围内的判断关系不等式为:degTmp<inCam.fov/2
子程序4——启用双向光线追踪算法判断投影关系
本程序通过启用双向光线追踪算法判断物体的空间包围盒是否投影到摄像机内,作为“判断阴影遮挡算法”的被调用函数,主要包括下述步骤:
a)判断灯光源是否产生投射阴影,如果产生则转向b)顺序执行,否则转向结束;
b)判断BBox[1]大小,如超过阴影投射阈值则转向c)顺序执行,否则转向结束;
c)变量i=2为初始值,终止值为9,开始循环,依次判断点BBox[i]是否在灯光照射范围内,如果其中有1点在灯光域范围内,设变量pil=true,并顺序执行转向d),否则i=i+1继续循环;
d)如果未开启光线追踪设置,赋值变量retVal=true,转向结束执行e);
e)定义如下三维空间的光线:
theRay=ray inLight.pos(normalize(Bbox[i]-inLight.pos))
其中inLight.pos为起点,(normalize(Bbox[i]-inLight.pos))为光线的矢量方向。
使用如下函数求交点:
rayHit=intersectRay fruMesh theRay
此函数实现的功能是返回射线theRay与物体对象fruMesh之间最近的交点。
说明:当射线theRay与物体fruMesh相交时,rayHit将被赋值,此时的数值不等于系统未被赋值的默认变量undefined。
f)如果rayHit!=undefined并且pointInCam rayHit.pos inCam(点rayHit.pos在摄像机inCam的范围内),赋值变量retVal=true,转向结束,否则转向g);
g)同理构建如下光线:
theRay=ray fruBox[i](normalize(inLight.pos-furBox[i]))
判断物体inObj与theRay之间的交点,如果存在交点,赋值变量retVal=true,转向结束。
子程序4——“启用双向光线追踪算法判断投影关系”的流程如图7所示。
针对“判断阴影遮挡算法”的示例分析:
我们对包含有人物、房屋等且在摄像机和灯光源环境下物体间存在着遮挡关系的3dsmax场景文件(Scene1.max)进行了测试,采用包含“判断阴影遮挡算法”的脚本来进行处理,将存储有遮挡关系的对象写入到日志文件中。,部分日志内容如下:[ShadowObj:33]:#($Editable_Poly:大11@[1102.227905,1170.053955,169.510040],$Plane:向阳花21@[660.900085,2284.797363,139.582581],$Plane:玉米131@[758.619934,2248.104248,129.743195],$Plane:玉米132@[697.722473,2248.104248,129.743195],$Editable_Poly:窗户42@[869.836304,2257.504150,143.573090],$Editable_Mesh:屋顶21@[1103.537720,2448.762939,288.483337],$Editable_Mesh:缘子21@[1104.586914,2275.104004,215.403534],$Editable_Poly:大21@[1102.227905,2258.053955,169.510040],$Editable_Poly:wall22@[630.806152,2150.429443,53.787125],$Plane:玉米187@[986.112854,3347.682373,128.239960],$Editable_Poly:DO62@[1182.765503,3368.428711,99.828705],$Editable_Poly:DO63@[1086.567993,3365.647461,99.556549],$Editable_Poly:门神31@[1116.558716,3364.116211,111.291504],$Editable_Poly:Rectangle36@[1108.743408,3365.151611,136.309662],$Editable_Patch:teeth33@[1119.417480,3353.344482,103.143341],$Plane:玉米190@[1047.010254,3354.229248,128.239960],$Plane:玉米191@[758.619934,3336.104248,129.743195],$Editable_Poly:窗户62@[869.836304,3345.504150,143.573090],$Editable_Poly:玻璃62@[877.761658,3349.267090,144.718842],$Editable_Poly:花盆96@[1000.624512,3333.576416,36.656586],...)
其中[ShadowObj:33]表示存在着遮挡关系的物体数为33,形如“$Editable_Poly:大11@[1102.227905,1170.053955,169.510040]”则表示具体骨骼对象的名称和在3ds max坐标系下的位置。
将需要存储的物体存储下来的方法如下:
SavedNodes=allOtherNodes+allSkinNodes+allBoneInSkinNodes+shadowCasters
其中allSkinNodes、allBoneInSkinNodes是通过针对蒙皮物体采用“判断蒙皮骨骼算法”生成的根骨骼物体及其子物体,shadowCasters是采用“判断阴影遮挡算法”的输出,allOtherNodes至少包括灯光源、摄像机和空间扭曲对象。
1)工作方式
用户利用3DS Max制作工具完成三维建模和动画设计,得到待渲染的场景(.max文件)和相关贴图;在提交渲染任务前采用本方法对渲染场景数据进行智能拆分,运行拆分脚本后自动生成符合拆分块要求的若干独立的场景及贴图。
为了实现数据拆分脚本对场景文件直接进行处理,采用命令方式启动3ds max并调用脚本来执行数据拆分。以3ds max 9.0为例操作如下:
a)通过注册表查找到3ds max 9.0的安装目录,如“C:\Program Files\Autodesk\3ds Max9”;
b)在Windows平台下的cmd窗口依次执行如下语句实现对脚本的调用:
cd C:\Program Files\Autodesk\3ds Max 9
3dsMAX-U MAXScript D:\SplitScene.ms
其中“D:\SplitScene.ms”文件即为数据拆分脚本。
2)有益效果
本发明的目的是提供一种高效的、快速的场景文件和贴图的自动搜集和拆分方法,依据场景渲染计算所需获取精简的模型和贴图数据,在“大场景、小视角”场景——即完整的场景比较复杂而场景中指定帧范围内在可视域内所包含的模型数据较小的情形下,拆分效果较明显,有效地缓解了渲染Client在执行渲染计算时获取素材文件的传输瓶颈。按照指定帧范围拆分后的场景文件大小通常可以达到原场景文件大小的30%-50%,由于本方法的实现基于3DS Max的嵌入式语言——MAXScript脚本,所以具有与3DS Max的良好兼容性。
3)拆分效果测试
为了测试脚本在拆分场景文件的效果,选取了4个基于3DS Max 9.0制作的场景作为测试用例,在保证场景文件在拆分前后能被正确渲染的前提下对拆分处理时延、拆分后场景文件的大小、子场景的贴图数进行了统计分析。
表2给出了4个场景的简单介绍。
表24个测试场景的简介
为了测试场景文件和贴图在不同拆分粒度情况下的拆分效果,分别给出了拆分粒度=5帧、10帧、20帧、50帧4种不同的情形。
其中场景文件Scene1.max、Scene2.max、Scene3.max、Scene4.max的拆分数据统计情况分别如表3、表4、表5和表6所示。
表3Scene1.max在不同拆分粒度情形下的拆分数据统计表(单位:MB)
表4Scene2.max在不同拆分粒度情形下的拆分数据统计表(单位:MB)
表5Scene3.max在不同拆分粒度情形下的拆分数据统计表(单位:MB)
表6Scene4.max在不同拆分粒度情形下的拆分数据统计表(单位:MB)
从表3--表6的统计数据可以看得出,拆分粒度越大,在完成一次拆分过程时脚本进行场景内部模型、贴图和动画数据处理以及保存的次数越少,因此,拆分脚本的总处理时延就较小;例如在拆分粒度为50帧情况下,对比场景文件Scene1.max以及拆分生成后的3个子场景文件大小和贴图集尺寸,由于相机在场景时间轴范围内,渲染过程几乎要用到所有的贴图,因此贴图集的拆分效果不明显,子场景文件的平均大小为4.62MB,是原始场景文件大小(18.2MB)的25.38%;例如Scene2.max、Scene3.max、Scene4.max在不同的拆分粒度情况下,拆分后子场景文件贴图集的数量相对于原始场景的贴图集数有一定的变化,典型的是Scene2.max在拆分粒度为50帧情况下,拆分后的第3个子场景文件的贴图集数为0;在场景文件大小拆分效果上,以Scene4.max最为明显,按照不同拆分粒度进行拆分时最小块的尺寸为18.8MB,是原始场景文件大小(151MB)的12.45%。
(3)基于(1)、(2)方法实现渲染作业分解的实现系统
本实现系统的实施方式如下:
开发计算机为“DELL微机,Intel(R)Core(TM)2 Duo CPU E7400 3.00GHz,2GB内存,250G硬盘”。部署在集群节点上的客户端软件采用C#编程语言;部署在Web服务器上的门户网站的开发环境为ASP.NET 2008,数据库服务器的开发环境为ASP.NET 2008+SQLServer 2005;考虑到客户端程序的轻量级设计原则,开发工具采用VC++6.0,避免安装.netframework 2.0环境。
Web服务器采用HPC架构的集群,运行环境为Windows Server 2003+IIS 6.0+.netframework 2.0;数据库服务器的运行环境为SQL Server 2005;调度服务器的运行环境为Windows Server 2003+3DS Max 9.0;局域网节点的运行环境为Windows XP以上的操作系统+3DS Max 9.0;广域网节点的运行环境为Windows XP以上的操作系统+IE 6.0以上并运行安装支持大文件传输的插件。
本发明运行在3TNet(高性能宽带信息网)上,能处理场景文件在100MB级以上的大文件的渲染作业分解,部署3台调度服务器,用于处理不同IP区域的提交的渲染作业。
本发明提出的面向广域网的3DS Max动漫渲染任务分解支持方法,从技术层面上解决了场景文件合贴图集难以按时间配置线(帧)进行拆分的问题,实现了数据量和计算量的对等拆分,有效地减少了场景文件和贴图集的传输量,为充分整合广域网环境下的各闲散渲染节点资源提供了技术支撑;同时,本发明设计了应用上述支持方法进行高效率的渲染任务分解的实现系统,为用户提供了便捷的渲染平台。本发明的研究成果可进一步应用到云计算平台中,为分布式动漫渲染的细粒度并行处理提供了有力的技术支持。
Claims (6)
1.面向广域网的动漫渲染任务分解实现系统,其特征在于,由以下组成:
该实现系统的中心部分为集中式;边缘部分为分布式,用于用户提交待渲染的作业;
中心的集中式包括Web服务器,数据库服务器,调度服务器,存储服务器,部署了渲染客户端软件的局域网节点;
Web服务器:用于接收用户通过B/S方式提交的作业,负责响应用户提交的作业请求;
数据库服务器:至少记录了渲染用户的基本信息和作业信息;
调度服务器:保持与渲染客户端软件的通信,实现对渲染任务的分解与分配,指挥和控制渲染客户端的任务执行;
存储服务器:至少存储了用户上传的场景文件和贴图文件、各渲染客户端执行渲染输出的图片序列或视频文件;
局域网节点:至少部署了3DS Max制作软件、渲染客户端软件,由集群节点或普通PC节点组成;
边缘的分布式包括广域网节点;
广域网节点:至少部署了支持大文件传输的插件、渲染客户端软件,由集群节点或普通PC节点组成。
2.应用根据权利要求1所述的面向广域网的动漫渲染任务分解实现系统进行动漫渲染任务分解支持方法,其特征在于,包括以下步骤:
(1)用户通过渲染门户提交作业
当广域网节点上部署了三维制作软件时,根据调用部署在该节点上的渲染客户端软件中的数据拆分脚本,将提交渲染任务单中指定起始帧和结束帧范围内的场景文件和贴图集从原始场景文件中进行剥离,避免了整个原始场景文件和贴图集的完整传输;如果没有广域网节点上安装3DS Max制作软件,也允许通过B/S方式提交渲染作业,此时直接将包含场景文件和贴图集的压缩包上传至存储服务器;然后,由调度服务器来完成后续的作业分解与分配任务;
(2)渲染调度服务器生成作业分解与分配方案
局域网节点和广域网节点向调度服务器汇报该节点的性能信息,该信息至少包括CPU主频、CPU利用率、可用RAM大小、剩余硬盘空间、是否安装有三维制作软件及版本,调度服务器根据作业的任务量和节点的性能评价形成作业的分解与分配方案——渲染子任务和执行渲染计算的客户端节点的对应表;
(3)渲染客户端执行渲染计算并将结果上传至存储服务器
部署在调度服务器的服务器端程序向执行渲染任务的各客户端发送渲染子任务信息,渲染客户端收到该信息后,从存储服务器上下载子任务所对应的场景文件和贴图集的压缩包,进行本机解压缩,同时调用安装在本机上的三维制作软件渲染器,通过命令行方式执行渲染计算,按用户规定的渲染参数要求完成作业的渲染,生成图片序列或视频文件;同时客户端软件负责将渲染输出结果上传至存储服务器;
(4)Web服务器以B/S方式呈现用户的作业状态并提供下载
当渲染客户端完成了用户提交的某个渲染作业后,会对数据库服务器的作业信息表进行状态更新,这样当用户通过B/S方式查询作业状态时会显示“已完成”,这样用户可以通过门户上显示的链接实现文件的下载。
3.根据权利要求2所述的面向广域网的动漫渲染任务分解支持方法,其特征在于,包括如下用于支持渲染任务分解的方法:(1)基于可视域的场景文件和贴图集拆分方法;(2)节点性能评估方法和作业分配策略;(3)将计算机图形学中的物体消隐方法应用到场景文件中物体的保留或剔除选择过程中,将场景中不可见并不对场景产生阴影的物体剔除后将剩下的物体保留成一个新的场景文件,同时将这些保留物体所用到的贴图拷贝到目标文件夹。
4.根据权利要求2所述的面向广域网的动漫渲染任务分解支持方法,其特征在于,节点性能评估方法和作业分配策略基于资源选择公式和作业分配公式,具体如下:
(1)资源选择公式
在考虑CPU和RAM的情况下,计算公式如下:
E=(1-C)(1-R)×100×(CPURatio×RAMSize)/(CPURatios×RAMSizes) ①
其中E为评估值,C为CPU占用率,R为内存占用率,CPURatio为CPU的主频(以G Hz为单位),RAMSize为RAM的大小(以GB为单位),CPURatios为基准的CPU主频大小,RAMSizes为基准的RAM大小;
其中,当节点为多核时,CPURatio=m×CPURatiosingle,其中m为节点的CPU个数,CPURatiosingle为单核的主频;
如式①所示,当CPU占用率或RAM占用率为1即100%时,认为该节点不可用,评估值为0,而当CPU和RAM的可用率越高时,表明该节点具备了渲染计算的硬件条件,相应地评估值也就越高;
(2)作业分配公式
作业选择与资源选择的目的都是为了实现作业的优化分配,以实现该调度算法在分布式动漫渲染系统中的优越性,在此,以渲染场景文件的帧数为度量,提出了一种直接根据资源评估值确定分配作业任务量的算法,公式如下:
其中n为节点数,Tn为作业总量,Ti为分配在该客户端节点的帧数,Ej为第j个节点的评估值。
5.根据权利要求2所述的面向广域网的动漫渲染任务分解支持方法,其特征在于,所述的基于可视域的场景文件和贴图集拆分方法包括下述步骤:
(1)读取外部配置文件,获取开始帧frameStart、结束帧frameEnd、拆分步长frameStep、原始场景文件所在的目录和文件名SourcePath、拆分后存放的路径ResultPath参数;
(2)获取场景文件对应的全部贴图路径,将环境贴图添加到贴图集中;
(3)从开始帧为循环初始值,结束帧为终止值,拆分步长为循环增量,对场景进行如下操作:(i)保留直接在视域内的物体以及因遮挡关系对直接可见物体产生阴影的物体;(ii)删除场景中物体的不可见面;将需要保留的物体分为三类:蒙皮物体、在光线追踪情况下对目标物体产生阴影遮挡关系的源物体和网格;
上述步骤(3)的具体步骤如下:
a)将所有当前帧的可见静态物体合并成一个网格;
b)调用判断蒙皮骨骼算法,找到当前蒙皮修改器骨骼的父物体及所有子物体;
c)根据a)步生成的可见网格,将静止物体复制后合并,移除静止物体的不可见面;
d)调用判断阴影遮挡算法,获取对目标物体产生阴影遮挡关系的源物体列表;
e)将所有需要存储的物体存储下来,至少包括c)步生成的网格、b)步生成的骨骼对象、d)步生成的有遮挡关系的物体、灯光源、摄像机和空间扭曲对象,收集贴图、添加环境贴图,并将所有用到的贴图复制到输出路径。
6.根据权利要求5所述的面向广域网的动漫渲染任务分解支持方法,其特征在于,蒙皮骨骼算法步骤如下:
(1)判断当前物体是否为静态模型,如果是则不做处理,转向结束;
(2)判断当前物体是否为蒙皮物体,如果不是则不做处理,转向结束;
(3)从蒙皮修改器的关联物体中找到一个骨骼;
(4)找到这个骨骼的根父骨骼;
(5)从这个根骨骼往下递归找到所有子骨骼。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010543756 CN102088472B (zh) | 2010-11-12 | 2010-11-12 | 面向广域网的动漫渲染任务分解支持方法及实现系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010543756 CN102088472B (zh) | 2010-11-12 | 2010-11-12 | 面向广域网的动漫渲染任务分解支持方法及实现系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102088472A true CN102088472A (zh) | 2011-06-08 |
CN102088472B CN102088472B (zh) | 2013-06-12 |
Family
ID=44100084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010543756 Expired - Fee Related CN102088472B (zh) | 2010-11-12 | 2010-11-12 | 面向广域网的动漫渲染任务分解支持方法及实现系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102088472B (zh) |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102625144A (zh) * | 2011-11-28 | 2012-08-01 | 苏州奇可思信息科技有限公司 | 基于局域网云网络的并行视频处理方法 |
CN102750297A (zh) * | 2011-11-11 | 2012-10-24 | 新奥特(北京)视频技术有限公司 | 一种集群打包的渲染合成方法及系统 |
CN102819680A (zh) * | 2012-07-31 | 2012-12-12 | 北京天神互动科技有限公司 | 在线角色扮演网络游戏的视野处理系统和方法 |
CN102881036A (zh) * | 2012-07-30 | 2013-01-16 | 北京中科盘古科技发展有限公司 | 一种动画场景文件压缩的方法 |
CN103023959A (zh) * | 2012-08-09 | 2013-04-03 | 江苏科技大学 | 一种分布渲染系统及方法 |
CN103067341A (zh) * | 2011-10-20 | 2013-04-24 | 中国移动通信集团四川有限公司 | 网上营业厅访问方法、系统和装置 |
CN103390288A (zh) * | 2012-05-09 | 2013-11-13 | 上海幻维数码创意科技有限公司 | 三维渲染文件批量拆分渲染层处理系统 |
CN103426193A (zh) * | 2012-05-25 | 2013-12-04 | 上海幻维数码创意科技有限公司 | 一种分布式动画渲染方法及装置 |
CN103578129A (zh) * | 2013-11-13 | 2014-02-12 | 北京像素软件科技股份有限公司 | 一种三维场景物理渲染方法和装置 |
CN103645892A (zh) * | 2013-11-29 | 2014-03-19 | 北京奇虎科技有限公司 | 一种图片处理方法和系统 |
CN104038771A (zh) * | 2014-06-19 | 2014-09-10 | 常州大学 | 一种基于Hadoop2的高效能流媒体文件分布式存储系统及方法 |
CN104183006A (zh) * | 2014-09-05 | 2014-12-03 | 国家电网公司 | 一种基于Web3D模型的动态贴图方法 |
CN105817031A (zh) * | 2016-03-16 | 2016-08-03 | 小天才科技有限公司 | 游戏地图的物体绘制方法及装置 |
CN106157355A (zh) * | 2016-07-01 | 2016-11-23 | 国家超级计算深圳中心(深圳云计算中心) | 一种基于高性能计算的流体云仿真渲染系统以及方法 |
CN106204713A (zh) * | 2016-07-22 | 2016-12-07 | 网易(杭州)网络有限公司 | 静态合并处理方法和装置 |
CN106254489A (zh) * | 2016-08-16 | 2016-12-21 | 王淼 | 一种无文件传输的云渲染系统及其方法 |
CN106331696A (zh) * | 2016-08-29 | 2017-01-11 | 苏州蓝海彤翔系统科技有限公司 | 丢帧检测方法和装置 |
CN103927779B (zh) * | 2013-12-30 | 2017-02-01 | 华侨大学 | 一种基于配置的二维动画生成方法 |
CN106559648A (zh) * | 2015-09-29 | 2017-04-05 | 鸿富锦精密工业(深圳)有限公司 | 行人侦测系统及方法 |
CN106803842A (zh) * | 2017-02-15 | 2017-06-06 | 无锡十月中宸科技有限公司 | 一种基于可扩展和高性能计算的分布式管理架构及方法 |
CN107154966A (zh) * | 2017-04-24 | 2017-09-12 | 浙江宇视科技有限公司 | 一种视频数据写入方法以及装置 |
CN107196781A (zh) * | 2017-01-06 | 2017-09-22 | 北京神州泰岳信息安全技术有限公司 | 安全配置核查任务分配方法及装置 |
CN107526623A (zh) * | 2016-06-22 | 2017-12-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
CN107845135A (zh) * | 2017-11-15 | 2018-03-27 | 山东师范大学 | 一种三维仿真模型及模型库的构建方法及装置 |
CN109343774A (zh) * | 2018-10-29 | 2019-02-15 | 广东明星创意动画有限公司 | 一种快速文件预处理渲染系统 |
CN109389666A (zh) * | 2018-09-29 | 2019-02-26 | 吉林动画学院 | 分布式实时渲染装置及方法 |
US10228748B2 (en) | 2013-02-28 | 2019-03-12 | Intel Corporation | Context aware power management for graphics devices |
CN109922123A (zh) * | 2018-12-27 | 2019-06-21 | 北京奥鹏远程教育中心有限公司 | 服务器间调用关系的展示方法及展示装置 |
CN110765068A (zh) * | 2019-09-20 | 2020-02-07 | 数字视觉云(北京)科技发展有限公司 | 一种Maya文件处理方法、装置、终端及存储介质 |
CN110955504A (zh) * | 2019-10-21 | 2020-04-03 | 量子云未来(北京)信息科技有限公司 | 智能分配渲染任务的方法、服务器、系统及存储介质 |
CN111045826A (zh) * | 2019-12-17 | 2020-04-21 | 四川省建筑设计研究院有限公司 | 一种针对局域网环境分布式并行渲染的计算方法及系统 |
CN112118463A (zh) * | 2019-06-21 | 2020-12-22 | 广州虎牙科技有限公司 | 一种信息处理方法、云平台及信息处理系统 |
CN112473130A (zh) * | 2020-11-26 | 2021-03-12 | 成都数字天空科技有限公司 | 场景渲染方法、装置、集群、存储介质及电子设备 |
CN112669428A (zh) * | 2021-01-06 | 2021-04-16 | 南京亚派软件技术有限公司 | 一种基于服务器和客户端协作的bim模型渲染方法 |
CN113096220A (zh) * | 2021-04-08 | 2021-07-09 | 苏州伊恩动漫有限公司 | 动漫场景渲染制作方法 |
CN113538705A (zh) * | 2021-07-19 | 2021-10-22 | 中国人民解放军66350部队 | 一种基于Vulkan的飞行仿真用视景引擎 |
CN114009035A (zh) * | 2019-06-28 | 2022-02-01 | Ati科技无限责任公司 | 在功率管理性能得到保证的情况下的实时gpu渲染 |
CN114612592A (zh) * | 2022-05-12 | 2022-06-10 | 广州美术学院 | 一种基于Maya的前台渲染插件及其渲染方法 |
CN114942564A (zh) * | 2022-06-07 | 2022-08-26 | 北京领为军融科技有限公司 | 用于空战对抗模拟训练的大视场背投系统及背投球幕 |
CN114973849A (zh) * | 2022-05-19 | 2022-08-30 | 北京领为军融科技有限公司 | 用于空战对抗模拟训练系统的简易正投系统 |
CN115190993A (zh) * | 2020-03-05 | 2022-10-14 | 高通股份有限公司 | 用于对应用计算的分配的方法和装置 |
WO2022228521A1 (zh) * | 2021-04-30 | 2022-11-03 | 华为云计算技术有限公司 | 渲染方法及其装置、计算机设备、存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587583A (zh) * | 2009-06-23 | 2009-11-25 | 长春理工大学 | 基于gpu集群的渲染农场 |
-
2010
- 2010-11-12 CN CN 201010543756 patent/CN102088472B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587583A (zh) * | 2009-06-23 | 2009-11-25 | 长春理工大学 | 基于gpu集群的渲染农场 |
Non-Patent Citations (2)
Title |
---|
YI-ZHEN CAO 等: "Asymmetric Distributed Animation Rendering System Based on WAN", 《9TH IEEE INTERNATIONAL CONFERENCE ON CONGNITIVE INFORMATICS》 * |
李樱等: "广域网环境下分布式动漫渲染研究", 《微电子学与计算机》 * |
Cited By (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067341B (zh) * | 2011-10-20 | 2017-05-03 | 中国移动通信集团四川有限公司 | 网上营业厅访问方法、系统和装置 |
CN103067341A (zh) * | 2011-10-20 | 2013-04-24 | 中国移动通信集团四川有限公司 | 网上营业厅访问方法、系统和装置 |
CN102750297A (zh) * | 2011-11-11 | 2012-10-24 | 新奥特(北京)视频技术有限公司 | 一种集群打包的渲染合成方法及系统 |
CN102625144A (zh) * | 2011-11-28 | 2012-08-01 | 苏州奇可思信息科技有限公司 | 基于局域网云网络的并行视频处理方法 |
CN103390288A (zh) * | 2012-05-09 | 2013-11-13 | 上海幻维数码创意科技有限公司 | 三维渲染文件批量拆分渲染层处理系统 |
CN103390288B (zh) * | 2012-05-09 | 2016-04-27 | 上海幻维数码创意科技有限公司 | 三维渲染文件批量拆分渲染层处理系统 |
CN103426193A (zh) * | 2012-05-25 | 2013-12-04 | 上海幻维数码创意科技有限公司 | 一种分布式动画渲染方法及装置 |
CN102881036B (zh) * | 2012-07-30 | 2015-04-22 | 北京中科盘古科技发展有限公司 | 一种动画场景文件压缩的方法 |
CN102881036A (zh) * | 2012-07-30 | 2013-01-16 | 北京中科盘古科技发展有限公司 | 一种动画场景文件压缩的方法 |
CN102819680A (zh) * | 2012-07-31 | 2012-12-12 | 北京天神互动科技有限公司 | 在线角色扮演网络游戏的视野处理系统和方法 |
CN103023959B (zh) * | 2012-08-09 | 2015-10-28 | 江苏科技大学 | 一种分布渲染系统及方法 |
CN103023959A (zh) * | 2012-08-09 | 2013-04-03 | 江苏科技大学 | 一种分布渲染系统及方法 |
US10228748B2 (en) | 2013-02-28 | 2019-03-12 | Intel Corporation | Context aware power management for graphics devices |
CN104937551B (zh) * | 2013-02-28 | 2019-06-04 | 英特尔公司 | 用于管理设备中的功率的计算机实现的方法和用于管理设备中的功率的系统 |
CN103578129A (zh) * | 2013-11-13 | 2014-02-12 | 北京像素软件科技股份有限公司 | 一种三维场景物理渲染方法和装置 |
CN103645892A (zh) * | 2013-11-29 | 2014-03-19 | 北京奇虎科技有限公司 | 一种图片处理方法和系统 |
CN103927779B (zh) * | 2013-12-30 | 2017-02-01 | 华侨大学 | 一种基于配置的二维动画生成方法 |
CN104038771A (zh) * | 2014-06-19 | 2014-09-10 | 常州大学 | 一种基于Hadoop2的高效能流媒体文件分布式存储系统及方法 |
CN104038771B (zh) * | 2014-06-19 | 2017-03-15 | 常州大学 | 一种基于Hadoop2的高效能流媒体文件分布式存储系统及方法 |
CN104183006A (zh) * | 2014-09-05 | 2014-12-03 | 国家电网公司 | 一种基于Web3D模型的动态贴图方法 |
CN106559648A (zh) * | 2015-09-29 | 2017-04-05 | 鸿富锦精密工业(深圳)有限公司 | 行人侦测系统及方法 |
CN105817031A (zh) * | 2016-03-16 | 2016-08-03 | 小天才科技有限公司 | 游戏地图的物体绘制方法及装置 |
CN107526623B (zh) * | 2016-06-22 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
CN107526623A (zh) * | 2016-06-22 | 2017-12-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
CN106157355A (zh) * | 2016-07-01 | 2016-11-23 | 国家超级计算深圳中心(深圳云计算中心) | 一种基于高性能计算的流体云仿真渲染系统以及方法 |
CN106204713A (zh) * | 2016-07-22 | 2016-12-07 | 网易(杭州)网络有限公司 | 静态合并处理方法和装置 |
CN106254489A (zh) * | 2016-08-16 | 2016-12-21 | 王淼 | 一种无文件传输的云渲染系统及其方法 |
CN106331696A (zh) * | 2016-08-29 | 2017-01-11 | 苏州蓝海彤翔系统科技有限公司 | 丢帧检测方法和装置 |
CN106331696B (zh) * | 2016-08-29 | 2018-05-08 | 苏州蓝海彤翔系统科技有限公司 | 丢帧检测方法和装置 |
CN107196781A (zh) * | 2017-01-06 | 2017-09-22 | 北京神州泰岳信息安全技术有限公司 | 安全配置核查任务分配方法及装置 |
CN106803842A (zh) * | 2017-02-15 | 2017-06-06 | 无锡十月中宸科技有限公司 | 一种基于可扩展和高性能计算的分布式管理架构及方法 |
CN107154966A (zh) * | 2017-04-24 | 2017-09-12 | 浙江宇视科技有限公司 | 一种视频数据写入方法以及装置 |
CN107845135A (zh) * | 2017-11-15 | 2018-03-27 | 山东师范大学 | 一种三维仿真模型及模型库的构建方法及装置 |
CN107845135B (zh) * | 2017-11-15 | 2020-11-20 | 山东师范大学 | 一种三维仿真模型及模型库的构建方法及装置 |
CN109389666A (zh) * | 2018-09-29 | 2019-02-26 | 吉林动画学院 | 分布式实时渲染装置及方法 |
CN109343774A (zh) * | 2018-10-29 | 2019-02-15 | 广东明星创意动画有限公司 | 一种快速文件预处理渲染系统 |
CN109343774B (zh) * | 2018-10-29 | 2021-04-20 | 广东明星创意动画有限公司 | 一种快速文件预处理渲染系统 |
CN109922123A (zh) * | 2018-12-27 | 2019-06-21 | 北京奥鹏远程教育中心有限公司 | 服务器间调用关系的展示方法及展示装置 |
CN109922123B (zh) * | 2018-12-27 | 2022-01-11 | 北京奥鹏远程教育中心有限公司 | 服务器间调用关系的展示方法及展示装置 |
CN112118463A (zh) * | 2019-06-21 | 2020-12-22 | 广州虎牙科技有限公司 | 一种信息处理方法、云平台及信息处理系统 |
US11954792B2 (en) | 2019-06-28 | 2024-04-09 | Ati Technologies Ulc | Real-time GPU rendering with performance guaranteed power management |
CN114009035A (zh) * | 2019-06-28 | 2022-02-01 | Ati科技无限责任公司 | 在功率管理性能得到保证的情况下的实时gpu渲染 |
CN110765068A (zh) * | 2019-09-20 | 2020-02-07 | 数字视觉云(北京)科技发展有限公司 | 一种Maya文件处理方法、装置、终端及存储介质 |
CN110955504A (zh) * | 2019-10-21 | 2020-04-03 | 量子云未来(北京)信息科技有限公司 | 智能分配渲染任务的方法、服务器、系统及存储介质 |
CN110955504B (zh) * | 2019-10-21 | 2022-12-20 | 量子云未来(北京)信息科技有限公司 | 智能分配渲染任务的方法、服务器、系统及存储介质 |
CN111045826A (zh) * | 2019-12-17 | 2020-04-21 | 四川省建筑设计研究院有限公司 | 一种针对局域网环境分布式并行渲染的计算方法及系统 |
CN115190993A (zh) * | 2020-03-05 | 2022-10-14 | 高通股份有限公司 | 用于对应用计算的分配的方法和装置 |
CN112473130A (zh) * | 2020-11-26 | 2021-03-12 | 成都数字天空科技有限公司 | 场景渲染方法、装置、集群、存储介质及电子设备 |
CN112669428A (zh) * | 2021-01-06 | 2021-04-16 | 南京亚派软件技术有限公司 | 一种基于服务器和客户端协作的bim模型渲染方法 |
CN113096220A (zh) * | 2021-04-08 | 2021-07-09 | 苏州伊恩动漫有限公司 | 动漫场景渲染制作方法 |
WO2022228521A1 (zh) * | 2021-04-30 | 2022-11-03 | 华为云计算技术有限公司 | 渲染方法及其装置、计算机设备、存储介质 |
CN113538705A (zh) * | 2021-07-19 | 2021-10-22 | 中国人民解放军66350部队 | 一种基于Vulkan的飞行仿真用视景引擎 |
CN114612592A (zh) * | 2022-05-12 | 2022-06-10 | 广州美术学院 | 一种基于Maya的前台渲染插件及其渲染方法 |
CN114973849A (zh) * | 2022-05-19 | 2022-08-30 | 北京领为军融科技有限公司 | 用于空战对抗模拟训练系统的简易正投系统 |
CN114942564A (zh) * | 2022-06-07 | 2022-08-26 | 北京领为军融科技有限公司 | 用于空战对抗模拟训练的大视场背投系统及背投球幕 |
Also Published As
Publication number | Publication date |
---|---|
CN102088472B (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102088472B (zh) | 面向广域网的动漫渲染任务分解支持方法及实现系统 | |
US10636209B1 (en) | Reality-based three-dimensional infrastructure reconstruction | |
US8583724B2 (en) | Scalable, multi-user server and methods for rendering images from interactively customizable scene information | |
CN102831307B (zh) | 基于三维gis技术的电网可视化系统及方法 | |
CN104050042B (zh) | Etl作业的资源分配方法及装置 | |
CN102253981A (zh) | 一种三维地理信息系统海量模型快速显示浏览方法 | |
CN109741011B (zh) | 一种优化室内设计师工作流程的服务平台及方法 | |
CN112581578A (zh) | 一种基于软件定义的云渲染系统 | |
CN112765513A (zh) | 大规模建筑场景的细粒度化Web3D在线可视化方法 | |
Souri et al. | A survey for replica placement techniques in data grid environment | |
CN109523423A (zh) | 一种应用系统生成方法、装置、设备及存储介质 | |
Azari et al. | A data replication algorithm for groups of files in data grids | |
CN108108230A (zh) | 基于docker的云平台发布系统 | |
CN104580422A (zh) | 基于共享缓存的集群渲染节点数据访问方法 | |
Zhengqiao et al. | Research on clustering algorithm for massive data based on Hadoop platform | |
KR20090041204A (ko) | 3d 모델 식별자를 이용한 랜더링 시스템 및 방법 | |
CN113486421A (zh) | 海上风电数字可视化展示方法、系统、介质及装置 | |
Chen et al. | Cloud computing platform for an online model library system | |
CN111552893A (zh) | AutoCAD中实现多源地理信息数据在线加载的方法、插件及系统 | |
Xu et al. | A task and data balanced distributed photon mapping method | |
CN111176834A (zh) | 自动伸缩策略运维方法、系统和可读存储介质 | |
CN108921930A (zh) | 一种基于面向对象的馆藏文物渲染方法及其系统 | |
Sui et al. | Constructing rules and scheduling technology for 3D building models | |
Xuan | Design of 3d animation color rendering system based on image enhancement algorithm and machine learning | |
Lin et al. | Three Dimensional Information Sharing Platform of Power Transmission and Transformation Based on Grid Information Model (GIM) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130612 Termination date: 20141112 |
|
EXPY | Termination of patent right or utility model |