一种基于旋转角插值的三维模型扭转变形方法

文档序号:6605260阅读:216来源:国知局

专利名称::一种基于旋转角插值的三维模型扭转变形方法
技术领域
:本发明涉及一种基于旋转角插值的三维模型扭转变形方法,属于计算机图形学、虚拟现实
技术领域

背景技术
:在三维模型的变形中,通常有以下几种变形技术=Morphing方法、FFD变形方法、基于骨骼的变形方法。Morphing方法通过插值方法实现变形,FFD变形方法通过控制包围三维模型表面的控制体实现变形,基于骨骼的变形技术通过设置模型表面网格顶点对应于骨骼的影响权值实现变形。对于角色模型,通常有两部分信息包含在其中,表示模型几何特征的表面网格信息以及表示模型拓扑特征的模型骨骼信息。角色模型的变形通常具有以下特点变形发生在关节点附近的区域,属于局部变形;变形由一段骨骼围绕一个关节点旋转引起,因此变形后的模型与骨骼的运动情况一致。Morphing方法属于全局变形,并且不能与骨骼的运动相结合;FFD变形方法对三维模型的每一个顶点,都需要通过计算该顶点对所有控制顶点的多项式和来获取该顶点变形后的坐标,变形计算复杂,不能达到满足要求的变形速度;基于骨骼的变形方法需要用户对影响权值进行反复的调整,增加了使用难度。针对角色模型的变形特点,本发明方法提出一种基于旋转角插值的三维模型扭转变形方法,该方法通过对围绕骨骼的旋转角度进行插值来获得三维模型关节点附近区域的网格顶点在扭转变形过程中相对于骨骼的旋转角,进而求得网格顶点在变形后的局部坐标。
发明内容本发明的目的是克服已有技术的缺陷,为了解决角色模型快速逼真变形的问题,提出一种基于旋转角插值的三维模型扭转变形方法。本发明是通过下述技术方案实现的三维模型的骨骼结构为关节点A和0连接成骨骼0A,关节点B和0连接成骨骼0B,骨骼OA和骨骼OB位于三维模型的中轴附近。使用以下方法计算三维模型顶点扭转变形后的局部坐标(1)在三维模型表面网格上关节点0附近选择两个顶点PpP2,作为优选,应当使平面OP1P2与骨骼OA和骨骼OB各自的夹角大致相等;(2)根据如下方法获得平面OP1P2的方程系数,①计算三维向量n’=OP1XOP2;其中X表示向量的叉乘;②n=n'/|n'|,变量s=_n·μ。;其中μ。表示关节点0在世界坐标系中的坐标的向量表示;表示向量的点乘;③V=[n,s];V存储了平面OP1P2的方程的四个系数,平面方程的系数是指Ax+By+Cz+D=0中的A、B、C和D。(3)对三维模型的每一个三角形网格,判断其网格顶点与平面OP1P2的关系,若网格的所有顶点都与关节点A在平面OP1P2的同一侧,则判定该三角形网格属于骨骼0A,否则判定该三角形网格属于骨骼0B;若原始模型中不是全部由三角形网格构成的,则需要在判断前将非三角形网格看作多个三角形组成。判断顶点与关节点A在平面OP1P2的同一侧方法为对网格中的一个顶点,在世界坐标系中的坐标的向量表示为P,关节点A在世界坐标系中的坐标的向量表示为μΑ,计算fP=η·P+s,fA=η·μA+s,若fP与fA同号,则判定顶点P与顶点A在平面OP1P2的同一侧,否则判定顶点P与顶点A不在平面OP1P2的同一侧;(4)使用如下方法计算三维模型对应的局部坐标系到世界坐标系的变换矩阵F1其中上标T表示矩阵转置操作,并且,向量嵙丨,向量(5)使用如下方法计算三维模型每一个网格顶点的局部坐标三维模型中网格顶点P的局部坐标为μΡ,=yP*FrT,其中μρ表示顶点P在世界坐标系中的坐标的向量表示,上标-T表示先对矩阵进行转置操作再对结果求逆矩阵。(6)关节点B的局部坐标μΒ,=μΒ卟广,其中μΒ表示关节点B在世界坐标系中的坐标的向量表示,计算α=μΒ/|μΒ|。(7)根据如下方法将三维模型划分成变形区、过渡区和非变形区,①设定变形区网格顶点与关节点0构成的向量在骨骼OA和骨骼OB上的最大投影值d;②设定非变形区网格顶点与关节点0构成的向量在骨骼OA上的最小投影值L1,以及在骨骼OB上的最小投影值L2;设置时应保证d小于L1,L2之中的最小值;③在三维模型中,属于骨骼OA的每一个网格顶点,将其在步骤(5)中获得的局部坐标写为P=(X,y,Z),若y小于d,则判定该顶点属于变形区;若y大于L1,则判定该顶点属于非变形区;若y大于等于d且小于等于L1,则判定该顶点属于过渡区;④在三维模型中,对属于骨骼OB的每一个网格顶点,用μρ,表示该顶点的局部坐标,计算Ip=μP-·μΒ'/IμΒ'I,若ιΡ小于山则判定该顶点属于变形区;若Ip大于L2,则判定该顶点属于非变形区;若Ip大于等于d且小于等于l2,则判定该顶点属于过渡区;(8)对于三维模型内属于骨骼OA的每一个网格顶点,该顶点的局部坐标写SP1=(x,y,z),若ζ>0,该顶点相对于平面AOB的偏转角Cj5l=ZJi-Cj5'i,否贝ι」,φ1=φ'其中(9)对于三维模型内属于骨骼OB的每一个网格顶点,该顶点的局部坐标写为P2=(X,y,ζ),若ζ>0,该顶点相对于平面AOB的偏转角φ2=2π-φ2',否则,φ2=φ2',其中么’(10)设置参数N,将三维模型的网格顶点按照相对于平面AOB的偏转角分成N个区域,偏转角为Φ的网格顶点对应的区域的编号为L#x0/(2;r)」,当顶点属于骨骼OA时Φ=Φ:,而属于骨骼OB时Φ=Φ2;(11)根据如下方法计算三维模型每-的骨骼上的投影值,①对于三维模型内属于骨骼OA的每-卜网格顶点与关节点0构成的向量在对应卜网格顶点,该网格顶点与关节点0构成的向量在骨骼OA上的投影值等于y,y来自该网格顶点的局部坐标P1=(x,y,ζ)②对于三维模型内属于骨骼OB的每一个网格顶点,该网格顶点与关节点0构成的向量在骨骼OB上的投影值为P2·μΒ,/IμΒ,I,其中P2为该网格顶点局部坐标;(12)获取步骤(10)中每一个区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点0构成的向量,在骨骼OA上的投影值的最小值I1;以及属于骨骼OB的网格顶点与关节点0构成的向量在骨骼OB上的投影值的最小值I2;(13)使用如下方法计算三维模型的变形区域和过渡区域中的顶点在扭转变形后的局部坐标,其中扭转变形角度为W1,①对于三维模型的变形区和过渡区中属于骨骼OA的每一个网格顶点,其局部坐标写为P1,从步骤(11)的计算结果中获取该网格顶点与关节点0构成的向量在骨骼OA上的投影值1P1,从步骤(12)的计算结果中获取该网格顶点对应的区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点0构成的向量,在骨骼OA上的投影值的最小值I1以及属于骨骼OB的网格顶点与关节点0构成的向量在骨骼OB上的投影值中的最小值I2,其中该网格顶点对应的区域从步骤(10)的划分结果中获得;②点P1围绕骨骼OA的旋转角θpi=WlX(L1-Ipi)/(L1-VL2-I2)I1,顶点P1扭转变形后对应点的局部坐标P/=P1RP1T,其中旋转矩阵‘为③对于三维模型的变形区和过渡区中属于骨骼OB的每标写为P2,从步骤(11)的计算结果中获取该网格顶点与关节点0构成的向量在骨骼OB上的投影值1Ρ2,从步骤(12)的计算结果中获取该网格顶点对应的区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点0构成的向量,在骨骼OA上的投影值的最小值1/以及属于骨骼OB的网格顶点与关节点0构成的向量在骨骼OB上的投影值中的最小值I2',其中该网格顶点对应的区域从步骤(10)的划分结果中获得;④点P2围绕骨骼OA的旋转角θp2=WlX(L1-I1+1-1-Il为T^Ρ2(R+L2-I2',顶点P2扭转变形后对应点的局部坐标P2'=P2·&/,其中旋转矩阵(14)使用如下方法计算三维模型的非变形区域的顶点在扭转变形后的局部坐标,其中扭转变形角度为巧,对于三维模型非变形区域内属于骨骼OA的每一个网格顶点,其变形前局部坐标为P,该顶点变形后的局部坐标P'=ρ·ιν,其中旋转矩阵礼为-Sini-W1)0Cosi-W1)对于三维模型非变形区域内属于骨骼OB的每一个网格顶点,其局部坐标在变形前后不变。(15)使用如下方法计算变形后三维模型对应的局部坐标系到世界坐标系的变换矩阵F/F1'为4X4矩阵,F1’二。二J0,其中上标T表示矩阵转置操作,α'=β‘XY',μ0'为关节点0变形后在世界坐标系中的坐标的向量表示,A2、02、B2为关节点Α、0、B变形后在世界坐标系中的坐标。通过上述方法获得了三维模型所有网格顶点变形后的局部坐标,以及三维模型变形后局部坐标系到世界坐标系的变换矩阵。根据三维模型每一个网格顶点的局部坐标以及三维模型变形后局部坐标系到世界坐标系的变换矩阵,绘制变形后的三维模型。至此,完成了三维模型的扭曲变形。对比已有技术,本发明方法的有益效果在于,根据角色模型的变形特点,将三维模型划分成变形区、过渡区和非变形区,通过对三维模型的各个区域应用不同的变形方法,可以提高变形的速度和真实感。在三维模型的变形区以及过渡区内,通过在扭转变形后对网格顶点相对于骨骼的旋转角进行插值,可以实现在扭转变形中三维模型相应区域围绕骨骼的扭转,并且使三维模型表面在关节点附近区域实现光滑、连续的过渡;在三维模型的非变形区内,通过对部分顶点进行相应的欧式变换来获得非变形区网格顶点扭转变形后的局部坐标。图1为对三维模型划分变形区、过渡区和非变形区的示意图;图2为对人体腿部的三维模型划分变形区、过渡区和非变形区后的示意图。具体实施例方式下面结合附图和实施例对本发明技术方案做进一步解释,本发明实质是一种对三维模型进行扭转变形的方法。接下来以对人体的小腿和脚组成的三维模型进行变形为例,说明本发明的具体实施方式。该三维模型对应的关节点为Α、0、Β,其中关节点A和0连接成骨骼0A,关节点B和0连接成骨骼OB。根据本技术方案,对该三维模型进行扭转变形的方法如下(1)在关节点0附近选择两个顶点P^P2,其中关节点0坐标为(-0.053979,0.029863,-0.339496),点P1坐标为(-0.0623082,0.0758197,-0.249175),点P2坐标为(-0.0871224,0.0691930,-0.263863)。计算得到平面OP1P2的方程V=(-0.0288590,-0.891964,0.451185,0.178254)。(2)关节点A坐标为(-0.099197,0.543307,-0.151083),对三维模型的每一个网格,判断该网格所有的网格顶点是否与关节点A在平面OP1P2的同一侧,若是,则该网格属于骨骼0A,否则该网格属于骨骼0B。(3)计算三维模型的局部坐标系到世界坐标系的变换矩阵以及三维模型中每一个网格顶点的局部坐标。(4)关节点B在世界坐标系中坐标为(-0.0890980,0.0151050,-0.256083),计算关节点B的局部坐标B',B'=(x,y,ζ)=(0.09,0.0177,0)ο(5)设置L1=0.25,L2=0.16,d=0.125,使用下述方法将三维模型划分成变形区、过渡区和非变形区对三维模型中,属于骨骼OA的每一个网格顶点,获取其局部坐标P=(x,y,ζ),若y小于d,则该顶点属于变形区,若y大于L1,则该顶点属于非变形区,若y大于等于d且小于等于L1,则该顶点属于过渡区;对三维模型中,属于骨骼OB的每一个网格顶点,获取其局部坐标P‘,计算/=Ρ'·β’φ2”2+Ζ2,若1小于d,则该顶点属于变形区,若1大于L2,则该顶点属于非变形区,若1大于等于d且小于等于L2,则该顶点属于过渡区。划分结果如图2所示。(6)计算三维模型中每一个网格顶点相对于平面AOB的偏转角Φ。用户设置参数N=20,偏转角为Φ的网格顶点对应的区域的编号为Ll0x^/;r」,将三维模型内所有的网格顶点按照偏转角划分成20个区域。(7)计算三维模型每一个网格顶点与关节点0构成的向量在对应的骨骼上的投影值。(8)获取步骤(6)中每一个区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点0构成的向量,在骨骼OA上的投影值的最小值I1;以及属于骨骼OB的网格顶点与关节点0构成的向量在骨骼OB上的投影值的最小值12。(9)使用如下方法计算三维模型的变形区域和过渡区域中的顶点在扭转变形后的局部坐标,其中扭转变形角度W1=-0.261803对于三维模型的变形区和过渡区中属于骨骼OA的每一个网格顶点,其局部坐标写为P1,从步骤(7)的计算结果中获取该网格顶点与关节点0构成的向量在骨骼OA上的投影值1,从步骤(8)的计算结果中获取该网格顶点对应的区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点0构成的向量,在骨骼OA上的投影值的最小值I1以及属于骨骼OB的网格顶点与关节点0构成的向量在骨骼OB上的投影值中的最小值I2,其中该网格顶点对应的区域从步骤(6)的划分结果中获得,点P1围绕骨骼OA旋转角Q1=W1X(L1-I)/(L1-I^L2-I2)-Wl,计算旋转矩阵R1,网格顶点P1扭转变形后对应点的局部坐标P1'=P1·R11;对于三维模型的变形区和过渡区中属于骨骼OB的每一个网格顶点,其局部坐标写为P2,从步骤(7)的计算结果中获取该网格顶点与关节点0构成的向量在骨骼OB上的投影值Γ,从步骤(8)的计算结果中获取该网格顶点对应的区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点0构成的向量,在骨骼OA上的投影值的最小值1/以及属于骨骼OB的网格顶点与关节点0构成的向量在骨骼OB上的投影值中的最小值I2',其中该网格顶点对应的区域从步骤(6)的划分结果中获得,点P2围绕骨骼OA旋转角θ2=W1X(L1-I1'+1'-I2')/(L1-I1'+L2-I2')-W1,计算旋转矩阵R2,网格顶点P2扭转变形后对应点的局部坐标P2'=P2'R2tO(10)计算旋转矩阵R,其中旋转角W=-W1,旋转轴方向向量P=(0,1,0);对于三维模型非变形区域内属于骨骼OA的每个网格顶点,其局部坐标为P,该顶点扭转变形后的局部坐标P'=P-Rt;三维模型非变形区域内属于骨骼OB的网格顶点变形前后局部坐标不变。(11)三维模型变形后对应的关节点在世界坐标系中的坐标为A2=(-0.1508,0.4863,-0.0254),O2=(-0.054,0.0399,-0.3295),B2=(-0.1048,-0.0149,-0.2764),使用如下方法计算变形后三维模型对应的局部坐标系到世界坐标系的变换矩阵F1'F1'为4X4矩阵,其中上标T表示矩阵转置操作,并且,向量广=10二2I,向量Y‘=Y“IWI,广=(O2I2)X广,向量α‘=β‘XY',μ0'为关节点0变形后在世界坐标系中的坐标的向量表示。通过上述方法获得了三维模型所有网格顶点变形后的局部坐标,以及三维模型变形后局部坐标系到世界坐标系的变换矩阵。根据三维模型每一个网格顶点的局部坐标以及三维模型变形后局部坐标系到世界坐标系的变换矩阵,可以使用OPENGL绘制函数和模型视图矩阵操作函数绘制变形后的三维模型。至此,完成了三维模型的扭曲变形。以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求一种基于旋转角插值的三维模型扭转变形方法,所述三维模型的骨骼结构为关节点A和O连接成骨骼OA,关节点B和O连接成骨骼OB,骨骼OA和骨骼OB位于三维模型的中轴附近;其特征在于,包括如下步骤使用以下方法计算三维模型顶点扭转变形后的局部坐标(1)在三维模型表面网格上关节点O附近选择两个顶点P1、P2;(2)根据如下方法获得平面OP1P2的方程系数,①计算三维向量其中×表示向量的叉乘;②n=n′/|n′|,变量s=n·μo;其中μo表示关节点O在世界坐标系中的坐标的向量表示;·表示向量的点乘;③V=[n,s];V存储了平面OP1P2的方程的四个系数;(3)对三维模型的每一个三角形网格,判断其网格顶点与平面OP1P2的关系,若网格的所有顶点都与关节点A在平面OP1P2的同一侧,则判定该三角形网格属于骨骼OA,否则判定该三角形网格属于骨骼OB;若原始模型中不是全部由三角形网格构成的,则需要在判断前将非三角形网格看作多个三角形组成;(4)使用如下方法计算三维模型对应的局部坐标系到世界坐标系的变换矩阵F1F1为4×4矩阵,<mrow><msub><mi>F</mi><mn>1</mn></msub><mo>=</mo><mfencedopen='['close=']'><mtable><mtr><mtd><msup><msub><mi>&alpha;</mi><mn>1</mn></msub><mi>T</mi></msup></mtd><mtd><msup><msub><mi>&beta;</mi><mn>1</mn></msub><mi>T</mi></msup></mtd><mtd><msup><msub><mi>&gamma;</mi><mn>1</mn></msub><mi>T</mi></msup></mtd><mtd><msup><msub><mi>&mu;</mi><mi>o</mi></msub><mi>T</mi></msup><mtext></mtext></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>其中上标T表示矩阵转置操作,并且,向量向量γ1=γ1′/|γ1′|,向量α1=β1×γ1;(5)使用如下方法计算三维模型每一个网格顶点的局部坐标三维模型中网格顶点P的局部坐标为μP′=μP·F1T,其中μP表示顶点P在世界坐标系中的坐标的向量表示,上标T表示先对矩阵进行转置操作再对结果求逆矩阵;(6)关节点B的局部坐标μB′=μB·F1T,其中μB表示关节点B在世界坐标系中的坐标的向量表示,计算α=μB/|μB|;(7)根据如下方法将三维模型划分成变形区、过渡区和非变形区,①设定变形区网格顶点与关节点O构成的向量在骨骼OA和骨骼OB上的最大投影值d;②设定非变形区网格顶点与关节点O构成的向量在骨骼OA上的最小投影值L1,以及在骨骼OB上的最小投影值L2;设置时应保证d小于L1,L2之中的最小值;③在三维模型中,属于骨骼OA的每一个网格顶点,将其在步骤(5)中获得的局部坐标写为P=(x,y,z),若y小于d,则判定该顶点属于变形区;若y大于L1,则判定该顶点属于非变形区;若y大于等于d且小于等于L1,则判定该顶点属于过渡区;④在三维模型中,对属于骨骼OB的每一个网格顶点,用μP′表示该顶点的局部坐标,计算lP=μP′·μB′/|μB′|,若lP小于d,则判定该顶点属于变形区;若lP大于L2,则判定该顶点属于非变形区;若lP大于等于d且小于等于L2,则判定该顶点属于过渡区;(8)对于三维模型内属于骨骼OA的每一个网格顶点,该顶点的局部坐标写为P1=(x,y,z),若z>0,该顶点相对于平面AOB的偏转角φ1=2πφ′1,否则,φ1=φ′1,其中(9)对于三维模型内属于骨骼OB的每一个网格顶点,该顶点的局部坐标写为P2=(x,y,z),若z>0,该顶点相对于平面AOB的偏转角φ2=2πφ2′,否则,φ2=φ2′,其中而P2′=(x,y,0),P2″=(P2·α)α;(10)设置参数N,将三维模型的网格顶点按照相对于平面AOB的偏转角分成N个区域,偏转角为φ的网格顶点对应的区域的编号为,当顶点属于骨骼OA时φ=φ1,而属于骨骼OB时φ=φ2;(11)根据如下方法计算三维模型每一个网格顶点与关节点O构成的向量在对应的骨骼上的投影值,①对于三维模型内属于骨骼OA的每一个网格顶点,该网格顶点与关节点O构成的向量在骨骼OA上的投影值等于y,y来自该网格顶点的局部坐标P1=(x,y,z);②对于三维模型内属于骨骼OB的每一个网格顶点,该网格顶点与关节点O构成的向量在骨骼OB上的投影值为P2·μB′/|μB′|,其中P2为该网格顶点局部坐标;(12)获取步骤(10)中每一个区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点O构成的向量,在骨骼OA上的投影值的最小值l1;以及属于骨骼OB的网格顶点与关节点O构成的向量在骨骼OB上的投影值的最小值l2;(13)使用如下方法计算三维模型的变形区域和过渡区域中的顶点在扭转变形后的局部坐标,其中扭转变形角度为w1,①对于三维模型的变形区和过渡区中属于骨骼OA的每一个网格顶点,其局部坐标写为P1,从步骤(11)的计算结果中获取该网格顶点与关节点O构成的向量在骨骼OA上的投影值lP1,从步骤(12)的计算结果中获取该网格顶点对应的区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点O构成的向量,在骨骼OA上的投影值的最小值l1以及属于骨骼OB的网格顶点与关节点O构成的向量在骨骼OB上的投影值中的最小值l2,其中该网格顶点对应的区域从步骤(10)的划分结果中获得;②点P1围绕骨骼OA的旋转角θP1=w1×(L1lP1)/(L1l1+L2l2)w1,顶点P1扭转变形后对应点的局部坐标P1′=P1·RP1T,其中旋转矩阵RP1为<mrow><msub><mi>R</mi><mrow><mi>P</mi><mn>1</mn></mrow></msub><mo>=</mo><mfencedopen='['close=']'><mtable><mtr><mtd><mi>cos</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>1</mn></mrow></msub><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mi>sin</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>1</mn></mrow></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>sin</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>1</mn></mrow></msub><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mi>cos</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>1</mn></mrow></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow>③对于三维模型的变形区和过渡区中属于骨骼OB的每一个网格顶点,其局部坐标写为P2,从步骤(11)的计算结果中获取该网格顶点与关节点O构成的向量在骨骼OB上的投影值lP2,从步骤(12)的计算结果中获取该网格顶点对应的区域的变形区和过渡区中且属于骨骼OA的网格顶点与关节点O构成的向量,在骨骼OA上的投影值的最小值l1′以及属于骨骼OB的网格顶点与关节点O构成的向量在骨骼OB上的投影值中的最小值l2′,其中该网格顶点对应的区域从步骤(10)的划分结果中获得;④点P2围绕骨骼OA的旋转角θP2=w1×(L1l1′+lP2l2′)/(L1l1′+L2l2′)w1,顶点P2扭转变形后对应点的局部坐标P2′=P2·RP2T,其中旋转矩阵RP2为<mrow><msub><mi>R</mi><mrow><mi>P</mi><mn>2</mn></mrow></msub><mo>=</mo><mfencedopen='['close=']'><mtable><mtr><mtd><mi>cos</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mi>sin</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>sin</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mi>cos</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mrow><mi>P</mi><mn>2</mn></mrow></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow>(14)使用如下方法计算三维模型的非变形区域的顶点在扭转变形后的局部坐标,其中扭转变形角度为w1,对于三维模型非变形区域内属于骨骼OA的每一个网格顶点,其变形前局部坐标为P,该顶点变形后的局部坐标P′=P·R1T,其中旋转矩阵R1为<mrow><msub><mi>R</mi><mn>1</mn></msub><mo>=</mo><mfencedopen='['close=']'><mtable><mtr><mtd><mi>cos</mi><mrow><mo>(</mo><mo>-</mo><msub><mi>w</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mi>sin</mi><mrow><mo>(</mo><mo>-</mo><msub><mi>w</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>sin</mi><mrow><mo>(</mo><mo>-</mo><msub><mi>w</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mi>cos</mi><mrow><mo>(</mo><mo>-</mo><msub><mi>w</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow>对于三维模型非变形区域内属于骨骼OB的每一个网格顶点,其局部坐标在变形前后不变;(15)使用如下方法计算变形后三维模型对应的局部坐标系到世界坐标系的变换矩阵F1′F1′为4×4矩阵,<mrow><msup><msub><mi>F</mi><mn>1</mn></msub><mo>&prime;</mo></msup><mo>=</mo><mfencedopen='['close=']'><mtable><mtr><mtd><msup><mi>&alpha;</mi><mrow><mo>&prime;</mo><mi>T</mi></mrow></msup></mtd><mtd><msup><mi>&beta;</mi><mrow><mo>&prime;</mo><mi>T</mi></mrow></msup></mtd><mtd><msup><mi>&gamma;</mi><mrow><mo>&prime;</mo><mi>T</mi></mrow></msup></mtd><mtd><msup><msub><mi>&mu;</mi><mi>o</mi></msub><mrow><mo>&prime;</mo><mi>T</mi></mrow></msup></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>其中上标T表示矩阵转置操作,并且,向量向量γ′=γ″/|γ″|,向量α′=β′×γ′,μo′为关节点O变形后在世界坐标系中的坐标的向量表示,A2、O2、B2为关节点A、O、B变形后在世界坐标系中的坐标;根据获得的三维模型每一个网格顶点的局部坐标以及三维模型变形后局部坐标系到世界坐标系的变换矩阵,绘制变形后的三维模型,完成三维模型的扭曲变形。FSA00000166991600011.tif,FSA00000166991600013.tif,FSA00000166991600014.tif,FSA00000166991600021.tif,FSA00000166991600022.tif,FSA00000166991600023.tif,FSA00000166991600043.tif,FSA00000166991600044.tif2.根据权利要求1所述一种基于旋转角插值的三维模型扭转变形方法,其特征在于,步骤(1)中在三维模型表面网格上关节点0附近选择两个顶点PpP2时,作为优选,应当使平面OP1P2与骨骼OA和骨骼OB各自的夹角大致相等。3.根据权利要求1所述一种基于旋转角插值的三维模型扭转变形方法,其特征在于,步骤(3)中判断顶点与关节点A在平面OP1P2的同一侧方法为对网格中的一个顶点,在世界坐标系中的坐标的向量表示为P,关节点A在世界坐标系中的坐标的向量表示为μΑ,计算fP=η·P+s,fA=η·μA+s,若fP与fA同号,则判定顶点P与顶点A在平面OP1P2的同一侧,否则判定顶点P与顶点A不在平面OP1P2的同一侧。全文摘要本发明公开了一种基于旋转角插值的三维模型扭转变形方法,该方法根据角色模型的变形特点,将三维模型划分成变形区、过渡区和非变形区,通过对三维模型的各个区域应用不同的变形方法,可以提高变形的速度和真实感。在三维模型的变形区以及过渡区内,通过在扭转变形后对网格顶点相对于骨骼的旋转角进行插值,可以实现在扭转变形中三维模型相应区域围绕骨骼的扭转,并且使三维模型表面在关节点附近区域实现光滑、连续的过渡;在三维模型的非变形区内,通过对部分顶点进行相应的欧式变换来获得非变形区网格顶点扭转变形后的局部坐标。文档编号G06T15/00GK101894389SQ20101021658公开日2010年11月24日申请日期2010年7月2日优先权日2010年7月2日发明者刘陈,李凤霞,许仁杰,郝云生,黄天羽申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1