自适应网格因为其可自动调节的特性,能够支持角色图像的变形,分散图像变形过程中的失真,提高变形结果的逼真度,自适应网格将变形区域划分为三角带,使变形失真均匀分散到整个变形区域,并通过调整网格构建参数,使网格总面积在变形过程中保持不变,进一步降低变形失真。
本章提出的自适应变形网格,是针对骨骼变形角色的单个关节点设计,网格以关节点为中心,覆盖关节点的周围区域。自适应网格的构建依据是角色的简化骨骼信息,包括角色的变形关节点位置及其连接关系。自适应网格的构建过程可以描述为
(1)根据关节点所在区域的大小信息计算网格覆盖区域;
(2)根据该关节点的旋转角,在局部坐标系中计算网格顶点的局部坐标,获得该关节点的局部坐标系网格;
(3)根据局部坐标和全局坐标的转换关系,将各关节点的网格变换到全局坐标系,并连接为一个整体。
角色姿态的改变会引起关节点旋转角变化,从而使自适应网格中的三角带形状的变化,整个角色的变形可以通过改变各关节点的自适应网格形状来实现,任意一个关节点对应的自适应网格发生变化,都会造成其同一关节链关节点的局部与全局坐标的转换关系发生变化。
单个关节点的自适应网格所在的局部坐标系,以当前关节点位置为坐标原点,以关节点两侧骨骼的角平分线作为坐标系X轴。自适应网格由均匀分布的三角带网格组成,三角带网格在局部坐标系中关于X轴上下对称。
图3-3 自适应网格构建原理图
自适应网格的三角带网格均匀分布在模型中心线上,三角带顶点位于两侧的边界双曲线上,曲线的参数由当前关节点相连骨骼的长度宽度以及夹角角度决定。其构建原理如图3-3所示,为简化计算过程,加快计算速度,根据双曲线关于X轴上下对称的性质,只计算X轴以上的部分网格顶点,然后通过X轴对称获得所有的变形网格顶点。
1.自适应网格的中心线
计算自适应网格的第一步是计算网格的边界曲线。两侧边界双曲线通过中心双曲线向两侧平移获得,中心双曲线以两侧骨骼作为渐进线,其表示方程为式(3-4)。
式中,r为硬度参数,可以由用户用来调节肌肉的柔软度,k为夹角参数,正比于关节点两连接的骨骼之间的夹角大小,在变形过程中,该参数响应用户的变形操作,改变此参数即可改变网格的最终形状。
2.自适应网格的边界双曲线(www.xing528.com)
两侧边界双曲线由中心双曲线在X轴方向平移得到,定义该关节点的变形子区域。内外侧双曲线的方程为式(3-5)。
该方程中iX为两侧双曲线与中心双曲线的X轴方向平移量,变形中根据关节点的旋转角计算,它也是实现网格总面积保持的重要参数,其计算方法在面积保持部分将详细介绍。
3.均匀分布的中心线分割点
为分散图像变形过程中的失真,提高变形结果的逼真度,双曲线部分使用均匀分布的三角带来覆盖。均匀分割模型中心线,得到三角形与中心线的交点坐标。中心双曲线的长度可用式(3-6)计算。
式中,f(X,Y)为中心双曲线方程;yMax为自适应网格所覆盖范围的最大Y值。根据中心线的长度,获得中心线的分割点,这些分割点将均匀地分布在中心线上。
4.边界双曲线上的网格顶点
根据中心线上的分割点,将分割点映射到两侧的边界双曲线上。以通过分割点的中心线垂线作为分割映射线,与边界线相交获得两侧边界上的分割点。当垂线无法与内侧边界相交时,使用过焦点的直线作为映射线,分割映射线的斜率可用式(3-7)求得。
式中,f(x,y)为中心双曲线方程;(xDivi,yDivi)为分割点坐标;(xFocus,0)为内侧曲线焦点。
5.两侧骨骼长度不同时的补足矩形
关节点两侧的骨骼长度往往不相同,此时,需要添加一个骨骼长度调节矩形来补齐其长度差异,该矩形称为长度补足矩形,补齐位置为弯曲变化率最小的骨骼中间部分区域。长度补足矩形的宽度为较长侧的骨骼标定宽度,长度为两侧骨骼的骨骼半长度之差。对于只有一侧骨骼的关节点,可以看作另一侧的骨骼长度为零,自适应网格退化为一个长度补足矩形。
至此针对单个关节点的自适应网格建立完毕,关节点的变形子区域被划分为一个以关节点为中心两侧对称的双曲线区域和一个补齐骨骼间长度差异的矩形区域。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。