1

目前,我有一种机制可以通过修改模型视图矩阵来将视图定向到标准方向。
我想通过提供一个平滑的动画来增强用户体验,该动画将用户从当前视图方向带到标准视图方向,平滑过渡 - >(方向变化的恒定速率)。
理想情况下,过渡时间应少于 500 毫秒。

我已经实现了以下内容。

  • 矩阵类
  • 四元数(我可以从中提取矩阵)

我可以提取当前视图方向,并且我知道所有标准视图的视图方向。

我的问题:

  1. 是否允许用户在转换进行时进行交互和更改视图方向。我认为是的,但不确定行为。无论系统状态如何,我都不希望应用程序冻结。
  2. 如何分别在开始和结束时保持恒定的方向变化率和加速度和减速度。
  3. 在过渡过程中(500 毫秒)应如何渲染帧。使用 std::thread 在 C++11 中是否有一种优雅的方式来执行此操作。
4

1 回答 1

2

如果您在渲染时已经在处理用户输入,则不需要单独的线程。如果您希望用户仍然拥有控制权,请不要让他们直接控制视图矩阵 - 而不是目标视图矩阵,只需将当前视图矩阵推向目标,每帧的一部分。

但是,这会使平滑的加速/减速变得复杂 - 比如说,您从一个小加速度开始,提高速度,然后用户移动相机:您是以低速重新开始,还是继续以同样的速度开始?这是一个设计决定,但我认为如果视图旋转的速度在中途改变,控件会感觉很奇怪。另外 - 如果您有加速/减速,根据定义,变化率不会是恒定的,所以您真的需要决定您想要什么,可能尝试两种解决方案,看看它是否“感觉正确”,因为缺少更好的短语。

于 2012-09-26T10:07:02.910 回答