关闭点,与帧速率无关?

时间:2014-07-13 01:04:33

标签: math 3d language-agnostic logic

我在3D中制作了一个相机类,它朝向一个点关闭,减速并缓和到停止状态。定期这样做非常简单:

// positions are vectors, dampening is a scalar, usually set to ~0.9

currentPosition += (targetPosition - currentPosition) * dampening;

然而,这被锁定到帧速率,假设它每帧只执行一次。

如何最好地实现这种依赖于时间而不是帧速率或执行时间的行为?

1 个答案:

答案 0 :(得分:0)

一个简短的实验(如果你需要一点感应)表明你在 n 帧之后

targetPosition*(1 - (1 - dampening)^n) + currentPosition*(1 - dampening)^n

所以为了使这个时间相关,写

targetPosition*(1 - pow(1 - dampening, t)) + currentPosition*pow(1 - dampening, t)

现在每单位时间有一个阻尼,时间甚至可能是分数。

您的问题让我想起了Calculate speed by distance and friction