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