基于骨骼运动数据的运动单元弯曲和扭转角度分析方法

文档序号:6604759阅读:364来源:国知局

专利名称::基于骨骼运动数据的运动单元弯曲和扭转角度分析方法
技术领域
:本发明涉及一种运动单元弯曲和扭转角度分析方法,属于计算机图形学、虚拟现实
技术领域

背景技术
:在三维模型的变形中,通常有以下几种变形技术=Morphing方法、FFD变形方法、基于骨骼的变形方法。Morphing方法通过插值方法实现变形,FFD变形方法通过控制包围三维模型表面的控制体实现变形,基于骨骼的变形技术通过设置模型表面网格顶点对应于骨骼的影响权值实现变形。有些三维模型的变形,如人体的躯干和四肢的变形,具有以下特点变形发生在关节点附近的区域,属于局部变形;变形由一段骨骼围绕一个关节点旋转引起,因此变形后的模型与骨骼的运动情况一致;模型对应的关节点自由度多,运动复杂。这类模型的变形,需要满足以下要求根据骨骼运动数据对三维模型的局部区域进行自动变形。Morphing方法和FFD变形方法不能跟骨骼的运动数据相结合,基于骨骼的变形方法需要对影响权值进行反复的调整,不能实现自动变形。为了实现复杂三维模型的各种变形,可以使用通过专业动作捕捉设备获得的动作数据驱动三维模型进行自动变形。复杂三维模型的关节点数目很多,关节点构成的骨骼结构复杂,使用动作数据驱动三维模型进行自动变形需要对动作数据作复杂的分析和处理。针对以上情况,本专利提出了一种通过比较运动单元中关节点在骨骼运动数据中的位置变化来获得弯曲和扭转角度的方法。运动单元包括三个关节点Α、0、Β,其中关节点A和0连接成骨骼0A,关节点B和0连接成骨骼0B,这样的结构称为运动单元。骨骼运动数据是指利用专业动作捕捉设备获得的动作数据,可参考T.K.Capin,I.S.Pandiz,H.Noser,etal.VirtualHumanRepresentationandCommunicationinVLNET[J].IEEEComputerGraphicsandApplications,1997.17(2):42_53。通过将三维模型中复杂的骨骼结构分解成最基本的运动单元,并从骨骼运动数据中获取每一个运动单元的弯曲和扭转角度,利用该角度对三维模型的每一个运动单元对应的局部区域进行变形,可以简化使用动作数据驱动三维模型进行自动变形的计算,并可以通过对每一个运动单元对应的局部区域分别应用较优的变形设置参数来获得更佳的变形效果。
发明内容本发明的目的是克服已有技术的缺陷,为了解决使用动作数据驱动三维模型进行自动变形的问题,提出一种通过比较运动单元中关节点在骨骼运动数据中的位置变化来获得弯曲和扭转角度的方法。本发明是通过下述技术方案实现的运动单元包括三个关节点Α、0、Β,其中关节点A和0连接成骨骼0A,关节点B和0连接成骨骼0B,将这样的结构称为运动单元。4使用以下方法根据骨骼运动数据计算运动单元的弯曲角度和扭转角度(1)获取关节点A、0、B在骨骼运动数据的初始帧中的坐标~、O1,Bp所述骨骼运动数据是指利用专业动作捕捉设备获得的动作数据,可参考τ.K.Capin,I.S.Pandiz,H.Noser,etal.VirtualHumanRepresentationandCommunicationinVLNET[J].IEEEComputerGraphicsandApplications,1997.17(2):42_53.(2)获取关节点A、0、B在骨骼运动数据的当前帧中的坐标A2、02、B2。(3)使用平移向量O2I1平移A2、B2,获得平移后的坐标A2'、B2';即根据下式计算^、B2平移后的坐标A2',B2'A2'=A2+O^O1,B2'=B2+O^O1(4)围绕O1旋转B2',获得B2'旋转后的坐标B2",即根据如下方法计算B2'旋转后的坐标B2"①计算旋转角W=arccos/\f^\OxAi·O1A1VJ\JIO1A21I^O1A,以及旋转轴方向向量P=P'/IP(X,y,ζ)的形式;②根据步骤①的结果计算旋转矩阵R,其中P’=fo^2'"l彳并将P写为νJ\yR=(1-cos(w))x2+cos(w)(1-cos(w))x_y—sin(w)z(1-cos(w))xz+sin(w)y(1-cos(w))x>·+sin(w)z(1-cos(w))少2+cos(w)(1-cos(w))^z-sin(w)x(1-cos(w))xz-sin((1—cos(w))jz+sin(w)x(1-cos(w))z2+cos(w)③B2'旋转后的坐标B2"=B2'·R^O1·(I-Rt),其中I为单位矩阵,上标T表示对矩阵进行转置操作;(5)根据下式计算B2〃的局部坐标B2'“Β2"'=Β2"·^~Γ,其中F1为初始帧的局部坐标系到世界坐标系的变换矩阵,它是一个4X4矩阵,且A=‘τητττ.α,βχ\Moi0001,并且向量—向量Y1=YA二O1^1/101^1丨,Y^V=O1S1X爲,向量Q1=^XYl;X表示向量的叉乘;μ^表示关节点O1在世界坐标系中的坐标的向量表示;(6)将局部坐标B2'“写为(x2,y2,z2)的形式,计算当前局部模型的弯曲角度W2和扭转角度W1的方法分别如下①若其中X2>0,则扭转角度Wl=arcsin(-z2Zyjx22+Z22);否则扭转角度=arcsin(z2/^w,IX,2+Z22)‘2‘"2②弯曲角度W2=θ2-θι,其中\(^\fO1A1·O1B1yνO2-arccos5θi的确定方法为若X2<0,则θi=2π-θi‘;否则θi=θi‘;其中θχ‘=arccos(少2/^x2+y2+z2)。对比已有技术,本发明技术方案的有益效果在于,通过比较运动单元中关节点在骨骼运动数据中的位置变化可以获得复杂模型的每一个局部变形区域在运动中的弯曲和扭转变形角度,使用本发明方法可以简化使用动作数据驱动三维模型进行自动变形的计算。此外,根据骨骼运动的有关规则,本发明方法通过将运动单元中的扭转角度限定在-π/2π/2之间,解决了分析骨骼运动数据时,弯曲和扭转角度计算中的二义性问题。图1为本发明所述根据骨骼运动数据计算运动单元的弯曲角度和扭转角度的示意图。具体实施例方式下面结合附图和实施例对本发明技术方案进行解释,图1是本发明所述根据骨骼运动数据计算运动单元的弯曲角度和扭转角度的示意图。在下面的实施例中,根据骨骼运动数据分析运动单元的弯曲角度和扭转角度的步骤如下三个关节点0、B、C,其中关节点B和0连接成骨骼0Β,关节点C和B连接成骨骼CB,这样的结构称为运动单元。从骨骼运动数据中获取关节点0、B、C在初始帧中的坐标O1=(-0.0992,0.5433,-0.1511),B1=(-0.0540,0.0299,-0.3395),C1=(-0.0891,0.0151,-0.2561),和在当前帧中的坐标为O2=-0.150771,0.486333,-0.0254434),B2=(-0.054,0.0399,-0.3295),C2=-0.10481,-0.0149156,-0.276394)。平移向量^2I1=(0,-0.01,-0.01),计算02、C2平移后的坐标O2'=(-0.150771,0.476333,-0.0354434),C2'=-0.10481,-0.0249156,-0.286394)。计算旋转轴方向向量P=(-0.923781,0.0575905,-0.378566),旋转角w=0.261799,使用公式C2"=C2'·R^B1·(I-Rt)计算C2'旋转后的坐标C2"=-0.108403,-0.00532579,-0.274646),其中I为单位矩阵,旋转矩阵R使用旋转轴方向向量P和旋转角w计算。计算C2"在骨骼OB和骨骼BC构成的局部坐标系中的局部坐标C2'“=(0.0883602,-0.00620937,0.0236764)。使用公式14计算扭转角度W1=-0.261803,弯曲角度W2=-0.261799。对上述步骤的计算结果进行仿真验证,步骤如下计算关节点(^在初始帧中局部坐标系下的局部坐标C1'=(0.0899672,0.0176782,0)。计算C/点围绕初始帧中局部坐标系的ζ轴旋转角W2=-0.261799后的局部坐标C1"=(0.0914771,-0.00620938,0)。计算C1"点围绕初始帧中局部坐标系的y轴旋转角W1=-0.261803后的局部坐6标C/“=(0.0883601,-0.00620938,0.0236760)。计算C1'“点在世界坐标系中的坐标C1"“=-0.108403,-0.00532579,-0.274646)。使用公式C1'““=C1"“·R^B1·(I-Rt)计算C1"“旋转后的坐标C1'““=-0.10481,-0.0249156,-0.286394),其中I为单位矩阵,旋转矩阵R使用旋转轴方向向量P和旋转角ι计算,适用公式O1'=O1·R^B1·(I-Rt)计算O1旋转后的坐标O1'=-0.150771,0.476333,-0.0354434)。平移向量&“^二⑴力力明力^,计算仏'>B1,C1‘““平移后的坐标O1"=-0.150771,0.486333,-0.0254434),B1'=(-0.054,0.0399,-0.3295),C1〃““=-0.10481,-0.0149156,-0.276394)。计算结果与关节点02、B2、C2的坐标相等,验证了本专利提出的算法。以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求基于骨骼运动数据的运动单元弯曲和扭转角度分析方法,所述运动单元包括三个关节点A、O、B,其中关节点A和O连接成骨骼OA,关节点B和O连接成骨骼OB,其特征在于,分析运动单元的弯曲角度和扭转角度,包括以下步骤(1)获取关节点A、O、B在骨骼运动数据的初始帧中的坐标A1、O1、B1;(2)获取关节点A、O、B在骨骼运动数据的当前帧中的坐标A2、O2、B2;(3)使用平移向量平移A2、B2,获得平移后的坐标A2′、B2′;即根据下式计算A2、B2平移后的坐标A2′、B2′<mrow><msup><msub><mi>A</mi><mn>2</mn></msub><mo>&prime;</mo></msup><mo>=</mo><msub><mi>A</mi><mn>2</mn></msub><mo>+</mo><mover><mrow><msub><mi>O</mi><mn>2</mn></msub><msub><mi>O</mi><mn>1</mn></msub></mrow><mo>&RightArrow;</mo></mover><mo>,</mo></mrow><mrow><msup><msub><mi>B</mi><mn>2</mn></msub><mo>&prime;</mo></msup><mo>=</mo><msub><mi>B</mi><mn>2</mn></msub><mo>+</mo><mover><mrow><msub><mi>O</mi><mn>2</mn></msub><msub><mi>O</mi><mn>1</mn></msub></mrow><mo>&RightArrow;</mo></mover></mrow>(4)围绕O1旋转B2′,获得B2′旋转后的坐标B2″;即根据如下方法计算B2′旋转后的坐标B2″①计算旋转角以及旋转轴方向向量ρ=ρ′/|ρ′|,其中并将ρ写为(x,y,z)的形式;②根据步骤①的结果计算旋转矩阵R<mrow><mi>R</mi><mo>=</mo><mfencedopen='['close=']'><mtable><mtr><mtd><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo></mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow></mtd><mtd><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo><mi>xy</mi><mo>-</mo><mi>sin</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mi>z</mi></mtd><mtd><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo><mi>xz</mi><mo>+</mo><mi>sin</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mi>y</mi></mtd></mtr><mtr><mtd><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo><mi>xy</mi><mo>+</mo><mi>sin</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mi>z</mi></mtd><mtd><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo><msup><mi>y</mi><mn>2</mn></msup><mo>+</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow></mtd><mtd><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo></mrow><mi>yz</mi><mo>-</mo><mi>sin</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mi>x</mi></mtd></mtr><mtr><mtd><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo><mi>xz</mi><mo>-</mo><mi>sin</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mi>y</mi></mtd><mtd><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo><mi>yz</mi><mo>+</mo><mi>sin</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mi>x</mi></mtd><mtd><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>)</mo><msup><mi>z</mi><mn>2</mn></msup><mo>+</mo><mi>cos</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>③B2′旋转后的坐标B2″=B2′·RT+O1·(IRT),其中I为单位矩阵,上标T表示对矩阵进行转置操作;(5)根据下式计算B2″的局部坐标B2′″<mrow><msup><msub><mi>B</mi><mn>2</mn></msub><mrow><mo>&prime;</mo><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>=</mo><msup><msub><mi>B</mi><mn>2</mn></msub><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>&CenterDot;</mo><msubsup><mi>F</mi><mn>1</mn><mrow><mo>-</mo><mi>T</mi></mrow></msubsup><mo>,</mo></mrow>其中初始帧的局部坐标系到世界坐标系的变换矩阵并且向量向量γ1=γ1′/|γ1′|,向量α1=β1×γ1;×表示向量的叉乘;μo1表示关节点O1在世界坐标系中的坐标的向量表示;(6)将局部坐标B2′″写为(x2,y2,z2)的形式,计算当前局部模型的弯曲角度w2和扭转角度w1的方法分别如下①若其中x2>0,则扭转角度否则扭转角度<mrow><msub><mi>w</mi><mn>1</mn></msub><mo>=</mo><mi>arcsin</mi><mrow><mo>(</mo><msub><mi>z</mi><mn>2</mn></msub><mo>/</mo><msqrt><msup><msub><mi>x</mi><mn>2</mn></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>z</mi><mn>2</mn></msub><mn>2</mn></msup></msqrt><mo>)</mo></mrow><mo>;</mo></mrow>②弯曲角度w2=θ2θ1,其中<mrow><msub><mi>&theta;</mi><mn>2</mn></msub><mo>=</mo><mi>arccos</mi><mo>[</mo><mrow><mo>(</mo><mover><mrow><msub><mi>O</mi><mn>1</mn></msub><msub><mi>A</mi><mn>1</mn></msub></mrow><mo>&RightArrow;</mo></mover><mo>)</mo></mrow><mo>&CenterDot;</mo><mrow><mo>(</mo><mover><mrow><msub><mi>O</mi><mn>1</mn></msub><msub><mi>B</mi><mn>1</mn></msub></mrow><mo>&RightArrow;</mo></mover><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><mo>|</mo><mover><mrow><msub><mi>O</mi><mn>1</mn></msub><msub><mi>A</mi><mn>1</mn></msub></mrow><mo>&RightArrow;</mo></mover><mo>|</mo><mo>&CenterDot;</mo><mo>|</mo><mover><mrow><msub><mi>O</mi><mn>1</mn></msub><msub><mi>B</mi><mn>1</mn></msub></mrow><mo>&RightArrow;</mo></mover><mo>|</mo><mo>)</mo></mrow><mo>]</mo><mo>;</mo></mrow>θ1的确定方法为若x2<0,则θ1=2πθ1′;否则θ1=θ1′;其中<mrow><msup><msub><mi>&theta;</mi><mn>1</mn></msub><mo>&prime;</mo></msup><mo>=</mo><mi>arccos</mi><mrow><mo>(</mo><msub><mi>y</mi><mn>2</mn></msub><mo>/</mo><msqrt><msup><msub><mi>x</mi><mn>2</mn></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>y</mi><mn>2</mn></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>z</mi><mn>2</mn></msub><mn>2</mn></msup></msqrt><mo>)</mo></mrow><mo>.</mo></mrow>FSA00000169702500011.tif,FSA00000169702500014.tif,FSA00000169702500015.tif,FSA00000169702500018.tif,FSA00000169702500019.tif,FSA000001697025000110.tif,FSA00000169702500021.tif全文摘要本发明公开了一种基于骨骼运动数据的运动单元弯曲和扭转角度分析方法,首先获取关节点在骨骼运动数据的初始帧以及当前帧中的坐标,通过比较运动单元中关节点在骨骼运动数据中的位置变化获得复杂模型的每一个局部变形区域在运动中的弯曲和扭转变形角度,使用本发明方法可以简化使用动作数据驱动三维模型进行自动变形的计算。此外,根据骨骼运动的有关规则,本发明方法通过将运动单元中的扭转角度限定在-π/2~π/2之间,解决了分析骨骼运动数据时,弯曲和扭转角度计算中的二义性问题。文档编号G06T17/00GK101894392SQ20101021080公开日2010年11月24日申请日期2010年6月28日优先权日2010年6月28日发明者李仲君,李凤霞,郝云生,陈宇峰,黄天羽申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1