专利名称:基于前次偏差的控制点平滑化方法
技术领域:
本发明涉及计算机支持协同工作领域,特别是涉及一种基于前次偏差的控制点平滑化方法。
背景技术:
20世纪人类的杰出成果之一计算机技术把人类社会带入了信息化时代。伴随着信息化进程的不断深入,通信技术、计算机及网络技术相融合,产生了一个新的研究领域-计算机支持的协同工作CSCW(Computer SupportedCooperative Work)。
当协同设计者在共同工作时,监测远程控制点轨迹能够较好地帮助用户理解和预测其他设计者的意图。展现远程图案对象的变化过程对于支持协同工作是很有价值的手段。然而,网络常常存在延迟的不稳定,也叫做抖动(jitter),这可能导致实时环境下展现远程参与者活动的不准确。抖动会造成远程控制点移动轨迹的不连续,导致用户误解甚至是操作冲突。为了缓和抖动带来的负面作用,通常采用基于已知历史位置来预测远程控制点下一个位置的方法,以模拟运动的轨迹,达到平滑自然的效果。
目前轨迹跟踪(Tracing)技术存在一定的局限,在互联网联机游戏中主要采用Dead-reckoning方法来提高玩家与分布式对象的交互效果。Dead-reckoning方法利用了对象的速度、加速度参数,在基于力学的强惯性物体的移动过程中表现出良好的效果。Dead-reckoning预测方法同样被应用到削减控制点移动的抖动效果,实验证明这种预测可以提高群组系统中用户间交互的立即性和自然性。然而,Dead-reckoning在该应用下的预测精确度仍然有待提高。
发明内容
本发明的目的在于提供一种基于前次偏差的控制点平滑化方法。
本发明解决其技术问题采用的技术方案如下1)记录最近N秒钟之内的远程控制点在每个毫秒的移动位置;2)当网络抖动发生时,为了预测控制点的移动位置,首先计算控制点在X方向和Y方向的当前速度,用aveVelocityX和aveVelocityY来表示;近似速度是通过离当前最近的Tlast时刻的位置坐标(Xlast,Ylast)以及M毫秒前Tflag时刻接收到的位置坐标(Xflag,Yflag)来计算的;aveVelocityX=(Xlast-Xflag)/(Tlast-Tflag)aveVelocityY=(Ylast-Yflag)/(Tlast-Tflag)]]>3)计算控制点在X方向和Y方向的当前加速度,用aveAccelerationX和aveAccelerationY来表示;近似加速度是通过离当前最近的Tlast时刻(Xlast,Ylast)位置的速度以及Tflag时刻(Xflag,Yflag)位置的另一个速度来计算的;aveAccelerationX=(VelocityXlast-VelocityXflag)/(Tlast-Tflag)aveAccelerationY=(VelocityYlast-VelocityYflag)/(Tlast-Tflag)]]>4)计算控制点在X方向和Y方向的校正量,分别用Δx和Δy表示,Δx和Δy与如下因素相关(1)前一次抖动结束时(X,Y)的预测值;(2)前一次抖动结束时接收到的相对应的(X,Y)的真实值;(3)当前抖动延时;(4)前一次抖动延时。如果系统是第一次预测,Δx和Δy的值为0;计算Δx和Δy的公式为Δx=(Xtrue-Xlast)*JitterLapse*C/JitterPeriodΔy=(Ytrue-Ylast)*JitterLapse*C/JitterPeriod]]>其中Xlast是前一次网络抖动过程中预测的最后一个X的坐标;Xtrue是前一次网络抖动过程中被抖动延时阻塞的最后一个X真实坐标;Ylast是前一次网络抖动过程中预测的最后一个Y的坐标;Ytrue是前一次网络抖动过程中被抖动延时阻塞的最后一个Y真实坐标;JitterLapse是当前抖动延时;JitterPeriod前一次抖动延时;5)将控制点的当前位置记做(Xcurrent,Ycurrent),而控制点的下一个位置记做(Xnext,Ynext),当网络抖动发生的时候,(Xnext,Ynext)通过以下公式来计算Xnext=Xcurrent+aveVelocityX*T+aveAccelerationX*T2+ΔxYnext=Ycurrent+aveVelocityY*T+aveAccelerationY*T2+Δy]]>其中T是当前抖动延时,等同于JitterLapse;6)将远程控制点按照预测的位置(Xnext,Ynext)绘制在用户的屏幕上;
7)擦除前一个预测的控制点,绘制最新预测的控制点,依此类推,直到将抖动过程中所有预测的控制点绘制完成。
本发明与背景技术相比,具有的有益的效果是本发明基于前次预测的偏差来动态调整控制点的位置,实现远程控制点的平滑化处理。本发明是对Dead-reckoning方法进行改进,Dead-reckoning方法利用了对象的速度、加速度参数进行动态预测,而本发明不仅应用了对象的速度、加速度,并且利用了以往的偏差进行微量的调整,提高了控制点运动的预测精度。弥补网络抖动带来的不良结果,展示给用户平滑的远程控制点移动轨迹,达到较好的感知效果。
具体实施例方式
基于前次偏差的控制点平滑化方法的具体实现流程如下。
1)记录最近N秒钟之内的远程控制点在每个毫秒的移动位置;例如,可以记录最近2秒钟之内的位置数据。
2)当网络抖动发生时,为了预测控制点的移动位置,首先计算控制点在X方向和Y方向的当前速度,用aveVelocityX和aveVelocityY来表示;近似速度是通过离当前最近的Tlast时刻的位置坐标(Xlast,Ylast)以及M毫秒前Tflag时刻接收到的位置坐标(Xflag,Yflag)来计算的;aveVelocityX=(Xlast-Xflag)/(Tlast-Tflag)aveVelocityY=(Ylast-Yflag)/(Tlast-Tflag)]]>例如,M值取100毫秒,即0.1秒。Tlast时刻的位置坐标是(310,320),Tflag时刻接收到的位置坐标是(300,300),坐标都以象素作为单位。
3)计算控制点在X方向和Y方向的当前加速度,用aveAccelerationX和aveAccelerationY来表示;近似加速度是通过离当前最近的Tlast时刻(Xlast,Ylast)位置的速度以及Tflag时刻(Xflag,Yflag)位置的另一个速度来计算的;aveAccelerationX=(VelocityXlast-VelocityXflag)/(Tlast-Tflag)aveAccelerationY=(VelocityYlast-VelocityYflag)/(Tlast-Tflag)]]>假设Tlast时刻(Xlast,Ylast)位置的速度是(100,100),那么加速度计算如下
4)计算控制点在X方向和Y方向的校正量,分别用Δx和Δy来表示,Δx和Δy与如下因素相关(1)前一次抖动结束时(X,Y)的预测值;(2)前一次抖动结束时接收到的相对应的(X,Y)的真实值;(3)当前抖动延时;(4)前一次抖动延时。如果系统是第一次预测,Δx和Δy的值为0;计算Δx和Δy的公式为Δx=(Xtrue-Xlast)*JitterLapse*C/JitterPeriodΔy=(Ytrue-Ylast)*JitterLapse*C/JitterPeriod.]]>其中Xlast是前一次网络抖动过程中预测的最后一个X的坐标;Xtrue是前一次网络抖动过程中被抖动延时阻塞的最后一个X真实坐标;Ylast是前一次网络抖动过程中预测的最后一个Y的坐标;Ytrue是前一次网络抖动过程中被抖动延时阻塞的最后一个Y真实坐标;JitterLapse是当前抖动延时;JitterPeriod前一次抖动延时;C是一个调节系数;假设(Xlast,Ylast)=(290,280),(Xtrue,Ytrue)=(290,284)假设JitterLapse=100(ms),JitterPeriod=200(ms),设C=0.5,有Δx=(290-290)*0.1*0.5/0.2=0Δy=(284-280)*0.1*0.5/0.2=1]]>5)将控制点的当前位置记做(Xcurrent,Ycurrent),而控制点的下一个位置记做(Xnext,Ynext),当网络抖动发生的时候,(Xnext,Ynext)通过以下公式来计算Xnext=Xcurrent+aveVelocityX*T+aveAccelerationX*T2+ΔxYnext=Ycurrent+aveVelocityY*T+aveAccelerationY*T2+Δy]]>其中T是当前抖动延时,等同于JitterLapse;如上例Xnext=310+100*0.1+0=320Ynext=320+200*0.1+1000*0.12+1=351]]>6)将远程控制点按照预测的位置(Xnext,Ynext)绘制在用户的屏幕上;
7)擦除前一个预测的控制点,绘制最新预测的控制点,依此类推,直到将抖动过程中所有预测的控制点绘制完成。
权利要求
1.一种基于前次偏差的控制点平滑化方法,其特征在于1)记录最近N秒钟之内的远程控制点在每个毫秒的移动位置;2)当网络抖动发生时,为了预测控制点的移动位置,首先计算控制点在X方向和Y方向的当前速度,用aveVelocityX和aveVelocityY来表示;近似速度是通过离当前最近的Tlast时刻的位置坐标(Xlast,Ylast)以及M毫秒前Tflag时刻接收到的位置坐标(Xflag,Yflag)来计算的;aveVelocityX=(Xlast-Xflag)/(Tlast-Tflag)aveVelocityY=(Ylast-Yflag)/(Tlast-Tflag)]]>3)计算控制点在X方向和Y方向的当前加速度,用aveAccelerationX和aveAccelerationY来表示;近似加速度是通过离当前最近的Tlast时刻(Xlast,Ylast)位置的速度以及Tflag时刻(Xflag,Yflag)位置的另一个速度来计算的;aveAccelerationX=(VelocityXlast-VelocityXflag)/(Tlast-Tflag)aveAccelerationY=(VelocityYlast-VelocityYflag)/(Tlast-Tflag)]]>4)计算控制点在X方向和Y方向的校正量,分别用Δx和Δy来表示,Δx和Δy与如下因素相关(1)前一次抖动结束时(X,Y)的预测值;(2)前一次抖动结束时接收到的相对应的(X,Y)的真实值;(3)当前抖动延时;(4)前一次抖动延时。如果系统是第一次预测,Δx和ΔY的值为0;计算Δx和Δy的公式为Δx=(Xtrue-Xlast)*JitterLapse*C/JitterPeriodΔy=(Ytrue-Ylast)*JitterLapse*C/JitterPeriod]]>其中,Xlast是前一次网络抖动过程中预测的最后一个X的坐标;Xtrue是前一次网络抖动过程中被抖动延时阻塞的最后一个X真实坐标;Ylast是前一次网络抖动过程中预测的最后一个Y的坐标;Ytrue是前一次网络抖动过程中被抖动延时阻塞的最后一个Y真实坐标;JitterLapse是当前抖动延时;JitterPeriod前一次抖动延时;5)将控制点的当前位置记做(Xcurrent,Ycurrent),而控制点的下一个位置记做(Xnext,Ynext),当网络抖动发生的时候,(Xnext,Ynext)通过以下公式来计算Xnext=Xcurrent+aveVelocityX*T+aveAccelerationX*T2+ΔxYnext=Ycurrent+aveVelocityY*T+aveAccelerationY*T2+Δy]]>其中T是当前抖动延时,等同于JitterLapse;6)将远程控制点按照预测的位置(Xnext,Ynext)绘制在用户的屏幕上;7)擦除前一个预测的控制点,绘制最新预测的控制点,依此类推,直到将抖动过程中所有预测的控制点绘制完成。
全文摘要
本发明公开了一种基于前次偏差的控制点平滑化方法。基于前次预测的偏差来动态调整控制点的位置,实现远程控制点的平滑化处理。本发明是对Dead-reckoning方法进行改进,Dead-reckoning方法利用了对象的速度、加速度参数进行动态预测,而本发明不仅应用了对象的速度、加速度,并且利用了以往的偏差进行微量的调整,提高了控制点运动的预测精度。弥补网络抖动带来的不良结果,展示给用户平滑的远程控制点移动轨迹,达到较好的感知效果。
文档编号G06F9/46GK1866242SQ200610052098
公开日2006年11月22日 申请日期2006年6月23日 优先权日2006年6月23日
发明者陈纯, 卜佳俊, 杨建旭, 姜波 申请人:浙江大学