一种Unity实现肌肉蒙皮动画的方法与终端技术

技术编号:36546883 阅读:14 留言:0更新日期:2023-02-04 16:59
本发明专利技术公开了一种Unity实现肌肉蒙皮动画的方法与终端;本发明专利技术导入设置好骨架的预制人物模型,创建肌肉系统对象,在肌肉系统对象的肌肉列表中配置肌肉数据;根据肌肉数据对肌肉进行初始化,并建立肌肉系统初始转换矩阵;创建并初始化肌肉蒙皮对象,为肌肉蒙皮对象中包含的顶点配置肌肉权重信息;播放骨骼动画,同步刷新肌肉列表,计算并同步更新肌肉矩阵,根据肌肉矩阵和初始转换矩阵计算位置转换矩阵和向量转换矩阵;根据位置转换矩阵和向量转换矩阵对肌肉蒙皮对象进行刷新并根据肌肉权重信息进行应用;本发明专利技术实现了通过骨骼驱动肌肉,肌肉驱动躯体模型变形,实现肌肉蒙皮动画,能够更加逼真更加精确地模拟肌肉变形。能够更加逼真更加精确地模拟肌肉变形。能够更加逼真更加精确地模拟肌肉变形。

【技术实现步骤摘要】
一种Unity实现肌肉蒙皮动画的方法与终端


[0001]本专利技术涉及计算机
,特别涉及一种Unity实现肌肉蒙皮动画的方法与终端。

技术介绍

[0002]在过去,我们在想要在Unity制作一段人物动画,一般采用骨骼动画的方案,但是骨骼动画方案只能近似的模拟躯体变形,在一些需要表现精确肌肉变形的应用情景,无法精确的模拟肌肉变形,因此需要寻求一种新的解决方案。

技术实现思路

