本发明属于三维动画合成领域,特别是涉及一种基于pbrt的大规模三维群体表演动画并行渲染方法。
背景技术:
三维动画渲染技术大体上可以分为两大类,一类是三维游戏里的经常用到的实时渲染(real-timerendering),另一类是动画和电影制作中广泛采用的离线渲染(offlinerendering)。前者因为需要保证渲染速度而不得不在画质上做出妥协,后者则可以为了追求画面真实感而不计成本。
三维动画渲染的目标主要有两个,一是要求动画效果具有非常强的真实感,二是要求在渲染的过程中能够提供良好的交互性,从而达到实时的目的。虽然当前的pc机具有丰富的存储资源、快速的处理器以及强大的图形处理芯片,包含大规模角色的三维动画的实时渲染仍是一个具有挑战性的问题。目前在三维动画实时渲染方面主要有三种技术,分别是几何细节层次技术、裁剪技术和基于图像的替代物技术。这几种技术的共同点是为了提高三维动画角色渲染的速度,尽量减少场景的复杂性和需要渲染模型的多边形数量,但是这必然会降低动画场景的真实感和人物模型的逼真性。
表演类群体动画是一类特殊的动画,角色数量多、运动轨迹和动作变化有严格的规则、细微的动作或运动变化都会带来不同的表演效果。因此动画师在创作过程中追求的首要效果是动画人物表演的逼真感和舞台环境的真实感。为了实现这些目标,需要对场景模型、人物模型、道具模型以及灯光都要良好的渲染效果,同时还能对摄像机提供灵活的交互支持。实时的渲染方法难以满足这些要求,
技术实现要素:
为了解决现有技术的不足,本发明提供了一种基于pbrt的大规模三维群体表演动画并行渲染方法。其中,pbrt(physicallybasedrenderingtoolkit)是采用光线追踪算法的离线渲染器,可以增强真实感渲染,同时它的插件式架构,允许动态加载模块,方便使用者扩展出新的功能,因此本发明使用pbrt渲染器可以实现对大规模三维群体表演动画的渲染。
本发明的基于pbrt的大规模三维群体表演动画并行渲染方法,包括:
预处理阶段:结合3dsmax软件和pbrt渲染插件,导出适用于pbrt渲染程序的相关渲染数据,进而生成人物的动作和位置数据并写入pbrt对应的渲染脚本文件,批量生成pbrt主渲染文件;
并行计算资源配置阶段:根据当前可用的计算资源,将待渲染的整个动画所对应的pbrt主渲染文件分别分配到不同计算节点的不同处理器上,然后以并行的方式同时调用pbrt渲染程序进行渲染,得到带有编号的图片序列;
后处理阶段:将渲染出的带有编号的图片序列合成动画视频,最终得到高真实感三维群体表演动画。
进一步的,在预处理阶段中,适用于pbrt渲染程序的相关渲染数据包括人物模型、场景模型、灯光和摄像机参数。
本发明在3dsmax软件中对群体动画中不同角色的人物模型和舞台场景模型进行编辑,设置灯光和摄像机的参数。
进一步的,在预处理阶段中,人物的动作和位置数据包括人体表演动作数据和轨迹数据。
进一步的,通过运动捕获方式采集得到人体表演动作数据,基于多约束的群体运动表演轨迹时空信息传输演绎算法生成轨迹数据。
其中,基于多约束的群体运动表演轨迹时空信息传输演绎算法为:从小规模动画和大规模动画的结构相似性,以及群体表演动画的特点入手,建立小规模动画和大规模动画之间群体运动映射关系,进而把小规模动画的运动轨迹变化信息传递到大规模动画上,传递的过程抽象成一个多约束优化模型,求解这个模型能够快速的得到大规模动画的运动轨迹信息。
基于多约束的群体运动表演轨迹时空信息传输演绎算法生成轨迹数据的具体过程包括:
(1)设计小规模动画和大规模群体动画的初始状态。
(2)设定小规模动画初始队形和大规模动画初始队形之间的映射关系。
(3)根据二者的运动映射关系,建立时序轨迹传递的多约束优化模型。
(4)求解优化模型,得到大规模群体动画每一帧的运动轨迹。
进一步的,每一帧动画对应一个pbrt主渲染文件。
群体表演动画往往由成千上万帧组成,每一帧中个体的位置和运动状态都是不一样的,所以每一帧动画都对应一个主渲染文件(*.pbrt),手工导出成千上万个主渲染文件一件非常耗时耗力的事情。因此,在预处理阶段中,采用批处理算法批量生成pbrt主渲染文件,其具体过程为:
首先将所有主渲染文件中包含的各种动画数据预存起来;
然后将各种动画数据对应赋予给相应pbrt主渲染文件中的每一变量中,最后批量生成pbrt主渲染文件。
进一步的,在预处理阶段中,还对场景模型进行设置,其具体过程为:
修改材质和贴图;
添加灯光;
添加摄像机;
运用pbrt导出插件输出场景模型对应的渲染文件。
进一步的,场景模型对应的渲染文件包括主渲染文件、模型材质信息文件和模型几何信息文件。
进一步的,在并行计算资源配置阶段中,以并行的方式同时调用pbrt渲染程序进行渲染的具体过程包括:
step1:根据队列名称,搜索当前集群上授权可用且处于空闲状态的计算节点,把节点名称、节点属性、每个节点所包含的处理器数目记录一个动态表中;
step2:衡量每个队列的处理能力,根据能力的不同把渲染任务平衡的分配到每个队列上;
step3:每个队列根据节点的处理能力,再把每个子任务平衡的分配到不同节点上;
step4:每个处理器分别调用主渲染程序,实现并行渲染。
进一步的,以并行的方式同时调用pbrt渲染程序进行渲染的具体过程,还包括:
每隔一段时间,检查可用节点的状态,并更新动态表,且返回step1调整任务分配。
与现有技术相比,本发明的有益效果是:
(1)本发明的基于pbrt的大规模三维群体表演动画并行渲染方法,首先结合3dsmax软件和pbrt渲染插件,导出适用于pbrt渲染程序的人物模型、场景模型、灯光和摄像机等渲染数据,其次,结合算法生成的人物的动作和位置数据得到批量的pbrt渲染文件,再次,设计计算资源分配算法将这些渲染文件合理地分配到不同的计算节点上,最后通过后处理合成方法得到高真实感的大规模三维群体表演动画。
(2)本发明的基于pbrt的大规模三维群体表演动画并行渲染方法,在并行计算资源配置阶段中,以并行的方式同时调用pbrt渲染程序进行渲染,通过并行任务分配在每个时刻都能最大化的利用已有的计算资源,提高了三维大规模群体表演动画的渲染效率。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本发明的方法流程图;
图2为本发明的并行处理流程图;
图3为本发明的材质编辑器窗口的操作;
图4为本发明的材质/贴图浏览器窗口的操作;
图5为本发明的diffusetexture设置窗口;
图6为本发明的选择pbrtbitmap的窗口;
图7为本发明的选择usetrilinearinterpolation的窗口;
图8为本发明的贴图文件选择窗口。
图9本发明的选择窗口中的预览贴图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
图1为本发明的方法流程图。
如图1所示,本发明的基于pbrt的大规模三维群体表演动画并行渲染方法,包括:
预处理阶段:结合3dsmax软件和pbrt渲染插件,导出适用于pbrt渲染程序的相关渲染数据,进而生成人物的动作和位置数据并写入pbrt对应的渲染脚本文件,批量生成pbrt主渲染文件;
并行计算资源配置阶段:根据当前可用的计算资源,将待渲染的整个动画所对应的pbrt主渲染文件分别分配到不同计算节点的不同处理器上,然后以并行的方式同时调用pbrt渲染程序进行渲染,得到带有编号的图片序列;
后处理阶段:将渲染出的带有编号的图片序列合成动画视频,最终得到高真实感三维群体表演动画。
本发明还结合基于多约束的群体运动表演轨迹时空信息传输演绎算法生成的轨迹数据,以及通过运动捕获方式采集的人体表演动作数据,写入到pbrt对应的渲染脚本文件中。
其中,基于多约束的群体运动表演轨迹时空信息传输演绎算法为:从小规模动画和大规模动画的结构相似性,以及群体表演动画的特点入手,建立小规模动画和大规模动画之间群体运动映射关系,进而把小规模动画的运动轨迹变化信息传递到大规模动画上,传递的过程抽象成一个多约束优化模型,求解这个模型能够快速的得到大规模动画的运动轨迹信息。
基于多约束的群体运动表演轨迹时空信息传输演绎算法生成轨迹数据的具体过程包括:
(1)设计小规模动画和大规模群体动画的初始状态。
(2)设定小规模动画初始队形和大规模动画初始队形之间的映射关系。
(3)根据二者的运动映射关系,建立时序轨迹传递的多约束优化模型。
(4)求解优化模型,得到大规模群体动画每一帧的运动轨迹。
其中,适用于pbrt渲染程序的相关渲染数据包括人物模型、场景模型、灯光和摄像机参数。
本发明在3dsmax软件中对群体动画中不同角色的人物模型和舞台场景模型进行编辑,设置灯光和摄像机的参数。
场景设置在3dsmax软件中进行,比如室内表演场景需要处理舞台模型,室外表演需要处理场地模型,导入各种静态的模型文件,设置材质、贴图、灯光、摄像机视角与视野范围后,通过pbrt插件导出pbrt渲染所需的3个脚本文件,分别为主渲染文件(*.pbrt)、模型材质信息文件(*-mat.pbrt)和模型几何信息文件(*-geom.pbrt)。
设置过程分为以下几个步骤:
(1)修改材质和贴图。
(2)添加灯光。
(3)添加摄像机。
(4)运用pbrt导出插件输出场景模型对应的三个渲染文件。
群体表演动画往往由成千上万帧组成,每一帧中个体的位置和运动状态都是不一样的,所以每一帧动画都对应一个主渲染文件(*.pbrt),手工导出这么多主渲染文件一件非常耗时耗力的事情。因此,本发明设计了一种批处理算法批量生成主渲染文件,首先把所有主渲染文件中包含的各种动画数据预存起来,然后把这些数据给渲染文件中每一个变量。
本发明自定义的主渲染脚本文件格式如表1所示:
表1渲染脚本文件格式
在预处理阶段,导出的主渲染文件示例如下:
图3是3dsmax的材质编辑器窗口,在其中点击standard按钮。
图4是选择材质的窗口,要选择pbrt所支持的材质,在窗口中需要选择pbrtmattemtl材质,双击pbrtmattemtl之后会弹出一个matteparameters窗口,如图5所示,在其中选上diffusetexture这个选项。
图6是选择纹理时的窗口,要选择能够支持pbrtmattemtl材质的纹理,在本窗口中需要选择pbrtbitmap通道,能够保证物体表面贴上*.exr格式的贴图。单击pbrtbitmap之后会弹出一个imagemapparameters窗口,如图7所示,在其中勾选上usetrilinearinterpolation选项。
图8是选择*.exr格式贴图文件的窗口,选定之后能够预览该贴图,如图9所示。其中,*.exr格式的贴图文件是从*.jpg格式转换而来,转换过程在photoshop中进行:
第一步将*.jpg格式的贴图转换为32位rgb通道。
第二步调整贴图的大小,调整到4000像素之内,否则会因贴图过大而使程序无法执行。
第三步另存为*.exr格式。
(2)在3dsmax中导出pbrt文件
第一步,给物体的每一部分都贴上pbrt所支持的材质和贴图。
第二步,给场景里添加灯光和摄像机。
第三步,在摄像机视场里调整模型、灯光的位置和角度,因为这决定了渲染出的最终效果。
第四步,在3dsmax中调用pbrt插件,导出*.pbrt、*-geom.pbrt、*-mat.pbrt三个文件。
(3)修改pbrt文件
第一步,将灯光设置窗口中的参数"colorl"的初始值[0.00.00.0]修改为比0大的数值。
第二步,将光采样点数设置为"integernsamples"[32],其中的值越大,渲染效果越好,但速度会降低。
经过这两步修改后,可以渲染出物体的大致效果。若要得到更为精细的效果,则要根据需求,调节材质、纹理贴图、灯光、目标位置、camera视角以及添加背景等等。
在并行计算资源配置阶段,基于pbrt的大规模三维群体表演动画渲染方法,虽然得到能够电影级品质的动画效果,但是这也意味着渲染过程需要耗费大量的计算资源,而且速度比较慢,比如在一台配置为酷睿2四核q9550@2.83ghz,4gb内存的pc机上渲染一帧包含50个虚拟演员的动画需要将近半小时的时间,那么几千帧的渲染任务对pc机来说是一个非常重的负担。为此,本发明设计了一种在曙光集群上运行的并行渲染方法,即以并行的方式同时调用pbrt渲染程序进行渲染的方法。
其中,在并行计算资源配置阶段,以并行的方式同时调用pbrt渲染程序进行渲染的具体步骤为:
step1:根据队列名称,搜索当前集群上授权可用且处于空闲状态的计算节点,把节点名称、节点属性、每个节点所包含的处理器数目记录一个动态表中;
step2:衡量每个队列的处理能力,根据能力的不同把渲染任务平衡的分配到每个队列上;
step3:每个队列根据节点的处理能力,再把每个子任务平衡的分配到不同节点上;
step4:每个处理器分别调用主渲染程序,实现并行渲染。
以并行的方式同时调用pbrt渲染程序进行渲染的具体步骤,还包括:
step5:每隔一段时间(自定义),检查可用节点的状态,并更新动态表,返回step1调整任务分配。
本发明通过以并行的方式同时调用pbrt渲染程序进行渲染的方法,在每个时刻都能最大化的利用已有的计算资源,提高了三维大规模群体表演动画的渲染效率。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。