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