【问题标题】:Smooth 3d scene rotation like Blender's像 Blender 一样平滑 3d 场景旋转
【发布时间】:2020-01-27 16:08:29
【问题描述】:

我正在开发一个渲染 3D 世界的应用程序,并希望像 Blender 那样实现场景的旋转。您可以在此处的视频中看到它:https://youtu.be/ILqOWe3zAbk?list=PLa1F2ddGya_-UvuAqHAksYnB0qL9yWDO6&t=66(我不是在谈论与 gyzmo 的交互,而是在用户拖动鼠标时相机旋转的方式)

我已经实现了轨迹球旋转,但它有两个方面让我感到困扰:

  1. 场景旋转不够(或不够快),
  2. 当您靠近窗口边缘时,旋转停止。

对于第一点,简单地乘以旋转角度并不能解决问题。事实上,它会创建另一个:当角度超过 1 弧度时,旋转会非常不稳定,即使鼠标光标的微小变化也会在旋转中产生不连续性(跳跃)。我尝试了不同的因素来乘以角度,但没有得到任何好的结果:一旦达到 1 弧度,就会出现不连续性。

对于第二点,我想这是 trackball 方法的预期行为,但在 Blender 的选项中您可以清楚地看到它使用 trackball 方法来旋转视图。

如果需要,我会发布一些代码,但只要旋转角度的绝对值低于 1 弧度,它就会按预期工作,我认为问题在于 Blender 使用了轨迹球的变体。

【问题讨论】:

    标签: rotation blender


    【解决方案1】:

    一方面,旋转越多越快,为了使其更平滑,您需要绘制更多帧。仅以 25 度和 65 度绘制会产生突然的跳跃,但在 35,45 和 55 度的帧之间绘制也会产生更平滑的运动。场景绘制的帧速率决定了您可以绘制多少帧以从开始位置过渡到结束位置。抖动的移动表明您的主循环太慢了,您需要一个舒适的旋转速度,感觉它与鼠标移动相匹配,然后加快帧速率,以便您的主循环更新足够多的时间以使过渡足够平滑。

    对于两个,blender 在输入首选项中有一个名为Continuous Grab 的选项,您可能会注意到它会使光标跳到窗口的另一侧。也许您可以从here 开始并按照它的功能进行操作。请注意,当拖动数字的 UI 小部件时,光标会隐藏并在释放时返回到其起始位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 2011-05-19
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多