Unity中群集动画快速渲染的方法、存储介质技术

技术编号:28538437 阅读:41 留言:0更新日期:2021-05-21 09:03
本发明专利技术提供一种Unity中群集动画快速渲染的方法、存储介质,方法包括:创建模型动画的模型动画序列帧,通过Mesh数组存储所述模型动画序列帧的每一动画帧;创建一渲染对象数组,所述渲染对象数组内的各个元素对应存储待渲染的群集动画中各个单位的渲染对象数据;监听到对应群集动画的更新消息后,遍历所述渲染对象数组,依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染。本发明专利技术不仅能够显著提高渲染速度、优化渲染计算;而且能够突破性能瓶颈,确保系统运行正常;进一步地,还具有易于实现、大大减少内存占用等优点。

【技术实现步骤摘要】
Unity中群集动画快速渲染的方法、存储介质
本专利技术涉及Unity动画领域,具体涉及Unity中群集动画快速渲染的方法、存储介质。
技术介绍
现有技术中,在Unity制作一个三维模型动画(比如一只鱼的游动),一般使用Unity的动画系统。该系统会通过Unity的SkinMeshRender组件计算模型的顶点变形,然后在表型后的模型进行渲染。但是顶点变形会有一定性能开销特别是在移动平台上这种开销就更明显了。如果需要成百上千的同种模型动画这种变形计算就会造成巨大性能瓶颈。因此,有必要提供一种Unity中群集动画快速渲染的方法、存储介质,能够实现在Unity中渲染大规模群集动画,如大规模的鱼群、鸟群、蜂群等的动画,且能够大大减少性能开销。
技术实现思路
本专利技术所要解决的技术问题是:提供一种Unity中群集动画快速渲染的方法、存储介质,能大量减少性能开销,确保系统性能稳定。为了解决上述技术问题,本专利技术采用的技术方案为:一种Unity中群集动画快速渲染的方法,包括:创建模型动画的模型动画序列帧,通过Mesh数组存储所述模型动画序列帧的每一动画帧;创建一渲染对象数组,所述渲染对象数组内的各个元素对应存储待渲染的群集动画中的各个模型动画;监听到对应群集动画的更新消息后,遍历所述渲染对象数组,依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染。本专利技术提供的另一个技术方案为:一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述一种Unity中群集动画快速渲染的方法。本专利技术的有益效果在于:本专利技术通过预先烘培好一个模型动画的顶点变形,并将其进行缓存;在后续渲染集群动画时,能够直接调用缓存好的烘培结果进行烘培。即不需要对群集的每一个模型动画都进行顶点变形计算,也不用在烘培前再做变形处理,以此实现快速地完成集群动画得渲染,从而提升系统性能。附图说明图1为本专利技术一种Unity中群集动画快速渲染的方法的流程示意图;图2为本专利技术实施例一和实施例二中烘焙过程的流程示意图;图3为本专利技术实施例一和实施例二中渲染过程的流程示意图。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。本专利技术最关键的构思在于:预先烘培好一个模型动画的顶点变形并缓存;在后续渲染集群动画时,直接调用缓存好的烘培结果进行烘培即可。本专利技术涉及的技术术语解释:请参照图1,本专利技术提供一种Unity中群集动画快速渲染的方法,包括:创建模型动画的模型动画序列帧,通过Mesh数组存储所述模型动画序列帧的每一动画帧;创建一渲染对象数组,所述渲染对象数组内的各个元素对应存储待渲染的群集动画中各个单位的渲染对象数据;监听到对应群集动画的更新消息后,遍历所述渲染对象数组,依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染。从上述描述可知,本专利技术的有益效果在于:现有技术需对每一个动画模型变形后再渲染;而本申请先将一个动画模型按一定的帧率进行烘培后缓存,调用时直接将烘培结果用于渲染,而无需进行变形,由此实现了快速地渲染得到群集动画效果,大大优化系统性能。进一步地,所述渲染对象数组中的各个元素对应存储各个模型动画包括位置、旋转和当前动画时间的帧信息;所述方法还包括:初始化所述渲染对象数组时,将所述渲染对象数组中的各个元素的当前动画时间在0至所述模型动画的帧计数范围内随机赋值。由上述描述可知,将集群的各个模型动画的顶点变形结果存储到渲染对象数组的各个元素中,方便烘培时快速调用;将各个模型动画的当前动画时间进行随机设置,能够最大限度打破集群中每个模型动画得一致性,从而丰富动画展示效果。进一步地,所述依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染,具体为:控制将当前遍历到的模型动画的当前动画时间设置为其下一个动画时间;计算当前遍历到的模型动画对应所述当前动画时间时,对应所述Mesh数组的当前动画帧序号;对所述当前动画帧序号对应的动画帧进行渲染,得到对应的动画。由上述描述可知,实现了基于存储模型动画序列帧的Mesh数组快速渲染得到集群中各个模型动画在下一动画时间的动画展示效果。进一步地,所述方法还包括:创建N个结构体,所述N与集群动画中模型动画的数量对应;将各个模型动画的帧信息分别存放至各个结构体中;将所述N个结构体添加至所述渲染对象数组中,作为所述渲染对象数组的元素。由上述描述可知,实现了将集群中的各个模型动画以数组方式进行存储,方便烘培操作,同时也能加快烘培速度。进一步地,所述创建模型动画的模型动画序列帧,具体为:创建模型动画的预制体;依据所述预制体,创建模型动画的模型动画序列帧资源。由上述描述可知,实现了一个模型动画顶点变形的预先计算获取。进一步地,所述依据所述预制体,创建模型动画的模型动画序列帧资源,通过Mesh数组存储所述模型动画序列帧的每一动画帧,具体为:实例化所述预制体,创建对应的游戏对象;获取所述游戏对象上的动画组件和蒙皮网格渲染器组件;获取所述蒙皮网格渲染器组建上的材质对象,保存到变量mat;创建Mesh数组,其长度为预设的帧计数;获取动画组件中的动画时长,保存到变量length;遍历所述Mesh数组,对当前遍历到的模型顶点执行包括:变量i取值从0至帧计数-1,设置动画组件的动画进度为i*length/帧计数,以及调用蒙皮网格渲染器组件烘培当前遍历到的模型顶点变形后的模型顶点,并保存烘焙后的模型顶点至所述Mesh数组的第i个元素。由上述描述可知,在一具体实例中,通过创建一个脚本来实现模型序列帧资源地创建,具备准确性和高效性。本专利技术提供的另一个技术方案为:一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述下述Unity中群集动画快速渲染的方法:创建模型动画的模型动画序列帧;创建一渲染对象数组,所述渲染对象数组内的各个元素对应存储待渲染的群集动画中的各个渲染对象数据;创建Mesh数组,所述Mesh数组内的各个元素对应存储所述模型动画序列帧的每一动画帧;监听到对应群集动画的更新消息后,遍历所述渲染对象数组,依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染。进一步地,所述渲染对象数组中的各个元素对应存储各个模型动画包括位置、旋转和当前动画时间的帧信息;所述方法还包括:初始化所述渲染对象数组时,将所述渲染对象数组中的各个元素的当前动画时间在0至所述模型动画的帧计数范围内随机赋值。进一步地,所述依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染,具本文档来自技高网
...

【技术保护点】
1.一种Unity中群集动画快速渲染的方法,其特征在于,包括:/n创建模型动画的模型动画序列帧,通过Mesh数组存储所述模型动画序列帧的每一动画帧;/n创建一渲染对象数组,所述渲染对象数组内的各个元素对应存储待渲染的群集动画中各个单位的渲染对象数据;/n监听到对应群集动画的更新消息后,遍历所述渲染对象数组,依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染。/n

【技术特征摘要】
1.一种Unity中群集动画快速渲染的方法,其特征在于,包括:
创建模型动画的模型动画序列帧,通过Mesh数组存储所述模型动画序列帧的每一动画帧;
创建一渲染对象数组,所述渲染对象数组内的各个元素对应存储待渲染的群集动画中各个单位的渲染对象数据;
监听到对应群集动画的更新消息后,遍历所述渲染对象数组,依据所述Mesh数组对当前遍历到的模型动画的待渲染动画帧进行渲染。


2.如权利要求1所述的一种Unity中群集动画快速渲染的方法,其特征在于,所述渲染对象数组中的各个元素对应存储各个模型动画包括位置、旋转和当前动画时间的帧信息;
所述方法还包括:
初始化所述渲染对象数组时,将所述渲染对象数组中的各个元素的当前动画时间在0至所述模型动画的帧计数范围内随机赋值。


3.如权利要求1所述的一种Unity中群集动画快速渲染的方法,其特征在于,所述依据所述渲染对象数据对当前遍历到的模型动画的待渲染动画帧进行渲染,具体为:
控制将当前遍历到的模型动画的当前动画时间设置为其下一个动画时间;
计算当前遍历到的模型动画对应所述当前动画时间时,对应所述Mesh数组的当前动画帧序号;
对所述当前动画帧序号对应的动画帧进行渲染,得到对应的动画。


4.如权利要求1所述的一种Unity中群集动画快速渲染的方法,其特征在于,所述方法还包括:
创建一个序列帧渲染类,且所述序列帧渲染类监听所述渲染对象数组的更新消息;
将所述渲染对象数组和所述Mesh数组分别添加到所述序列帧渲染类中;
在所述序列帧渲染类中设置模型动画的帧率。


5.如权利要求1所...

【专利技术属性】
技术研发人员:刘德建谢曦林琛
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1