角色模型身体绑定方法、装置、设备和存储介质与流程

文档序号:32403011发布日期:2022-12-02 19:39阅读:92来源:国知局
角色模型身体绑定方法、装置、设备和存储介质与流程

1.本发明实施例涉及图像处理技术,尤其涉及一种角色模型身体绑定方法、装置、设备和存储介质。


背景技术:

2.在如今的影视动画、游戏领域,通过骨骼动画来呈现三维角色是一个普遍的做法。
3.骨骼动画从三维角色模型上创建对应的骨骼,并通过骨骼驱动控制角色进行动作。再利用蒙皮算法,通过骨骼运动制作出三维角色动画,大大简化了动画处理的程序,加快了生产效率。但是,由骨骼带动蒙皮算法对三维角色的驱动,有着一定的缺陷,角色在运动的过程中并不能保持良好的形态,尤其其肩部、跨部、肘部等等部位效果不好,会出现诸如抬手肩部塌陷、肘部不够圆滑等问题。
4.传统的处理方式采用增加修形的方式,对角色模型各个部位的运动效果进行修缮,但是,这种做法需要增加大量的对应动作三维模型,极大的增加了美术从业人员的工作量,而且往往可能效果并不理想。


技术实现要素:

5.本发明提供一种角色模型身体绑定方法、装置、设备和存储介质,能够提高制作角色模型的效率,降低成本。
6.第一方面,本发明实施例提供了一种角色模型绑定,包括:
7.根据待绑定的角色模型选择模板模型,角色模型包括皮肤网格,模板模型包括皮肤网格,骨骼,蒙皮权重及修形;
8.根据模板模型的皮肤网格和骨骼确定角色模型的骨骼;
9.根据模板模型的蒙皮权重确定角色模型的蒙皮权重;
10.根据模板模型的修形计算角色模型的修形;
11.根据角色模型的皮肤网格,骨骼,蒙皮权重,修形生成绑定后的角色模型。
12.在第一方面一种可能的实现方式中,根据模板模型的皮肤网格和骨骼确定角色模型的骨骼,包括:
13.根据模型模板的皮肤网格、骨骼和设定的骨骼约束条件生成角色模型的骨骼。
14.在第一方面一种可能的实现方式中,根据模型模板的皮肤网格、骨骼和设定的骨骼约束条件生成角色模型的骨骼,包括:
15.根据模板模型的骨骼关节点与骨骼关节点周围的皮肤网格点的相对位置关系,得到角色模型的估算骨骼关节点位置;
16.将模板模型的骨骼旋转拉伸嵌入到角色模型的皮肤网格中,其中,模板模型的骨骼旋转拉伸后符合设定的骨骼约束条件,且旋转拉伸后的模板模型的骨骼关节点位置与角色模型的估算骨骼关节点位置的距离满足预设值;
17.根据骨骼旋转拉伸嵌入到角色模型的皮肤网格后的模板模型,计算出模板模型的
骨骼关节点位置作为角色模型的骨骼关节点位置;
18.根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系;
19.根据角色模型的骨骼关节点位置和角色模型的骨骼之间的链接关系生成角色模型的骨骼。
20.在第一方面一种可能的实现方式中,设定的骨骼约束条件包括轴向约束和相邻骨骼关节点之间的相对位置约束。
21.在第一方面一种可能的实现方式中,根据模板模型的修形计算角色模型的修形,包括:
22.根据模板模型的修形,确定模板模型的皮肤网格中各个网格单元的翻转变换矩阵;
23.获取角色模型的皮肤网格中各个网格单元的翻转变换矩阵;
24.根据模板模型的皮肤网格中各个网格单元的翻转变换矩阵和角色模型的皮肤网格中各个网格单元的翻转变换矩阵计算得到角色模型的皮肤网格中各个网格单元的修形;
25.其中,角色模型的皮肤网格中各个网格单元的翻转变换矩阵根据角色模型的皮肤网格中各个网格单元的第一边向量矩阵和第二边向量矩阵得到,模板模型的皮肤网格中各个网格单元的翻转变换矩阵根据模板模型的皮肤网格中各个网格单元的第一边向量矩阵和第二边向量矩阵得到。
26.在第一方面一种可能的实现方式中,根据模板模型的修形计算角色模型的修形,还包括:
27.获取角色模型在初始姿态下的皮肤网格中各个网格单元对应的第一边向量矩阵,和角色模型在运动姿态下的皮肤网格中各个网格单元对应的第二边向量矩阵,第一边向量矩阵和第二边向量矩阵根据相应网格单元的边向量和面法线确定。
28.在第一方面一种可能的实现方式中,根据模板模型的皮肤网格中各个网格单元的翻转变换矩阵和角色模型的皮肤网格中各个网格单元的翻转变换矩阵计算得到角色模型的修形,包括:
29.使得角色模型的皮肤网格中各个网格单元的翻转变换矩阵与模板模型的皮肤网格中各个网格单元的翻转变换矩阵相同。
30.在第一方面一种可能的实现方式中,根据模板模型的皮肤网格中各个网格单元的翻转变换矩阵和角色模型的皮肤网格中各个网格单元的翻转变换矩阵计算得到角色模型的修形,包括:
31.使得角色模型的皮肤网格中每个网格单元的翻转变换矩阵与该网格单元临接的网格单元的翻转变换矩阵相同。
32.在第一方面一种可能的实现方式中,根据模板模型的各个网格单元的翻转变化矩阵和角色模型的各个网格单元的翻转变化矩阵计算得到角色模型的修形,包括:
33.根据模板模型的各个网格单元的翻转变化矩阵和角色模型的各个网格单元的翻转变化矩阵计算角色模型在运动姿态下的皮肤网格中各个网格点的坐标;
34.获取角色模型实际骨骼关节点转动后的皮肤网格中各个网格点的坐标;
35.将在角色模型在运动姿态下的皮肤网格中各个网格点的坐标和角色模型实际骨
骼关节转动后的皮肤网格中各个网格点的坐标的差值作为角色模型的修形。
36.在第一方面一种可能的实现方式中,根据模板模型的修形计算角色模型的修形,包括:
37.对于角色模型中受至少两个骨骼关节点影响的皮肤网格点,计算影响皮肤网格点的骨骼点关节点中每个骨骼关节点在运动姿态下的皮肤网格点的修形;
38.根据至少两个骨骼关节点实际转动后角色模型的重叠皮肤网格点的实际坐标和每个骨骼关节点在运动姿态下的重叠皮肤网格点的修形计算重叠皮肤网格点修形后的第一修形;
39.获取模板模型的联合修形;
40.根据模板模型的联合修形、至少两个骨骼关节点实际转动后角色模型的重叠皮肤网格点的实际坐标、和重叠皮肤网格点的第一修形计算角色模型的重叠皮肤网格点的联合修形。
41.在第一方面一种可能的实现方式中,根据模板模型的皮肤网格和骨骼确定角色模型的骨骼之前,包括:
42.在角色模型的皮肤网格的拓扑与模板模型的皮肤网格的拓扑不一致的情况下,确定模板模型的皮肤网格的拓扑为角色模型的皮肤网格的拓扑;
43.根据角色模型的皮肤网格的外形对模板模型的皮肤网格的外形进行修改;
44.将皮肤网格外形修改后的模板模型的皮肤网格作为角色模型新的皮肤网格。
45.第二方面,本发明实施例提供了一种角色模型身体绑定装置,包括:
46.模板模型确定模块,用于根据待绑定的角色模型选择模板模型,角色模型包括皮肤网格,模板模型包括皮肤网格,骨骼,蒙皮权重及修形;
47.骨骼生成模块,用于根据模板模型的皮肤网格和骨骼确定角色模型的骨骼;
48.蒙皮权重确定模块,用于根据模板模型的蒙皮权重确定角色模型的蒙皮权重;
49.修形生成模块,用于根据模板模型的修形计算角色模型的修形;
50.角色模型绑定模块,用于根据角色模型的皮肤网格,骨骼,蒙皮权重,修形生成绑定后的角色模型。
51.第三方面,本发明实施例提供了一种角色模型身体绑定设备,包括:
52.存储器,被配置为存储程序;
53.处理器,被配置为执行程序,当该程序被执行时,程序被配置为执行第一方面任一种实现方式所述的角色模型身体绑定方法。
54.第四方面,本发明实施例提供了一种非易失存储介质,存储介质包括存储的程序,该程序运行时执行第一方面任一种实现方式所述的角色模型身体绑定方法。
55.本发明实施例提供的角色模型身体绑定方法、装置、设备和存储介质,根根据待绑定定的角色模型选择模板模型,角色模型可以是三维角色模型,且至少包括皮肤网格,然后根据预设的模板模型,自动创建角色模型的骨骼、蒙皮权重以及修形,具有更好的交互性,同时节省了技术人员制作角色模型的人力成本以及时间成本,提高了制作角色模型的效率。
附图说明
56.图1为本发明实施例提供的一种角色模型身体绑定方法的流程图;
57.图2为本发明实施例提供的一种根据模板模型的修形计算角色模型的修形的流程图;
58.图3为本发明实施例提供的一种进行角色模型修形计算的流程图;
59.图4为本发明实施例提供的角色模型身体绑定装置的结构示意图;
60.图5为本发明实施例提供的一种角色模型身体绑定设备的结构示意图。
具体实施方式
61.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
62.本发明实施例提供的角色模型身体绑定方法采用标准化的方式进行角色模型身体绑定,所谓标准化,即绑定后的角色模型的拓扑结构、骨骼链接关系、骨骼动画驱动方式和模板模型统一。其中绑定是指从角色模型上创建对应的骨骼、蒙皮权重、修形,并通过蒙皮权重和骨骼运动,来控制角色进行动作的方式。其中,蒙皮权重代表皮肤网格点受骨骼运动影响的系数。传统的角色模型身体绑定方法,在创建了角色模型对应的骨骼后,利用蒙皮算法通过骨骼运动制作出三维角色动画,但是,使用骨骼蒙皮的驱动方式,所产生的角色模型外部形状有很大的缺陷,还需要由美术人员手工对模型外形进行修形,这需要耗费大量的工作量,人力和时间成本都很高。一般而言,一个完整的角色模型身体绑定,需要两周以上的时间成本。
63.为了解决上述问题,本发明实施例提供一种角色模型身体绑定方法,由具有图形处理能力的计算机或服务器执行,通过模板模型构建角色模型的骨骼,并根据模板模型的蒙皮权重和修形数据生成角色模型的相关数据,实现了角色模型的标准化绑定,能够有效提高角色模型身体绑定的效率,降低成本。
64.图1为本发明实施例提供的一种角色模型身体绑定方法的流程图,如图1所示,本实施例提供的角色模型身体绑定方法包括:
65.步骤s110,根据待绑定的角色模型选择模板模型,角色模型包括皮肤网格,模板模型包括皮肤网格,骨骼,蒙皮权重及修形。
66.步骤s120,根据模板模型的皮肤网格和骨骼确定角色模型的骨骼。
67.步骤s130,根据模板模型的蒙皮权重确定角色模型的蒙皮权重。
68.步骤s140,根据模板模型的修形计算角色模型的修形。
69.步骤s150,根据角色模型的皮肤网格,骨骼,蒙皮权重,修形生成绑定后的角色模型。
70.根据本公开的实施例,根据待绑定的角色模型选择模板模型,角色模型可以是三维角色模型,且至少包括皮肤网格,然后根据预设的模板模型,自动创建角色模型的骨骼、蒙皮权重以及修形,具有更好的交互性,同时节省了技术人员制作角色模型的人力成本以及时间成本,提高了制作角色模型的效率。
71.其中,预设身体模板库中包括至少一个模板模型,模板模型包含皮肤网格、身体骨
骼、蒙皮权重以及修形,皮肤网格都具有相同的拓扑,骨骼具有相同的链接关系。对于身体骨骼各个关节点的不同运动角度,模板模型已经雕刻出修形来弥补驱动的身体外形缺陷,获得不同角度下的修形关系。可以通过计算角色模型的参数,例如腰围、身高、臂围、臂长、腿围、腿长,算法从模板库中选择一个和角色模型参数相近的模板文件作为该角色模型的模板模型。
72.其中,蒙皮权重表示皮肤网格点受骨骼运动影响的系数。
73.在进行虚拟角色模型的创建的过程中,需要保持模板模型和角色模型的拓扑一致,以进行后续运算。在一具体实施例中,步骤s120根据模板模型的皮肤网格,骨骼确定角色模型的骨骨骼之前,包括:在角色模型的皮肤网格的拓扑与模板模型的皮肤网格的拓扑不一致的情况下,确定模板模型的皮肤网格的拓扑为角色模型的皮肤网格的拓扑,根据角色模型的皮肤网格的外形对模板模型的皮肤网格的外形进行修改,将皮肤网格外形修改后的模板模型的皮肤网格作为角色模型新的皮肤网格。
74.具体地,对于一个只有皮肤网格的新的角色模型,选定适合的模板模型后,确定模板模型的皮肤网格的拓扑为角色模型的皮肤网格的拓扑。一般而言,角色模型和模板模型的外形是不同的,将模板模型的外形变换成角色模型的外形,将外形变换后的模板模型的皮肤网格的拓扑作为角色模型的皮肤网格的拓扑,接下来将外形变换后的模板模型的皮肤网格作为角色模型的新皮肤网格。
75.在一实施例中,可通过标记角色模型和模板模型皮肤网格上对应匹配点的方式将模板模型皮肤网格点进行网格变形,从而贴合角色模型的皮肤网格点,获得同拓扑的角色模型皮肤网格。
76.具体地,匹配点是从皮肤网格点上选出来的特征点,角色模型和模板模型对应匹配点的个数是相同的,方便后续根据数量相同且对应的匹配点调整模板模型的外形。模板模型皮肤网格上的的匹配点可以预先设置。角色模型的匹配点可通过如下方式获得:将角色模型网格点的坐标列向量输入至预设的深度学习网络,输出对应的角色模板的匹配点。
77.在一实施例中,步骤s120,根据模板模型的皮肤网格和骨骼确定角色模型的骨骼,包括:根据模型模板的皮肤网格、骨骼和设定的骨骼约束条件生成角色模型的骨骼。
78.具体地,骨骼包括:骨骼关节点位置和骨骼之间的链接关系。
79.在一具体实施方式中,根据模型模板的皮肤网格,骨骼和设定的骨骼约束条件生成角色模型的骨骼,包括:根据模板模型的骨骼关节点与骨骼关节点周围的皮肤网格点的相对位置关系,得到角色模型的估算骨骼关节点位置;将模板模型的骨骼旋转拉伸嵌入到角色模型的皮肤网格中,其中,模板模型的骨骼旋转拉伸后符合设定的骨骼约束条件,且旋转拉伸后的模板模型的骨骼关节点位置与角色模型的估算骨骼关节点位置的距离满足预设值;根据骨骼旋转拉伸嵌入到所述角色模型的皮肤网格后的模板模型,计算出模板模型的骨骼关节点位置作为角色模型的骨骼关节点位置;根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系;根据角色模型的骨骼关节点位置和角色模型的骨骼之间的链接关系生成角色模型的骨骼。
80.计算模型模板的骨骼关节点和身体皮肤网格点的相对位置关系,得到角色模型的估算骨骼关节点位置,然后将模板模型的骨骼旋转拉伸嵌入到角色模型的皮肤网格中,模板模型的骨骼在旋转拉伸时符合设定的骨骼约束条件且旋转拉伸后的模板模型的骨骼关
节点位置与角色模型的估算骨骼关节点位置的距离满足预设值,通过算法自动算出模板模型的骨骼关节点位置作为角色模型的骨骼关节点位置,然后根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系,根据角色模型的骨骼关节点位置和骨骼之间的链接关系生成角色模型的骨骼。具体过程如下:
81.首先,在模型模板上,寻找每一个骨骼关节点周围皮肤网格点,其中,骨骼关节点周围网格点的数量可依据实际情况设置。计算每个骨骼关节点坐标位置和周围皮肤网格点的相对位置关系。
82.假设,vo到vi是模板模型的骨骼关节点周围皮肤网格点的已知坐标,ai为模板模型每个骨骼关节点周围皮肤网格点的回归权重,j是模板模型的骨骼关节点的位置坐标。
83.根据vo到vi计的坐标和j出的坐标计算出回归权重ai,所有的骨骼关节点的回归权重均大于0。
84.对于角色模型,骨骼关节点周围的皮肤网格点的范围与模板模型每个骨骼关节点周围皮肤网格点的范围相同。根据回归权重ai和角色模型的周围皮肤网格点的坐标,对皮肤网格点的坐标的进行加权平均,计算角色模型的各个估算骨骼关节点的位置坐标jc。
85.得到角色模型的各个估算骨骼关节点的位置后,对模板模型的骨骼进行旋转拉伸,将旋转拉伸后的模板模型的骨骼嵌入到角色模型的皮肤网格中,使得旋转拉后的模板模型的骨骼关节点和计算的角色模型的估算骨骼关节点jc位置相近。例如,利用反向运动学计算模板模型的骨骼关节点和对应的估算骨骼关节点jc之间的欧拉距离,使得欧拉距离满足预设值,在此旋转拉伸过程中,模板模型的骨骼要符合设定的骨骼约束条件。在保证约束的情况下,预设值越小越好,例如预设值可为0。
86.在一实施例中,设定的骨骼约束条件包括轴向约束和相邻骨骼关节点之间的相对位置约束。
87.在一具体实施例中,对骨骼关节点的添加轴向约束,添加的轴向约束可以是添加的坐标轴约束。添加的坐标轴约束要使得结果符合需求,即添加的坐标轴的方向能够使得人体的关节点绕着该坐标轴进行旋转后的运动和真实人类的运动相仿。每个骨骼点有其对应的坐标轴约束,在添加约束时,对于不同的关节点所添加的坐标轴约束不同。
88.具体地,添加的轴向约束有诸如此类:对臀部关节(臀部只有一个关节)添加约束,约束的三个方向轴为:轴向竖直朝向地面,切向水平朝向身体侧面,臀部关节绕切向轴旋转,这样可以保证腿部在迈腿时是朝正前方。手指部分的骨骼要确保方向正确,每个手指(五指张开)的每个关节的轴向朝向手指尖,切向向前,使其握拳的动作能恰好五指收缩入掌心。根据经验或者实际要求,可以对骨骼添加各种各样的约束,以保证计算出的骨骼是符合要求的。
89.由于旋转拉伸的骨骼关节点有多个,并非所有骨骼关节点都需要添加约束,对于关节要添加约束,可根据情况设定选取其中的一部分或者全部骨骼关节点添加轴向约束。
90.进一步,还可以对角色模型的骨骼关节点和相邻骨骼关节点之间添加相对位置约束。例如,手臂上的手肘、手腕、肩部要在一条直线上,因此在手肘关节、手腕关节、肩部关节添加能够保持在一条直线上的位置约束。同理,腿部中臀部关节、膝关节、脚踝关节也要在一条直线上,手指的关节也要保持在一条直线上。
91.之后,根据两个设定的骨骼约束条件以及满足预设值的条件,建立方程组,通过最
小二乘问题,和非线性优化,求解出模板模型的旋转拉伸后的骨骼关节点位置,将其作为角色模型的骨骼点位置。然后根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系,根据角色模型的骨骼关节点位置和骨骼之间的链接关系生成角色模型的骨骼。
92.通过计算模型模板的骨骼关节点和身体皮肤网格点的相对位置关系,得到角色模型的估算骨骼关节点位置,然后将模板模型的骨骼旋转拉伸嵌入到角色模型的皮肤网格中,模板模型的骨骼在旋转拉伸时符合设定的骨骼约束条件且旋转拉伸后的模板模型的骨骼关节点位置与角色模型的估算骨骼关节点位置的距离满足预设值,通过算法自动算出模板模型的骨骼关节点位置作为角色模型的骨骼关节点位置,然后根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系,根据角色模型的骨骼关节点位置和骨骼之间的链接关系生成角色模型的骨骼的方法,实现自动且快速算出骨骼位置,能够节省时间,减小成本。同时,通过对骨骼添加设定的两个约束条件,保证对于模板模型和角色模型之间的骨骼层级、数目和名字是逻辑一致的,同时对于不同的角色模型,相同名称的骨骼关节驱动的皮肤网格效果是相似的,因此添加相同的约束可以保证不同的角色模型可以被相同的动画数据所驱动,做出在同样的动作。采用标准化的约束条件,减少出错率。
93.在一个实施例中,根据步骤s120的获得角色模型的骨骼后,将模板文件的蒙皮权重复制到角色模型上,蒙皮权重是某个皮肤网格点受到某个骨骼关节运动所影响的大小。由于角色模型起始姿态下骨骼关节点之间的相对位置是已知的,利用前向运动学计算骨骼转动后的到达位置,从而来驱动皮肤网格运动。骨骼运动之后,根据蒙皮权重,计算出皮肤网格点的位置。骨骼运动之后的运动姿态下,根据蒙皮权重,计算出来的皮肤网格点的位置,所形成的皮肤网格的外形可能不符合人体肌肉形状,因此要对皮肤网格点进行修形,来修正缺陷。
94.图2为本发明实施例提供的一种根据模板模型的修形计算角色模型的修形的流程图。
95.如图2所示,在一实施例中,步骤s140,根据模板模型的修形计算角色模型的修形,包括:
96.步骤s210,根据模板模型的修形,确定模板模型的皮肤网格中各个网格单元的翻转变换矩阵。
97.步骤s220,获取角色模型的皮肤网格中各个网格单元的翻转变换矩阵。
98.步骤s230,根据模板模型的皮肤网格中各个网格单元的翻转变换矩阵和角色模型的皮肤网格中各个网格单元的翻转变换矩阵计算得到角色模型的皮肤网格中各个网格单元的修形。
99.其中,角色模型的皮肤网格中各个网格单元的翻转变换矩阵根据角色模型的皮肤网格中各个网格单元的第一边向量矩阵和第二边向量矩阵得到,模板模型的皮肤网格中各个网格单元的翻转变换矩阵根据模板模型的皮肤网格中各个网格单元的第一边向量矩阵和第二边向量矩阵得到。
100.进一步,根据模板模型的修形计算角色模型的修形,还包括:
101.获取角色模型在初始姿态下的皮肤网格中各个网格单元对应的第一边向量矩阵,
和角色模型在运动姿态下的皮肤网格中各个网格单元对应的第二边向量矩阵,第一边向量矩阵和第二边向量矩阵根据相应网格单元的边向量和面法线确定。
102.图3为本发明实施例提供的一种进行角色模型修形计算的流程图。图3所示流程图为图2中步骤s230的具体处理流程。
103.其中,步骤s230,根据模板模型的皮肤网格中各个网格单元的翻转变换矩阵和角色模型的皮肤网格中各个网格单元的翻转变换矩阵计算得到角色模型的修形,包括:
104.步骤s231,使得角色模型的皮肤网格中各个网格单元的翻转变换矩阵与模板模型的皮肤网格中各个网格单元的翻转变换矩阵相同。
105.进一步,步骤s230,根据模板模型的皮肤网格中各个网格单元的翻转变换矩阵和角色模型的皮肤网格中各个网格单元的翻转变换矩阵计算得到角色模型的修形,包括:
106.步骤s232,使得角色模型的皮肤网格中每个网格单元的翻转变换矩阵与该网格单元临接的网格单元的翻转变换矩阵相同。
107.更进一步,步骤s230,根据模板模型的各个网格单元的翻转变化矩阵和角色模型的各个网格单元的翻转变化矩阵计算得到角色模型的修形,包括:
108.步骤s233,根据模型的各个网格单元的翻转变化矩阵和角色模型的各个网格单元的翻转变化矩阵计算角色模型在运动姿态下的皮肤网格中各个网格点的坐标。
109.步骤s234,获取角色模型实际骨骼关节点转动后的皮肤网格中各个网格点的坐标。
110.步骤s235,将在角色模型在运动姿态下的皮肤网格中各个网格点的坐标和角色模型实际骨骼关节转动后的皮肤网格中各个网格点的坐标的差值作为角色模型的修形。
111.具体而言,对于模板模型,已经有一套骨骼关节转动后在运动姿态下各个关节周围的皮肤网格点的修形数据。模板模型的是由皮肤网格加骨骼组成的人体模型,模板模型从起始姿态,到骨骼关节点转动后的运动姿态,附加修形的皮肤网格会产生相应的变化,可以通过修形数据计算皮肤网格的翻转变化。
112.在一具体的实施方式中,皮肤网格的各个网格单元可以为三角面。根据模板模型皮肤网格中各个网格单元三角面的边向量和三角面上的面法线,计算出模板模型在初始姿态下的皮肤网格中网格单元三角面的第一边向量矩阵和模板模型在运动姿态下的修形后的皮肤网格中网格单元三角面的第二边向量矩阵。根据第一边向量矩阵和第二边向量矩阵确定模板模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q。根据角色模型皮肤网格中各个网格单元三角面的边向量和三角面上的面法线,获取出初始姿态下角色模型皮肤网格中网格单元三角面的第一边向量矩阵和角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵。根据第一边向量矩阵和第二边向量矩阵确定角色模型在运动姿态下的修形后的皮肤网格中网格单元三角面的翻转变换矩阵q。对于角色模型,在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵中的边向量参数是未知的待求解的参数。
113.将模板文件的修形三角面变化“传递”到角色模型的修形上。通过约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q和模板模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q相同,计算角色模型在运动姿态下的皮肤网格中各个网格单元的修形。
114.对于模板模型和角色模型的外形差异较大的情况,将模板模型的修形“传递”到角色模型上,会造成修形表面的参差不齐。为了使角色模型修形表面光滑平整,进一步,还可以约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q与该网格单元临接的网格单元的翻转变换矩阵相同。通过约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q和模板模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q相同以及角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q与该网格单元临接的网格单元的翻转变换矩阵相同,计算角色模型在运动姿态下皮肤网格中各个网格单元的修形。
115.在一具体的实施例中,由于对于角色模型,在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵中有参数是未知的,通过约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q和模板模型在运动姿态下修形的皮肤网格中网格单元三角面的翻转变换矩阵q相同以及角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q与该网格单元临接的网格单元的翻转变换矩阵相同,计算在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵,由于第一边向量矩阵和第二边向量矩阵是根据相应网格单元的边向量和面法线确定,最终可求出角色模型在运动姿态下修形后的皮肤网格中各个网格点的坐标。
116.对于角色模型,在具有皮肤网格,骨骼和蒙皮权重后,实际的骨骼关节点转动后,可以获取角色模型实际骨骼关节点转动后的皮肤网格中各个网格点的坐标。将在角色模型在运动姿态下的修形后的皮肤网格中各个网格点的坐标和角色模型实际骨骼关节转动后的皮肤网格中各个网格点的坐标的差值作为修形。在实际使用绑定模型的过程中,将实际皮肤网格点的坐标为加上坐标的差值,获得修形后的角色模型的皮肤网格点的坐标,以此来修复运动姿态下皮肤外形的不符合人体肌肉形状的缺陷。
117.在一实施例中,步骤s140,根据模板模型的修形计算角色模型的修形,包括:
118.对于角色模型中受至少两个骨骼关节点影响的重叠皮肤网格点,计算至少两个骨骼关节点中每个骨骼关节点在运动姿态下的重叠皮肤网格点的修形;
119.根据至少两个骨骼关节点实际转动后角色模型的重叠皮肤网格点的实际坐标和每个骨骼关节点在运动姿态下的重叠皮肤网格点的修形计算重叠皮肤网格点的第一修形;
120.计算模板模板的第一修形;
121.获取模板模型的联合修形;
122.根据模板模板的第一修形和模板模型的联合修形、至少两个骨骼关节点实际转动后角色模型的重叠皮肤网格点的实际坐标、和重叠皮肤网格点的第一修形计算角色模型的重叠皮肤网格点的联合修形。
123.对于某些皮肤网格,会受到两个或者两个以上的复数关节一起联动驱动的情况,当复数关节一起运动时,所有运动关节的运动会影响该关节周围的选定网格点,选定网格点根据模板模型修形所修饰的点来确定。在复数关节距离较近的情况下,复数关节影响周围的选定网格点会存在重叠的情况,此时采用单个关节的修形很难产生良好的效果。这种情况尤其会出现在手部指关节部分。因此,对于受复数关节影响且重叠的皮肤网格可以通过联合修形来改善此种缺陷。
124.以下以复数关节为两个,来说明联合修形。对于模板模型,已经有一套复数骨骼关
节转动后对应的重叠的皮肤网格点的联合修形数据。
125.当角色模型的关节a单独运动时,使用修形bs-a差值对关节a周围有影响的其中一个皮肤网格单元进行修形。当关节b单独运动时,则使用修形bs_b差值对关节b周围有影响的其中一个皮肤网格单元进行修形。对于角色模型的皮肤网格仅受单个关节的运动影响情况下的修形,可按照步骤s210-s230和步骤s231-s235中所描述的方法执行,此处不再赘述。
126.若角色模型的两个关节a、b为相邻关节,且处于相近位置时,当关节a、b有关联运动时,关节a、b的运动影响的且重叠的其中一个皮肤网格单元同时使用修形单个关节修形bs-a差值、单个关节修形bs-b差值和联合修形bs-z差值进行处理。以下说明中,以角色模型的关节a、b运动后周围有影响的且重叠的皮肤网格中的其中一个皮肤网格单元r和模板模型的关节a’、b’运动后周围有影响的且重叠的皮肤网格中的其中一个皮肤网格单元r’来说明,其中模板模型的关节a’、b’与角色模型的关节a、b相对应的同名关节。
127.角色模型的关节a转动后,可按照步骤s210-s230和步骤s231-s235中所描述的方法计算角色模型关节a转动后皮肤网格单元r的修形bs-a差值,关节b转动后,可按照步骤s210-s230和步骤s231-s235中所描述的方法执行计算出角色模型关节b转动后皮肤网格单元r的修形bs-b差值。
128.模板模型关节a’、b’实际转动后,获得模板模型皮肤网格单元r’的实际网格点的坐标值p’,根据单个关节修形bs-a’差值和单个关节修形bs-b’差值的组合对模板模型皮肤网格单元r’进行修形,获得修形后模板模型皮肤网格单元r’的第一修形。
129.角色模型关节a、b实际转动后,获得皮肤网格单元r的实际网格点的坐标值p,根据单个关节修形bs-a差值和单个关节修形bs-b差值的组合对皮肤网格单元r进行修形,获得修形后皮肤网格单元r的第一修形。
130.对于角色模型的皮肤网格单元r,首先获取模板模型的联合修形bs-z’差值,根据模板模型的联合修形bs-z’差值和模板模型的皮肤网格单元r’的第一修形的组合,获得模板模型的第二修形,然后根据模板模型的的第二修形和模板模型皮肤网格单元r’的实际网格点的坐标值p’,角色模型的皮肤网格单元r的实际网格点的坐标值p,可按照步骤s210-s230和步骤s231-s235中所描述的方法计算出角色模型的皮肤网格单元r的第二修形。
131.根据角色模型的皮肤网格单元r的第二修形和修形后角色模型的皮肤网格单元r的第一修形,计算出角色模型的皮肤网格点r的联合修形bs-z差值。在实际驱动骨骼关节a、b进行运动时,根据实际转动后的皮肤网格单元r的实际网格点的坐标值p,和角色模型的皮肤网格单元r的第二修形计算运动姿态下的角色模型的修形皮肤网格点的坐标,以此修复修形重叠皮肤网格点的外观缺陷,例如穿插和布线混乱。
132.下面以一个具体实施例对本发明实施例提供的角色模型身体绑定方法进行进一步详细说明。
133.首先,预设身体模板库中包括至少一个模板模型,模板模型包含皮肤网格、身体骨骼、蒙皮权重以及修形,皮肤网格都具有相同的拓扑,骨骼具有相同的链接关系。对于身体骨骼各个关节点的不同运动角度,模板模型已经雕刻出修形来弥补驱动的身体外形缺陷,获得不同角度下的修形关系。可以通过计算角色模型的参数,例如腰围、身高、臂围、臂长、腿围、腿长,算法从模板库中选择一个和角色模型参数相近的模板文件作为该角色模型的模板模型。
134.在进行虚拟角色模型的创建的过程中,需要保持模板模型和角色模型的拓扑一致,以进行后续运算。在角色模型的皮肤网格的拓扑与模板模型的皮肤网格的拓扑不一致的情况下,确定模板模型的皮肤网格的拓扑为角色模型的皮肤网格的拓扑;然后根据角色模型的皮肤网格的外形对模板模型的皮肤网格的外形进行修改;将皮肤网格外形修改后的模板模型的皮肤网格作为角色模型新的皮肤网格。这样就完成了拓扑转换。
135.具体地,对于一个只有皮肤网格的新的角色模型,选定适合的模板模型后,确定模板模型的皮肤网格的拓扑为角色模型的皮肤网格的拓扑。一般而言,角色模型和模板模型的外形是不同的,将模板模型的外形变换成角色模型的外形,将外形变换后的模板模型的皮肤网格的拓扑作为角色模型的皮肤网格的拓扑,接下来将外形变换后的模板模型的皮肤网格作为角色模型的新皮肤网格。可通过标记角色模型和模板模型皮肤网格上对应匹配点的方式将模板模型皮肤网格点进行网格变形,从而贴合角色模型的皮肤网格点,获得同拓扑的角色模型皮肤网格。
136.具体地,匹配点是从皮肤网格点上选出来的特征点,角色模型和模板模型对应匹配点的个数是相同的,方便后续根据数量相同且对应的匹配点调整模板模型的外形。模板模型皮肤网格上的的匹配点可以预先设置。角色模型的匹配点可通过如下方式获得:将角色模型网格点的坐标列向量输入至预设的深度学习网络,输出对应的角色模板的匹配点。
137.接下来,根据模板模型计算出模板模型的骨骼关节点与所述骨骼关节点周围的皮肤网格点的相对位置关系,再对身体骨骼添加恰当约束,得到角色模板的骨骼,其中骨骼包括:骨骼关节点位置和骨骼之间的链接关系。
138.生成角色模板的骨骼的具体方法为:计算模型模板的骨骼关节点和身体皮肤网格点的相对位置关系,得到角色模型的估算骨骼关节点位置,然后将模板模型的骨骼旋转拉伸嵌入到角色模型的皮肤网格中,模板模型的骨骼在旋转拉伸时符合设定的骨骼约束条件且旋转拉伸后的模板模型的骨骼关节点位置与角色模型的估算骨骼关节点位置的距离满足预设值,通过算法自动算出模板模型的骨骼关节点位置作为角色模型的骨骼关节点位置,然后根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系,根据角色模型的骨骼关节点位置和骨骼之间的链接关系生成角色模型的骨骼。具体过程如下:
139.首先,在模板模型上,寻找每一个骨骼关节点周围皮肤网格点,其中骨骼关节点周围皮肤网格点的数量可依据实际情况设置。计算骨骼关节点坐标位置和皮肤网格的顶点的相对位置关系。
140.假设,vo到vi是模板模型的骨骼关节点周围皮肤网格点的已知坐标,ai为模板模型每个骨骼关节点周围皮肤网格点的回归权重,j是模板模型的骨骼关节点的位置坐标。根据vo到vi计的坐标和j出的坐标计算出回归权重ai,所有的骨骼关节点的回归权重均大于0。对于角色模型,骨骼关节点周围的皮肤网格点的范围与模板模型每个骨骼关节点周围皮肤网格点的范围相同。根据回归权重ai和角色模型的周围皮肤网格点的坐标,对皮肤网格点的坐标的进行加权平均,计算角色模型的各个估算骨骼关节点的位置坐标jc。
141.得到角色模型的各个估算骨骼关节点的位置后,对模板模型的骨骼进行旋转拉伸,将旋转拉伸后的模板模型的骨骼嵌入到角色模型的皮肤网格中,使得旋转拉后的模板模型的骨骼关节点和计算的角色模型的估算骨骼关节点jc位置相近。例如,利用反向运动
学计算模板模型的骨骼关节点和对应的估算骨骼关节点jc之间的欧拉距离,使得欧拉距离满足预设值,在此旋转拉伸过程中,模板模型的骨骼要符合设定的骨骼约束条件。在保证约束的情况下,预设值越小越好,例如预设值可为0。
142.其中,骨骼约束条件分为如下两种约束:
143.1、对骨骼关节点添加轴向约束
144.添加的轴向约束可以是添加的坐标轴约束。添加的坐标轴约束要使得结果符合需求,即添加的坐标轴的方向能够使得人体的关节点绕着该坐标轴进行旋转后的运动和真实人类的运动相仿。每个骨骼点有其对应的坐标轴约束,在添加约束时,对于不同的关节点所添加的坐标轴约束不同。
145.具体地,添加的轴向约束有诸如此类:对臀部关节(臀部只有一个关节)添加约束,约束的三个方向轴为:轴向竖直朝向地面,切向水平朝向身体侧面,臀部关节绕切向轴旋转,这样可以保证腿部在迈腿时是朝正前方。手指部分的骨骼要确保方向正确,每个手指(五指张开)的每个关节的轴向朝向手指尖,切向向前,使其握拳的动作能恰好五指收缩入掌心。根据经验或者实际要求,可以对骨骼添加各种各样的约束,以保证计算出的骨骼是符合要求的。由于旋转拉伸的骨骼关节点有多个,并非所有骨骼关节点都需要添加约束,对于关节要添加约束,可根据情况设定选取其中的一部分或者全部骨骼关节点添加轴向约束。
146.2、对骨骼关节点和相邻骨骼关节点之间添加相对位置约束
147.例如,手臂上的手肘、手腕、肩部要在一条直线上,因此在手肘关节、手腕关节、肩部关节添加能够保持在一条直线上的位置约束。同理,腿部中臀部关节、膝关节、脚踝关节也要在一条直线上,手指的关节也要保持在一条直线上。
148.之后,根据两个设定的骨骼约束条件以及满足预设值的条件,建立方程组,通过最小二乘问题,和非线性优化,求解出模板模型的旋转拉伸后的骨骼关节点位置,将其作为角色模型的骨骼点位置。然后根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系,根据角色模型的骨骼关节点位置和骨骼之间的链接关系生成角色模型的骨骼。
149.通过计算模型模板的骨骼关节点和身体皮肤网格点的相对位置关系,得到角色模型的估算骨骼关节点位置,然后将模板模型的骨骼旋转拉伸嵌入到角色模型的皮肤网格中,模板模型的骨骼在旋转拉伸时符合设定的骨骼约束条件且旋转拉伸后的模板模型的骨骼关节点位置与角色模型的估算骨骼关节点位置的距离满足预设值,通过算法自动算出模板模型的骨骼关节点位置作为角色模型的骨骼关节点位置,然后根据旋转拉伸后的模板模型的骨骼之间的链接关系生成角色模型的骨骼之间的链接关系,根据角色模型的骨骼关节点位置和骨骼之间的链接关系生成角色模型的骨骼的方法,实现自动且快速算出骨骼位置,能够节省时间,减小成本。同时,通过对骨骼添加设定的两个约束条件,保证对于模板模型和角色模型之间的骨骼层级、数目和名字是逻辑一致的,同时对于不同的角色模型,相同名称的骨骼关节驱动的皮肤网格效果是相似的,因此添加相同的约束可以保证不同的角色模型可以被相同的动画数据所驱动,做出在同样的动作。采用标准化的约束条件,不容易出错,减少出错率。
150.接着,将模板模型的蒙皮权重复制到角色模型上,蒙皮权重是某个皮肤网格点受到某个骨骼关节运动所影响的大小。由于角色模型起始姿态下骨骼关节点之间的相对位置
是已知的,利用前向运动学计算骨骼转动后的到达位置,从而来驱动皮肤网格运动。骨骼运动之后,根据蒙皮权重,计算出皮肤网格点的位置。骨骼运动之后的运动姿态下,根据蒙皮权重,计算出来的皮肤网格点的位置,所形成的皮肤网格的外形可能不符合人体肌肉形状,因此要对皮肤网格点进行修形,来修正缺陷。
151.最后,进行修形迁移。根据上述处理得到角色模型的骨骼后,利用前向运动学计算骨骼转动的位置,从而来驱动皮肤网格运动。骨骼运动之后,根据蒙皮权重,计算出皮肤网格点的位置。
152.计算角色模型的腰围、身高、臂围、臂长、腿围、腿长等,从预设模板库中选择一个和角色模型参数相近的模板模型,模板模型是每次做完一个角色模型,结果就放到模板库里,一开始模板库只有标准模板模型,后来模板库模板模型就会越来越多。将模板模型的蒙皮权重复制到新的角色模型上,之后自动把修形迁移到新的角色模型上。修形是为了修正根据蒙皮权重计算皮肤网格点不准确的缺陷。
153.修形的具体步骤包括:
154.根据模板模型的修形,确定模板模型的皮肤网格中各个网格单元的翻转变换矩阵;获取角色模型的皮肤网格中各个网格单元的翻转变换矩阵。
155.根据模板模型的皮肤网格中各个网格单元的翻转变换矩阵和角色模型的皮肤网格中各个网格单元的翻转变换矩阵计算得到角色模型的皮肤网格中各个网格单元的修形。
156.其中,角色模型的皮肤网格中各个网格单元的翻转变换矩阵根据角色模型的皮肤网格中各个网格单元的第一边向量矩阵和第二边向量矩阵得到,模板模型的皮肤网格中各个网格单元的翻转变换矩阵根据模板模型的皮肤网格中各个网格单元的第一边向量矩阵和第二边向量矩阵得到。
157.根据模板模型的修形计算角色模型的修形具体包括:获取角色模型在初始姿态下的皮肤网格中各个网格单元对应的第一边向量矩阵,和角色模型在运动姿态下的皮肤网格中各个网格单元对应的第二边向量矩阵,第一边向量矩阵和第二边向量矩阵根据相应网格单元的边向量和面法线确定。
158.其中,还需要使得角色模型的皮肤网格中各个网格单元的翻转变换矩阵与模板模型的皮肤网格中各个网格单元的翻转变换矩阵相同。使得角色模型的皮肤网格中每个网格单元的翻转变换矩阵与该网格单元临接的网格单元的翻转变换矩阵相同。
159.计算角色模型的皮肤网格中各个网格单元的修形,具体包括:根据模型的各个网格单元的翻转变化矩阵和角色模型的各个网格单元的翻转变化矩阵计算角色模型在运动姿态下的皮肤网格中各个网格点的坐标。获取角色模型实际骨骼关节点转动后的皮肤网格中各个网格点的坐标。将在角色模型在运动姿态下的皮肤网格中各个网格点的坐标和角色模型实际骨骼关节转动后的皮肤网格中各个网格点的坐标的差值作为角色模型的修形。
160.具体而言,对于模板模型,已经有一套骨骼关节转动后在运动姿态下各个关节周围的皮肤网格点的修形数据。模板模型的是由皮肤网格加骨骼组成的人体模型,模板模型从起始姿态,到骨骼关节点转动后的运动姿态,附加修形的皮肤网格会产生相应的变化,可以通过修形数据计算皮肤网格的翻转变化。
161.皮肤网格的各个网格单元可以为三角面。根据模板模型皮肤网格中各个网格单元三角面的边向量和三角面上的面法线,计算出模板模型在初始姿态下的皮肤网格中网格单
元三角面的第一边向量矩阵和模板模型在运动姿态下的修形后的皮肤网格中网格单元三角面的第二边向量矩阵。根据第一边向量矩阵和第二边向量矩阵确定模板模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q。根据角色模型皮肤网格中各个网格单元三角面的边向量和三角面上的面法线,获取出初始姿态下角色模型皮肤网格中网格单元三角面的第一边向量矩阵和角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵。根据第一边向量矩阵和第二边向量矩阵确定角色模型在运动姿态下的修形后的皮肤网格中网格单元三角面的翻转变换矩阵q。对于角色模型,在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵中的边向量参数是未知的待求解的参数。
162.将模板文件的修形三角面变化“传递”到角色模型的修形上。通过约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q和模板模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q相同,计算角色模型在运动姿态下的皮肤网格中各个网格单元的修形。
163.对于模板模型和角色模型的外形差异较大的情况,将模板模型的修形“传递”到角色模型上,会造成修形表面的参差不齐。为了使角色模型修形表面光滑平整,进一步,还可以约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q与该网格单元临接的网格单元的翻转变换矩阵相同。通过约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q和模板模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q相同以及角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q与该网格单元临接的网格单元的翻转变换矩阵相同,计算角色模型在运动姿态下皮肤网格中各个网格单元的修形。
164.由于对于角色模型,在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵中有参数是未知的,通过约束角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q和模板模型在运动姿态下修形的皮肤网格中网格单元三角面的翻转变换矩阵q相同以及角色模型在运动姿态下修形后的皮肤网格中网格单元三角面的翻转变换矩阵q与该网格单元临接的网格单元的翻转变换矩阵相同,计算在运动姿态下修形后的皮肤网格中网格单元三角面的第二边向量矩阵,由于第一边向量矩阵和第二边向量矩阵是根据相应网格单元的边向量和面法线确定,最终可求出角色模型在运动姿态下修形后的皮肤网格中各个网格点的坐标。
165.对于角色模型,在具有皮肤网格,骨骼和蒙皮权重后,实际的骨骼关节点转动后,可以获取角色模型实际骨骼关节点转动后的皮肤网格中各个网格点的坐标。将在角色模型在运动姿态下的修形后的皮肤网格中各个网格点的坐标和角色模型实际骨骼关节转动后的皮肤网格中各个网格点的坐标的差值作为修形。在实际使用绑定模型的过程中,将实际皮肤网格点的坐标为加上坐标的差值,获得修形后的角色模型的皮肤网格点的坐标,以此来修复运动姿态下皮肤外形的不符合人体肌肉形状的缺陷。
166.对于角色模型中受至少两个骨骼关节点影响的重叠皮肤网格点,计算至少两个骨骼关节点中每个骨骼关节点在运动姿态下的重叠皮肤网格点的修形。根据至少两个骨骼关节点实际转动后角色模型的重叠皮肤网格点的实际坐标和每个骨骼关节点在运动姿态下的重叠皮肤网格点的修形计算重叠皮肤网格点的第一修形。获取模板模型的联合修形。根
据模板模型的联合修形、至少两个骨骼关节点实际转动后角色模型的重叠皮肤网格点的实际坐标、和重叠皮肤网格点的第一修形计算角色模型的重叠皮肤网格点的联合修形。
167.具体地,对于某些皮肤网格,会受到两个或者两个以上的复数关节一起联动驱动的情况,当复数关节一起运动时,所有运动关节的运动会影响该关节周围的选定网格点,选定网格点根据模板模型修形所修饰的点来确定。在复数关节距离较近的情况下,复数关节影响周围的选定网格点会存在重叠的情况,此时采用单个关节的修形很难产生良好的效果。这种情况尤其会出现在手部指关节部分。因此,对于受复数关节影响且重叠的皮肤网格可以通过联合修形来改善此种缺陷。
168.以下以复数关节为两个,来说明联合修形。对于模板模型,已经有一套复数骨骼关节转动后对应的重叠的皮肤网格点的联合修形数据。
169.当角色模型的关节a单独运动时,使用修形bs-a差值对关节a周围有影响的其中一个皮肤网格单元进行修形。当关节b单独运动时,则使用修形bs_b差值对关节b周围有影响的其中一个皮肤网格单元进行修形。对于角色模型的皮肤网格仅受单个关节的运动影响情况下的修形,可按照上述针对单个关节影响的修形方法执行,此处不再赘述。
170.若角色模型的两个关节a、b为相邻关节,且处于相近位置时,当关节a、b有关联运动时,关节a、b的运动影响的且重叠的其中一个皮肤网格单元同时使用修形单个关节修形bs-a差值、单个关节修形bs-b差值和联合修形bs-z差值进行处理。以角色模型的关节a、b运动后周围有影响的且重叠的皮肤网格中的其中一个皮肤网格单元r和模板模型的关节a’、b’运动后周围有影响的且重叠的皮肤网格中的其中一个皮肤网格单元r’来说明,其中模板模型的关节a’、b’与角色模型的关节a、b相对应的同名关节。
171.角色模型的关节a转动后,可按照针对单个关节影响的修形方法执行计算角色模型关节a转动后皮肤网格单元r的修形bs-a差值,关节b转动后,可按照步骤针对单个关节影响的修形的方法执行计算出角色模型关节b转动后皮肤网格单元r的修形bs-b差值。
172.模板模型关节a’、b’实际转动后,获得模板模型皮肤网格单元r’的实际网格点的坐标值p’,根据单个关节修形bs-a’差值和单个关节修形bs-b’差值的组合对模板模型皮肤网格单元r’进行修形,获得修形后模板模型皮肤网格单元r’的第一修形。
173.角色模型关节a、b实际转动后,获得皮肤网格单元r的实际网格点的坐标值a,根据单个关节修形bs-a差值和单个关节修形bs-b差值的组合对皮肤网格单元r进行修形,获得修形后皮肤网格单元r的第一修形。
174.对于角色模型的皮肤网格单元r,首先获取模板模型的联合修形bs-z’差值,根据模板模型的联合修形bs-z’差值和模板模型的皮肤网格单元r’的第一修形的组合,获得模板模型的第二修形,然后根据模板模型的的第二修形和模板模型皮肤网格单元r’的实际网格点的坐标值p’,角色模型的皮肤网格单元r的实际网格点的坐标值p,可按照针对单个关节影响的修形方法执行步骤s210-s230和步骤s231-s235中所描述的方法计算出角色模型的皮肤网格单元r的第二修形。
175.根据角色模型的皮肤网格单元r的第二修形和修形后角色模型的皮肤网格单元r的第一修形,计算出角色模型的皮肤网格点r的联合修形bs-z差值。
176.在实际驱动骨骼关节a、b进行运动时,根据实际转动后的皮肤网格单元r的实际网格点的坐标值p,和角色模型的皮肤网格单元r的第二修形计算运动姿态下的角色模型的修
形皮肤网格点的坐标,以此修复修形重叠皮肤网格点的外观缺陷,例如穿插和布线混乱。
177.可以将新的角色放入预设模板库,下次有新角色时可以从中选择模板模型。
178.运用传统手段,一位美术技术人员需要两周到一个月的时间,才能对一个角色模型进行绑定和修形。而通过本技术实施例提供的角色模型身体绑定方法,只需要通过算法自动运行,再让美术技术人员进行少量的调整,五天左右就能完成一个角色模型的绑定和修形,大大节省了人力和时间成本,提高了三维动画游戏的生产效率。同时,算法对生成的骨骼、修形都做了标准化处理,它们的都是同一个格式的结果,可以使用相同的方式驱动和使用它们。
179.图4为本发明实施例提供的角色模型身体绑定装置的结构示意图,如图4所示,本实施例提供的角色模型身体绑定装置包括:
180.模板模型确定模块41,用于根据待绑定的角色模型选择模板模型,所述角色模型包括皮肤网格,所述模板模型包括皮肤网格,骨骼,蒙皮权重及修形。
181.骨骼生成模块42,用于根据所述模板模型的皮肤网格和骨骼确定所述角色模型的骨骼。
182.蒙皮权重确定模块43,用于根据所述模板模型的蒙皮权重确定所述角色模型的蒙皮权重。
183.修形生成模块44,用于根据所述模板模型的修形计算所述角色模型的修形。
184.角色模型绑定模块45,用于根据所述角色模型的皮肤网格,骨骼,蒙皮权重,修形生成绑定后的角色模型。
185.本实施例提供的角色模型身体绑定装置用于实现图1实施例所示的角色模型绑身体定方法,其实现原理和技术效果类似,此处不再赘述。
186.图5为本发明实施例提供的一种角色模型身体绑定设备的结构示意图,如图5所示,该角色模型身体绑定设备包括处理器5、存储器52;角色模型身体绑定设备中处理器51的数量可以是一个或多个,图5中以一个处理器51为例;角色模型身体绑定设备中的处理器51和存储器52可以通过总线或其他方式连接,图5中以通过总线连接为例。
187.存储器52作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序以及模块,如本技术图4实施例中的角色模型身体绑定方法对应的程序指令/模块(例如角色模型身体绑定装置中的模板模型确定模块41、骨骼生成模块42、蒙皮权重确定模块43、修形生成模块44、角色模型绑定模块45)。处理器51通过运行存储在存储器52中的软件程序、指令以及模块,从而完成角色模型身体绑定设备至少一种功能应用以及数据处理,即实现上述的角色模型身体绑定方法。
188.存储器52可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据远程设备的使用所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
189.本技术实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种角色模型身体绑定方法,该方法包括:根据待绑定的角色模型选择模板模型,角色模型包括皮肤网格,模板模型包括皮肤网格,骨骼,蒙皮权重及修形;根据模板模型的皮肤网格和骨骼确定角色模型的骨骼;根据模板模型的蒙皮权
重确定角色模型的蒙皮权重;根据模板模型的修形计算角色模型的修形;根据角色模型的皮肤网格,骨骼,蒙皮权重,修形生成绑定后的角色模型。
190.一般来说,本技术的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本技术不限于此。
191.本技术的实施例可以通过计算机装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构((instruction set architecture,isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。
192.本技术附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(read-only memory,rom)、随机访问存储器(random access memory,ram)、光存储器装置和系统(数码多功能光碟(digital video disc,dvd)或光盘((compact disc,cd))等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,saic)、可编程逻辑器件(field-programmable gate array,fgpa)以及基于多核处理器架构的处理器。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1