角色移动的步长、步速与滑步现象

假设步长为 step(pixel),步速为 speed(pixel/frame),人物行走动画帧数为 n(frame)。

现在要把人物从坐标 0 移动到 100。

我们可以算出,这个过程是需要 100/speed 帧来完成的。

那么第 i 帧画面,人物在的位置:

  pos=i*100/speed

这个时候,需要画第几帧图象呢?

首先我们需要知道第 i 帧画面,也就是 pos 这个位置,人物已经走了t=|pos/step| 步 (t 取整了);

我们的小人正在走在第 t+1 步的 m=(pos-t*step) * 100% 时刻m 是一个 0~1 之间的数字。

f=|n*m| 就是我们在此时刻需要画的行走图片帧了。

加快行走速度,无非是加快了频率,不可能导致滑步的,因为一步迈出的距离根本不会变。
ps. 对于跑步、有腾空,轻微滑步是允许的,所以可以适当加大步长是允许的
————————————————
版权声明:本文为CSDN博主「pcmac」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pcmac/article/details/308400

注:

步长为 step(px),人物行走动画帧数为 n(帧数(Frames))(完成一个步长所需要的帧数),步速为 speed(px/frame)(step/n)(每帧移动的像素)。

例;步长为 2(pixel),步速为 1/15(px/frame)(每帧移动15分之一px),人物行走动画帧数为 30(frame)

现在要把人物从坐标 0 移动到 100。

我们可以算出,这个过程是需要 100/speed =1500帧来完成的

那么第 i (87)帧画面,人物在的位置:

  pos=i*100/speed(他的公式我没看懂不知道是不是写错了)

pos=i*speed=87*1/15=87/15=5.8(px)

这个时候,需要画第几帧图象呢?(如果知道是当前总87帧,30帧一个循环,那此处就是|87/30|=取整2两个整循环,当前帧数就是87-30*2=27帧,,,貌似现在的假设是只知道位置,不知道多少帧)

首先我们需要知道第 87帧画面,也就是 pos(5.8(px)) 这个位置,人物已经走了t=|pos/step| 步 (t 取整了)(t=|5.8 /2|=(取整)2);

我们的小人正在走在第 t+1(3) 步的 ((pos-t*step) =(5.8-2*2)=1.8(px) 这1.8px是3步的1.8/2时刻=0.9*100%=90%) 时刻m 是一个 0~1 之间的数字。

f=|n*m|=|30*90%|=27(frame)就是我们在此时刻需要画的行走图片帧了(和上面知道总帧数得到的结果是一样的,算是相互验证)。

 

(如果问题请留言)

提示:这种公式用于操作每一个动画单帧的方法,但如果你的动画帧是确定的,30帧,(重点)而且动画帧的时间是设定好的(1s----1秒播放30帧以确定)那么速度这个动画的移动速度就固定了,或者说 30帧动画是一个整体,无法分割,就无法用上面的方法。简单说下:动画帧(30frame)确定,时间(1s)确定,步长(20px)应该也是确定的, 那么速度就是 =步长/时间,(v=s/t,v=20px/s),那么现在如果实现不滑步,,,播放动画移动分开控制,,,动画调用频率设置为动画播放时间(1s)循环调用,这就使人物连贯原地走起来了,我们知道这个人物动画的速度是20px/s,那就在来一个控制器,控制动画整体,每20px/s的速度移动就可以了,,假设

移还是0-100,那么这个控制移动的频率我们可以设置为0.1s,位置距离等于速度*时间,s1=v*t1 时间每0.1进行累加(t=t+0.1)

当t1=0.1,当前的位置就是s1=20*0.1=2px;

t1=0.2,s1=0.4;

t1=0.3,s1=0.6

t1=1,s1=2;

所以时间等于播放帧时间,一秒后的位置也就是一个步长,s1=(v)*t1=(s/t)*t1=(20/1)*1=20px;

t1=1.2,s=2.4;

.....

具体的情况还要具体分析,这只是大方向,,,

 

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MMD(MikuMikuDance)是一款用于制作三维人物动画的软件,其中K帧是用来表示动画帧的一种术语。 在 K 帧动画中,滑步是指在连续的两帧之间,人物或物体的运动看起来不够连贯或平滑。通常,滑步是由于动画帧之间的差异过大导致的。 要避免滑步,有几种方法可以尝试: 1. 在制作动画时,要尽量保证人物或物体的运动平滑流畅。这可以通过在每个关键帧之间插入辅助帧来实现,以使动画的运动看起来更加平滑。 2. 使用更多的关键帧。在使用较少的关键帧时,动画的运动可能会看起来不够平滑。因此,可以使用更多的关键帧来提高动画的流畅度。 3. 使用插值技术。插值是指在两个关键帧之间自动生成中间帧的方法。通过使用插值技术,可以使动画的运动看起来更加平滑流畅。 4. 使用帧率较高的动画。帧率指的是动画每秒播放的帧数。使用帧率较高的动画可以使动画的运动看起来更加平滑流畅。 总之,要避免在 K 帧动画中出现滑步,可以通 ### 回答2: MMD(MikuMikuDance)是一种流行的三维角色动画制作软件。在制作MMD动画时,避免角色出现滑步的问题是非常重要的。 首先,需要要确保角色模型的骨骼动画和关键帧动画设置正确。在MMD中,骨骼动画是决定角色运动的关键,而关键帧动画则是控制角色运动的关键帧。在K帧的时候,设置角色瞬间移动的位置和方向,并确保在下一帧的运动是连续且自然的。可以通过逐帧调整角色的位置和姿态,确保角色的每个运动都能够连贯流畅。 其次,注意角色模型的物理特性。物理模拟在MMD中起着重要作用,它能够使角色的运动更加真实。在K帧的时候,要确保物理模拟的参数设置合理,并充分利用物理引擎自带的碰撞检测功能,避免角色出现穿越物体的情况,从而避免滑步现象的出现。 此外,为了避免滑步现象,还需要制作角色的脚步动画。脚步动画是角色行走时脚部运动的关键,可以通过合理地设置脚部骨骼的运动轨迹和旋转角度,使得角色的行走更加平滑自然,并避免滑步问题。 总之,在MMD中,避免滑步现象需要注意正确设置角色的骨骼动画和关键帧动画、合理使用物理模拟和碰撞检测功能,并制作角色的脚步动画。通过细心调整每一帧的动画细节、注意物理特性和脚步动画,可以使得角色的运动更加真实且自然,避免出现滑步的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值