二维角色表现三维动作的系统及方法

文档序号:6504765阅读:268来源:国知局
二维角色表现三维动作的系统及方法
【专利摘要】本发明提出一让二维角色(2D?Character)能表现左右(X轴)、上下(Y轴)及前后(Z轴)的三维动作的系统及方法。本发明是分析所输入的人体三维动作数据(3D?Human?Motion?Data),以取得三维动作数据中人体各部位的角度、坐标及深度的运动资讯,并通过图片集合(Sprite)与三维动作的配对的方式,让二维角色身体的每个部位图像皆能依照三维动作的角度资讯,切换到符合该角度的合理图片,并根据三维动作深度及角度资讯,调整二维角色各部位的图像的大小或变形,让二维角色能如同三维角色般达到具有深度资讯的正面表演、侧身表演、转身表演或背面表演等视觉表演效果。
【专利说明】二维角色表现三维动作的系统及方法
【技术领域】
[0001]本发明是一种让二维角色(2D Character)能表现三维动作的系统及方法。通过分析人体三维动作数据(3D Human Motion Data),以取得三维动作数据中人体各部位的角度、坐标及深度的运动资讯,并通过图片集合(Sprite)与三维动作的配对的方式,让二维角色身体的每个部位图像皆能依照三维动作的资讯,达到具有深度资讯的视觉表演效果。
【背景技术】
[0002]二维动画(2D Cut-out Animation)与三维动画(3D Animation)最大的不同之处在于二维动画只有左右(X轴)及上下(Y轴)的资讯,并没有深度(Depth)即前后(Z轴)的概念。由于二维动画缺乏深度设计,因此现实状况中三维的动作并不适合直接给予二维的角色使用,否则会出现许多视觉上的错误。为了表演出二维动画物件的能套用三维的动作数据,德国学者 Alexander Hornung, Ellen Dekkers, Leif Kobbelt 等人在 2007 年曾提出「Character Animation from2D Pictures and3D Motion Data」的方法,但此方法的表演受限于二维角色的面向,只能表现出单一面向的动画,若是三维动作中包括面向的转换,例如动作由正面转向侧面或转向背面时,则此方法现将无法让二维角色做出正确的三维表演动作。

【发明内容】

