发明名称 基于骨骼运动数据的运动单元弯曲和扭转角度分析方法
摘要 本发明公开了一种基于骨骼运动数据的运动单元弯曲和扭转角度分析方法,首先获取关节点在骨骼运动数据的初始帧以及当前帧中的坐标,通过比较运动单元中关节点在骨骼运动数据中的位置变化获得复杂模型的每一个局部变形区域在运动中的弯曲和扭转变形角度,使用本发明方法可以简化使用动作数据驱动三维模型进行自动变形的计算。此外,根据骨骼运动的有关规则,本发明方法通过将运动单元中的扭转角度限定在-π/2~π/2之间,解决了分析骨骼运动数据时,弯曲和扭转角度计算中的二义性问题。
申请公布号 CN101894392A 申请公布日期 2010.11.24
申请号 CN201010210807.X 申请日期 2010.06.28
申请人 北京理工大学 发明人 李凤霞;郝云生;陈宇峰;李仲君;黄天羽
分类号 G06T17/00(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 代理人
主权项 1.基于骨骼运动数据的运动单元弯曲和扭转角度分析方法,所述运动单元包括三个关节点A、O、B,其中关节点A和O连接成骨骼OA,关节点B和O连接成骨骼OB,其特征在于,分析运动单元的弯曲角度和扭转角度,包括以下步骤:(1)获取关节点A、O、B在骨骼运动数据的初始帧中的坐标A<sub>1</sub>、O<sub>1</sub>、B<sub>1</sub>;(2)获取关节点A、O、B在骨骼运动数据的当前帧中的坐标A<sub>2</sub>、O<sub>2</sub>、B<sub>2</sub>;(3)使用平移向量<img file="FSA00000169702500011.GIF" wi="99" he="76" />平移A<sub>2</sub>、B<sub>2</sub>,获得平移后的坐标A<sub>2</sub>′、B<sub>2</sub>′;即根据下式计算A<sub>2</sub>、B<sub>2</sub>平移后的坐标A<sub>2</sub>′、B<sub>2</sub>′:<maths num="0001"><![CDATA[<math><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></math>]]></maths><maths num="0002"><![CDATA[<math><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></math>]]></maths>(4)围绕O<sub>1</sub>旋转B<sub>2</sub>′,获得B<sub>2</sub>′旋转后的坐标B<sub>2</sub>″;即根据如下方法计算B<sub>2</sub>′旋转后的坐标B<sub>2</sub>″:①计算旋转角<img file="FSA00000169702500014.GIF" wi="1055" he="133" />以及旋转轴方向向量ρ=ρ′/|ρ′|,其中<img file="FSA00000169702500015.GIF" wi="449" he="123" />并将ρ写为(x,y,z)的形式;②根据步骤①的结果计算旋转矩阵R:<maths num="0003"><![CDATA[<math><mrow><mi>R</mi><mo>=</mo><mfenced open='[' 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></math>]]></maths>③B<sub>2</sub>′旋转后的坐标B<sub>2</sub>″=B<sub>2</sub>′·R<sup>T</sup>+O<sub>1</sub>·(I-R<sup>T</sup>),其中I为单位矩阵,上标T表示对矩阵进行转置操作;(5)根据下式计算B<sub>2</sub>″的局部坐标B<sub>2</sub>′″:<maths num="0004"><![CDATA[<math><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></math>]]></maths>其中初始帧的局部坐标系到世界坐标系的变换矩阵<img file="FSA00000169702500018.GIF" wi="622" he="170" />并且向量<img file="FSA00000169702500019.GIF" wi="376" he="79" />向量γ<sub>1</sub>=γ<sub>1</sub>′/|γ<sub>1</sub>′|,<img file="FSA000001697025000110.GIF" wi="291" he="76" />向量α<sub>1</sub>=β<sub>1</sub>×γ<sub>1</sub>;×表示向量的叉乘;μ<sub>o1</sub>表示关节点O<sub>1</sub>在世界坐标系中的坐标的向量表示;(6)将局部坐标B<sub>2</sub>′″写为(x<sub>2</sub>,y<sub>2</sub>,z<sub>2</sub>)的形式,计算当前局部模型的弯曲角度w<sub>2</sub>和扭转角度w<sub>1</sub>的方法分别如下:①若其中x<sub>2</sub>>0,则扭转角度<img file="FSA00000169702500021.GIF" wi="625" he="80" />否则扭转角度<maths num="0005"><![CDATA[<math><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></math>]]></maths>②弯曲角度w<sub>2</sub>=θ<sub>2</sub>-θ<sub>1</sub>,其中<maths num="0006"><![CDATA[<math><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></math>]]></maths>θ<sub>1</sub>的确定方法为:若x<sub>2</sub><0,则θ<sub>1</sub>=2π-θ<sub>1</sub>′;否则θ<sub>1</sub>=θ<sub>1</sub>′;其中<maths num="0007"><![CDATA[<math><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></math>]]></maths>
地址 100081 北京市海淀区中关村南大街5号