原創(chuàng)|其它|編輯:郝浩|2012-09-03 15:17:03.000|閱讀 2179 次
概述:用HOOPS做開發(fā)也有段時間了,也曾去北京的一家做虛擬現(xiàn)實的公司做過短期的相關(guān)技術(shù)交流,覺得有必要利用暑假回家休息這段時間來做些總結(jié)。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
用HOOPS做開發(fā)也有段時間了,也曾去北京的一家做虛擬現(xiàn)實的公司做過短期的相關(guān)技術(shù)交流,覺得有必要利用暑假回家休息這段時間來做些總結(jié)。
HOOPS介紹
HOOPS是一個功能齊全性能優(yōu)良的3D可視化開發(fā)套件。追述其歷史,可發(fā)現(xiàn)一條常見的近乎模板式的從學(xué)術(shù)到工業(yè)的產(chǎn)品化之路。HOOPS誕生于上世紀(jì)八十年代康奈爾大學(xué)的CAD實驗室中,主要用于學(xué)術(shù)研究。之后,由于預(yù)見到其在工業(yè)上巨大的商業(yè)價值,Ithaca軟件公司成立,致力于商業(yè)化運作HOOPS。期間,有不少公司開始采用它進(jìn)行CAD/CAM/CAE方面的開發(fā),取得了不錯的效果。1993年,CAD界大佬奧特克公司收購了Ithaca,HOOPS也隨即成為其旗下的一個產(chǎn)品。1996年,HOOPS部門又從奧特克分離出來專門成立了一家公司,叫做,繼續(xù)開發(fā)及推廣HOOPS技術(shù)至今。
HOOPS和ACIS的結(jié)合
一般我們在用HOOPS開發(fā)的時候,通常會集成一個幾何造型內(nèi)核,最常見的就是ACIS。ACIS原先是劍橋大學(xué)的幾個研究人員根據(jù)其研究成果編寫出的一個具體實現(xiàn),然后成立了一家叫Spatial的公司專門運營這個幾何造型內(nèi)核。后來,Spatial被CAD界的另一個大佬法國的達(dá)索系統(tǒng)公司收購。HOOPS作為一個前端可視化開發(fā)框架,和幾何造型內(nèi)核的關(guān)系就像我們的GUI和操作系統(tǒng)內(nèi)核的關(guān)系一樣,一個負(fù)責(zé)具體的圖形圖像的顯示以及和用戶的交互,另一個則專注于核心的算法處理(看不見摸不著的)。HOOPS和ACIS結(jié)合的如此之好,以至于Spatial公司后來買下了HOOPS和ACIS互操作的那個模塊,也就是HOOPS ACIS Bridge,在很多國家和地區(qū),Spatial甚至負(fù)責(zé)HOOPS的銷售工作,通常的做法是將ACIS和HOOPS捆綁銷售。
這個系列文章我主要講HOOPS的相關(guān)東西,ACIS的可能會順帶提一些。我還在考慮是否會另外再寫一些文章專門介紹ACIS的相關(guān)知識,主要是看有沒有那個時間。說實話,HOOPS的東西實在太多,我所了解的也許只有其十之一二,還望感興趣或者比我了解的人多加探討和批評。
HOOPS的安裝部署
HOOPS的安裝較為簡單,通常有兩種方式,一種是直接通過其exe的安裝文件安裝,第二種是解壓文件至磁盤。兩種方式?jīng)]什么不同,只不過exe的方式會在安裝過程中自動添加系統(tǒng)的環(huán)境變量,省去了我們的一步操作。我手頭有的是一個壓縮包HOOPS,版本為19.19,ACIS版本為R23,另外相關(guān)平臺信息為:VS2010 SP1,Windows 7 x86。一般來說,我不太喜歡使用舊版本的東西,除非需要跟別人已經(jīng)做好的東西做兼容。所以,寫文章的時候,我所用的軟件套件是我所能夠得到的最新版本。
解壓HOOPS之后,我們手動添加環(huán)境變量HOOPS_INSTALL_DIR,變量值為我們解壓HOOPS的磁盤絕對路徑。若安裝了ACIS,則我們還需添加環(huán)境變量A3DT為ACIS安裝目錄的絕對路徑。HOOPS下載的時候無所謂是VS2008還是VS2010的,兩者都可以,因為我們可以在其目錄里發(fā)現(xiàn)2008和2010的solution文件。
打開hoops_3df_vc10.sln文件,首先需要做一些清理,然后我們可以按F7讓整個工程自動編譯,也可以手動地只編譯acishoopspartviewer和hoopspartviewer這兩個工程。在編譯這兩個時會在鏈接的時候缺少某些庫,然后單獨再去編譯那些庫。我推薦第二種手動的方法,原因是它只編譯我們需要的模塊,編譯后的整個項目會小得多,另外你可以更清晰地對HOOPS的整個架構(gòu)有個了解。
若安裝了ACIS,在編譯acishoopspartviewer的時候需要注意的是,該工程會自動地加載ACIS安裝目錄里面的src/ha_bridge文件夾中的項目。原因很簡單,該bridge工程就是用于HOOPS和ACIS之間的數(shù)據(jù)通信的,由于兩者畢竟是不同的產(chǎn)品,所以ACIS在發(fā)布的時候不可能知道具體的HOOPS是何種版本。因此HOOPS在編譯的時候就會去查找ACIS的安裝目錄,然后編譯這個bridge,這樣,生成的bridge才能正確連接當(dāng)前安裝的兩個版本的ACIS和HOOPS。不過發(fā)現(xiàn)R23的ACIS的bridge有個問題,就是它編譯生成的新lib庫文件以及dll文件是在ha_bridge目錄中的bin文件夾中,沒有拷貝到ACIS根目錄的bin和lib文件夾;而HOOPS在加載完bridge之后,拷貝的卻是ACIS根目錄的bin文件夾中的SpaHBridge.dll,因此雖然生成了正確的bridge,可是最終拷貝到HOOPS的bin文件夾中的卻是之前已有的,所以還是會造成運行時錯誤(如果沒錯,那就是你運氣好,因為ACIS發(fā)布的時候,發(fā)布者使用的HOOPS版本跟你的一樣)。所以,在編譯一次之后,我們需要手動地將ha_bridge的bin文件夾中的lib和dll文件拷貝到ACIS根目錄的相應(yīng)位置,然后再編譯一遍acishoopspartviewer,此時我們在HOOPS的bin/nt_i386_vc10d文件夾中可以看到時間戳為剛剛編譯的SpaHBridge.dll的文件了。
HOOPS的編譯成功與否以能否成功運行acishoopspartviewer和hoopspartviewer這兩個程序為準(zhǔn)。acishoopspartviewer不單單需要能夠運行起來,還需要能夠成功加載ACIS的sat模型文件。若程序能跑起來,但是加載sat時出錯,則可以肯定的說是ha_bridge這個模塊沒有編譯成功(或者你沒有按照我上面說的那樣拷貝)。
編譯之后,為了能夠在VS2010的工程向?qū)е惺褂肏OOPS向?qū)В覀儗emo\mfc\hoops_appwizard\vcprojects_NET2010文件夾中的三個文件拷貝到VS2010安裝目錄的VC\vcprojects文件夾中,然后修改HOOPSAppWiz.vsz文件,將ABSOLUTE_PATH后面的路徑改成HOOPS安裝的路徑加上demo\mfc\hoops_appwizard\VCWizards\HOOPSAppWiz_NET2010。然后運行VS2010新建一個工程看看,是不是多了一個HOOPS 3D Application的選項?
下一篇文章想寫寫hoops的基本概念和基本數(shù)據(jù)結(jié)構(gòu)。
另見:《HOOPS 3D可視化模塊介紹》
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)