【发布时间】:2020-01-27 16:08:29
【问题描述】:
我正在开发一个渲染 3D 世界的应用程序,并希望像 Blender 那样实现场景的旋转。您可以在此处的视频中看到它:https://youtu.be/ILqOWe3zAbk?list=PLa1F2ddGya_-UvuAqHAksYnB0qL9yWDO6&t=66(我不是在谈论与 gyzmo 的交互,而是在用户拖动鼠标时相机旋转的方式)
我已经实现了轨迹球旋转,但它有两个方面让我感到困扰:
- 场景旋转不够(或不够快),
- 当您靠近窗口边缘时,旋转停止。
对于第一点,简单地乘以旋转角度并不能解决问题。事实上,它会创建另一个:当角度超过 1 弧度时,旋转会非常不稳定,即使鼠标光标的微小变化也会在旋转中产生不连续性(跳跃)。我尝试了不同的因素来乘以角度,但没有得到任何好的结果:一旦达到 1 弧度,就会出现不连续性。
对于第二点,我想这是 trackball 方法的预期行为,但在 Blender 的选项中您可以清楚地看到它使用 trackball 方法来旋转视图。
如果需要,我会发布一些代码,但只要旋转角度的绝对值低于 1 弧度,它就会按预期工作,我认为问题在于 Blender 使用了轨迹球的变体。
【问题讨论】: