基于Unity3D的骨骼动画渲染方法及系统技术方案

技术编号:27658607 阅读:22 留言:0更新日期:2021-03-12 14:24
本发明专利技术提供一种基于Unity3D的骨骼动画渲染方法及系统,该方法包括:对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图;基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中,并根据所述骨骼动画数据纹理图的骨骼顶点索引和所述骨骼顶点索引对应的骨骼权重,计算所述目标模型实例中每个顶点的顶点坐标向量,以根据所述顶点坐标向量对所述目标模型实例每一帧的骨骼动画进行渲染。本发明专利技术只需一个着色器程序进行一次渲染管线,即可输出大量实例化的模型动画,大幅度降低了帧渲染时间。

【技术实现步骤摘要】
基于Unity3D的骨骼动画渲染方法及系统
本专利技术涉及计算机图形学
,尤其涉及一种基于Unity3D的骨骼动画渲染方法及系统。
技术介绍
传统的骨骼动画渲染流程为:在中央处理器(CentralProcessingUnit,简称CPU)中将原始的T模型姿势计算为当前帧动画姿势;然后,将模型的顶点数据从CPU端传输到图形处理器(GraphicsProcessingUnit,简称GPU)端;再调用绘制函数,将模型的顶点数据通过渲染管线,绘制成最终的渲染图像。在Unity3D引擎创建的游戏场景中,存在着大量某一对象的实例,且当对象具有骨骼动画时,CPU会在每帧进行大量的顶点计算,并多次调用渲染绘制函数,这将产生严重的计算耗时,极大降低渲染帧数。因此,现在亟需一种基于Unity3D的骨骼动画渲染方法及系统来解决上述问题。
技术实现思路
针对现有技术存在的问题,本专利技术提供一种基于Unity3D的骨骼动画渲染方法及系统。本专利技术提供一种基于Unity3D的骨骼动画渲染方法,包括:对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图;基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中,并根据所述骨骼动画数据纹理图的骨骼顶点索引和所述骨骼顶点索引对应的骨骼权重,计算所述目标模型实例中每个顶点的顶点坐标向量,以根据所述顶点坐标向量对所述目标模型实例每一帧的骨骼动画进行渲染。根据本专利技术提供的一种基于Unity3D的骨骼动画渲染方法,所述对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图,包括:对所述目标模型实例每一帧的骨骼动画数据进行采样,获取每一帧的顶点数据和预设渲染动画片段,并根据所述顶点数据和所述预设渲染动画片段,通过Editor插件对骨骼动画进行解析,得到对应的骨骼姿势变换矩阵;对所述骨骼姿势变换矩阵进行数据拆分和压缩处理,得到RGBA颜色值,并根据骨骼顶点索引和帧数顺序,通过所述RGBA颜色值生成骨骼动画数据纹理图。根据本专利技术提供的一种基于Unity3D的骨骼动画渲染方法,在所述基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中之前,所述方法还包括:根据所述目标模型实例每一帧的骨骼动画数据,获取骨骼顶点索引和所述骨骼顶点索引对应的骨骼顶点权重;将所述骨骼顶点索引和所述骨骼顶点权重存储到目标模型每个顶点的UV通道中。根据本专利技术提供的一种基于Unity3D的骨骼动画渲染方法,在所述基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中之前,所述方法还包括:获取所述目标模型实例的当前帧动画索引和当前帧动画帧数;将所述当前帧动画索引作为上一帧动画索引,将所述当前帧动画帧数作为上一帧动画帧数,根据当前帧时刻,计算当前帧动画实际索引和当前帧动画实际帧数;根据所述上一帧动画索引,所述上一帧动画帧数、所述当前帧动画实际索引、所述当前帧动画实际帧数和帧插值系数,生成对应的生成材质属性块,并将所述生成材质属性块发送到Unity3D的着色器程序中,其中,所述帧插值系数是通过当前帧时刻获取得到。根据本专利技术提供的一种基于Unity3D的骨骼动画渲染方法,所述基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中,并根据所述骨骼动画数据纹理图的骨骼顶点索引和所述骨骼顶点索引对应的骨骼权重,计算所述目标模型实例中每个顶点的顶点坐标向量,包括:根据所述材质属性块、所述骨骼动画数据纹理图和所述骨骼顶点索引,确定每个骨骼顶点上一帧的骨骼顶点变换矩阵和当前帧的骨骼顶点变换矩阵;根据所述帧插值系数,对每个骨骼顶点上一帧的骨骼顶点变换矩阵和当前帧的骨骼顶点变换矩阵进行线性插值运算,得到对应的骨骼顶点目标变换矩阵;通过存储有所述骨骼顶点索引和所述骨骼顶点权重的UV通道,根据所述骨骼顶点目标变换矩阵和所述骨骼顶点权重,计算所述目标模型实例中每个顶点当前帧的顶点坐标向量;根据每个顶点当前帧的顶点坐标向量,对所述目标模型实例的骨骼动画进行渲染。根据本专利技术提供的一种基于Unity3D的骨骼动画渲染方法,所述方法还包括:根据目标模型实例的位置向量、旋转向量和缩放向量,获取对应的TRS矩阵,以根据所述TRS矩阵,将所述目标模型实例从模型空间转换到裁剪空间。根据本专利技术提供的一种基于Unity3D的骨骼动画渲染方法,在所述对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图之后,所述方法还包括:根据预设过滤模式,对所述骨骼动画数据纹理图进行过滤,所述预设过滤模式为点模式。本专利技术还提供一种基于Unity3D的骨骼动画渲染系统,包括:纹理图转换模块,用于对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图;骨骼动画渲染模块,用于基于Unity3D技术,将所述骨骼动画数据纹理图输入到着色器程序中,并根据所述骨骼动画数据纹理图的骨骼顶点索引和所述骨骼顶点索引对应的骨骼权重,计算所述目标模型实例中每个顶点的顶点坐标向量,以根据所述顶点坐标向量对所述目标模型实例的骨骼动画进行渲染。本专利技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于Unity3D的骨骼动画渲染方法的步骤。本专利技术还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于Unity3D的骨骼动画渲染方法的步骤。本专利技术提供的基于Unity3D的骨骼动画渲染方法及系统,只需一个着色器程序进行一次渲染管线,即可输出大量实例化的模型动画,大幅度降低了帧渲染时间。附图说明为了更清楚地说明本专利技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术提供的基于Unity3D的骨骼动画渲染方法的流程示意图;图2为本专利技术提供的基于Unity3D的骨骼动画渲染系统的结构示意图;图3为本专利技术提供的电子设备的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术中的附图,对本专利技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。现有骨骼动画渲染流程,如果对大量相同的模型进行逐个渲染,将会进行多次DrawCall,即CPU通过调用图形库接口,命令GPU进行渲染操作,这将极大降低渲染帧数。在Unity3D引擎中,GPUSkinni本文档来自技高网...