[0003]本发明的主要目的是提出一种让二维角色(2D Character)能表现左右(X轴)、上下(Y轴)及前后(Z轴)的三维动作的系统及方法。本发明是分析所输入的人体三维动作数据(3D Human Motion Data),以取得三维动作数据中人体各部位的角度、坐标及深度的运动资讯,并通过图片集合(Sprite)与三维动作的配对的方式,让二维角色身体的每个部位图像皆能依照三维动作的角度资讯,切换到符合该角度的合理图片,并根据三维动作深度及角度资讯,调整二维角色各部位的图像的大小或变形,让二维角色能如同三维角色般达到具有深度资讯的正面表演、侧身表演、转身表演或背面表演等视觉表演效果。
[0004]为了达到上述目的,本发明提供一种让二维角色能表现三维动作的系统,该系统至少包括:
[0005]一三维动作载入单元,用以将人体三维动作数据对应至一虚拟骨架,并将所有动作数据以矩阵方式记录下来以得到一动作骨架世界矩阵;
[0006]一虚拟摄影机转换单元,该单元首先架设虚拟摄影机用以观察三维动作及其虚拟骨架以定义一个观察三维动作的观察视点,该观察视点可以是三维世界中的任何位置,该单元接着计算动作角度以推算出三维表演动作进行时人体各部位的旋转及角度资讯,可得到以虚拟摄影机观察点为视角进行推算的表演动作角度矩阵,该单元接着将三维坐标转换为二维坐标及深度以取得三维动作及其虚拟体架在表演时各身体部位,即节点的坐标与深度资讯;
[0007]—二维动作转换单元,该单元首先执行Sprite Angle计算以决定一个Sprite在呈现三维动作时以哪一个角度的图来显示,得到Sprite Angle之后接下来就是决定角度刻度与Sprite图片组的内所有图片的对应关系,接着执行一二维旋转计算步骤,接着执行一二维尺度缩放与自由形变计算步骤,接着执行一深度关系转换的计算步骤;及
[0008]一显示单元用以处理及输出呈现一结果。
[0009]其中,该虚拟摄影机转换单元计算动作角度乃在于推算出三维表演动作进行时人体各部位的旋转及角度资讯,由于三维动作本身并不带有人体各个部位在运动时的旋转及角度资讯,因此通过该虚拟摄影机的观察结果,将虚拟摄影机对人体三维动作及其虚拟骨架的关系,用以看向三维世界中心点的相对方式,做为判断人体三维动作角度的基准,即得到以虚拟摄影机观察点为视角进行推算的表演动作角度矩阵Virtual CameraTransformation Matrix; VCM,其公式如下:
【权利要求】
1.一种让二维角色能表现三维动作的系统,其特征在于,该系统至少包括: 一三维动作载入单元,用以将人体三维动作数据对应至一虚拟骨架,并将所有动作数据以矩阵方式记录下来以得到一动作骨架世界矩阵; 一虚拟摄影机转换单元,该单元首先架设虚拟摄影机用以观察三维动作及其虚拟骨架以定义一个观察三维动作的观察视点,该观察视点可以是三维世界中的任何位置,该单元接着计算动作角度以推算出三维表演动作进行时人体各部位的旋转及角度资讯,可得到以虚拟摄影机观察点为视角进行推算的表演动作角度矩阵,该单元接着将三维坐标转换为二维坐标及深度以取得三维动作及其虚拟体架在表演时各身体部位,即节点的坐标与深度资讯; 一二维动作转换单元,该单元首先执行Sprite Angle计算以决定一个Sprite在呈现三维动作时以哪一个角度的图来显示,得到Sprite Angle之后接下来就是决定角度刻度与Sprite图片组的内所有图片的对应关系,接着执行一二维旋转计算步骤,接着执行一二维尺度缩放与自由形变计算步骤,接着执行一深度关系转换的计算步骤;及 一显示单元用以处理及输出呈现一结果。
2.根据权利要求1所述的系统,其特征在于,该虚拟摄影机转换单元计算动作角度乃在于推算出三维表演动作进行时人体各部位的旋转及角度资讯,由于三维动作本身并不带有人体各个部位在运动时的旋转及角度资讯,因此通过该虚拟摄影机的观察结果,将虚拟摄影机对人体三维动作及其虚拟骨架的关系,用以看向三维世界中心点的相对方式,做为判断人体三维动作角度的基准,即得到以虚拟摄影机观察点为视角进行推算的表演动作角度矩阵 Virtual Camera Transformation Matrix; VCM,其公式如下:

3.根据权利要求1所述的系统,其特征在于,该虚拟摄影机转换单元将三维坐标转换为二维坐标及深度的主要目的为取得三维动作及其虚拟体架在表演时各身体部位,即节点的坐标与深度资讯,通过该三维动作载入单元所计算产出的动作骨架世界矩阵及所产出的虚拟摄影机转换矩阵,即可求得人体各部位,即节点,Joint Point; JP的三维坐标及深度,其公式如下:
Joint Position(x, y, z) = [0, 0, 0]*WM*VCM。
4.根据权利要求1所述的系统,其特征在于,该SpriteAngle的计算方式是利用由虚拟摄影机视角中观察到的亲节点到子节点的最短距离所形成的向量,即亲节点的骨向量,Sprite Angle的ID分为水平角度及垂直角度,将骨向量投射至与虚拟摄影机射线平行的两个平面,即Y-Z平面及X-Z平面,再与虚拟摄影机射线计算后即可分别得到此一骨向量的水平及垂直角度,得到Sprite Angle之后接下来就是决定角度刻度与Sprite图片组的内所有图片的对应关系,即何种角度要呈现何种指定图片,计算时以角度刻度区间做为Sprite换图依据的换图方法,将虚拟骨架对应的各个Sprite置于一个虚拟立体环状球形摄影机空间内,系统根据虚拟立体环状范围内,自动建立多台虚拟摄影机,并在Sprite对应关系表中自动找出相对应的现在表演角度的Sprite图片并显示出来,其中,角度刻度区分可自由设定,使用者可根据需求自行定义角度刻度及对角色骨架进行设定。
5.根据权利要求1所述的系统,其特征在于,该二维动作转换单元执行二维旋转计算步骤是计算三维动作表演时骨头的旋转并产生二维的旋转资讯,首先设定一个预定骨的轴向,将骨向量投影至虚拟摄影机的平面,再与预定骨的轴向计算角度,此角度即为该骨头的二维旋转量,若有骨向量与虚拟摄影机平行的状况发生,亦即落入上/下区间时,则计算骨头的X轴投影至X-Y平面与X轴的向量夹角即为该骨头的旋转量,若为末端的骨头,则使用长轴,即Y轴的角度差投影至X-Y平面,计算旋转量,并要加上亲节点的旋转量,即可得到正确的末端骨头的旋转量。
6.根据权利要求1所述的系统,其特征在于,该二维动作转换单元执行二维尺度缩放与自由形变计算步骤是以平面投影方式观察三维动作表演时的骨头长度,当骨头进行有深度变化的位移,对二维平面投影来说则犹如对骨头的尺度进行缩放一样,即是根据三维动作表演时,自动将二维图片进行尺度放大及缩小的计算,产生符合视觉的深度感觉,并通过自由形变的计算与运用,让套用三维动作数据后的二维影像在表演时能更生动且具有动画表演的夸张特性,二维尺度计算中2D Scale表示为(Sx,Sy),分别为宽与高的Scale值,其中Sy可表现3D运动后骨头长度变化,Sx则可表现出深度的透视效果,Sx的计算乃是运用Joint Position的深度值计算(z),以世界中心点为基准,越近越大,反之越小,计算时可加上Projection Strength的加乘,可独立调整透视效果的强度算公式,其公式如下:
Sx=l+JPz氺Projection Strength Sy 的计算乃是利用 Bone Vector Project to X-Y Plane 及 Virtual Bone 长度的比例计算,公式如下所示:`
Sy= (Length of Bone Vector Project to X-Y Plane)/ (Virtual Bone Length 若是图片为末端的骨头或上/下的角度,则图片维持宽高等比的缩放Sy=Sx,以避免变形,形变计算是利用自由形变的概念,用以达到骨头透视及骨头厚度模拟的效果,骨头透视效果计算是于动作表演中依序处理角色各部位影像的形变,使得到具有视觉透视效果的形变,Sex计算公式如下所示:
SEx=0.5*Sx_child/Sx_parent 于骨头厚度模拟计算时,真实的3D Bone因为有厚度,因此在前后转动时会因其厚度产生外形上的改变2D Motion系统中可运用调整FFD Control Point来达成因厚度产生的变形FFD若切分为3x3Control Points,则可计算SKy套用至中心的2x2Control Point,模拟因厚度产生的形变,SKy的计算公式如下:SKy=(Deform Strength)*(l_SKx)。
7.根据权利要求1所述的系统,其特征在于,该二维动作转换单元执行深度关系转换的计算步骤,该步骤目的是为了让二维动画表演时,身体各部位的节点及骨头都有正确的深度关系,即二维平面观察中各部位皆有正确的前后遮蔽关系,该步骤利用虚拟摄影机视角中,虚拟摄影机的位置与各关节的位置,对身体位部位关节点进行两两深度计算,并得到代表深度关系的向量,利用点矩阵向量乘积计算,两两比较节点顺序。
8.根据权利要求1所述的系统,其特征在于,该显示单元处理及输出呈现结果的方法是一动画渲染的步骤,三维动画通常以物件或点所在的深度决定绘制物件的先后顺序,SP运用Z-Sort或Z-Buffer技术绘制,二维动画由于没有深度概念,通常以层级的数值来决定物件之间的前后关系,二维动画中角色物件的前后关系正确与否通常发生于关节接合处,但指定层级并不能处理所有的动画表演情况,为使二维的环境中渲染出因深度而产生遮蔽的效果,有兼具物件间层级的合理性,本步骤以深度列表方式在动画的每一个影格中排列出各骨头之间的前后关系,并使用相关连层级以指定物件之间相对的前后关系,最后使用层级遮罩建立一个遮罩用以遮蔽Relative Layer指定的运作范围,即可得到合理的动画结果O
9.一种让二维角色能表现三维动作的方法,其特征在于,该方法至少包括以下的步骤 : (a)、将人体三维动作数据对应至一虚拟骨架,并将所有动作数据以矩阵方式记录下来以得到一动作骨架世界矩阵; (b)、首先架设虚拟摄影机用以观察三维动作及其虚拟骨架以定义一个观察三维动作的观察视点,该观察视点可以是三维世界中的任何位置,接着计算动作角度以推算出三维表演动作进行时人体各部位的旋转及角度资讯,可得到以虚拟摄影机观察点为视角进行推算的表演动作角度矩阵,接着将三维坐标转换为二维坐标及深度以取得三维动作及其虚拟体架在表演时各身体部位,即节点的坐标与深度资讯; (c)、首先执行SpriteAngle计算以决定一个Sprite在呈现三维动作时以哪一个角度的图来显示,得到Sprite Angle之后接下来就是决定角度刻度与Sprite图片组的内所有图片的对应关系,接着执行一二维旋转计算步骤,接着执行一二维尺度缩放与自由形变计算步骤,接着执行一深度关系转换的计算步骤;及 (d)、输出及显不一结果。
10.根据权利要求9所述的方法,其特征在于,该计算动作角度的步骤乃在于推算出三维表演动作进行时人体各部位的旋转及角度资讯,由于三维动作本身并不带有人体各个部位在运动时的旋转及角度资讯,因此通过该虚拟摄影机的观察结果,将虚拟摄影机对人体三维动作及其虚拟骨架的关系,用以看向三维世界中心点的相对方式,做为判断人体三维动作角度的基准,即得到以虚拟摄影机观察点为视角进行推算的表演动作角度矩阵Virtual Camera Transformation Matrix; VCM,其公式如下:
Virtual Camera Transformation Matrix
EyePose = [ 0, 0, 0 ]
vAxisZ = [ -sin( Theta ), cos( Theta ) - abs( sin( Phi))?-sin( Phi)]
vAxisY = [ 0, sin( Phi), 1 - abs( sin( Phi))]
vAxisX = cross( vAxisY, vAXISz )Virtual Camera Transformation Matrix (¥CM) = [ vAxisX.x, vAxisX.y, vAxisX.z, 0 ][vAxisY.x, vAxisY.y, vAxisY.z, 0 ][vAxisZ.x, vAxisZ.y, vAxisZ.z, 0 ]I Ot of 0,1] 其中,Motion Angle以(Theta, Phi)表示,Theta为水平角度,Phi为垂直角度。
11.根据权利要求9所述的方法,其特征在于,将三维坐标转换为二维坐标及深度的主要目的为取得三维动作及其虚拟体架在表演时各身体部位,即节点的坐标与深度资讯,通过该三维动作载入单元所计算产出的动作骨架世界矩阵及所产出的虚拟摄影机转换矩阵,即可求得人体各部位,即节点,Joint Point; JP的三维坐标及深度,其公式如下:
Joint Position (x, y, z) = [0, 0, 0]*WM*VCM。
12.根据权利要求9所述的方法,其特征在于,该SpriteAngle的计算方式是利用由虚拟摄影机视角中观察到的亲节点到子节点的最短距离所形成的向量,即亲节点的骨向量,Sprite Angle的ID分为水平角度及垂直角度,将骨向量投射至与虚拟摄影机射线平行的两个平面,即Y-Z平面及X-Z平面,再与虚拟摄影机射线计算后即可分别得到此一骨向量的水平及垂直角度,得到Sprite Angle之后接下来就是决定角度刻度与Sprite图片组的内所有图片的对应关系,即何种角度要呈现何种指定图片,计算时以角度刻度区间做为Sprite换图依据的换图方法,将虚拟骨架对应的各个Sprite置于一个虚拟立体环状球形摄影机空间内,系统根据虚拟立体环状范围内,自动建立多台虚拟摄影机,并在Sprite对应关系表中自动找出相对应的现在表演角度的Sprite图片并显示出来,其中,角度刻度区分可自由设定,使用者可根据需求自行定义角度刻度及对角色骨架进行设定。
13.根据权利要求9所述的方法,其特征在于,该执行二维旋转计算步骤是计算三维动作表演时骨头的旋转并产生二维的旋转资讯,首先设定一个预定骨的轴向,将骨向量投影至虚拟摄影机的平面,再与预定骨的轴向计算角度,此角度即为该骨头的二维旋转量,若有骨向量与虚拟摄影机平行的状况发生,亦即落入Top/Bottom区间时,则计算骨头的X轴投影至X-Y平面与X轴的向量夹角即为该骨头的旋转量,若为末端的骨头,则使用长轴,即Y轴的角度差投影至X-Y平面,计算旋转量,并要加上亲节点的旋转量,即可得到正确的末端骨头的旋转量。
14.根据权利要求9所述的方法,其特征在于,该执行二维尺度缩放与自由形变计算步骤是以平面投影方式观察三维动作表演时的骨头长度,当骨头进行有深度变化的位移,对二维平面投影来说则犹如对骨头的尺度进行缩放一样,即是根据三维动作表演时,自动将二维图片进行尺度放大及缩小的计算,产生符合视觉的深度感觉,并通过自由形变的计算与运用,让套用三维动作数据后的二维影像在表演时能更生动且具有动画表演的夸张特性,二维尺度计算中2D Scale表示为(Sx,Sy),分别为宽与高的Scale值,其中Sy可表现3D运动后骨头长度变化,Sx则可表现出深度的透视效果,Sx的计算乃是运用Joint Position的深度值计算(z),以世界中心点为基准,越近越大,反之越小,计算时可加上ProjectionStrength的加乘,可独立调整透视效果的强度算公式,其公式如下:
Sx=l+JPz氺Projection Strength Sy 的计算乃是利用 Bone Vector Project to X-Y Plane 及 Virtual Bone 长度的比例计算,公式如下所示:
Sy= (Length of Bone Vector Project to X-Y Plane)/ (Virtual Bone Length 若是图片为末端的骨头或上/下的角度,则图片维持宽高等比的缩放(Sy=Sx),以避免变形,形变计算是利用自由形变的概念,用以达到骨头透视及骨头厚度模拟的效果,骨头透视效果计算是于动作表演中依序处理角色各部位影像的形变,使得到具有视觉透视效果的形变,Sex计算公式如下所示:
SEx=0.5*Sx_child/Sx_parent于骨头厚度模拟计算时,真实的3D Bone因为有厚度,因此在前后转动时会因其厚度产生外形上的改变2D Motion系统中可运用调整FFD Control Point来达成因厚度产生的变形FFD若切分为3x3Control Points,则可计算SRy套用至中心的2x2Control Point,模拟因厚度产生的形变,SRy的计算公式如下:SRy=(Deform Strength)*(1-SRx)。
15.根据权利要求9所述的方法,其特征在于,该执行深度关系转换的计算步骤,该步骤目的是为了让二维动画表演时,身体各部位的节点及骨头都有正确的深度关系,即二维平面观察中各部位皆有正确的前后遮蔽关系,该步骤利用虚拟摄影机视角中,虚拟摄影机的位置与各关节的位置,对身体位部位关节点进行两两深度计算,并得到代表深度关系的向量,利用点矩阵向量乘积计算,两两比较节点顺序。
16.根据权利要求9所述的方法,其特征在于,该输出及显示结果的方法是一动画渲染的步骤,三维动画通常以物件或点所在的深度决定绘制物件的先后顺序,即运用Z-Sort或Z-Buffer技术绘制,二维动画由于没有深度概念,通常以层级的数值来决定物件之间的前后关系,二维动画中角色物件的前后关系正确与否通常发生于关节接合处,但指定层级并不能处理所有的动画表演情况,为使二维的环境中渲染出因深度而产生遮蔽的效果,有兼具物件间层级的合理性,本步骤以深度列表方式在动画的每一个影格中排列出各骨头之间的前后关系,并使用相关连层级以指定物件之间相对的前后关系,最后使用层级遮罩建立一个遮罩用以遮蔽相关连层级指定的运作范围,即可得到合理的动画结果。
【文档编号】G06T13/00GK103514619SQ201310259777
【公开日】2014年1月15日 申请日期:2013年6月26日 优先权日:2012年6月27日
【发明者】卢泽人, 林文智, 吴名珠, 谢德全, 李仁志, 黄胜彦 申请人:甲尚股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1