3D模型运动,找到移动3D模型的更好方法

时间:2014-06-05 20:41:00

标签: java android c++ opengl-es opengl-es-2.0

让我们说我试图移动一个3D模型并保持简单我只是想在x轴上移动它。我从位置0.0开始并将其移动到位置10.0。

问题在于,根据我移动的速度,我最终会出现位置错误,这意味着我需要快速回到位置10.0。

例如,如果速度为3.0,则每帧我将3.0添加到x位置 0.0 3.0 6 9 12.0

如果我想在10.0到达时停止,我可以使用此代码

 if(model.x <= 10.0f)
    model.x += speed * FrameTime;
else 
    model.x = 10.0f;

但是在模型达到10.0之前,模型将达到12.0位置

这也意味着我移动得越快,错误就越大。

任何人都可以建议一个更好的方法来移动模型,以便消除或至少减少错误,因此它看起来不像我的模型反弹。

1 个答案:

答案 0 :(得分:3)

float minX = 0;
float maxX = 10;
float dx = speed * FrameTime;

model.x = Math.max(minX, Math.min(model.x + dx, maxX));

也许不是最清晰的解决方案,但它可以在一行中完成所需。