我需要允许用户在使用平行投影的 3D 场景中平移、旋转、放大/缩小我的场景。平移和放大/缩小非常简单。但是,在使用鼠标进行旋转时,我不确定以什么为旋转中心。特别是,我不确定旋转中心应该落在屏幕内的哪个深度。
这是我现在正在做的事情:获取模型的质心并将其用作旋转中心。然而,质心有时会落在可见区域之外(由于平移和缩放级别),用户(和我自己)发现围绕我们看不到的点旋转模型是违反直觉的。
在这种情况下,用户交互的标准是什么?这里最直观的行为是什么?
PS:我只有一个视口(viewport)(不像 Blender 和 friend )。
编辑:如果经验丰富的各方能够评估 Google SketchUp 和 Blender 3D 等软件包中的当前实践,那就太好了并发表他们的意见。
最佳答案
您可以尝试从相机向屏幕中心转换光线,找到最近和最远的交点,然后将旋转点设置在交点的中点。
关于opengl - 旋转 3D 模型 : Suggestions for center of rotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377375/