opengl - 旋转 3D 模型 : Suggestions for center of rotation

标签 opengl user-interface direct3d 3d

我需要允许用户在使用平行投影的 3D 场景中平移、旋转、放大/缩小我的场景。平移和放大/缩小非常简单。但是,在使用鼠标进行旋转时,我不确定以什么为旋转中心。特别是,我不确定旋转中心应该落在屏幕内的哪个深度。

这是我现在正在做的事情:获取模型的质心并将其用作旋转中心。然而,质心有时会落在可见区域之外(由于平移和缩放级别),用户(和我自己)发现围绕我们看不到的点旋转模型是违反直觉的。

在这种情况下,用户交互的标准是什么?这里最直观的行为是什么?

PS:我只有一个视口(viewport)(不像 Blender 和 friend )。

编辑:如果经验丰富的各方能够评估 Google SketchUp 和 Blender 3D 等软件包中的当前实践,那就太好了并发表他们的意见。

最佳答案

您可以尝试从相机向屏幕中心转换光线,找到最近和最远的交点,然后将旋转点设置在交点的中点。

关于opengl - 旋转 3D 模型 : Suggestions for center of rotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377375/

相关文章:

使用 OpenGL 进行 Qt 渲染

java - 从面板顶部留出间隙

opengl - 曲面分割着色器和几何着色器之间的区别

language-agnostic - 使用DirectX或OpenGL显示100个 float 立方体

android - 设置以编程方式创建的按钮的文本

c++ - Windows 上如何区分按钮和复选框消息?

c++ - 在哪里可以找到 "Introduction to 3D game programming with DirectX 9.0c"的源代码示例?

c++ - HLSL 常量缓冲区中数组的意外大小

c++ - 找不到 d3dx11.lib?

python - Cython 使用什么图形库来绘制图形?