亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenGL的虛擬車床幾何建模

        2008-04-12 00:00:00王永超
        現(xiàn)代電子技術(shù) 2008年12期

        摘 要:三維幾何建模是構(gòu)建數(shù)控加工虛擬仿真環(huán)境的基本任務(wù)之一。研究直接基于OpenGL實(shí)用工具包(OpenGL Utility Toolkit進(jìn)行數(shù)控加工虛擬仿真幾何建模問題。在分析常用幾何建模方法不足的基礎(chǔ)上,指出直接利用OpenGL及其實(shí)用工具包GLUT建立三維模型的優(yōu)點(diǎn)。簡要介紹GLUT的功能,分析基于OpenGL的幾何建模方法中的坐標(biāo)系、矩陣變換順序、裝配層次、以及縮放比例等重要問題。在此基礎(chǔ)上構(gòu)建了虛擬車床的三維幾何模型。這有助于提高數(shù)控加工虛擬仿真環(huán)境的真實(shí)感,為虛擬機(jī)床運(yùn)動(dòng)仿真提供了堅(jiān)實(shí)基礎(chǔ)。

        關(guān)鍵詞:虛擬車床;OpenGL實(shí)用工具包;幾何建模;矩陣變換

        Virtual Lathe Geometry Modeling Based on OpenGL

        WANG Yongchao

        (Guangdong Technical Normal University,Guangzhou,510635,China

        Abstract:3D geometry modeling is one of basic tasks for building CNC virtual simulation environment.Directly based on OpenGL Utility Toolkit,this paper studies how to build geometry model for NC processing virtual simulation.The disadvantages of general geometry modeling approach are analyzed and advantages of 3D geometry modeling approach based on OpenGL and OpenGL Utilities Toolkit (GLUT are discussed.The functions of GLUT are presented briefly.ey problems in OpenGL/GLUT-based geometry modeling are discussed,including coordinate system,the sequence of matrix transformation,assembly level and scale factor.Then a 3D geometry model for virtual lathe is modeled and assembled.This virtual lathe can be used to improve visibility of CNC virtual simulation environment and can be used as a step stone for kinematical simulation of virtual lathe.eywords:virtual lathe;OpenGL utility toolkit;geometry modeling;matrix transformation

        1 引 言

        數(shù)控加工虛擬仿真是綜合利用計(jì)算機(jī)圖形學(xué)和系統(tǒng)仿真學(xué)等技術(shù)模擬數(shù)控加工過程的交叉性學(xué)科,它是虛擬制造技術(shù)的重要組成部分。通過虛擬仿真,可以高效便捷地檢查刀具路徑、檢驗(yàn)加工方法和NC程序的正確性,從而保證加工質(zhì)量提高加工效率。

        在數(shù)控加工虛擬仿真中,建立數(shù)控機(jī)床的三維幾何模型是一項(xiàng)基本任務(wù)。如何結(jié)合虛擬仿真環(huán)境的特殊要求,提高幾何模型的質(zhì)量,一直是數(shù)控加工虛擬仿真以至整個(gè)虛擬制造技術(shù)研究的重點(diǎn)之一。本文論述基于OpenGL建立數(shù)控機(jī)床三維幾何模型的優(yōu)點(diǎn),特別是利用OpenGL實(shí)用工具包提高三維幾何模型建模的優(yōu)點(diǎn),簡要說明GLUT的功能安裝等,詳細(xì)分析基于OpenGL幾何建模中的一些重要問題,在此基礎(chǔ)上建立虛擬車床的幾何模型。

        2 幾何建模特點(diǎn)及方法

        數(shù)控加工虛擬仿真是在虛擬環(huán)境中研究數(shù)控加工過程的現(xiàn)象和問題,因此以三維形式表達(dá)幾何模型是虛擬仿真可視化的基本要求。更重要的是,實(shí)時(shí)性和真實(shí)感這一虛擬仿真研究中的主要矛盾,在數(shù)控加工仿真研究中顯得更為突出。

        在實(shí)時(shí)性方面,當(dāng)前虛擬仿真建模對(duì)象已經(jīng)從刀具、工件擴(kuò)展到床身、夾具、控制面板等整個(gè)機(jī)床。零部件數(shù)量和復(fù)雜度的增加,對(duì)仿真運(yùn)行的實(shí)時(shí)性提出更高要求。在真實(shí)感方面,對(duì)于幾何模型的表達(dá),不僅要求形狀準(zhǔn)確,而且要求利用光照材質(zhì)等技術(shù)增強(qiáng)虛擬環(huán)境的真實(shí)感。

        虛擬仿真幾何建模常用的方法是,在成熟的CAD平臺(tái)建立幾何模型,然后利用數(shù)據(jù)交換程序讀入到數(shù)控仿真系統(tǒng)中。這種方法因?yàn)镃AD建模平臺(tái)功能強(qiáng)大而效率很高,但是在實(shí)時(shí)性和真實(shí)感方面卻有不足之處。如果在轉(zhuǎn)換后仍然要求幾何模型保持原來模型足夠的信息,那么轉(zhuǎn)換后的模型文件通常比原來的模型文件要大,這不利于虛擬仿真運(yùn)行的實(shí)時(shí)性;模型轉(zhuǎn)換的結(jié)果有可能不利于模型的真實(shí)性表達(dá)。例如1個(gè)矩形面在轉(zhuǎn)換后可能用2個(gè)共斜邊的直角三角形表達(dá),這樣在光照計(jì)算時(shí)該面有突變。采用直接構(gòu)建三維幾何模型的方法可以避開這些不足。不但如此,對(duì)于數(shù)控加工虛擬仿真,采用直接幾何建模方法有2個(gè)優(yōu)點(diǎn)。虛擬仿真研究重心是對(duì)于加工過程,常常對(duì)工件、刀具等進(jìn)行仔細(xì)的幾何建模,而對(duì)其他零部件如床身、主軸箱等進(jìn)行適當(dāng)簡化,用長方體、圓柱、圓錐等來表達(dá)之;除了刀具、工件等零件外,絕大多數(shù)零部件的幾何模型建立后幾乎不再改變,因此直接建模方法也具有“一次建模,多次使用”的優(yōu)點(diǎn)。

        OpenGL強(qiáng)大的圖形能力為直接建模方法提供了有力的支持,通過對(duì)基本三維幾何模型進(jìn)行變換、裝配等,可以較為方便地建立機(jī)床的幾何模型,尤其是GLUT實(shí)用工具包提供了一些基本的三維幾何模型,顯著提高了幾何模型工作的效率。

        本文以車床為例,說明直接利用OpenGL/GLUT建立三維模型的主要技術(shù)。簡要說明了GLUT的功能和安裝。根據(jù)虛擬仿真的要求,可將數(shù)控車床分為床身、主軸箱、主軸卡盤、尾座、刀架、刀具和工件7部分。其中除床身和主軸箱外,其他5個(gè)構(gòu)件均為運(yùn)動(dòng)件。在此基礎(chǔ)上利用矩陣變換特別是縮放變換,構(gòu)建了虛擬車床的幾何模型。

        3 GLUT主要功能和安裝

        GLUT是基于OpenGL的一個(gè)實(shí)用工具包,它提供許多實(shí)用的功能,如多視窗的繪制、回調(diào)函數(shù)驅(qū)動(dòng)的事件管理、支持多種輸入設(shè)備(鍵盤、鼠標(biāo)、空間球等)、空閑事件與定時(shí)器、下拉式菜單管理、三維幾何模型繪制、位圖與字體等。

        3.1 GLUT的基本功能

        包括窗口初始化功能、事件處理、窗口和菜單管理、回調(diào)函數(shù)注冊(cè)和幾何建模功能。

        窗口初始化功能,它有4個(gè)函數(shù)。主要用于處理初始化并以及命令行參數(shù),初始化顯示模式,指定窗口左上角在屏幕上的位置和窗口大小,以像素為單位。

        事件處理只有一個(gè)函數(shù),它用于顯示創(chuàng)建的窗口、處理輸入的事件、觸發(fā)回調(diào)函數(shù)、進(jìn)入循環(huán)直到程序退出。

        窗口管理包含18個(gè)函數(shù),用于建立、銷毀窗口及可能的子窗口,管理和設(shè)置窗口的屬性。

        在GLUT中有20個(gè)回調(diào)函數(shù),用于響應(yīng)用戶事件。最重要的回調(diào)函數(shù)是glutDisplayFunc,當(dāng)GLUT認(rèn)為需要重新顯示窗口內(nèi)容時(shí),都將執(zhí)行這一函數(shù)注冊(cè)的回調(diào)函數(shù)。另外一些重要的回調(diào)函數(shù)注冊(cè)函數(shù)有:函數(shù)glutReshapeFunc用于注冊(cè)窗口大小改變這一事件發(fā)生時(shí)GLUT將調(diào)用的函數(shù)。gluteyboardFunc和glutMouseFunc用于注冊(cè)鍵盤和鼠標(biāo)事件發(fā)生時(shí)的回調(diào)函數(shù)。函數(shù)glutMotionFunc注冊(cè)鼠標(biāo)移動(dòng)事件的回調(diào)函數(shù)。這3個(gè)函數(shù)用于人機(jī)交互處理。在沒有其他事件處理時(shí),GLUT將調(diào)用函數(shù)glutIdleFunc注冊(cè)的函數(shù),而函數(shù)glutTimerFunc則注冊(cè)處理定時(shí)器事件的函數(shù)。

        OpenGL繪圖函數(shù)只能生成點(diǎn)、直線、多邊形等簡單的幾何圖元,GLUT提供了18個(gè)創(chuàng)建三維物體的函數(shù)。利用它們可以創(chuàng)建9種三維物體,如圓錐體、立方體、球體等,每一物體有線框和實(shí)體2種方式。

        3.2 GLUT的安裝

        在Windows XP/Visual C++ 6.0下進(jìn)行GLUT編程時(shí),首先要進(jìn)行OpenGL的基本設(shè)置,然后再進(jìn)行GLUT設(shè)置。

        進(jìn)行OpenGL基本設(shè)置時(shí),必須加入3個(gè)OpenGL庫,分別是opengl32.lib,glu32.lib和glaux.lib。具體的方法是在Visual C++ 6.0環(huán)境中,依次選擇“項(xiàng)目”、“設(shè)置”、“鏈接”、“對(duì)象|庫模塊”,然后添加“opengl32.lib glu32.lib glaux.lib”,必須注意3個(gè)文件之間的分隔符不是逗號(hào)而是空格。

        在程序開發(fā)時(shí),必須包含2個(gè)OpenGL頭文件,即gl.h和glu.h。在Visual C++6.0中,還需要在這2個(gè)文件之前包含頭文件windows.h,這是因?yàn)樵趃l.h和glu.h中使用一些在Windows.h中定義的宏。

        GLUT的安裝包括3項(xiàng)內(nèi)容。

        (1) 將glut32.dll文件復(fù)制到操作系統(tǒng)的System32或System目錄下;

        (2) 將glut.h文件復(fù)制到Visual C++安裝目錄下的IncludeGL文件夾下;

        (3) 將glut32.lib文件復(fù)制到到Visual C++安裝目錄下的Lib文件夾下。

        上述設(shè)置結(jié)束后,在編程應(yīng)用中,將頭文件glut.h包含在gl.h和glu.h之后即完成GLUT的安裝設(shè)置。

        4 坐標(biāo)系匹配

        為在車床中正確安裝各構(gòu)件,必須結(jié)合數(shù)控車床車削加工特點(diǎn)和OpenGL的幾何建模功能,確定不同坐標(biāo)系之間的關(guān)系。在OpenGL中全局坐標(biāo)系用以確定幾何模型的絕對(duì)位置,也用以確定視點(diǎn)位置,它是一個(gè)右手坐標(biāo)系,如圖1(a)所示,向右為,x軸正向,向上為y軸正向,z軸正向垂直朝外。在數(shù)控車床中,機(jī)床原點(diǎn)位于主軸前端面的中心,坐標(biāo)系z(mì)軸正向從主軸卡盤中心指向尾座中心,x,向?yàn)閺较蜻M(jìn)刀方向,它也是一個(gè)右手系,如圖1(b所示??梢姳容^恰當(dāng)?shù)氖菍penGL全局坐標(biāo)系與車床坐標(biāo)系對(duì)應(yīng),為此有2種辦法可以實(shí)現(xiàn)。

        第一種方法是視點(diǎn)不動(dòng)模型變換。在圖1(a所示的視點(diǎn)不變情況下,將OpenGL全局坐標(biāo)系繞y軸逆時(shí)針旋轉(zhuǎn)90°,接著繞z軸逆時(shí)針旋轉(zhuǎn)180°即可獲得圖1(b所示姿態(tài)。第2種方法是模型不動(dòng)視點(diǎn)變動(dòng)。對(duì)于圖1(a通過視點(diǎn)變換將視點(diǎn)設(shè)置于第8象限,并恰當(dāng)?shù)卦O(shè)置視點(diǎn)方向和向上方向也可獲得圖1(b所示位置。即利用實(shí)用庫函數(shù)gluLookAt實(shí)現(xiàn),視點(diǎn)坐標(biāo)(x,y,z位于第8象限(x>0,y<0,z>0),視線方向?yàn)閺囊朁c(diǎn)到坐標(biāo)原點(diǎn),而向上方向取為y軸負(fù)方向。

        OpenGL的局部坐標(biāo)系也是右手坐標(biāo)系,它固定在幾何模型上,位于幾何模型中心,隨幾何模模型的移動(dòng)而移動(dòng)。而工件坐標(biāo)系是固定在工件上的,因此可將工件坐標(biāo)系與OpenGL局部坐標(biāo)系重合;實(shí)際上,包含工件在內(nèi),OpenGL局部坐標(biāo)系將應(yīng)用于數(shù)控車床所有構(gòu)件的幾何模型,它如圖1(c所示。

        5 模型變換和裝配

        在OpenGL的實(shí)用庫GLU以及工具箱GLUT中提供了多種基本的三維幾何模型,如利用實(shí)用庫函數(shù)gluCylinder建立圓柱,利用GLUT函數(shù)可以建立包括立方體、球體等九種三維模型。通過設(shè)置這些函數(shù)的不同參數(shù),以及利用縮放變換,可以實(shí)現(xiàn)不同零件的三維模型。

        5.1 幾何模型變換的先后順序

        零件裝配即零件空間相互位置設(shè)置,利用平移變換和旋轉(zhuǎn)變換完成,實(shí)質(zhì)上是矩陣乘法運(yùn)算。分別從全局坐標(biāo)系和局部坐標(biāo)系的角度均可完成位置設(shè)置。

        例如對(duì)于三爪卡盤幾何模型,右上爪模型幾何中心初始位置為坐標(biāo)原點(diǎn),而將其安裝于半徑為R的圓周上,并且位置與x軸夾角。

        在全局坐標(biāo)系下考慮位置設(shè)置時(shí),爪模型的所有變換相對(duì)于全局坐標(biāo)系各坐標(biāo)軸。當(dāng)在全局坐標(biāo)系下考慮位置設(shè)置時(shí),不論是“先平移后旋轉(zhuǎn)”,還是“先旋轉(zhuǎn)后平移”,均容易確定三個(gè)爪模型的空間絕對(duì)位置,但是希望的變換順序在程序代碼中以相反的順序指定。另外必須注意的是,除函數(shù)調(diào)用順序外,2種方法平移函數(shù)的參數(shù)也不相同。如圖2所示。

        對(duì)于“先平移后旋轉(zhuǎn)”,函數(shù)調(diào)用順序?yàn)椤跋刃D(zhuǎn)后平移”:

        glRotatef(30,0.0,0.0,1.0;//繞z軸旋轉(zhuǎn)

        glTranslatef(-R,0.0,0.0;//沿x軸平移R

        對(duì)于“先旋轉(zhuǎn)后平移”,函數(shù)調(diào)用順序?yàn)椤跋绕揭坪笮D(zhuǎn)”:

        glTranslatef(-Rcos 30°,-R sin 30°,0.0;

        glRotatef(30,0.0,0.0,1.0;//繞z軸旋轉(zhuǎn)

        在局部坐標(biāo)系下看待變換時(shí),爪模型的所有變換是相對(duì)于局部坐標(biāo)系的各坐標(biāo)軸。此時(shí)重要的是局部坐標(biāo)系是固定于模型上的,隨模型的變化而變換(包括縮放變化)。此時(shí)代碼變換順序是自然順序,與希望的相同。例如對(duì)于“先平移后旋轉(zhuǎn)”這一順序,調(diào)用glRotatef函數(shù)時(shí),爪模型繞全局坐標(biāo)系旋轉(zhuǎn)30°的同時(shí),爪模型的局部坐標(biāo)系也繞全局坐標(biāo)系z軸旋轉(zhuǎn)了30°。在接下來的glTranslatef函數(shù)中,爪模型繞自己旋轉(zhuǎn)后的局部坐標(biāo)系(而不再是全局坐標(biāo)系)x軸負(fù)向平移了一個(gè)R,因此到達(dá)了正確的安裝位置。

        5.2 縮放變換時(shí)的狀態(tài)保存

        由于在部件內(nèi)部采用的是局部坐標(biāo)系方式,其模型變換順序如上所述為自然順序,這在縮放變換時(shí)會(huì)產(chǎn)生問題。因?yàn)榫植孔鴺?biāo)系隨同模型一起縮放,特別是對(duì)于縮放比例沿各軸不一樣的不均勻縮放后,如果進(jìn)行平移變換,則沿各軸的平移距離將隨之增大或縮小相應(yīng)的縮放比例。特別是如果進(jìn)行縮放變換的同時(shí)進(jìn)行了旋轉(zhuǎn)變換,則局部坐標(biāo)系的3個(gè)軸可能不再互相垂直。

        為解決這一問題,可以采用操作矩陣堆棧的方法。即利用壓棧函數(shù)glPushMatrix記住當(dāng)前位置,而用出棧函數(shù)glPopMatrix恢復(fù)當(dāng)前位置。例如對(duì)于圖3所示的溜板箱模型,其刀架部分包含3個(gè)長方體。它們均是由單位正方體經(jīng)過不均勻拉伸而成,以下代碼利用堆棧操作避免不均勻縮放造成的影響:

        glPushMatrix(;//保存1的狀態(tài)

        glScalef(1.25,0.5,1.25;//不均勻拉伸

        glutSolidCube(1.0;

        glPopMatrix(;//恢復(fù)1的狀態(tài)

        glTranslatef(0.0,-0.35,0.0;//向上平移

        glPushMatrix(;//保存2的狀態(tài)

        glScalef(0.8,0.2,0.8;//不均勻拉伸

        glutSolidCube(1.0;

        glPopMatrix(;//恢復(fù)2的狀態(tài)

        5.3 車床及部件的裝配

        車床分為主軸箱、溜板箱、尾架等7個(gè)部件,這些部件內(nèi)部的零件在裝配時(shí)采用局部坐標(biāo)系的方式,而部件之間的裝配采用全局坐標(biāo)系的方式。這樣便于調(diào)用不同部件的位置關(guān)系。

        對(duì)于每個(gè)部件,均有一個(gè)基礎(chǔ)零件,它既是部件內(nèi)其他各零件的參考基準(zhǔn),也是該部件在整個(gè)車床中的裝配基準(zhǔn)。例如圖3溜板箱和圖4主軸箱、尾架中的0號(hào)零件均為基礎(chǔ)零件。即對(duì)于部件建模時(shí),基礎(chǔ)零件的幾何中心位于全局坐標(biāo)系的原點(diǎn)。

        為了提高部件建模效率,同時(shí)也為了便于控制各零件的材質(zhì),對(duì)于每個(gè)零件建立顯示列表。在此基礎(chǔ)之上創(chuàng)建二級(jí)顯示列表以構(gòu)造部件的幾何模型。而在函數(shù)glutDisplayFunc注冊(cè)的函數(shù)display中,調(diào)用二級(jí)顯示列表以完成車床裝配。圖5為機(jī)床裝配圖。圖5中紅綠藍(lán)三軸分別是全局坐標(biāo)系的x,y和z軸,與車床坐標(biāo)系一致,而視點(diǎn)位于第8象限。

        為了突出顯示三爪卡盤及工件的幾何模型,在其附近設(shè)置定向光源并啟用光照模型。由此導(dǎo)致床身幾何模型比較暗淡,為此對(duì)床身和尾架在構(gòu)建實(shí)體幾何模型的同時(shí),也以較大的線寬構(gòu)建對(duì)應(yīng)的框架幾何模型。例如對(duì)于床身左邊的方塊,其主要代碼如下:

        glutSolidCube(size_bed_left_box;//實(shí)體模型

        glDisable(GL_LIGHTING;//取消光照

        glColor3f(0.0,0.0,1.0;//設(shè)置為藍(lán)色

        glLineWidth(2.0;//增加線寬

        glutWireCube(size_bed_left_box;//線框模型

        glLineWidth(1.0;//恢復(fù)線寬

        glEnable(GL_LIGHTING;//打開光照

        6 結(jié) 語

        直接利用OpenGL進(jìn)行幾何建模具有模型容量小、真實(shí)感強(qiáng)的優(yōu)點(diǎn),說明這一方法適應(yīng)于機(jī)床加工虛擬仿真“模型簡化”和“模型重用”的特點(diǎn)。在此基礎(chǔ)上建立車床的三維幾何模型,為進(jìn)一步研究機(jī)床加工幾何仿真和物理仿真提供一個(gè)較好的基礎(chǔ)。

        參 考 文 獻(xiàn)

        [1]Dave Shreiner,Mason Woo,Jackie Neider.OpenGL 編程指南[M].4版.鄧鄭祥,譯.北京:人民郵電出版社,2005.

        [2]姜曉彤,趙正旭.基于OpenGL 技術(shù)的數(shù)控車床虛擬仿真系統(tǒng)研究[J].?dāng)?shù)控技術(shù),2007(1:90-92.

        [3]鄔再新,程萍,惠相君.基于OpenGL的數(shù)控車削動(dòng)態(tài)仿真過程及圖形顯示[J].機(jī)械設(shè)計(jì)與制造,2007(2:98-99.

        [4]朱軍.基于OpenGL的數(shù)控仿真系統(tǒng)研究與開發(fā)[D].南京:南京理工大學(xué),2006.

        [5]黃潔,杜平安,廖偉智.切削加工過程的仿真方法研究與實(shí)現(xiàn)[J].電子科技大學(xué)學(xué)報(bào),2007,36(2:298-301.

        [6]張登霞,陳剛,沙琳.OpenGL 在數(shù)控加工仿真系統(tǒng)中的應(yīng)用[J].山東理工大學(xué)學(xué)報(bào):自然科學(xué)版,2007,21(1):105-107.

        [7]姜曉彤,趙正旭.基于OpenGL技術(shù)的數(shù)控車床虛擬仿真系統(tǒng)研究[J].現(xiàn)代電子技術(shù),2007,30(1:90-92.

        波多野结衣免费一区视频| 日韩av无码午夜福利电影| 亚洲中国美女精品久久久| 亚洲中文字幕免费精品| 人成综合视频在线播放| www射我里面在线观看| 中文字幕人妻av一区二区| 无码之国产精品网址蜜芽| 亚洲AV日韩AV高潮喷潮无码| 新视觉亚洲三区二区一区理伦| 日本a片大尺度高潮无码| 久久精品黄aa片一区二区三区| 在线视频一区色| 加勒比东京热久久综合| 亚洲色图在线免费视频| 久久久久久久亚洲av无码| 丰满老熟妇好大bbbbb| 国产在线观看入口| 无码av一区在线观看| 亚洲一区日本一区二区| 久亚洲一线产区二线产区三线麻豆| 国产一区av男人天堂| 东京热人妻无码一区二区av| 99热在线精品播放| 精品女同一区二区三区在线播放器| 在线观看亚洲第一黄片| 免费人成再在线观看视频| 亚洲春色AV无码专区在线播放| 亚洲中文字幕免费精品| 免费国产黄网站在线观看视频| 少妇被爽到高潮动态图| 亚洲男同帅gay片在线观看| 无遮高潮国产免费观看韩国 | 国产在线视频国产永久视频| 视频女同久久久一区二区三区| 日本女优中文字幕有码| 日韩经典午夜福利发布| a亚洲va欧美va国产综合| 国产成人综合久久久久久| 在线视频免费自拍亚洲| 亚洲日韩精品无码专区网址|