基于OpenGL的三维模型交互控制研究
叶帅,游有鹏,邢永彦
(南京航空航天大学 机电学院,江苏 南京210016)
OpenGL是图形硬件的一种软件接口,在深入了解OpenGL显示机制的基础上,讨论了基于OpenGL实现三维模型的交互显示变换方法。应用OpenGL接口,通过对鼠标的二维位置的变换,得到世界坐标系中三维旋转轴和旋转角度,以及鼠标在世界坐标系中的三维位置,进而对三维模型进行平移、缩放、旋转操作。算法经实际编程应用,证明能够有效地实现三维模型的各种交互控制功能。
目前,相当多的优秀三维图形工具展现了精彩的虚拟现实场景[1]。随着虚拟现实进入工程应用,要求相关的图形应用软件能够使用户与虚拟现实场景进行互动操作。为此,当进行图形应用软件交互控制设计时,必须考虑三维模型的平移、缩放和旋转等操作的实现,其中最为困难的是旋转操作。常用的方法是使用OpenGL提供的接口函数glRotate()来实现三维旋转操作[2]、采用四元数法求旋转变换矩阵[3]、构造旋转矩阵对模型进行变换[4],它们可以很好地实现三维模型的旋转,但会改变对象的坐标,并且计算量大。对于有坐标值要求的三维实体,这些方法并不适用。针对以上问题,本文提出了一种利用鼠标移动改变视点坐标系位置、保留原有三维模型的空间几何信息、实现三维模型交互控制的方法。
1坐标系分类
OpenGL中存在如下几种坐标系:
a.世界坐标系。世界坐标系是以屏幕中心为原点(0, 0, 0),在OpenGL中用来描述场景的坐标,是系统的绝对坐标系。在绘图期间,原点和坐标轴保持不变。
b.模型坐标系。绘制模型时使用的坐标系。当模型发生旋转、平移等变化时,模型坐标系本身不会变化,变化的是模型在世界坐标系中的位置。
c.视坐标系。以视点为原点,以视线方向为Z轴正方向的坐标系。OpenGL会将世界坐标系先变换为视坐标系,然后进行裁剪,只有在视景体内的场景才会进行下一个阶段的处理。
2实现方法和步骤
2.1显示变换分析
在计算机图形学中,三维图形的旋转变换需要指定一个旋转轴和旋转角度。通常,三维旋转变换可围绕空间任意直线轴进行,并规定图形绕某轴逆时针方向的旋转角度为正。旋转变换前后三维图形的大小和形状不发生变化,只是空间位置发生了变化。绕坐标轴旋转是最简单的旋转变换。当三维图形绕某一坐标轴旋转时,图形上各点关于此轴的坐标值不变,而另两个坐标轴的坐标值相当于在它们组成的坐标面上的一个二维旋转变换,然后再投影到二维的屏幕上。当通过鼠标操作三维场景中某个物体的投影进行旋转时,可以将鼠标位置的改变转换成三维物体绕着空间某一垂直于投影方向轴的旋转。
基于以上分析,可对三维物体旋转问题作如下转化:鼠标在二维屏幕上的移动等价于三维物体绕空间某一条轴的旋转,该旋转轴可定义为平行于屏幕、垂直于鼠标移动方向且通过原点,旋转的角度由鼠标的移动距离来确定。三维物体的缩放,可通过改变视点里三维模型的距离来实现,缩放比例由鼠标沿X轴移动的距离确定。这些变换都使用到同
作者简介:叶帅(1991—),男,江苏宿迁人,南京航空航天大学硕士研究生,主要研究方向为机电控制及自动化。 (文章来源《机械设计与制造工程》如需详细资料请联系江苏机械门户网025-83726289) |