开放性图形库(Open Graphic Library,OpenGL)是美国高级图形和高性能计算机系统公司SGI所开发的三维图形 标准库,具有绘制三维图形的各项功能,它是专用图形硬件的软件接口,支持可视化的实现<1> 。它在三维图形的功能上非常优良,以它为基础开发的应用程序可以方便地在各个平台间移植。用 户使用这个图形库不仅能方便地制作出有极高质量的静止三维彩色图像,还能创建出高质量的动画 效果,在虚拟现实中得到广泛应用。然而,利用OpenGL建立机床的三维模型是一件比较麻烦 和枯燥的事情,因为OpenGL几乎不提供三维造型的高级命令(除了提供茶壶、圆环、立方体 等简单模型),它是通过点、线及多边形等基本的几何图素来建立三维立体模型的。而利用AutoCAD可以得到精确的工程模型,利用3DSMAX可以建立复杂的三维模型。在传统的产品设计中,为了得到需要的模型,要通过到现场进行编 程和操作。用虚拟环境下数控加工的方法就可以避免从设计部门到现场的不便。从制造商的角度, 三维模型可以用来作为签订协议前的产品展示;从客户的角度,三维模型可以形象表达用户需求。 交互性是OpenGL相对于其他软件(3DSMAX、Pro/E、UG等)的优势所在,把用 三维软件得到的模型转换成OpenGL代码,再对其进行适当的编程,即可在各个平台间移植。1实现过程1·1数控机床几何建模为了得到机床的三维模型,尽量利用OpenGL与3DSMAX两者的优势。简而言之,在建模阶段可以利用3DS MAX建立模型,避免在OpenGL中用点、线和多边形来建立三维立体模型的繁琐工作,而在运 动规则控制阶段,通过OpenGL实现所需要的动作控制。因此,首先利用转换软件把用三维软件制作的物体模型转换成OpenGL的格式,再对其进行编程控制,实现动画仿真。用3DSMAX建立模型还有另外的优势:它拥有相当强大的渲染工具,可以达到沉浸的效果。1·2将·3ds格式的三维模型转换成OpenGL格式首先利用3DS MAX6·0将上面的模型输出为·3ds格式。然后将该文件导入到3DWin<2>中输出为· cpp文件,此时就会得到两个默认文件scene.cpp和scene.h,将它改为熟悉的 名字axial.cpp和axial.h<3>。1·3程序设计阶段1)建立project。在VisualC++编译环境中,利用AppWizard建立一个基于MFC的单文档应用程序。2)加入op engl32·libg、laux.lib、glu32.lib库。3)修改View类的头 文件。在View类的头文件中加入以下几行:#include〈gl/gl.h〉#incl ude〈gl/glu.h〉#include〈gl/glaux.h〉4)先将lathe. cpp和lathe.h复制到project目录下,然后分别将得到的axial.cpp和axial.h分别添加到SourceFiles和Header Files中<4>。5)在Doc.cpp和View.cpp文件中添加#include“l athe.h”。6)在View.cpp文件中添加像素格式设定函数、建立函数模型函数、设 置光源函数、选择材质函数、渲染函数等,这些函数对于每一导入OpenGL中的相同格式的文 件基本相同。7)通过VC添加函数向导来添加鼠标消息函数,实现交互动画的控制。8)在Vi ew.h文件中加上需要的各种变量后,进行调试。在调试过程中会遇到下面的错误:unexpectedend of file while looking for precompiled header directiveError executing cl.exe.当双击错误的时候就会指向axial.cpp文件的尾部。添加:#includ e“stdafx.h”。重新编译的时候错误就会消失。9)编译通过后,屏幕上没有任何显示 。通过改变glSaclef()和glTranslatef()两个函数的参数和顺序,在裁 剪区域内显示出导入的图形。OpenGL的深度坐标是指向显示器的内部为正方向,其他两个方向向上和向右为正方向。认识了这一点会很容易找到导入的物体。在软件制作的建模阶段,将3DSMAX系统轴线坐标原点与物体的中心重合。10)当显示模型后,也会遇到一个常见的问题,即3DS MAX中设置的颜色调试后没有显示出正确的色彩。直接在axial.cpp找到在3DS MAX中渲染时,在材质编辑对话框中赋予的材料的名字。材料由一个一维数组表示,数组有四个成员,每个成员有六项参数。在axial.h中定义它的数据结构为:typedef struct{float ambient<3>;float diffuse<3>;float specular<3>;float emission<3>;float alpha;int texture;}Material—Def;对上面的参数进行修改,就可以得到较理想的渲染 效果。2注意的关键点2·1坐标统一建立模型的时候所使用的软件坐标与OpenGL坐标统一 ,显示的时候就不会出现找不到显示物体的现象。2·2单位统一在建立模型的时候所使用软件的 单位与OpenGL单位统一,在窗口就可以得到适当大小的模型。2·3函数顺序glTran slatef()和glRotatef()两个函数在程序中的先后顺序会影响对鼠标的控制。 在鼠标控制物体旋转的时候,有时候会出现物体突然消失的现象,即因为没有在程序设计时注意平 移变化和旋转变化的顺序。对glTranslatef()和glRotatef()两个函数 进行修改,可以达到旋转中心和物体的中心重合的目的。在教学的演示过程中,将复杂模型的各个 复杂面展现在屏幕上,提高了教学软件对指定部位的显示能力。3参数设置对话框实现1)在VC 的基类CDialog下继承的一个对话框类,用来做输入参数的控制面板。2)在菜单中添加一 个消息传递函数,此消息传递函数要在View类中。3)为对话框和菜单设置正确的ID,同时 在资源文件的头文件中定义此ID。在消息传递时连接菜单的ID。4)控制面板中设置加工零件 的半径和离端面的距离。4虚拟数控系统开发的优点<5>4·1易移植性本系统虽然是在Win dowsXP平台上开发的,但采用OpenGL生成图形,它独立于窗口系统和操纵系统,因此 十分方便地在各种平台间移植。4·2自定义性由于本系统采用交互式设计,允许用户按自己特定 的要求选择或修改加工环境结构,因此极大限度地满足用户的需求。4·3真实性由于采用实体造 型,结合光照、纹理、颜色等一系列特殊处理,使得仿真加工环境更接近真实。4·4易开发性O penGL的使用,使系统图形的编程量减少,开发者无须掌握大量的图形学知识,而可以集中精力解决困难的算法问题。5结语3DSMAX模型转化到OpenGL中有很多方法,中间的转换软件也有很多,如常用的3DWin和3D Explo-ration是目前用得最多的两个软件。可以将3DS MAX输出的.ase格式、·max格式还有其他软件如CAD输出的·dwg格式、·dxf格 式等十多种格式转为OpenGL格式。现在部分企业和学校也利用VEGA/CREATOR结 合用于开发交互式视景仿真系统。利用3D软件很方便建立需要的模型,解决了在程序中建立模型的复杂过程。因此,也可以用3DSMAX建立比较自由的立体,如人物、动物等,再转化到OpenGL中制作交互动画,从而设计出 生动的交互动画和更完善的辅助虚拟制造。本文通过OpneGL强大的三维显示效果,实现了对 机床的三维建模和对输出虚拟产品的三维模型渲染。目前,只是实现了G代码到虚拟产品,今后的 研究方向将逐步实现从计算机和机床的通讯接口设计,完成从虚拟代码到真实产品的过程,并加入 虚拟制造中机床的精度和刀具磨损对产品精度的影响。OpenGL在虚拟数控加工中的应用@范 美芳$广东技术师范学院!广州510665利用VC环境下OpenGL绘制三维模型的方法,实现数控机床虚拟制造,解决从实验室到现场操作的不便。详细介绍将机床模型从3DSMAX转换到OpenGL的过程,该方法克服了3DS MAX编辑模型的不可交互性,同时简化了Open-GL中建模的复杂过程。另外,在VC环境下 ,做出虚拟的操作面板、参数设置对话框,增加了沉浸效果。OpenGL;;数控;;虚拟制造;;沉浸<1>杨东梅,朱胜缘,路伟成.OpenGL与3DStudio MAX结合实现三维仿真
.应用科技,2004(2):33-35.
<2>和平鸽工作室.OpenGL三维图形系统开发与实用技术(实用技术篇).北京:清华大学出版社、重庆大学出版社,2003.
<3>吴昊,刘建业,赵伟,等.基于VC和OpenGL的导航仿真系统三维物体建模的实现.航空电子技术,2004(2):42-45.
<4>《电脑编程技巧与维护》杂志社.Visual C/C++编程精选集锦,数据库及图形图像分册.北京:科学出版社,2003.框和菜单 设置正确的ID,同时在资源文件的头文件中定义此ID。在消息传递时连接菜单的ID。4)控 制面板中设置加工零件的半径和离端面的距离。4虚拟数控系统开发的优点<5>4·1易移植性 本系统虽然是在WindowsXP平台上开发的,但采用OpenGL生成图形,它独立于窗口 系统和操纵系统,因此十分方便地在各种平台间移植。4·2自定义性由于本系统采用交互式设计 ,允许用户按自己特定的要求选择或修改加工环境结构,因此极大限度地满足用户的需求。4·3 真实性由于采用实体造型,结合光照、纹理、颜色等一系列特殊处理,使得仿真加工环境更接近真实。4·4易开发性OpenGL的使用,使系统图形的编程量减
More reviews about the OpenGL在虚拟数控加工中的应用