程序設計階段1)建立project.在VisualC編譯環境中,利用AppWizard建立一個基于MFC的單文檔應用程序。2)加入opengl32lib、glaux.lib、glu32.lib庫。3)修改View類的頭文件。在View類的頭文件中加入以下幾行:includeglgl.hincludeglglu.hincludeglglaux.h4)先將lathe.cpp和lathe.h復制到project目錄下,然后分別將得到的axial.cpp和axial.h分別添加到SourceFiles和HeaderFiles中<4>。
在Doc.cpp和View.cpp文件中添加includelathe.h.在View.cpp文件中添加像素格式設定函數、建立函數模型函數、設置光源函數、選擇材質函數、渲染函數等,這些函數對于每一導入OpenGL中的相同格式的文件基本相同。
通過VC添加函數向導來添加鼠標消息函數,實現交互動畫的控制。在View.h文件中加上需要的各種變量后,進行調試。在調試過程中會遇到下面的錯誤:unexpectedendoffilewhilelookingforprecompiledheaderdirectiveErrorexecutingcl.exe.當雙擊錯誤的時候就會指向axial.cpp文件的尾部。添加:includestdafx.h.重新編譯的時候錯誤就會消失。
編譯通過后,屏幕上沒有任何顯示。通過改變glSaclef和glTranslatef兩個函數的參數和順序,在裁剪區域內顯示出導入的圖形。OpenGL的深度坐標是指向顯示器的內部為正方向,其他兩個方向向上和向右為正方向。認識了這一點會很容易找到導入的物體。在軟件制作的建模階段,將3DSMAX系統軸線坐標原點與物體的中心重合。
當顯示模型后,也會遇到一個常見的問題,即3DSMAX中設置的顏色調試后沒有顯示出正確的色彩。直接在axial.cpp找到在3DSMAX中渲染時,在材質編輯對話框中賦予的材料的名字。材料由一個一維數組表示,數組有四個成員,每個成員有六項參數。
在axial.h中定義它的數據結構為:typedefstruct{floatambient;floatdiffuse;floatspecular;floatemission;floatalpha;inttexture;}MaterialDef;對上面的參數進行修改,就可以得到較理想的渲染效果。
注意的關鍵點坐標統一建立模型的時候所使用的軟件坐標與OpenGL坐標統一,顯示的時候就不會出現找不到顯示物體的現象。單位統一在建立模型的時候所使用軟件的單位與OpenGL單位統一,在窗口就可以得到適當大小的模型。函數順序glTranslatef和glRotatef兩個函數在程序中的先后順序會影響對鼠標的控制。在鼠標控制物體旋轉的時候,有時候會出現物體突然消失的現象,即因為沒有在程序設計時注意平移變化和旋轉變化的順序。
對glTranslatef和glRotatef兩個函數進行修改,可以達到旋轉中心和物體的中心重合的目的。在教學的演示過程中,將復雜模型的各個復雜面展現在屏幕上,提高了教學軟件對指定部位的顯示能力。
參數設置對話框實現1)在VC的基類CDialog下繼承的一個對話框類,用來做輸入參數的控制面板。2)在菜單中添加一個消息傳遞函數,此消息傳遞函數要在View類中。3)為對話框和菜單設置正確的ID,同時在資源文件的頭文件中定義此ID.在消息傳遞時連接菜單的ID.
結語3DSMAX模型轉化到OpenGL中有很多方法,中間的轉換軟件也有很多,如常用的3DWin和3DExploration是目前用得*多的兩個軟件。可以將3DSMAX輸出的。ase格式、max格式還有其他軟件如CAD輸出的dwg格式、dxf格式等十多種格式轉為OpenGL格式。現在部分企業和學校也利用VEGACREATOR結合用于開發交互式視景仿真系統。利用3D軟件很方便建立需要的模型,解決了在程序中建立模型的復雜過程。因此,也可以用3DSMAX建立比較自由的立體,如人物、動物等,再轉化到OpenGL中制作交互動畫,從而設計出生動的交互動畫和更完善的輔助虛擬制造。本文通過OpneGL強大的三維顯示效果,實現了對機床的三維建模和對輸出虛擬產品的三維模型渲染。
目前,只是實現了G代碼到虛擬產品,今后的研究方向將逐步實現從計算機和機床的通訊接口設計,完成從虛擬代碼到真實產品的過程,并加入虛擬制造中機床的精度和刀具磨損對產品精度的影響。