角色面部朝向的调整方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,具体而言,涉及一种角色面部朝向的调整方法及装置。
【背景技术】
[0002]在早期的动漫以及游戏制作过程中所普遍采用的技术被称为“关节动画”,然而,其明显缺陷在于:动漫/游戏角色在运动的过程中,其关节的结合处会出现裂缝,严重影响视觉效果。为了能够改进上述缺陷,骨骼蒙皮动画应运而生。
[0003]目前的所有动画几乎都采用骨骼蒙皮动画技术,其要求每一个骨骼的顶点都包含相关的骨骼信息,这样在骨骼运动的时候,骨骼的顶点也可以做相应的运动,由此确保关节的结合处不会出现裂缝。具体地,蒙在骨骼的顶点上的东西叫蒙皮,单位的运动是由骨骼运动所带动的,而骨骼又是由空间中的一系列点连成线组成的。
[0004]骨骼动画的基本原理可概括为:在骨骼控制下,通过顶点混合动态计算蒙皮网格的顶点,而骨骼的运动相对于其父骨骼,并由动画关键帧数据驱动。一个骨骼动画通常可以包括:骨骼层次结构数据,网格(Mesh)数据,网格蒙皮数据(skin info)和骨骼的动画(关键帧)数据。
[0005]另外,上文中提到的关键帧是计算机动画术语,帧即为动画中最小单位的单幅影像画面,其相当于电影胶片上的每一格镜头。在动画软件的时间轴上帧可以表现为一格或一个标记。例如:游戏角色每做出动作的一个姿势(POSE)即为动作的一帧,因为它只是一帧,所以这个姿势是静态的,不会改变。而关键帧则相当于二维动画中的原画,其指的是角色或者物体运动或变化中的关键动作所位于的那一帧。需要说明的是,关键帧与关键帧之间的动画可以由软件来创建,被称为过渡帧或者中间帧。
[0006]相关技术在三维动画的演示过程中,无法准确设定游戏角色的面部(特别是眼睛)能够朝向特定的观测位置(例如:摄像机),游戏制作人员或者玩家通常仅能够在演示过程中看到游戏角色的侧脸甚至是后脑和背影,严重影响了观看动画或者进行游戏的视觉体验。
[0007]针对上述的问题,目前尚未提出有效的解决方案。
【发明内容】
[0008]本发明实施例提供了一种角色面部朝向的调整方法及装置,以至少解决相关技术在三维动画的演示过程中,无法准确设定游戏角色的面部能够朝向特定的观测位置的技术问题。
[0009]根据本发明实施例的一个方面,提供了一种角色面部朝向的调整方法,包括:获取视点所在的位置信息以及角色在视点的视角范围内的当前面部朝向信息;按照视点的位置信息对当前面部朝向信息进行调整,直至角色面向视点。
[0010]进一步地,获取角色在视点的视角范围内的当前面部朝向信息包括:在视频加载过程中,分别记录角色的头部骨骼的位置信息和眼部骨骼的位置信息,其中,眼部骨骼的位置信息包括:左眼骨骼的位置信息和右眼骨骼的位置信息;根据记录的头部骨骼的位置信息和眼部骨骼的位置信息获取当前面部朝向信息。
[0011]进一步地,按照位置信息对当前面部朝向信息进行调整,直至角色面向视点包括:采用视点的位置信息与当前面部朝向信息计算位置偏差;根据位置偏差判断角色的面部是否可以朝向视点;如果是,则先根据眼部骨骼的位置信息和位置偏差将角色的眼睛调整至注视视点,再根据头部骨骼的位置信息和位置偏差逐帧更新头部骨骼的位置信息直至角色面向视点。
[0012]进一步地,根据位置偏差判断角色的面部是否可以朝向视点包括:确定位置偏差在世界坐标系中的三维坐标值,其中,角色当前面朝X轴的正方向,角色的左手边为y轴正方向以及地平面的法线方向为z轴的正方向;分别判断三维坐标值是否位于预先设定的角色的头部转动范围内。
[0013]进一步地,根据眼部骨骼的位置信息和位置偏差将眼睛调整至注视视点包括:通过眼部骨骼的位置信息和位置偏差确定眼睛待转动的方向;采用位置偏差和眼睛待转动的方向生成旋转矩阵;根据眼部骨骼的位置信息与旋转矩阵的计算结果将眼睛调整至注视视点。
[0014]进一步地,根据头部骨骼的位置信息和位置偏差逐帧更新头部骨骼的位置信息直至角色面向视点包括:将与当前面部朝向信息对应的初始头部骨骼矩阵转换为初始四元数;将与角色面向视点对应的目标头部骨骼矩阵转换为目标四元数;在从初始四元数变换为目标四元数的过程中,按照预设的旋转时间逐帧计算每帧所分别对应的插值;按照计算得到的每帧所分别对应的插值依次确定在经过每帧更新后头部骨骼所在的位置,直至角色面向视点。
[0015]根据本发明实施例的另一方面,还提供了一种角色面部朝向的调整装置,包括:获取模块,用于获取视点所在的位置信息以及角色在视点的视角范围内的当前面部朝向信息;调整模块,用于按照视点的位置信息对当前面部朝向信息进行调整,直至角色面向视点。
[0016]进一步地,获取模块包括:记录单元,用于在视频加载过程中,分别记录角色的头部骨骼的位置信息和眼部骨骼的位置信息,其中,眼部骨骼的位置信息包括:左眼骨骼的位置信息和右眼骨骼的位置信息;获取单元,用于根据记录的头部骨骼的位置信息和眼部骨骼的位置信息获取当前面部朝向信息。
[0017]进一步地,调整模块包括:计算单元,用于采用视点的位置信息与当前面部朝向信息计算位置偏差;判断单元,用于根据位置偏差判断角色的面部是否可以朝向视点;调整单元,用于在判断单元输出为是时,则先根据眼部骨骼的位置信息和位置偏差将角色的眼睛调整至注视视点,再根据头部骨骼的位置信息和位置偏差逐帧更新头部骨骼的位置信息直至角色面向视点。
[0018]进一步地,判断单元包括:第一确定子单元,用于确定位置偏差在世界坐标系中的三维坐标值,其中,角色当前面朝X轴的正方向,角色的左手边为y轴正方向以及地平面的法线方向为z轴的正方向;判断子单元,用于分别判断三维坐标值是否位于预先设定的角色的头部转动范围内。
[0019]进一步地,调整单元包括:第二确定子单元,用于通过眼部骨骼的位置信息和位置偏差确定眼睛待转动的方向;生成子单元,用于采用位置偏差和眼睛待转动的方向生成旋转矩阵;第一调整子单元,用于根据眼部骨骼的位置信息与旋转矩阵的计算结果将眼睛调整至注视视点。
[0020]进一步地,调整单元包括:第一转换子单元,用于将与当前面部朝向信息对应的初始头部骨骼矩阵转换为初始四元数;第二转换子单元,用于将与角色面向视点对应的目标头部骨骼矩阵转换为目标四元数;计算子单元,用于在从初始四元数变换为目标四元数的过程中,按照预设的旋转时间逐帧计算每帧所分别对应的插值;第二调整子单元,用于按照计算得到的每帧所分别对应的插值依次确定在经过每帧更新后头部骨骼所在的位置,直至角色面向视点。
[0021]在本发明实施例中,采用获取视点所在的位置信息以及角色在视点的视角范围内的当前面部朝向信息的方式,通过按照视点的位置信息对当前面部朝向信息进行调整,达到了角色面向视点的目的,从而实现了游戏/动漫中的角色在进行三维动画演示时能够会面对视角(例如:摄像机),提升用户体验的技术效果,进而解决了相关技术在三维动画的演示过程中,无法准确设定游戏角色的面部能够朝向特定的观测位置的技术问题。
【附图说明】
[0022]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0023]图1是根据本发明实施例的角色面部朝向的调整方法;
[0024]图2是根据本发明实施例的判断头部是否能够转向视角的流程图;
[0025]图3是根据本发明优选实施例的角色头部从初始位置旋转至目标位置的二维空间示意图;
[0026]图4是根据本发明实施例的角色面部朝向的调整装置的结
构框图;
[0027]图5是根据本发明优选实施例的角色面部朝向的调整装置的结构框图。
【具体实施方式】
[0028]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0029]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0030]根据本发明实施例,提供了一种角色面部朝向的调整方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0031]图1是根据本发明实施例的角色面部朝向的调整方法,如图1所示,该方法包括如下步骤:
[0032]步骤S102,获取视点所在的位置信息以及角色在视点的视角范围内的当前面部朝向信息;
[0033]步骤S104,按照视点的位置信息对当前面部朝向信息进行调整,直至角色面向视点。
[0034]通过上述步骤,可以实现游戏/动漫中的角色在进行三维动画演示时能够会面对视角(例如:摄像机),提升用户体验的技术效果,进而解决了相关技术在三维动画的演示过程中,无法准确设定游戏角色的面部能够朝向特定的观测位置的技术问题。
[0035]可选地,在步骤S102中,获取角色在视点的视角范围内的当前面部朝向信息可以包括以下操作:
[0036]步骤S1:在视频加载过程中,分别记录角色的头部骨骼的位置信息和眼部骨骼的位置信息,其中,眼部骨骼的位置信息包括:左眼骨骼的位置信息和右眼骨骼的位置信息;
[0037]步骤S2:根据记录的头部骨骼的位置信息和眼部骨骼的位置信息获取当前面部朝向信息。
[0038]正如上文所述,单位的运动是由骨骼运动所带动的,而骨骼是由空间中的一系列点连成线所组成的。例如:当腿部运动的时候,脚部在腿部运动的带动下肯定也需要跟着运动;考虑到骨骼的数据结构通常为树状结构,因而,脚部的父节点是小腿,小腿的父节点则是大腿,以此类推,而所有骨骼的父节点便是根骨骼。在通常情况下,根骨骼只有一个,其通常位于两脚之间。
[0039]在优选实施例中,为满足头部旋转的需要,在每次加载角色的时候,至少需要记录下该角色的三根骨骼信息,其分别为:头部骨骼,左眼骨骼,右眼骨骼,以便于确定角色在每次加载后所在的初始位置。
[0040]可选地,在步骤S104中,按照位置信息对当前面部朝向信息进行调整,直至角色面向视点可以包括以下步骤:
[0041]步骤S3:采用视点的位置信息与当前面部朝向信息计算位置偏差;
[0042]步骤S4:根据位置偏差判断角色的面部是否可以朝向视点;
[0043]步骤S5:如果是,则先根据眼部骨骼的位置信息和位置偏差将角色的眼睛调整至注视视点,再根据头部骨骼的位置信息和位置偏差逐帧更新头部骨骼的位置信息直至角色面向视点。
[0044]在优选实施例中,如果需要确定角色的头部是否能够转向视角(例如:摄像机),那么首先需要旋转眼部的骨骼,以确保眼部能够旋转至该视角,然后再旋转头部的骨骼,并且逐帧更新头部转动后所在的位置,让头部缓慢转动至该视角。
[0045]可选地,在步骤S4中,根据位置偏差判断角色的面部是否可以朝向视点可以包括以下操作:
[0046]步骤S41:确定位置偏差在世界坐标系中的三维坐标值,其中,角色当前面朝X轴的正方向,角色的左手边为y轴正方向以及地平面的法线方向为z轴的正方向;
[0047]步骤S42:分别判断三维坐标值是否位于预先设定的角色的头部转动范围内。
[0048]需要说明的是,上述世界坐标系在本发明中主要指的是左手坐标系,其中,人物默认都是面朝X轴正方向的,角色的左手边为y轴正方向以及地平面的法线方向为z轴的正方向,例如:假设三维坐标为(x,z,y),那么,(1,0,0)表示这个人看着正前方,(0,1,0)表示左手方向,(0,_1,0)表示右手方向,(0,0,1)表示上方,(0.5,0.5,0.7)表示右+前+上方,这里的方向是经过“归一化的”,即x*x+y*y+z*z = 1。另外,下文中出现的face_dir为上述位置偏差,face_dir.x为位置偏差在x轴方向上的取值,同理,face_dir.y和face_dir.z分别为位置偏差在y轴和z轴方向上的取值。
[0049]下面将结合图2所示的优选实施方式对上述优选实施过程作进一步地描述。图2是根据本发明实施例的判断头部是否能够转向视角的流程图。如图2所示,该流程可以包括以下处理步骤:
[0050]步骤S202,判断face_dir.x是否小于0,如果是,则转到步骤S216;如果否,则继续执行步骤S204;
[0051]faCe_dir.X大于0,表示游戏/动漫角色只能看到前方,由于受到颈部骨骼扭曲度的限制,角色不可能把头扭到背后去。
[0052]步骤S204,采用absy表示face_dir.y的绝对值以及采用absz表示face_dir.z的绝对值;
[0053]face_dir.y和face_dir.z需要求取绝对值,即一个角色头部在向上/向下方向上能够移动的角度可以认定为是一样的,同理,一个角色头部在向左/向右方向上能够移动的角度也可以认定为是一样的。
[0054]步骤S206,判断absz是否大于0.5以及absy是否大于0.5,如果absz大于0.5且absy大于0.5,则转到步骤S216;否则,继续执行步骤S208 ;
[0055]如上所述,absy和absz都是归一化后的数值,其目的在于:限制头部不要向上/向下(absy)以及向左/向右(absz)转动太多,上述0.5的取值可以认定为经过多次试验得到一个经验数值,如果小于0.5,则这个角色的头部可移动范围会随之减少;如果大于0.5,则这个角色的头部可移动范围会增大,可以根据实际场景的需要对0.5这个取值进行调整。[°°56] 步骤S208,判断absz是否大于absy,如果大于,则继续执行步骤S214 ;如果否,则继续执行步骤S210;
[0057]absz>absy表示这个角色的头部在左/右方向上观察的幅度比上/下方向上观察的幅度要大一些。在这种情况下,主要是对左/右方向上观察的幅度的约束。
[0058]步骤S210,判断face_dir.y是否大于0.6或小于_0.8,如果face_dir.y大于0.6或小于-0.8,则转到步骤S216;否则,继续执行步骤S212;
[0059]通常上述判断条件可知,此处首先满足的条件是absz< absy,其次,选取上述数值并结合该步骤中的判断条件则是限定这个角色的头部在上/下方向上观察的幅度比左/右方向上观察的幅度要大一些。在这种情况下,主要是对上/下方向上观察的幅
度的约束,即角色的头部更容易查看下方,而不太容易观察上方,故而,下方的数值采用-0.8,而上方的数值采用0.6。当然,无论是-0.8还是0.6都是经过多次试验得到一个经验数值,可以根据实际场景的需要分别对这两个取值进行调整。
[0060]步骤S212,角色的头部可以转向视角;
[0061 ] 步骤S214,判断absz是否大于0.8 ;如果是,则执行步骤S216;如果否,则执行步骤S212;
[0062]该步骤中的0.8也是经过多次试验得到一个经验数值,可以根据实际场景的需要分别对这两个取值进行调整。
[0063 ]步骤S216,角色的头部无法转向视角。
[0064]可选地,在步骤S5中,根据眼部骨骼的位置信息和位置偏差将眼睛调整至注视视点可以包括以下操作:
[0065]步骤S51:通过眼部骨骼的位置信息和位置偏差确定眼睛待转动的方向;
[0066]步骤S52:采用位置偏差和眼睛待转动的方向生成旋转矩阵;
[0067]步骤S53:根据眼部骨骼的位置信息与旋转矩阵的计算结果将眼睛调整至注视视点。
[0068]人物的一根骨骼通常可以采用数学的一个向量来描述,一个角色模型即为骨骼的集合,而向量的集合是矩阵,故计算机中一个角色模型可以采用矩阵来描述。如果要使一个角色模型活动起来,那么在数学上等价于矩阵的多种运算,因此,计算机三维动作动画实际上就是矩阵运算。
[0069]在优选实施例中,将眼睛转向视点的方式为:首先,确定眼睛转向视点的旋转方向(例如:左上方);其次,可以根据上述face_dir和左上方的方向生成旋转矩阵;然后,将旋转矩阵直接赋值给眼睛的骨骼矩阵即可。
[0070]可选地,在步骤S5中,根据头部骨骼的位置信息和位置偏差逐帧更新头部骨骼的位置信息直至角色面向视点可以包括以下操作:
[0071]步骤S54:将与当前面部朝向信息对应的初始头部骨骼矩阵转换为初始四元数;
[0072]步骤S55:将与角色面向视点对应的目标头部骨骼矩阵转换为目标四元数;
[0073]步骤S56:在从初始四元数变换为目标四元数的过程中,按照预设的旋转时间逐帧计算每帧所分别对应的插值;
[0074]步骤S57:按照计算得到的每帧所分别对应的插值依次确定在经过每帧更新后头部骨骼所在的位置,直至角色面向视点。
[0075]位置、旋转、缩放(?08;11:;[011、1?(^31:;[011、30316,简称为?1^)可以决定一根骨骼的状态,其中,对于位置和缩放而言,这两个数值均为线性数值,可以直接相加减,例如:坐标(3,0,0)分别沿X轴、y轴和z轴都移动5单位,其结果即为坐标(8,5,5)。但是,对于旋转而言,考虑到欧拉角具有一定的局限性,其无法计算插值,即如果希望从A旋转到B,并在A与B之间选取一个中间点,那么这个中间点不会在A到B的最短路径上。为此,为了克服上述缺陷,四元数(即由四个数组成的向量)逐步替代了欧拉角,用于计算骨骼旋转。
[0076]在优选实施例中,头部骨骼从当前所在的初始位置旋转到视点所在的目标位置是一个逐帧更新头部骨骼位置的过程。首先,可以将头部骨骼放缩比例设置为1.0,其原因在于:四元数计算必须要求缩放比为1.0;其次,将当前(即在角色加载完成后的角色头部的初始朝向)头部骨骼矩阵转换为四元数rot_src(即上述初始四元数);再次,将目标视点所在朝向对应的头部骨骼矩阵转换为四元数rot_deSt(即上述目标四元数);然后,根据预先设定的旋转时间以及在该旋转时间内所包含的帧数,逐帧计算rot_src和rot_dest的插值,进而得到最终的目标结果矩阵resu 1 t_matrix;最后,恢复resu 1 t_matrix的缩放比例,并将最终得到的result_matrix的结果赋值给头部矩阵。
[0077]需要说明的是,在后续的演示过程中,每帧更新骨骼位置的时候,如果是头部和眼睛,则只需要更新位置和缩放,而不再更新旋转。因为旋转已经由上面步骤更新过了。
[0078]下面将结合一个二维空间实例对上述头部旋转过程做进一步地描述。
[0079]图3是根据本发明优选实施例的角色头部从初始位置旋转至目标位置的二维空间示意图。如图3所示,在采用计算机进行视频处理过程中,如果将角色头部从初始位置一下转到目标视点所在位置,则会让用户产生明显的“跳帧”感觉,即角色从当前模样瞬间就变成另外一幅模样,感觉不自然,因此,假设在预设旋转时间内包含三个,图中的虚线箭头表示中间的处理过程,也就是“每帧头部更新”需要执行的操作。在图3中,计算机在第一帧会计算出F1箭头位置,并将该位置更新为角色头部的当前位置;然后,在第二帧会计算出F2箭头位置,并将该位置更新为角色头部的当前位置;最后,在第三帧角色头部才真正移动到rot_destο
[0080]图4是根据本发明实施例的角色面部朝向的调整装置的结构框图。如图4所示,该角色面部朝向的调整装置可以包括:获取模块10,用于获取视点所在的位置信息以及角色在视点的视角范围内的当前面部朝向信息;调整模块20,用于按照视点的位置信息对当前面部朝向信息进行调整,直至角色面向视点。
[0081]可选地,图5是根据本发明优选实施例的角色面部朝向的调整装置的结构框图。如图5所示,获取模块10可以包括:记录单元100,用于在视频加载过程中,分别记录角色的头部骨骼的位置信息和眼部骨骼的位置信息,其中,眼部骨骼的位置信息包括:左眼骨骼的位置信息和右眼骨骼的位置信息;获取单元102,用于根据记录的头部骨骼的位置信息和眼部骨骼的位置信息获取当前面部朝向信息。
[0082]可选地,如图5所示,调整模块20可以包括:计算单元200,用于采用视点的位置信息与当前面部朝向信息计算位置偏差;判断单元202,用于根据位置偏差判断角色的面部是否可以朝向视点;调整单元204,用于在判断单元输出为是时,则先根据眼部骨骼的位置信息和位置偏差将角色的眼睛调整至注视视点,再根据头部骨骼的位置信息和位置偏差逐帧更新头部骨骼的位置信息直至角色面向视点。
[0083]可选地,判断单元202可以包括:第一确定子单元(图中未示出),用于确定位置偏差在世界坐标系中的三维坐标值,其中,角色当前面朝X轴的正方向,角色的左手边为y轴正方向以及地平面的法线方向为Z轴的正方向;判断子单元(图中未示出),用于分别判断三维坐标值是否位于预先设定的角色的头部转动范围内。
[0084]可选地,调整单元204可以包括:第二确定子单元(图中未示出),用于通过眼部骨骼的位置信息和位置偏差确定眼睛待转动的方向;生成子单元(图中未示出),用于采用位置偏差和眼睛待转动的方向生成旋转矩阵;第一调整子单元(图中未示出),用于根据眼部骨骼的位置信息与旋转矩阵的计算结果将眼睛调整至注视视点。
[0085]可选地,调整单元204可以包括:第一转换子单元(图中未示出),用于将与当前面部朝向信息对应的初始头部骨骼矩阵转换为初始四元数;第二转换子单元(图中未示出),用于将与角色面向视点对应的目标头部骨骼矩阵转换为目标四元数;计算子单元(图中未示出),用于在从初始四元数变换为目标四元数的过程中,按照预设的旋转时间逐帧计算每帧所分别对应的插值;第二调整子单元(图中未示出),用于按照计算得到的每帧所分别对应的插值依次确定在经过每帧更新后头部骨骼所在的位置,直至角色面向视点。
[0086]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0087]在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0088
]在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0089]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0090]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0091]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(R0M,Read-0nly Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0092]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种角色面部朝向的调整方法,其特征在于,包括: 获取视点所在的位置信息以及角色在所述视点的视角范围内的当前面部朝向信息;按照所述视点的位置信息对所述当前面部朝向信息进行调整,直至所述角色面向所述视点。2.根据权利要求1所述的方法,其特征在于,获取所述角色在所述视点的视角范围内的所述当前面部朝向信息包括: 在视频加载过程中,分别记录所述角色的头部骨骼的位置信息和眼部骨骼的位置信息,其中,所述眼部骨骼的位置信息包括:左眼骨骼的位置信息和右眼骨骼的位置信息;根据记录的所述头部骨骼的位置信息和所述眼部骨骼的位置信息获取所述当前面部朝向信息。3.根据权利要求2所述的方法,其特征在于,按照所述位置信息对所述当前面部朝向信息进行调整,直至所述角色面向所述视点包括: 采用所述视点的位置信息与所述当前面部朝向信息计算位置偏差; 根据所述位置偏差判断所述角色的面部是否可以朝向所述视点; 如果是,则先根据所述眼部骨骼的位置信息和所述位置偏差将所述角色的眼睛调整至注视所述视点,再根据所述头部骨骼的位置信息和所述位置偏差逐帧更新所述头部骨骼的位置信息直至所述角色面向所述视点。4.根据权利要求3所述的方法,其特征在于,根据所述位置偏差判断所述角色的面部是否可以朝向所述视点包括: 确定所述位置偏差在世界坐标系中的三维坐标值,其中,所述角色当前面朝X轴的正方向,所述角色的左手边为y轴正方向以及地平面的法线方向为z轴的正方向; 分别判断所述三维坐标值是否位于预先设定的所述角色的头部转动范围内。5.根据权利要求3所述的方法,其特征在于,根据所述眼部骨骼的位置信息和所述位置偏差将所述眼睛调整至注视所述视点包括: 通过所述眼部骨骼的位置信息和所述位置偏差确定所述眼睛待转动的方向; 采用所述位置偏差和所述眼睛待转动的方向生成旋转矩阵; 根据所述眼部骨骼的位置信息与所述旋转矩阵的计算结果将所述眼睛调整至注视所述视点。6.根据权利要求3所述的方法,其特征在于,根据所述头部骨骼的位置信息和所述位置偏差逐帧更新所述头部骨骼的位置信息直至所述角色面向所述视点包括: 将与所述当前面部朝向信息对应的初始头部骨骼矩阵转换为初始四元数; 将与所述角色面向所述视点对应的目标头部骨骼矩阵转换为目标四元数; 在从所述初始四元数变换为所述目标四元数的过程中,按照预设的旋转时间逐帧计算每帧所分别对应的插值; 按照计算得到的每帧所分别对应的插值依次确定在经过每帧更新后所述头部骨骼所在的位置,直至所述角色面向所述视点。7.一种角色面部朝向的调整装置,其特征在于,包括: 获取模块,用于获取视点所在的位置信息以及角色在所述视点的视角范围内的当前面部朝向信息; 调整模块,用于按照所述视点的位置信息对所述当前面部朝向信息进行调整,直至所述角色面向所述视点。8.根据权利要求7所述的装置,其特征在于,所述获取模块包括: 记录单元,用于在视频加载过程中,分别记录所述角色的头部骨骼的位置信息和眼部骨骼的位置信息,其中,所述眼部骨骼的位置信息包括:左眼骨骼的位置信息和右眼骨骼的位置信息; 获取单元,用于根据记录的所述头部骨骼的位置信息和所述眼部骨骼的位置信息获取所述当前面部朝向信息。9.根据权利要求8所述的装置,其特征在于,所述调整模块包括: 计算单元,用于采用所述视点的位置信息与所述当前面部朝向信息计算位置偏差; 判断单元,用于根据所述位置偏差判断所述角色的面部是否可以朝向所述视点; 调整单元,用于在所述判断单元输出为是时,则先根据所述眼部骨骼的位置信息和所述位置偏差将所述角色的眼睛调整至注视所述视点,再根据所述头部骨骼的位置信息和所述位置偏差逐帧更新所述头部骨骼的位置信息直至所述角色面向所述视点。10.根据权利要求9所述的装置,其特征在于,所述判断单元包括: 第一确定子单元,用于确定所述位置偏差在世界坐标系中的三维坐标值,其中,所述角色当前面朝X轴的正方向,所述角色的左手边为y轴正方向以及地平面的法线方向为z轴的正方向; 判断子单元,用于分别判断所述三维坐标值是否位于预先设定的所述角色的头部转动范围内。11.根据权利要求9所述的装置,其特征在于,所述调整单元包括: 第二确定子单元,用于通过所述眼部骨骼的位置信息和所述位置偏差确定所述眼睛待转动的方向; 生成子单元,用于采用所述位置偏差和所述眼睛待转动的方向生成旋转矩阵; 第一调整子单元,用于根据所述眼部骨骼的位置信息与所述旋转矩阵的计算结果将所述眼睛调整至注视所述视点。12.根据权利要求9所述的装置,其特征在于,所述调整单元包括: 第一转换子单元,用于将与所述当前面部朝向信息对应的初始头部骨骼矩阵转换为初始四元数; 第二转换子单元,用于将与所述角色面向所述视点对应的目标头部骨骼矩阵转换为目标四元数; 计算子单元,用于在从所述初始四元数变换为所述目标四元数的过程中,按照预设的旋转时间逐帧计算每帧所分别对应的插值; 第二调整子单元,用于按照计算得到的每帧所分别对应的插值依次确定在经过每帧更新后所述头部骨骼所在的位置,直至所述角色面向所述视点。
【专利摘要】本发明公开了一种角色面部朝向的调整方法及装置。其中,该方法包括:获取视点所在的位置信息以及角色在视点的视角范围内的当前面部朝向信息;按照视点的位置信息对当前面部朝向信息进行调整,直至角色面向视点。本发明解决了相关技术在三维动画的演示过程中,无法准确设定游戏角色的面部能够朝向特定的观测位置的技术问题。
【IPC分类】G06T13/40
【公开号】CN105488834
【申请号】CN201510866694
【发明人】徐星
【申请人】网易(杭州)网络有限公司
【公开日】2016年4月13日
【申请日】2015年12月1日