[0003]本专利技术所要解决的技术问题是:提供一种Unity实现肌肉蒙皮动画的方法与终端,能够更精确更逼真地模拟肌肉变形。
[0004]为了解决上述技术问题,本专利技术采用的技术方案为:
[0005]一种Unity实现肌肉蒙皮动画的方法,包括:
[0006]S1、导入设置好骨架的预制人物模型,创建肌肉系统对象,在所述肌肉系统对象的肌肉列表中配置肌肉数据;
[0007]S2、根据所述肌肉数据对肌肉进行初始化,并建立肌肉系统初始转换矩阵;
[0008]S3、创建并初始化肌肉蒙皮对象,为所述肌肉蒙皮对象中包含的顶点配置肌肉权重信息;
[0009]S4、播放骨骼动画,同步刷新肌肉列表,计算并同步更新肌肉矩阵,根据所述肌肉矩阵和所述初始转换矩阵计算位置转换矩阵和向量转换矩阵;
[0010]S5、根据所述位置转换矩阵和所述向量转换矩阵对肌肉蒙皮对象进行刷新并根据肌肉权重信息进行应用。
[0011]为了解决上述技术问题,本专利技术采用的另一种技术方案为:
[0012]一种Unity实现肌肉蒙皮动画的终端,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0013]S1、导入设置好骨架的预制人物模型,创建肌肉系统对象,在所述肌肉系统对象的肌肉列表中配置肌肉数据;
[0014]S2、根据所述肌肉数据对肌肉进行初始化,并建立肌肉系统初始转换矩阵;
[0015]S3、创建并初始化肌肉蒙皮对象,为所述肌肉蒙皮对象中包含的顶点配置肌肉权重信息;
[0016]S4、播放骨骼动画,同步刷新肌肉列表,计算并同步更新肌肉矩阵,根据所述肌肉矩阵和所述初始转换矩阵计算位置转换矩阵和向量转换矩阵;
[0017]S5、根据所述位置转换矩阵和所述向量转换矩阵对肌肉蒙皮对象进行刷新并根据肌肉权重信息进行应用。
[0018]本专利技术的有益效果在于:本专利技术通过新增的肌肉系统对象、肌肉数据、肌肉蒙皮对象等,通过矩阵计算个权重信息,实现通过骨骼驱动肌肉,肌肉驱动躯体模型变形,实现肌肉蒙皮动画,能够更加逼真更加精确地模拟肌肉变形。
附图说明
[0019]图1为本专利技术实施例的一种Unity实现肌肉蒙皮动画的方法的流程图;
[0020]图2为本专利技术实施例的一种Unity实现肌肉蒙皮动画的终端的结构图;
[0021]图3为本专利技术实施例的一种Unity实现肌肉蒙皮动画的方法的UML类图;
[0022]图4为本专利技术实施例的一种Unity实现肌肉蒙皮动画的方法的部分流程示意图;
[0023]标号说明:
[0024]1、一种Unity实现肌肉蒙皮动画的终端;2、处理器;3、存储器。
具体实施方式
[0025]为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0026]请参照图1、图3以及图4,一种Unity实现肌肉蒙皮动画的方法,包括:
[0027]S1、导入设置好骨架的预制人物模型,创建肌肉系统对象,在所述肌肉系统对象的肌肉列表中配置肌肉数据;
[0028]S2、根据所述肌肉数据对肌肉进行初始化,并建立肌肉系统初始转换矩阵;
[0029]S3、创建并初始化肌肉蒙皮对象,为所述肌肉蒙皮对象中包含的顶点配置肌肉权重信息;
[0030]S4、播放骨骼动画,同步刷新肌肉列表,计算并同步更新肌肉矩阵,根据所述肌肉矩阵和所述初始转换矩阵计算位置转换矩阵和向量转换矩阵;
[0031]S5、根据所述位置转换矩阵和所述向量转换矩阵对肌肉蒙皮对象进行刷新并根据肌肉权重信息进行应用。
[0032]从上述描述可知,本专利技术的有益效果在于:本专利技术通过新增的肌肉系统对象、肌肉数据、肌肉蒙皮对象等,通过矩阵计算个权重信息,实现通过骨骼驱动肌肉,肌肉驱动躯体模型变形,实现肌肉蒙皮动画,能够更加逼真更加精确地模拟肌肉变形的场景。
[0033]进一步地,所述肌肉系统对象通过类继承自MonoBehaviour类的肌肉系统类创建,包含肌肉列表和肌肉蒙皮对象,所述肌肉列表包括多个肌肉数据,每个所述肌肉数据包括两个肌肉端点,每个所述肌肉端点包括相对偏移量、端点位置和绑定的骨骼对象;
[0034]所述骨架包括多个按树形结构级联而成的骨骼对象;
[0035]所述肌肉蒙皮对象包括所述人物模型的皮肤网格中所有顶点数据,所述顶点数据包括顶点的位置、法线、切线和肌肉权重信息,所述肌肉权重信息与权重信息列表关联;
[0036]所述相对偏移量为所述肌肉端点相对骨骼对象的位置,所述端点位置为通过所述骨骼对象和所述相对偏移量使用Transform.TransformPoint()方法获取的世界空间位置。
[0037]由上述描述可知,本专利技术定义了继承自MonoBehaviour类的肌肉系统类,其包括肌肉列表和肌肉蒙皮对象,并肌肉端点与骨骼对象绑定,从而对各数据进行关联。
[0038]进一步地,所述初始转换矩阵和所述肌肉矩阵的计算公式为:
[0039]matrix=Matrix4x4.TRS(centerPoint,RQ,Zoom);
[0040]其中:
[0041]centerPoint=(attach1+attach2)/2;
[0042]RQ=Quaternion.FromToRotation(Vector3.forward,attach2

attach1);
[0043]其中,centerPoint表示中心点,RQ表示旋转四元数,Zoom表示缩放量,attach1和attach2表示两个肌肉端点的位置,Matrix4x4.TRS、Quaternion.FromToRotation和Vector3.forward均为unity的API。
[0044]由上述描述可知,上述公式可用于计算初始转换矩阵和肌肉矩阵。
[0045]进一步地,所述步骤S4中,所述位置转换矩阵和所述向量转换矩阵的计算如下:
[0046]PTMatrix=muscleMutrix*bindingMutrix;
[0047]FTMatrix=PTMatrix.inverse.transpose;
[0048]其中,PTMatrix表示位置转换矩阵,FTMatrix表示向量转换矩阵,muscleMutrix表示肌肉矩阵,bindingMutri本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Unity实现肌肉蒙皮动画的方法,其特征在于,包括:S1、导入设置好骨架的预制人物模型,创建肌肉系统对象,在所述肌肉系统对象的肌肉列表中配置肌肉数据;S2、根据所述肌肉数据对肌肉进行初始化,并建立肌肉系统初始转换矩阵;S3、创建并初始化肌肉蒙皮对象,为所述肌肉蒙皮对象中包含的顶点配置肌肉权重信息;S4、播放骨骼动画,同步刷新肌肉列表,计算并同步更新肌肉矩阵,根据所述肌肉矩阵和所述初始转换矩阵计算位置转换矩阵和向量转换矩阵;S5、根据所述位置转换矩阵和所述向量转换矩阵对肌肉蒙皮对象进行刷新并根据肌肉权重信息进行应用。2.根据权利要求1所述的一种Unity实现肌肉蒙皮动画的方法,其特征在于,所述肌肉系统对象通过类继承自MonoBehaviour类的肌肉系统类创建,包含肌肉列表和肌肉蒙皮对象,所述肌肉列表包括多个肌肉数据,每个所述肌肉数据包括两个肌肉端点,每个所述肌肉端点包括相对偏移量、端点位置和绑定的骨骼对象;所述骨架包括多个按树形结构级联而成的骨骼对象;所述肌肉蒙皮对象包括所述人物模型的皮肤网格中所有顶点数据,所述顶点数据包括顶点的位置、法线、切线和肌肉权重信息,所述肌肉权重信息与权重信息列表关联;所述相对偏移量为所述肌肉端点相对骨骼对象的位置,所述端点位置为通过所述骨骼对象和所述相对偏移量使用Transform.TransformPoint()方法获取的世界空间位置。3.根据权利要求2所述的一种Unity实现肌肉蒙皮动画的方法,其特征在于,所述初始转换矩阵和所述肌肉矩阵的计算公式均为:matrix=Matrix4x4.TRS(centerPoint,RQ,Zoom);其中:centerPoint=(attach1+attach2)/2;RQ=Quaternion.FromToRotation(Vector3.forward,attach2

attach1);其中,matrix为所述初始转换矩阵或所述肌肉矩阵,centerPoint表示中心点,RQ表示旋转四元数,Zoom表示缩放量,attach1和attach2表示两个肌肉端点的位置,Matrix4x4.TRS、Quaternion.FromToRotation和Vector3.forward均为unity的API。4.根据权利要求2所述的一种Unity实现肌肉蒙皮动画的方法,其特征在于,所述步骤S4中,所述位置转换矩阵和所述向量转换矩阵的计算如下:PTMatrix=muscleMutrix*bindingMutrix;FTMatrix=PTMatrix.inverse.transpose;其中,PTMatrix表示位置转换矩阵,FTMatrix表示向量转换矩阵,muscleMutrix表示肌肉矩阵,bindingMutrix表示初始转换矩阵,Matrix.inverse.transpose为unity的一个接口API。5.根据权利要求4所述的一种Unity实现肌肉蒙皮动画的方法,其特征在于,所述步骤S5具体为:刷新肌肉蒙皮对象,计算更新所述皮肤网格中每个顶点的位置、法线和切线,计算公式如下:
PointPosition=PTMatrix*PointPosition0;PointNormal=FTMatrix*PointNormal0;PointTangent=FTMatrix*PointTangent0;并根据所述肌肉权重信息进行应用;其中,PointPosition表示新顶点位置,PointNormal表示新顶点法线,PointTangent表示新顶点切线,PointPosition0表示旧顶点位置,PointNormal0表示旧顶点法线,PointTangent0表示旧顶点切线。6.一种Unity实现肌肉蒙皮动画的终端,包括处理器...

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

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

1