基于OpenGL的虚拟车床几何建模.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于OpenGL的虚拟车床几何建模

1引言数控加工虚拟仿真是综合利用计算机图形学和系统仿真学等技术模拟数控加工过程的交叉性学科,它是虚拟制造技术的重要组成部分。通过虚拟仿真,可以高效便捷地检查刀具路径、检验加工方法和NC程序的正确性,从而保证加工质量提高加工效率。在数控加工虚拟仿真中,建立数控机床的三维几何模型是一项基本任务。如何结合虚拟仿真环境的特殊要求,提高几何模型的质量,一直是数控加工虚拟仿真以至整个虚拟制造技术研究的重点之一。

1 引言

数控加工虚拟仿真是综合利用计算机图形学和系统仿真学等技术模拟数控加工过程的交叉性学科,它是虚拟制造技术的重要组成部分。通过虚拟仿真,可以高效便捷地检查刀具路径、检验加工方法和NC程序的正确性,从而保证加工质量提高加工效率。

在数控加工虚拟仿真中,建立数控机床的三维几何模型是一项基本任务。如何结合虚拟仿真环境的特殊要求,提高几何模型的质量,一直是数控加工虚拟仿真以至整个虚拟制造技术研究的重点之一。本文论述基于Open GL建立数控机床三维几何模型的优点,特别是利用OpenGL实用工具包提高三维几何模型建模的优点,简要说明GLUT的功能安装等,详细分析基于OpenGL几何建模中的一些重要问题,在此基础上建立虚拟车床的几何模型。

2 几何建模特点及方法

数控加工虚拟仿真是在虚拟环境中研究数控加工过程的现象和问题,因此以三维形式表达几何模型是虚拟仿真可视化的基本要求。更重要的是,实时性和真实感这一虚拟仿真研究中的主要矛盾,在数控加工仿真研究中显得更为突出。

在实时性方面,当前虚拟仿真建模对象已经从刀具、工件扩展到床身、夹具、控制面板等整个机床。零部件数量和复杂度的增加,对仿真运行的实时性提出更高要求。在真实感方面,对于几何模型的表达,不仅要求形状准确,而且要求利用光照材质等技术增强虚拟环境的真实感。

虚拟仿真几何建模常用的方法是,在成熟的CAD平台建立几何模型,然后利用数据交换程序读入到数控仿真系统中。这种方法因为CAD建模平台功能强大而效率很高,但是在实时性和真实感方面却有不足之处。如果在转换后仍然要求几何模型保持原来模型足够的信息,那么转换后的模型文件通常比原来的模型文件要大,这不利于虚拟仿真运行的实时性;模型转换的结果有可能不利于模型的真实性表达。例如1个矩形面在转换后可能用2个共斜边的直角三角形表

达,这样在光照计算时该面有突变。采用直接构建三维几何模型的方法可以避开这些不足。不但如此,对于数控加工虚拟仿真,采用直接几何建模方法有2个优点。虚拟仿真研究重心是对于加工过程,常常对工件、刀具等进行仔细的几何建模,而对其他零部件如床身、主轴箱等进行适当简化,用长方体、圆柱、圆锥等来表达之;除了刀具、工件等零件外,绝大多数零部件的几何模型建立后几乎不再改变,因此直接建模方法也具有“一次建模,多次使用”的优点。

OpenGL强大的图形能力为直接建模方法提供了有力的支持,通过对基本三维几何模型进行变换、装配等,可以较为方便地建立机床的几何模型,尤其是GLUT 实用工具包提供了一些基本的三维几何模型,显著提高了几何模型工作的效率。

本文以车床为例,说明直接利用OpenGL/GLUT建立三维模型的主要技术。简要说明了GLUT的功能和安装。根据虚拟仿真的要求,可将数控车床分为床身、主轴箱、主轴卡盘、尾座、刀架、刀具和工件7部分。其中除床身和主轴箱外,其他5个构件均为运动件。在此基础上利用矩阵变换特别是缩放变换,构建了虚拟车床的几何模型。

3 GLUT主要功能和安装

