摘 要:隨著經(jīng)濟不斷發(fā)展,VC++在很多領域中得到了廣泛應用,同時,3DMAX SDK和OpenGL的聯(lián)合運用,使求實體之間的差這個問題得到了更有效的解決,使編程效率得到不斷提高,具有重要實踐意義。本文就3DMAX SDK和OpenGL選用的實現(xiàn)思路和實體之間求差的實現(xiàn)思路進行闡述,提出3DMAX SDK和OpenGL選用應注意的問題,以為VC++框架下3DMAX SDK和OpenGL實現(xiàn)建模提供可參考依據(jù)。
關鍵詞:VC++;3DMAX;SDK;OpenGL;建模;思路
中圖分類號:TP393.07
隨著經(jīng)濟的飛速發(fā)展,科學的不斷進步,VC++技術在很多領域都得到了非常廣泛的運用,因此,如何高效的將VC++進行運用,是當代VC++技術加以發(fā)展和推廣中存在的一個重要問題。3DMAX是功能強大的三維計算機應用軟件,在當今世界上是應用最為廣泛的三維建模、動畫以及渲染軟件。3DMAX在影視片頭、廣告設計、電影特效、動畫制作、游戲畫面的開發(fā)以及建筑領域都得到了廣泛的應用和推廣。在計算機領域中,程序人員在三維圖形的編譯過程中,3DMAX SDK中存在幾何圖形,為編程人員提供了豐富的參考資料,大大的提高了程序人員的工作效率。另一方面,在三維圖形的編程中,程序員比較常用的函數(shù)是OpenGL,它具有非常強大的功能,可以使三維場景更加豐富多彩和逼真。因此,在VC++框架下使用3DMAX SDK和OpenGL進行建模,可以更加高效。
1 3DMAX SDK和OpenGL選用的實現(xiàn)思路
根據(jù)3DMAX SDK和OpenGL的實際應用情況來看,VC++框架下實現(xiàn)建模的思路,主要有如下幾個方面:
1.1 通過采用3DMAX SDK中的3DMAX光盤,將3DMAX SDK放置到計算機中,為下一步操作做好準備工作。
1.2 增加3DMAX SDK的頭文件和動態(tài)鏈接庫。首先,增加頭文件需要在Microsoft Developer Studio狀態(tài)下,打開菜單Tools中的Options選項,通過Options對話框進入到Directories選項中,以在Directories的列表框中加入“C:\3D MAX SDK/INCLUDE”,從而形成頭文件。然后,增加動態(tài)鏈接庫。一般情況下,有兩種方式可以完成操作:一種是,在Windows/system狀態(tài)下進行動態(tài)鏈接庫的添加,可以使這些動態(tài)鏈接庫被所有的程序共享;另一種是,在某個文件的Debug中增加動態(tài)鏈接庫,因此,只能在這個制定的文件中使用這個動態(tài)鏈接庫。
1.3 采用Microsoft Foundation Classes中的應用框架,建立一個Windows用戶界面。在建立Windows用戶界面前,要先使用Microsoft Foundation Classes生成Windows應用軟件的相關基本源文件,再用ClassWizard建立應用程序的類、消息處理和數(shù)據(jù)處理或者定義控件的屬性、方法和事件等,最后把相關功能添加到應用程序的類中,以為建模構(gòu)建一個合理的聯(lián)系平臺。例如:將所建立的工程名稱定義為“My4d”,那么My4d程序的主要類和主要源文件有如下幾個方面:
應用程序類是CMy4dApp,主要作用是實現(xiàn)應用程序所有對象的控制,使應用程序的初始化工作和最后的清除工作得以實現(xiàn)。
StdAfx.h和StdAfx.cpp的作用是生成預編譯的頭文件和預編譯類型文件。
文檔類為CMy4dDoc,主要用來存放應用程序的相關數(shù)據(jù),同時保存和裝載有關文件。
Resource.h是應用程序中的標準頭文件,包括了所有資源符號的定義。
主邊框窗口類是CMainFrame,是用來管理應用程序窗口,顯示菜單欄、標題欄、狀態(tài)欄、工具欄、控制菜單和控制按鈕等。
視圖類是CMy4dView,是指定用戶打開文檔數(shù)據(jù)的方式和進行交互的方式。
Res\My4d.ico 包含了應用程序圖標的圖標文件。一般情況下,應用程序圖標都在資源文件My4d.rc中存在。
1.4 確保頭文件和函數(shù)庫文件存在。VC++框架下3DMAX SDK和OpenGL實現(xiàn)建模,需要確保應用程序中有頭文件和函數(shù)庫存在,因此,必須在StdAfx.h中添加如下幾種語句:#include“max.h、#include
1.5 在實際操作中,想要進入OpenGL和3DMAX SDK函數(shù),就必須把一些含有重要信息的函數(shù)添加到工程中,幫助程序利用連接器訪問動態(tài)連接庫函數(shù)和表示3D MAX SDK和OpenGL中會用到的庫函數(shù)。目前,這些函數(shù)主要包括Patch.lib,OpenGL32.lib,Mesh.lib和Core.lib等文件。
2 實體之間求差的實現(xiàn)思路
一般差的布爾運算是在3DMAX SD的函數(shù)CalcBoolop中,而mesh1與mesh2布爾運算后的網(wǎng)格實體是存放在Mesh mesh中,因此,Mesh mesh1,Mesh mesh2是布爾運算開始前的兩個實體數(shù)據(jù)結(jié)構(gòu)。同時,完成布爾運算交、并和差操作指令的是Intop,其中,實體間的并運算為MESHBOOL-UNION;實體間的交運算為MESHBOOL-INTERSECTION;實體間的差運算為MESHBOOL-DIFFERENCE。
3 3DMAX SDK和OpenGL選用應注意的問題
在實際編程中,各種語法、結(jié)構(gòu)、數(shù)據(jù)類型轉(zhuǎn)換、使用變量定義等,都可能造成結(jié)果的錯誤,這些錯誤的一般解決方法是通過提示來完成查找和核對;在語句沒有錯誤的情況下,如果Linking出現(xiàn)錯誤,就必須通過添加相應的函數(shù)庫來進行改正;在Compiling和Linking都沒有問題的情況下,如果屏幕上出現(xiàn)“與系統(tǒng)相連的設備不能正常運轉(zhuǎn)”的字樣,就必須通過添加相應的動態(tài)連接庫來進行改正,才能保證編程的完全正確。
4 結(jié)束語
綜上所述,在VC++框架下使用3DMAX SDK和OpenGL進行建模,結(jié)合OpenGL三維場景的豐富逼真的畫面效果和3DMAX SDK中存在的幾何圖形,編程人員在進行編譯的時候有了更多的參考資料,在很大的程度上提高了編程人員的編譯效率。但是在VC++框架下使用3DMAX SDK和OpenGL進行建模,應當要注意正確的選取相應函數(shù)和連接,才能保證編程搭配的正確,從而才能夠保證提高編程的效率??傊?,在VC++框架下使用3DMAX SDK和OpenGL進行建模,能夠給編程人員帶來諸多方便,這樣的建模方式應該得到廣泛的應用和推廣。
參考文獻:
[1]梁婧,姚紅革.基于OpenGL的三維建??梢暬浖_發(fā)[J].信息通信,2013(09):83.
[2]趙宏中,周鵬.基于VC-(++)和OpenGL實現(xiàn)3DMax模型交互瀏覽[J].軟件導刊,2008(02):73-74.
[3]關丹丹,朱耀林,林靜.基于OpenGL的雕塑建模與可視化仿真[J].計算機與數(shù)字工程,2012(07):115-117.
[4]黃志鋒,李笑,秦輝明.基于Opengl和SolidWorks的遙操作工程機器人建模與仿真[J].機械設計與制造,2012(12):157-159.
作者簡介:熊國良(1982—)男,黑龍江哈爾濱人,講師,本科,研究方向:動畫創(chuàng)作;馬立麗(1977-)女,黑龍江哈爾濱人,副教授,本科,研究方向:計算機程序語言。
作者單位:哈爾濱科學技術職業(yè)學院,哈爾濱 150300