28
2014
06

OpenGL鼠标轨迹球效果演示

接上篇(OpenGL鼠标轨迹球(Trackball)原理),展示一下最近实现的鼠标轨迹球演示效果,使用了OpenTK提供的OpenGL接口,作为小软件的图形显示基本效果还不错。

21
2014
06

OpenGL鼠标轨迹球(Trackball)原理

什么是鼠标轨迹球

类似AutoCAD里的“动态观察”,三维模型都是要投影到二维的屏幕上才能显示给用户,而用户如果想观察一下三维模型的立体形状使用“动态观察”是再好不过了。我们一般的操作是这样的:鼠标(按中健或者其他健)在二维屏幕上拖动,之后三维模型就会以屏幕中心点为中心进行相应的旋转,鼠标拖动得越长,三维模型旋转的角度就越大。AutoCAD这种重量级的商业软件在这方面的用户体验自然是非常完美的了,可你知道它的原理么,如果自己用OpenGL如何实现呢?

OpenGL里的轨迹球

计算机的三维显示类似生活中的摄影,屏幕就是一个相机,三维模型就是被摄物体。我们可以调整相机与被摄物之间的距离来在屏幕显示不同大小影像。轨迹球就是在屏幕之外虚构一个球形曲面,使鼠标在二维屏幕上的移动投影到球形曲面上,这样就能得到更佳的用户体验(不使用轨迹球也能实现动态观察,只是效果很生硬)。

以屏幕为中心为球心,x轴向右,Y轴向上,z轴向屏幕之外,很容易建立一个球体的几何方程如下: $$x^2+y^2+z^2=r^2$$ 这里,r代表球体的半径。

...

«1»