【技术保护点】
1.一种基于Unity3D的骨骼动画渲染方法,其特征在于,包括:/n对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图;/n基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中,并根据所述骨骼动画数据纹理图的骨骼顶点索引和所述骨骼顶点索引对应的骨骼权重,计算所述目标模型实例中每个顶点的顶点坐标向量,以根据所述顶点坐标向量对所述目标模型实例每一帧的骨骼动画进行渲染。/n

【技术特征摘要】
1.一种基于Unity3D的骨骼动画渲染方法,其特征在于,包括:
对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图;
基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中,并根据所述骨骼动画数据纹理图的骨骼顶点索引和所述骨骼顶点索引对应的骨骼权重,计算所述目标模型实例中每个顶点的顶点坐标向量,以根据所述顶点坐标向量对所述目标模型实例每一帧的骨骼动画进行渲染。


2.根据权利要求1所述的基于Unity3D的骨骼动画渲染方法,其特征在于,所述对目标模型实例每一帧的骨骼动画数据进行纹理转换处理,得到骨骼动画数据纹理图,包括:
对所述目标模型实例每一帧的骨骼动画数据进行采样,获取每一帧的顶点数据和预设渲染动画片段,并根据所述顶点数据和所述预设渲染动画片段,通过Editor插件对骨骼动画进行解析,得到对应的骨骼姿势变换矩阵;
对所述骨骼姿势变换矩阵进行数据拆分和压缩处理,得到RGBA颜色值,并根据骨骼顶点索引和帧数顺序,通过所述RGBA颜色值生成骨骼动画数据纹理图。


3.根据权利要求1所述的基于Unity3D的骨骼动画渲染方法,其特征在于,在所述基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中之前,所述方法还包括:
根据所述目标模型实例每一帧的骨骼动画数据,获取骨骼顶点索引和所述骨骼顶点索引对应的骨骼顶点权重;
将所述骨骼顶点索引和所述骨骼顶点权重存储到目标模型每个顶点的UV通道中。


4.根据权利要求3所述的基于Unity3D的骨骼动画渲染方法,其特征在于,在所述基于Unity3D,将所述骨骼动画数据纹理图输入到着色器程序中之前,所述方法还包括:
获取所述目标模型实例的当前帧动画索引和当前帧动画帧数;
将所述当前帧动画索引作为上一帧动画索引,将所述当前帧动画帧数作为上一帧动画帧数,根据当前帧时刻,计算当前帧动画实际索引和当前帧动画实际帧数;
根据所述上一帧动画索引,所述上一帧动画帧数、所述当前帧动画实际索引、所述当前帧动画实际帧数和帧插值系数,生成对应的生成材质属性块,并将所述生成材质属性块发送到Unity3D的着色器程序中,其中,所述帧插值系数是通过当前帧时刻获取得到。


5.根据权利要求4所述的基于Unity3D的骨骼动画渲染方法,其特征在于,所述基于Unity3D,将所述骨骼动画数据纹理图输入...

【专利技术属性】
技术研发人员:桑新柱郑健平邢树军
申请(专利权)人:北京邮电大学
类型:发明
国别省市:北京;11

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

1