GLUT是基于OpenGL的一个实用工具包,它提供许多实用的功能,如多视窗的绘制、回调函数驱动的事件管理、支持多种输入设备(键盘、鼠标、空间球等)、空闲事件与定时器、下拉式菜单管理、三维几何模型绘制、位图与字体等。

3.1 GLUT的基本功能

包括窗口初始化功能、事件处理、窗口和菜单管理、回调函数注册和几何建模功能。

窗口初始化功能,它有4个函数。主要用于处理初始化并以及命令行参数,初始化显示模式,指定窗口左上角在屏幕上的位置和窗口大小,以像素为单位。

事件处理只有一个函数,它用于显示创建的窗口、处理输入的事件、触发回调函数、进入循环直到程序退出。

窗口管理包含18个函数,用于建立、销毁窗口及可能的子窗口,管理和设置窗口的属性。

在GLUT中有20个回调函数,用于响应用户事件。最重要的回调函数是

glu tD isplayFunc,当GLUT认为需要重新显示窗口内容时,都将执行这一函数注册的回调函数。另外一些重要的回调函数注册函数有:函数glu tR e-shapeFunc用于注册窗口大小改变这一事件发生时GLUT将调用的函数。glutKeyboardFunc和glutMouseFunc用于注册键盘和鼠标事件发生时的回调函

数。函数glutMotionFunc注册鼠标移动事件的回调函数。这3个函数用于人机交互处理。在没有其他事件处理时,GLUT将调用函数glutldleFunc注册的函数,而函数glutTimerFunc则注册处理定时器事件的函数。

OpenGL绘图函数只能生成点、直线、多边形等简单的几何图元,GLUT提供了18个创建三维物体的函数。利用它们可以创建9种三维物体,如圆锥体、立方体、球体等,每一物体有线框和实体2种方式。

3.2 GLUT的安装

在Windows XP/Visual C++6.0下进行GLUT编程时,首先要进行OpenGL的基本设置,然后再进行GLUT设置。

进行OpenGL基本设置时,必须加入3个OpenGL库,分别是opengl32.lib,glu32.lib和glaux.lib。具体的方法是在Visual C++6.0环境中,依次选择“项目”、“设置”、“链接”、“对象∣库模块”,然后添加

“opengl32.lib glu32.libglaux.lib”,必须注意3个文件之间的分隔符不是逗号而是空格。

在程序开发时,必须包含2个OpenGL头文件,即gl.h和glu.h。在Visual C++6.0中,还需要在这2个文件之前包含头文件windows.h,这是因为在gl.h 和glu.h中使用一些在Windows.h中定义的宏。

GLUT的安装包括3项内容。

(1)将glut32.dll文件复制到操作系统的System32或System目录下;

(2)将glut.h文件复制到Visual C++安装目录下的Include\GL文件夹下;

(3)将glut32.lib文件复制到到Visual C++安装目录下的Lib文件夹下。

上述设置结束后,在编程应用中,将头文件glut.h包含在gl.h和glu.h之后即完成GLUT的安装设置。

4 坐标系匹配

为在车床中正确安装各构件,必须结合数控车床车削加工特点和OpenGL的几何建模功能,确定不同坐标系之间的关系。在OpenGL中全局坐标系用以确定几何模型的绝对位置,也用以确定视点位置,它是一个右手坐标系,如图1(a)所示,向右为x轴正向,向上为y轴正向,z轴正向垂直朝外。在数控车床中,机床原点位于主轴前端面的中心,坐标系z轴正向从主轴卡盘中心指向尾座中心,x向为径向进刀方向,它也是一个右手系,如图1(b)所示。可见比较恰当的是将OpenGL全局坐标系与车床坐标系对应,为此有2种办法可以实现。第一种方法是视点不动模型变换。在图1(a)所示的视点不变情况下,将OpenGL全局坐标系绕y轴逆时针旋转90°,接着绕z轴逆时针旋转180°即可获得图

1(b)所示姿态。第2种方法是模型不动视点变动。对于图1(a)通过视点变换将

相关文档
最新文档