繁体   English   中英

使用Slerp的奇怪行为

[英]Strange behaviour using Slerp

我正在使用Quaternion.Slerp在转弯时旋转汽车。 我注意到在向左转弯之前,汽车会稍微向右转,然后再向左转弯。 我还将汽车从一个位置拉到另一个位置。 知道为什么会这样以及如何阻止它吗?

car.transform.position = Vector3.Lerp(car.transform.position, nextPosition, fracJourney);

if (direction != Vector3.zero)
{
    Quaternion lookRotation = Quaternion.LookRotation(direction);
    car.transform.rotation = Quaternion.Slerp(car.transform.rotation, lookRotation, Time.deltaTime * rotationSpeed);
}

Quaternion.Slerp使用插值和最短路径。 大角度时效果不佳。 并且在确切的180度范围内实际上是未定义的。 围绕那个角度,您将在帧与帧之间得到一些“生涩”的东西。

两种选择:

补间动画。 也就是说,有效地以较小的角度向上旋转,直到达到最终角度为止。 想想关键帧或将旋转旋转成较小的块。

或者,您仍可以在Euler Angles空间中进行插值。 然后在插值后使用Quaternion.Euler

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM