首页 理论教育 计算自适应网格关节点旋转角的方法

计算自适应网格关节点旋转角的方法

时间:2023-10-31 理论教育 版权反馈
【摘要】:在自适应网格的构建和绘制过程中,关节点旋转角都是一个重要的参数,为了便于问题的描述,在此对关节点旋转角给出准确的定义。关节点旋转角表示该关节点前后的渲染方向的变化,也表示该关节点前后局部坐标系与全局坐标系的转换关系。如在图3-2中,关节点C的位置变换引起B的旋转角发生变化,而关节点B的旋转角发生变化,也引起CD两关节点的位置发生变化。

计算自适应网格关节点旋转角的方法

自适应网格的构建和绘制过程中,关节点旋转角都是一个重要的参数,为了便于问题的描述,在此对关节点旋转角给出准确的定义。在骨骼角色中,每个非首尾关节点都有前后连接的两段骨骼,从上段骨骼沿顺时针旋转至下段骨骼形成一个旋转角,该旋转角称为该关节点旋转角。如图3-1(右)中,关节点两侧的骨骼为OMON,两骨骼的夹角为α,当角色图像的渲染顺序为MON,即OM为上段骨骼,则关节点O的旋转角为由OM顺时针旋转到ON的角度,即α

关节点旋转角表示该关节点前后的渲染方向的变化,也表示该关节点前后局部坐标系与全局坐标系的转换关系。角色的姿态变化是通过各段骨骼围绕其前端关节点旋转完成的,当模型发生变形,则对应关节点旋转角会同时发生变化,反之,关节点的旋转角也决定了该关节点的当前姿态——该原理将用于本文第4章的动作驱动方法。

一条骨骼链上的关节点旋转角的具体计算方法如图3-2所示,图中ABCD为一条四关节点的骨骼链。在这四个关节点中,首尾两个关节点AD只有一侧骨骼没有旋转角,另外两个关节点BC,在每个关节点上以当前关节点为中心,从其上一关节点沿顺时针方向旋转至其下一关节点的角度,即为该关节点的旋转角,如关节点B的∠β和关节点C的∠γ

978-7-111-33883-3-Chapter03-2.jpg

图3-2 关节点旋转角计算原理图

骨骼链中的一个关节点的旋转角可以用式(3-1)计算,即

978-7-111-33883-3-Chapter03-3.jpg(www.xing528.com)

式中,α可以用余弦公式求得;flag为关节点旋转角的标记符,可用式(3-2)计算获得;flag≥0表示旋转角小于平角;flag<0表示旋转角大于平角。

flag=(yA-yB)(xC-xB)-(yC-yB)(xA-xB) (3-2)

对于图3-2中的关节点B,其局部坐标系以B点为原点,以BABC射线的角平分线为X轴,渲染次序为ABC,其中关节点B的旋转角为β=2π-α。而对于关节点C,则局部坐标系以C点为原点,关节点C的旋转角即为γ

在变形过程中,关节点的旋转角与下一关节点的位置息息相关,当骨骼链中的某一关节点旋转角发生变化时,同骨骼链的所有关节点都需要重新计算其位置,并根据新的局部坐标与全局坐标的变换关系,重新计算其变形模型的网格顶点坐标。如在图3-2中,关节点C的位置变换引起B的旋转角发生变化,而关节点B的旋转角发生变化,也引起CD两关节点的位置发生变化。以关节点B的旋转角变化为例,关节点C的位置可用式(3-3)计算得出,其中θBC=θAB-β是射线BC的方向角。

978-7-111-33883-3-Chapter03-4.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