HOOPS基礎(chǔ)培訓(xùn)課課件_第1頁(yè)
HOOPS基礎(chǔ)培訓(xùn)課課件_第2頁(yè)
HOOPS基礎(chǔ)培訓(xùn)課課件_第3頁(yè)
HOOPS基礎(chǔ)培訓(xùn)課課件_第4頁(yè)
HOOPS基礎(chǔ)培訓(xùn)課課件_第5頁(yè)
已閱讀5頁(yè),還剩147頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡(jiǎn)介1HOOPS3dGS基礎(chǔ)1HOOPS3dGSAPI1HOOPSMVO1幾何、屬性、坐標(biāo)2幾何體的編輯2選擇與高亮3大模型顯示3動(dòng)畫3HOOPSStream3HOOPS/ACISBridge3HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡(jiǎn)介1HOOPS3dGHOOPS簡(jiǎn)介TechSoftAmerica(TSA)簡(jiǎn)介

SPATIAL簡(jiǎn)介

HOOPS產(chǎn)品介紹什么是HSF?

HOOPS編程的重點(diǎn)

HOOPS組件簡(jiǎn)介

HOOPS3dGS簡(jiǎn)介

HOOPSMVO簡(jiǎn)介

HOOPSStream簡(jiǎn)介

HOOPSGMBridge簡(jiǎn)介使用組件的示例HOOPS簡(jiǎn)介TechSoftAmerica(TSA)TechSoftAmerica(TSA)簡(jiǎn)介1985年,HOOPS的研究在Cornell大學(xué)展開(kāi)1987年,Ithaca軟件成立HOOPS技術(shù)商業(yè)化1993您年,Ithaca軟件從AutoDesk購(gòu)買了HOOPS,開(kāi)發(fā)出Heidi(AutoCAD,3DStudioMAX的渲染引擎)1996年,TSA成立

銷售額和利潤(rùn)持續(xù)增長(zhǎng),超過(guò)175OEM客戶

CAD、CAM、CFD、FEA、MiningEngineeringTechSoftAmerica(TSA)簡(jiǎn)介1985年Spatial簡(jiǎn)介1986年,Spatial作為一個(gè)CAM軟件/硬件公司成立

最初的名稱是:SpatialTechnology2000年11月,DassaultSystemes收購(gòu)了SpatialTechnology,現(xiàn)在Spatial完全歸DassaultSystemes所有2001年2月,Spatial與TechSoftAmerica建立了合作關(guān)系2003年5月,Spatial加強(qiáng)了對(duì)HOOPS的集成

Spatial提供HOOPSACISBridgeSpatial簡(jiǎn)介1986年,Spatial作為一個(gè)CAM軟HOOPS的產(chǎn)品介紹HOOPS3dAFHOOPS的核心產(chǎn)品HOOPSStream工具包介紹可以和HOOPSNetServer連接HOOPSStream工具包讀寫HSF文件(顯示數(shù)據(jù)),高壓縮比,網(wǎng)絡(luò)顯示HOOPSNetServerClient/Server組件協(xié)同功能基于需求地Streaming功能HOOPS的產(chǎn)品介紹HOOPS3dAF什么是HSF?HSF指的是HOOPSStreamFormat處理HOOPS擁有的顯示數(shù)據(jù)高級(jí)動(dòng)畫功能大模型的快速顯示高壓縮比的文件存儲(chǔ)指出流化處理支持靈活的圖形數(shù)據(jù)交換CATIAV5R11,SolidWorks2003后續(xù)的版本中都支持HSF文件導(dǎo)出OpenHSF組織提供讀寫工具包,免費(fèi)瀏覽器,免費(fèi)的ActiveX插件什么是HSF?HSF指的是HOOPSStreamFormHOOPS編程要點(diǎn)理解各個(gè)組件中的不同點(diǎn)HOOPS/3dGSHOOPS/MVOHOOPS/MFCHOOPS/StreamHOOPS/GMBridge圖形數(shù)據(jù)的設(shè)計(jì)數(shù)據(jù)量,系統(tǒng)存儲(chǔ)量和性能之間的平衡依賴于程序的需求字符串處理Strcmp、strcat、wcsstr……許多函數(shù)都需要和字符串打交道

HC_Set_Color(“face=red,lines=blue”);HOOPS編程要點(diǎn)理解各個(gè)組件中的不同點(diǎn)HOOPS組件簡(jiǎn)介HOOPS3dGSHOOPS/StreamHOOPS/MVOHOOPS/GUIHOOPS/GMBridgeApplicationHOOPS組件簡(jiǎn)介HOOPS3dGSHOOPS/StreHOOPS3dGS簡(jiǎn)介場(chǎng)景圖API使用HOOPS的基本組件用C語(yǔ)言實(shí)現(xiàn)。APIs可以用C,C++,Fortran,Java來(lái)調(diào)用提供了大量的圖形相關(guān)的函數(shù)圖形信息的創(chuàng)建,管理,查詢和編輯使用靈活方便支持主流的操作系統(tǒng)UNIXs,Linux和Windows操作系統(tǒng)間的源代碼都是共同的支持多種輸出設(shè)備更高級(jí)別的圖形內(nèi)核OpenGL,Direct3D,X11,WinGDI,PostScipt,HPGL2,CGM3等HOOPS3dGS簡(jiǎn)介場(chǎng)景圖APIHOOPSMVO簡(jiǎn)介在應(yīng)用層上的C++類庫(kù)HOOPS3dGS在內(nèi)部被使用實(shí)現(xiàn)了3D應(yīng)用程序框架的功能模型:文件的輸入輸出,模型的管理顯示:文字和相機(jī)的管理操作:對(duì)象操作的管理支持主流操作系統(tǒng)UNIX、Linux和Windows操作系統(tǒng)間的源代碼都是共同的提供源代碼%HOOPS%/Dev_Tools/hoops_mvo/sourceHOOPSMVO簡(jiǎn)介在應(yīng)用層上的C++類庫(kù)HOOPSMFC簡(jiǎn)介從GUI工具包繼承MFC、ATL、Qt、Motif、Java/Swing封裝了所需要的操作與窗口的連接,獲得窗口句柄和窗口的ID號(hào)將鼠標(biāo)和鍵盤事件映射到了HOOPS/MVO封裝了剪貼板,打印機(jī)和打印機(jī)預(yù)覽提供源代碼%HOOPS%/Dev_Tools/hoops_mfc/sourceHOOPSMFC簡(jiǎn)介從GUI工具包繼承HOOPSStream簡(jiǎn)介支持HSF的讀寫功能數(shù)據(jù)是高度壓縮的,大大縮短傳輸時(shí)間數(shù)據(jù)的分類,流化處理支持2D和3D支持3dGS中所有的幾何體提供源代碼和說(shuō)明文件%HOOPS%/Dev_Tools/hoops_stream/source格式易于擴(kuò)展,可以獨(dú)立于3dAF單獨(dú)使用HOOPSStream簡(jiǎn)介支持HSF的讀寫功能HOOPSGMBridge簡(jiǎn)介連接HOOPS與建模內(nèi)核(如ACIS)封裝了連接模型與HOOPS幾何的函數(shù)將模型映射到HOOPS幾何讀寫SAT文件選擇與高亮顯示的處理當(dāng)創(chuàng)建和更新模型的時(shí)候,圖形數(shù)據(jù)也被創(chuàng)建和更新HOOPSACISBridge是ACIS組件的一部分提供源代碼HOOPSGMBridge簡(jiǎn)介連接HOOPS與建模內(nèi)核(HOOPS文檔HOOPS文件夾結(jié)構(gòu)HOOPS在線幫助HOOPS3dGS參考HOOPS3dGS函數(shù)模板HOOPS示例源代碼HOOPS支持工具HOOPS文檔HOOPS文件夾結(jié)構(gòu)HOOPS文件夾結(jié)構(gòu)Bin—nt_i386 可執(zhí)行文件和dll文件Datasets 示例數(shù)據(jù)文件Demo 每個(gè)GUI工具包的示例代碼Dev_Tools HOOPS庫(kù)文件&源代碼Docs 在線幫助Fonts 字體文件HOOPS文件夾結(jié)構(gòu)Bin—nt_i386 可執(zhí)行文件和dHOOPS在線幫助$(HOOPS)\index.html/documentation/index.htmlHOOPS在線幫助$(HOOPS)\index.htmlHOOPS3dGS參考說(shuō)明3dGS函數(shù)IM函數(shù)舊的函數(shù)系統(tǒng)啟動(dòng)HOOPS3dGS參考說(shuō)明3dGS函數(shù)HOOPS3dGS函數(shù)模板<函數(shù)名稱:>函數(shù)功能:調(diào)用序列:變量:細(xì)節(jié):注意:限制:另見(jiàn):HOOPS3dGS函數(shù)模板<函數(shù)名稱:>HOOPS示例代碼%HOOPS%/Dev_Tools/<組件名稱>/源目錄每一個(gè)組件都有源代碼當(dāng)執(zhí)行相同的函數(shù)功能時(shí),用這些源代碼作參考是很有用的用戶可以自定義并且擴(kuò)展函數(shù)%HOOPS%/demo/common/standarddirectly使用HOOPS3dGS的不同程序作一些示例測(cè)試程序是很有用的用來(lái)快速確定系統(tǒng)配置HOOPS示例代碼%HOOPS%/Dev_Tools/<組HOOPS支持的工具HOOPSPartViewer可以用來(lái)驗(yàn)證HOOPS的功能【Tools】-【TestPerformance】【Tools】-【KeyframeEditor】可以用來(lái)查詢HOOPS的數(shù)據(jù)庫(kù)【Tools】-【SegmentBrowser】在”/demo/mfc/hoopspartviewer”中提供了源代碼HOOPSASCIIMetafile將HOOPS數(shù)據(jù)庫(kù)作為一個(gè)文本文件來(lái)讀寫HOOPS支持的工具HOOPSPartViewerHOOPS3dGS函數(shù)HOOPS3dGS體系結(jié)構(gòu)圖形對(duì)象數(shù)據(jù)庫(kù)對(duì)象遍歷器HC_Update_Display渲染管道HOOPS3dGS函數(shù)HOOPS3dGS體系結(jié)構(gòu)HOOPS3dGS結(jié)構(gòu)層次圖形對(duì)象數(shù)據(jù)庫(kù)對(duì)象遍歷器渲染管道HOOPS3dGS結(jié)構(gòu)層次圖形對(duì)象數(shù)據(jù)庫(kù)圖形對(duì)象數(shù)據(jù)庫(kù)樹(shù)結(jié)構(gòu)保存所有的圖形對(duì)象被稱作為“段”的節(jié)點(diǎn)對(duì)象是在層次中進(jìn)行管理的。屬性是通過(guò)繼承來(lái)共享的保留模式圖形系統(tǒng)幾何的插入,查詢和刪除顯示次序得到優(yōu)化SegmentSegmentSegmentSegmentSegmentSegment圖形對(duì)象數(shù)據(jù)庫(kù)樹(shù)結(jié)構(gòu)SegmentSegmentSegmen對(duì)象遍歷器在對(duì)象樹(shù)中進(jìn)行遍歷通過(guò)檢查屬性找到已經(jīng)顯示的幾何將相關(guān)的信息發(fā)送給渲染管道使發(fā)送的數(shù)據(jù)量最小SegmentSegmentSegmentSegmentSegmentSegment對(duì)象遍歷器結(jié)構(gòu)化的設(shè)備接口輸入設(shè)備接口對(duì)象遍歷器在對(duì)象樹(shù)中進(jìn)行遍歷SegmentSegmentSeHC_Update_Display更新圖形數(shù)據(jù)庫(kù)

HC_Update_Display()遍歷圖形數(shù)據(jù)庫(kù)當(dāng)圖形數(shù)據(jù)庫(kù)更新的時(shí)候調(diào)用HC_Update_Display()的次數(shù)與更新的次數(shù)并不是相同的對(duì)修改后的幾何僅僅執(zhí)行最小化的更新從最后一次修改處檢查更新建立顯示列表將最小化的數(shù)據(jù)量發(fā)送給顯示設(shè)備HC_Update_Display更新圖形數(shù)據(jù)庫(kù)渲染管道使所有設(shè)備上的渲染效果達(dá)到最優(yōu)輸入設(shè)備的格式轉(zhuǎn)換是依賴于接口的圖形信息通過(guò)優(yōu)化的軟件映射層進(jìn)行傳遞連續(xù)的分解技術(shù)保證在不同的操作系統(tǒng)上的結(jié)果是相同的HOOPS設(shè)備接口(HDI)Autodesk的Heidi技術(shù)就是從HDI派生的渲染管道使所有設(shè)備上的渲染效果達(dá)到最優(yōu)HOOPS3dGS數(shù)據(jù)庫(kù)基礎(chǔ)段段操作:打開(kāi)和關(guān)閉HC_Open_SegmentHC_Close_Segment段操作:示例缺省段寫入場(chǎng)景的方法HOOPS3dGS數(shù)據(jù)庫(kù)基礎(chǔ)段段包含圖形的段幾何屬性:顏色,可見(jiàn)性,選擇功能等等子段:更低層的段段的名稱段可以進(jìn)行命名可以像文件系統(tǒng)一樣表示路徑:絕對(duì)路徑、相對(duì)路徑、通配符當(dāng)前段(激活的段)你可以在任何一個(gè)時(shí)間來(lái)處理段總存在一個(gè)激活的段激活的短以先入先出的方式壓入堆棧段包含圖形的段段操作:打開(kāi)和關(guān)閉airplanefuselagewingsjetengine1jetengine2landinggear打開(kāi)段(“airplane”)打開(kāi)段(“fuselage”)打開(kāi)段(“l(fā)andinggear”)關(guān)閉段()關(guān)閉段()打開(kāi)段(“wings”)打開(kāi)段(“jetengine1”)關(guān)閉段()打開(kāi)段(“jetengine2”)關(guān)閉段()關(guān)閉段()關(guān)閉段()段操作:打開(kāi)和關(guān)閉airplanefuselagewingsHC_Open_Segment打開(kāi)一個(gè)段

VoidHC_Open_Segment(constchar*segment)打開(kāi)一個(gè)給定名稱的段如果不存在這個(gè)特定的段則創(chuàng)建新的段建立一個(gè)段結(jié)構(gòu)將打開(kāi)的段壓入堆棧列表先入先出激活段(當(dāng)前打開(kāi)的段)HC_Open_Segment打開(kāi)一個(gè)段

VoidHC_OHC_Close_Segment關(guān)閉一個(gè)段VoidHC_Close_Segment()關(guān)閉一個(gè)激活的段從堆棧列表中獲得激活的段在打開(kāi)一個(gè)段并激活它之前該段都是被激活的HC_Close_Segment關(guān)閉一個(gè)段VoidHC_C段操作:示例airplanefuselagewingsjetengine1jetengine2landinggearHC_Open_Segment(“airplane”)

HC_Open_Segment(“fuselage”)

HC_Open_Segment(“l(fā)andinggear”)

HC_Close_Segment()

HC_Close_Segment()

HC_Open_Segment(“wings”)

HC_Open_Segment(“jetengine1”)

HC_Close_Segment()

HC_Open_Segment(“jetengine2”)

HC_Close_Segment()

HC_Close_Segment()HC_Close_Segment()段操作:示例airplanefuselagewingsjet缺省段根頂層段

樣式庫(kù)保存了通用的顯示屬性。類似于模板包含庫(kù)擁有主要的形體數(shù)據(jù)驅(qū)動(dòng)器在圖形驅(qū)動(dòng)器下生成可見(jiàn)的視圖保存各種各樣的圖形驅(qū)動(dòng)器OpenGL:“opengl”direct3D:“direct3d”WindowsGDI:“msw”“/”“stylelibrary”“driver”“direct3d”“msw”“opengl”“driver”缺省段根“/”“stylelibrary”“driver”場(chǎng)景輸入的方法在合適的驅(qū)動(dòng)器下打開(kāi)一個(gè)段將在相機(jī)范圍內(nèi)的可見(jiàn)場(chǎng)景映射到特定的設(shè)備上在驅(qū)動(dòng)器段中的段是驅(qū)動(dòng)器的實(shí)例當(dāng)打開(kāi)段的時(shí)候?qū)a(chǎn)生子段的實(shí)例/driver/opengl/window0/driver/opengl/window1場(chǎng)景輸入的方法在合適的驅(qū)動(dòng)器下打開(kāi)一個(gè)段HOOPS3dGS幾何和屬性幾何基礎(chǔ)HC_Insert_MarkerHC_Insert_Line屬性基礎(chǔ)HC_Set_ColorHC_Set_Line_WeightHC_Set_Line_PatternHC_Set_Visibility終止應(yīng)用程序的方法HOOPS庫(kù)文件練習(xí)1:Win32控制臺(tái)應(yīng)用程序HOOPS3dGS幾何和屬性幾何基礎(chǔ)幾何基礎(chǔ)處理形狀數(shù)據(jù)當(dāng)插入到數(shù)據(jù)庫(kù)后成為顯示對(duì)象主要的幾何圖元MarkerLinePolylineMeshShell幾何基礎(chǔ)處理形狀數(shù)據(jù)幾何插入幾何插入的流程打開(kāi)一個(gè)段調(diào)用API函數(shù)來(lái)插入關(guān)閉一個(gè)段對(duì)每一種幾何圖元都提供API函數(shù)在插入和移動(dòng)后都可以進(jìn)行編輯幾何插入幾何插入的流程HC_Insert_Marker插入一個(gè)標(biāo)記

voidHC_Insert_Marker(doublex,doubley,doublez)X,Y,Z坐標(biāo)最簡(jiǎn)單的幾何圖元可以作為注釋來(lái)使用當(dāng)放大和縮小的時(shí)候標(biāo)記的大小是不變的標(biāo)記得大小是朝向相機(jī)的。它并不旋轉(zhuǎn)HC_Open_Segment(“XXX”); HC_Insert_Marker(0,0,0);HC_Close_Segment();HC_Insert_Marker插入一個(gè)標(biāo)記

voidHCHC_Insert_Line插入一條線

voidHC_Insert_Line(doublexa,doubleya,doubleza,doublexb,doubleyb,doublezb)xa,ya,za:起點(diǎn)坐標(biāo)xb,yb,zb:終點(diǎn)坐標(biāo)HC_Open_Segment(“XXX”); HC_Insert_Line(0,0,0,1,1,1);HC_Close_Segment();HC_Insert_Line插入一條線屬性基礎(chǔ)屬性通常是基于段來(lái)設(shè)置的屬性定義了在場(chǎng)景中怎樣來(lái)顯示幾何體每個(gè)段都有所有屬性的值如果物體有相同的屬性,它們就應(yīng)該由相同的段來(lái)進(jìn)行管理降低段結(jié)構(gòu)的復(fù)雜程度改進(jìn)性能屬性的設(shè)置是從父段繼承得來(lái)的根段對(duì)所有的屬性都有缺省值[HOOPS/3dGSReferenceManual]-[SystemSetup]-[DefaultAttributes]屬性優(yōu)先權(quán)

局部屬性

使用類型庫(kù)的屬性

父段的屬性屬性基礎(chǔ)屬性通常是基于段來(lái)設(shè)置的屬性設(shè)置屬性設(shè)置流程打開(kāi)一個(gè)段調(diào)用設(shè)置屬性的API函數(shù)關(guān)閉一個(gè)段每一種屬性都有對(duì)應(yīng)的設(shè)置函數(shù)不指定一個(gè)類型的幾何但是指定一個(gè)類型的形體markerlineedgeface屬性設(shè)置屬性設(shè)置流程HC_Set_Color顏色設(shè)置VoidHC_Set_Color(constchar*color_spec)顏色說(shuō)明:字符串指定一個(gè)形體類型和顏色“edges”-包含polygons,shells和meshes“faces”-包含shells和meshes“markers”-單獨(dú)的點(diǎn)HC_Open_Segment(“XXX”); HC_Set_Color(“faces=red,line=white”);HC_Close_Segment();HC_Set_Color顏色設(shè)置HC_Set_Line_Weight //設(shè)置線寬寬度:缺省線寬是場(chǎng)景的0.1%HC_Set_Line_Pattern //設(shè)置線型線型:字符串來(lái)定義線型:“實(shí)線”,“虛線”,“點(diǎn)劃線”,“雙點(diǎn)劃線”HC_Set_Visibility //設(shè)置對(duì)象的可見(jiàn)性和有效性List:字符串定義選項(xiàng)edges、faces、markers終止應(yīng)用程序的方法釋放應(yīng)用程序使用的數(shù)據(jù)終止HOOPSHC_Exit_Program()一些編譯器和操作系統(tǒng)并不能完成該操作釋放HOOPS分配的內(nèi)存HC_Reset_System()HC_Reset_System()在HC_Exit_Program()中調(diào)用HC_Set_Line_Weight //設(shè)置線寬HOOPS庫(kù)文件HOOPS庫(kù)文件大小通常比較小顯存考慮是否使用Z-緩沖區(qū)HOOPS使用16位Z-緩沖區(qū)窗口中的每一個(gè)象素都有16位內(nèi)存HOOPS庫(kù)文件HOOPS庫(kù)文件大小練習(xí)1:Win32控制臺(tái)應(yīng)用程序在控制臺(tái)程序中繪制飛機(jī)示例模型參照“Win32控制臺(tái)應(yīng)用程序”文檔飛機(jī)幾何體和顏色設(shè)置系統(tǒng)環(huán)境變量練習(xí)1:Win32控制臺(tái)應(yīng)用程序在控制臺(tái)程序中繪制飛機(jī)示例模HOOPS3dGSAPIHOOPS3dGSAPI命名規(guī)則參數(shù)規(guī)則段名稱的字符串段的鍵值別名HOOPS3dGSAPIHOOPS3dGSAPI命HOOPS3dGSAPI命名規(guī)則對(duì)每個(gè)編譯器來(lái)說(shuō)頭部名稱是不同的HC_是作為C/C++的頭部名稱來(lái)使用HC_<動(dòng)詞>_<名詞>HC_Set_ColorHC_Insert_CircleHC_Define_Colormap提供相關(guān)的函數(shù)HC_KXXX()返回一個(gè)段或幾何圖元的鍵值HC_QXXX()內(nèi)部實(shí)現(xiàn)打開(kāi)和關(guān)閉指定段HC_QKXXX()內(nèi)部實(shí)現(xiàn)打開(kāi)和關(guān)閉指定段返回一個(gè)段的鍵值HOOPS3dGSAPI命名規(guī)則對(duì)每個(gè)編譯器來(lái)說(shuō)頭部名稱參數(shù)規(guī)則字符串可以包含特殊文字支持下劃線和空格缺省情況下不區(qū)分大小寫字母編譯器不能發(fā)現(xiàn)錯(cuò)誤的字符串在運(yùn)行的時(shí)候HOOPS會(huì)顯示錯(cuò)誤消息參數(shù)規(guī)則字符串可以包含特殊文字段名稱字符串段的名稱中可以包含路徑絕對(duì)路徑“/includelibrary/model/airplane”相對(duì)路徑“../../fuselage/landinggear”通配符“*”其他“.”當(dāng)前段“..”上一層段“…”進(jìn)行遞歸段名稱字符串段的名稱中可以包含路徑段的鍵值段和幾何圖元都通過(guò)鍵值(HC_KEY)來(lái)管理HC_KEY的類型與長(zhǎng)整數(shù)是相同的依賴于系統(tǒng)的結(jié)構(gòu)通常是32位或者是64位有時(shí)它比使用字符串名稱更加方便將3dGS的對(duì)象映射到應(yīng)用程序?qū)ο蟛僮髁硪粋€(gè)結(jié)構(gòu)HC_KEYkey;Key=HC_KOpen_Segment(“”);段的鍵值段和幾何圖元都通過(guò)鍵值(HC_KEY)來(lái)管理別名路徑表示成“?”+字符串類似于C語(yǔ)言中的#define缺省的段別名“?Picture”“?StyleLibrary”“?Dirver”HC_Define_Alias(“?Modal”,”/includelibrary/model_1”)別名路徑表示成“?”+字符串?dāng)?shù)據(jù)輸入輸出HOOPS標(biāo)準(zhǔn)文件格式讀HMF文件寫HMF文件實(shí)例化包含HC_Include_SegmentHC_Style_Segment造型矩陣練習(xí)3:數(shù)據(jù)輸入輸出和實(shí)例化數(shù)據(jù)輸入輸出HOOPS標(biāo)準(zhǔn)文件格式HOOPS標(biāo)準(zhǔn)文件格式HMF:HOOPSMetaFile文本格式,可以用于調(diào)試HSF:HOOPS流文件被壓縮的流化處理OpenHSF動(dòng)畫數(shù)據(jù)用戶數(shù)據(jù)HOOPS標(biāo)準(zhǔn)文件格式HMF:HOOPSMetaFileHC_Read_Metafile讀HMF文件voidHC_Read_Metafile(constchar*file,

constchar*segment,

constchar*options)HC_Open_Segment(“/includelibrary/model”); HC_Read_Metafile(“data/airplane.hmf”,”.”,””);HC_Close_Segment();HC_Read_Metafile讀HMF文件HC_Write_Metafile寫HMF文件voidHC_Write_Metafile(constchar*segment,

constchar*file,

constchar*options)HC_Open_Segment(“/includelibrary/model0”); HC_Read_Metafile(“.”,”data/airplane.hmf”,””);HC_Close_Segment();HC_Write_Metafile寫HMF文件實(shí)例化支持幾何和屬性的實(shí)例化創(chuàng)建實(shí)例的段,包含幾何和屬性這些段是通過(guò)場(chǎng)景圖來(lái)實(shí)例化的可以縮小場(chǎng)景圖使之成為一個(gè)模塊“airplane”“fuselage”“jetengine1”“jetengine2”“l(fā)andinggear”“wrings”“includelibrary”“engine”“blades”“wheels”實(shí)例化支持幾何和屬性的實(shí)例化“airplane”“fuselHC_Include_Segment段包含voidHC_Include_Segment(constchar*include)在當(dāng)前的段中包含特定的段包含的段是虛子段段下的幾何體是被包含的類似于UNIX的softlinkHC_Include_Segment段包含HC_Style_Segment包含類型voidHC_Style_Segment(constchar*style)類型:段的名稱有包含的屬性特定段的包含屬性可以應(yīng)用其他段的屬性當(dāng)改變模式的時(shí)候是很有用的HC_Style_Segment包含類型造型矩陣-基于段每一個(gè)段有一個(gè)4×4矩陣在段層上進(jìn)行操作對(duì)段中的所有幾何都是有效的兩會(huì)總方法來(lái)操作矩陣標(biāo)準(zhǔn)函數(shù)HC_Rotate_ObjectHC_Scale_ObjectHC_Transform_Object直接設(shè)置矩陣HC_Append_Modelling_Metrix級(jí)聯(lián)-矩陣相乘HC_Set_Modelling_Metrix重新設(shè)移動(dòng)段中指定對(duì)象的方法將指定的對(duì)象移動(dòng)到其他段中修改一個(gè)段的矩陣造型矩陣-基于段每一個(gè)段有一個(gè)4×4矩陣HC_Translate_Object移動(dòng)對(duì)象voidHC_Translate_Object(doublex,doubley,doublez)x,y,z:距離移動(dòng)段中的幾何HC_Translate_Object移動(dòng)對(duì)象練習(xí)2:輸入輸出和實(shí)例化把練習(xí)1中的飛機(jī)實(shí)例化并完成文件輸出將飛機(jī)移動(dòng)到”includelibrary”在場(chǎng)景中包含”includelibrary”實(shí)例化發(fā)動(dòng)機(jī)和葉片移動(dòng)發(fā)動(dòng)機(jī)和葉片輸出到一個(gè)HMF文件利用HOOPS3DPartViewer檢查段結(jié)構(gòu)是否正確%HOOPS%\bin\nt_i386\hoops3dpartviewer.exe讀入HMF文件夾:[File]-[Open]顯示段的樹(shù)結(jié)構(gòu):[Tools]-[SegmentBrowser]根段模型段視圖段練習(xí)2:輸入輸出和實(shí)例化把練習(xí)1中的飛機(jī)實(shí)例化并完成文件輸出練習(xí)2:輸入輸出和實(shí)例化飛機(jī)的數(shù)據(jù)結(jié)構(gòu)“airplane”“fuselage”“jetengine1”“jetengine2”“l(fā)andinggear”“wrings”“engine”“blades”“wheels”/DriverInclude

LibraryStyle

LibraryOpenGLWindow1+0SceneAxisWindow

SpaceModel0Style0練習(xí)2:輸入輸出和實(shí)例化飛機(jī)的數(shù)據(jù)結(jié)構(gòu)“airplane”“HOOPSMVO 3D應(yīng)用程序中經(jīng)常使用到的函數(shù)什么是HOOPSMVOHOOPSMVO的段結(jié)構(gòu)HDBHBaseModelHBaseViewHBaseOperator將MVO與MFC相連練習(xí)3:HOOPSMVO應(yīng)用程序HOOPSMVO 3D應(yīng)用程序中經(jīng)常使用到的函數(shù)3D應(yīng)用程序中經(jīng)常用到的函數(shù)保存應(yīng)用程序數(shù)據(jù)繪制應(yīng)用程序數(shù)據(jù)管理應(yīng)用程序數(shù)據(jù)相機(jī)選擇坐標(biāo)查詢驅(qū)動(dòng)器設(shè)置3D應(yīng)用程序中經(jīng)常用到的函數(shù)保存應(yīng)用程序數(shù)據(jù)什么是HOOPSMVO模型-顯示-操作模型:保存管理應(yīng)用程序數(shù)據(jù)顯示:繪制應(yīng)用程序數(shù)據(jù)操作:操作應(yīng)用程序數(shù)據(jù)相對(duì)應(yīng)的3個(gè)類HBaseModel:處理在包含庫(kù)下的段HBaseView:處理在驅(qū)動(dòng)段下的段和實(shí)例HBaseOperator:處理圖形用戶界面/事件循環(huán)相機(jī)操作幾何對(duì)象操作選擇什么是HOOPSMVO模型-顯示-操作HOOPSMVO段結(jié)構(gòu)Window0+0SceneAxisWindow

SpaceWindow1+0SceneAxisWindow

SpaceWindow1+1SceneAxisWindow

SpaceModel1Model0OpenGLDriverInclude

LibraryStyle

Library/HBaseViewHBaseViewHBaseViewHBaseModelHBaseModel視文檔HOOPSMVO段結(jié)構(gòu)Window0+0SceneAxiHDB程序啟動(dòng)時(shí)就被創(chuàng)建創(chuàng)建和刪除對(duì)象是從CWinApp派生出來(lái)的定義應(yīng)用程序使用的全局對(duì)象保存驅(qū)動(dòng)器的數(shù)目啟動(dòng)和終止HOOPSHDB程序啟動(dòng)時(shí)就被創(chuàng)建HBaseModel對(duì)3dGS包含庫(kù)的一個(gè)封裝適合于處理模型數(shù)據(jù)TypeDriverInclude

LibraryStyle

Library/Window1+1SceneAxisWindow

SpaceModel0HBaseViewHBaseModelHBaseModel對(duì)3dGS包含庫(kù)的一個(gè)封裝TypeDriHBaseView封裝了HOOPS的驅(qū)動(dòng)器例子:在/driver/opengl下的段與其他的MVO類關(guān)聯(lián)HSelectionSetHBaseOperator啟動(dòng)第一個(gè)場(chǎng)景圖包含模型段InstamceSceneAxisWindow

SpaceCutting

Plane

GeometryCutting

PlaneBbx

geometryllightsconstructionHBaseView封裝了HOOPS的驅(qū)動(dòng)器InstamceSHBaseOperator接受圖形用戶界面的事件HEventInfoHBaseView有一個(gè)指向HBaseOperator的指針對(duì)于時(shí)間基本方法的定義派生類執(zhí)行所需的操作virtualintOnLButtonDown(HEventInfo&event);virtualintOnLButtonUp(HEventInfo&event);virtualintOnLButtonDblClk(HEventInfo&event);virtualintOnLButtonDownAndMove(HEventInfo&event);派生類HOpCameraPanHOpCameraOrbitHOpCameraZoomHOpCameraZoomBoxHOpCameraWalkHOpObjectTranslateHOpSelectHBaseOperator接受圖形用戶界面的事件HOpCam連接MVO與MFC連接MVO與應(yīng)用程序類連接3dGS的窗口相連操作系統(tǒng)時(shí)間循環(huán)與MVO的事件循環(huán)支持所需的系統(tǒng)服務(wù)連接MVO與MFC連接MVO與應(yīng)用程序類MVO與應(yīng)用程序派生類的連接App類加入一個(gè)HDB對(duì)象指針Doc類加入一個(gè)HBaseModel對(duì)象指針View類加入一個(gè)HBaseView對(duì)象指針CDocumentCViewCWinAppMFCCHoopsMvoDocCHoopsMvoViewCHoopsMvoAppApplicationHBaseModelHBaseViewHDBMVOMVO與應(yīng)用程序派生類的連接App類CDocumentCVi3dGS與顯示窗口的連接連接3dGS與HBaseView顯示窗口將窗口ID號(hào)傳給HBaseView的構(gòu)造函數(shù)m_pHBaseView=newHBaseView( GetDocument()->m_pHBaseModel, 0,

“opengl”, 0, m_hWnd, NULL);3dGS與顯示窗口的連接連接3dGS與HBaseView顯示事件循環(huán)與MVO循環(huán)的連接圖形用戶界面對(duì)象是通過(guò)派生來(lái)實(shí)現(xiàn)的接收時(shí)間并且映射到相應(yīng)的HBaseOperator將輸入信息映射到HEventInfo一些事件的映射是一對(duì)多的OnLButtonDownOnLButtonUpOnMouseMove……OnLButtonDownOnLButtonUpOnMouseMoveOnLButtonDblClkCViewHBaseView::m_pOperator…事件循環(huán)與MVO循環(huán)的連接圖形用戶界面對(duì)象是通過(guò)派生來(lái)實(shí)現(xiàn)的練習(xí)4:HOOPSMVO應(yīng)用程序連接到MVO并繪制飛機(jī)示例模型參考文檔“HOOPSMVO應(yīng)用程序向?qū)А崩肕FC的AppWizard來(lái)生成一個(gè)應(yīng)用程序?qū)FC連接到HOOPSMVO在一個(gè)命令上增加一個(gè)繪制飛機(jī)的函數(shù),菜單-[Test]-[Draw]在一個(gè)命令上增加一個(gè)鼠標(biāo)旋轉(zhuǎn)的函數(shù),菜單-[Test]-[Orbit]練習(xí)4:HOOPSMVO應(yīng)用程序連接到MVO并繪制飛機(jī)示演講完畢,謝謝觀看!演講完畢,謝謝觀看!HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡(jiǎn)介1HOOPS3dGS基礎(chǔ)1HOOPS3dGSAPI1HOOPSMVO1幾何、屬性、坐標(biāo)2幾何體的編輯2選擇與高亮3大模型顯示3動(dòng)畫3HOOPSStream3HOOPS/ACISBridge3HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡(jiǎn)介1HOOPS3dGHOOPS簡(jiǎn)介TechSoftAmerica(TSA)簡(jiǎn)介

SPATIAL簡(jiǎn)介

HOOPS產(chǎn)品介紹什么是HSF?

HOOPS編程的重點(diǎn)

HOOPS組件簡(jiǎn)介

HOOPS3dGS簡(jiǎn)介

HOOPSMVO簡(jiǎn)介

HOOPSStream簡(jiǎn)介

HOOPSGMBridge簡(jiǎn)介使用組件的示例HOOPS簡(jiǎn)介TechSoftAmerica(TSA)TechSoftAmerica(TSA)簡(jiǎn)介1985年,HOOPS的研究在Cornell大學(xué)展開(kāi)1987年,Ithaca軟件成立HOOPS技術(shù)商業(yè)化1993您年,Ithaca軟件從AutoDesk購(gòu)買了HOOPS,開(kāi)發(fā)出Heidi(AutoCAD,3DStudioMAX的渲染引擎)1996年,TSA成立

銷售額和利潤(rùn)持續(xù)增長(zhǎng),超過(guò)175OEM客戶

CAD、CAM、CFD、FEA、MiningEngineeringTechSoftAmerica(TSA)簡(jiǎn)介1985年Spatial簡(jiǎn)介1986年,Spatial作為一個(gè)CAM軟件/硬件公司成立

最初的名稱是:SpatialTechnology2000年11月,DassaultSystemes收購(gòu)了SpatialTechnology,現(xiàn)在Spatial完全歸DassaultSystemes所有2001年2月,Spatial與TechSoftAmerica建立了合作關(guān)系2003年5月,Spatial加強(qiáng)了對(duì)HOOPS的集成

Spatial提供HOOPSACISBridgeSpatial簡(jiǎn)介1986年,Spatial作為一個(gè)CAM軟HOOPS的產(chǎn)品介紹HOOPS3dAFHOOPS的核心產(chǎn)品HOOPSStream工具包介紹可以和HOOPSNetServer連接HOOPSStream工具包讀寫HSF文件(顯示數(shù)據(jù)),高壓縮比,網(wǎng)絡(luò)顯示HOOPSNetServerClient/Server組件協(xié)同功能基于需求地Streaming功能HOOPS的產(chǎn)品介紹HOOPS3dAF什么是HSF?HSF指的是HOOPSStreamFormat處理HOOPS擁有的顯示數(shù)據(jù)高級(jí)動(dòng)畫功能大模型的快速顯示高壓縮比的文件存儲(chǔ)指出流化處理支持靈活的圖形數(shù)據(jù)交換CATIAV5R11,SolidWorks2003后續(xù)的版本中都支持HSF文件導(dǎo)出OpenHSF組織提供讀寫工具包,免費(fèi)瀏覽器,免費(fèi)的ActiveX插件什么是HSF?HSF指的是HOOPSStreamFormHOOPS編程要點(diǎn)理解各個(gè)組件中的不同點(diǎn)HOOPS/3dGSHOOPS/MVOHOOPS/MFCHOOPS/StreamHOOPS/GMBridge圖形數(shù)據(jù)的設(shè)計(jì)數(shù)據(jù)量,系統(tǒng)存儲(chǔ)量和性能之間的平衡依賴于程序的需求字符串處理Strcmp、strcat、wcsstr……許多函數(shù)都需要和字符串打交道

HC_Set_Color(“face=red,lines=blue”);HOOPS編程要點(diǎn)理解各個(gè)組件中的不同點(diǎn)HOOPS組件簡(jiǎn)介HOOPS3dGSHOOPS/StreamHOOPS/MVOHOOPS/GUIHOOPS/GMBridgeApplicationHOOPS組件簡(jiǎn)介HOOPS3dGSHOOPS/StreHOOPS3dGS簡(jiǎn)介場(chǎng)景圖API使用HOOPS的基本組件用C語(yǔ)言實(shí)現(xiàn)。APIs可以用C,C++,Fortran,Java來(lái)調(diào)用提供了大量的圖形相關(guān)的函數(shù)圖形信息的創(chuàng)建,管理,查詢和編輯使用靈活方便支持主流的操作系統(tǒng)UNIXs,Linux和Windows操作系統(tǒng)間的源代碼都是共同的支持多種輸出設(shè)備更高級(jí)別的圖形內(nèi)核OpenGL,Direct3D,X11,WinGDI,PostScipt,HPGL2,CGM3等HOOPS3dGS簡(jiǎn)介場(chǎng)景圖APIHOOPSMVO簡(jiǎn)介在應(yīng)用層上的C++類庫(kù)HOOPS3dGS在內(nèi)部被使用實(shí)現(xiàn)了3D應(yīng)用程序框架的功能模型:文件的輸入輸出,模型的管理顯示:文字和相機(jī)的管理操作:對(duì)象操作的管理支持主流操作系統(tǒng)UNIX、Linux和Windows操作系統(tǒng)間的源代碼都是共同的提供源代碼%HOOPS%/Dev_Tools/hoops_mvo/sourceHOOPSMVO簡(jiǎn)介在應(yīng)用層上的C++類庫(kù)HOOPSMFC簡(jiǎn)介從GUI工具包繼承MFC、ATL、Qt、Motif、Java/Swing封裝了所需要的操作與窗口的連接,獲得窗口句柄和窗口的ID號(hào)將鼠標(biāo)和鍵盤事件映射到了HOOPS/MVO封裝了剪貼板,打印機(jī)和打印機(jī)預(yù)覽提供源代碼%HOOPS%/Dev_Tools/hoops_mfc/sourceHOOPSMFC簡(jiǎn)介從GUI工具包繼承HOOPSStream簡(jiǎn)介支持HSF的讀寫功能數(shù)據(jù)是高度壓縮的,大大縮短傳輸時(shí)間數(shù)據(jù)的分類,流化處理支持2D和3D支持3dGS中所有的幾何體提供源代碼和說(shuō)明文件%HOOPS%/Dev_Tools/hoops_stream/source格式易于擴(kuò)展,可以獨(dú)立于3dAF單獨(dú)使用HOOPSStream簡(jiǎn)介支持HSF的讀寫功能HOOPSGMBridge簡(jiǎn)介連接HOOPS與建模內(nèi)核(如ACIS)封裝了連接模型與HOOPS幾何的函數(shù)將模型映射到HOOPS幾何讀寫SAT文件選擇與高亮顯示的處理當(dāng)創(chuàng)建和更新模型的時(shí)候,圖形數(shù)據(jù)也被創(chuàng)建和更新HOOPSACISBridge是ACIS組件的一部分提供源代碼HOOPSGMBridge簡(jiǎn)介連接HOOPS與建模內(nèi)核(HOOPS文檔HOOPS文件夾結(jié)構(gòu)HOOPS在線幫助HOOPS3dGS參考HOOPS3dGS函數(shù)模板HOOPS示例源代碼HOOPS支持工具HOOPS文檔HOOPS文件夾結(jié)構(gòu)HOOPS文件夾結(jié)構(gòu)Bin—nt_i386 可執(zhí)行文件和dll文件Datasets 示例數(shù)據(jù)文件Demo 每個(gè)GUI工具包的示例代碼Dev_Tools HOOPS庫(kù)文件&源代碼Docs 在線幫助Fonts 字體文件HOOPS文件夾結(jié)構(gòu)Bin—nt_i386 可執(zhí)行文件和dHOOPS在線幫助$(HOOPS)\index.html/documentation/index.htmlHOOPS在線幫助$(HOOPS)\index.htmlHOOPS3dGS參考說(shuō)明3dGS函數(shù)IM函數(shù)舊的函數(shù)系統(tǒng)啟動(dòng)HOOPS3dGS參考說(shuō)明3dGS函數(shù)HOOPS3dGS函數(shù)模板<函數(shù)名稱:>函數(shù)功能:調(diào)用序列:變量:細(xì)節(jié):注意:限制:另見(jiàn):HOOPS3dGS函數(shù)模板<函數(shù)名稱:>HOOPS示例代碼%HOOPS%/Dev_Tools/<組件名稱>/源目錄每一個(gè)組件都有源代碼當(dāng)執(zhí)行相同的函數(shù)功能時(shí),用這些源代碼作參考是很有用的用戶可以自定義并且擴(kuò)展函數(shù)%HOOPS%/demo/common/standarddirectly使用HOOPS3dGS的不同程序作一些示例測(cè)試程序是很有用的用來(lái)快速確定系統(tǒng)配置HOOPS示例代碼%HOOPS%/Dev_Tools/<組HOOPS支持的工具HOOPSPartViewer可以用來(lái)驗(yàn)證HOOPS的功能【Tools】-【TestPerformance】【Tools】-【KeyframeEditor】可以用來(lái)查詢HOOPS的數(shù)據(jù)庫(kù)【Tools】-【SegmentBrowser】在”/demo/mfc/hoopspartviewer”中提供了源代碼HOOPSASCIIMetafile將HOOPS數(shù)據(jù)庫(kù)作為一個(gè)文本文件來(lái)讀寫HOOPS支持的工具HOOPSPartViewerHOOPS3dGS函數(shù)HOOPS3dGS體系結(jié)構(gòu)圖形對(duì)象數(shù)據(jù)庫(kù)對(duì)象遍歷器HC_Update_Display渲染管道HOOPS3dGS函數(shù)HOOPS3dGS體系結(jié)構(gòu)HOOPS3dGS結(jié)構(gòu)層次圖形對(duì)象數(shù)據(jù)庫(kù)對(duì)象遍歷器渲染管道HOOPS3dGS結(jié)構(gòu)層次圖形對(duì)象數(shù)據(jù)庫(kù)圖形對(duì)象數(shù)據(jù)庫(kù)樹(shù)結(jié)構(gòu)保存所有的圖形對(duì)象被稱作為“段”的節(jié)點(diǎn)對(duì)象是在層次中進(jìn)行管理的。屬性是通過(guò)繼承來(lái)共享的保留模式圖形系統(tǒng)幾何的插入,查詢和刪除顯示次序得到優(yōu)化SegmentSegmentSegmentSegmentSegmentSegment圖形對(duì)象數(shù)據(jù)庫(kù)樹(shù)結(jié)構(gòu)SegmentSegmentSegmen對(duì)象遍歷器在對(duì)象樹(shù)中進(jìn)行遍歷通過(guò)檢查屬性找到已經(jīng)顯示的幾何將相關(guān)的信息發(fā)送給渲染管道使發(fā)送的數(shù)據(jù)量最小SegmentSegmentSegmentSegmentSegmentSegment對(duì)象遍歷器結(jié)構(gòu)化的設(shè)備接口輸入設(shè)備接口對(duì)象遍歷器在對(duì)象樹(shù)中進(jìn)行遍歷SegmentSegmentSeHC_Update_Display更新圖形數(shù)據(jù)庫(kù)

HC_Update_Display()遍歷圖形數(shù)據(jù)庫(kù)當(dāng)圖形數(shù)據(jù)庫(kù)更新的時(shí)候調(diào)用HC_Update_Display()的次數(shù)與更新的次數(shù)并不是相同的對(duì)修改后的幾何僅僅執(zhí)行最小化的更新從最后一次修改處檢查更新建立顯示列表將最小化的數(shù)據(jù)量發(fā)送給顯示設(shè)備HC_Update_Display更新圖形數(shù)據(jù)庫(kù)渲染管道使所有設(shè)備上的渲染效果達(dá)到最優(yōu)輸入設(shè)備的格式轉(zhuǎn)換是依賴于接口的圖形信息通過(guò)優(yōu)化的軟件映射層進(jìn)行傳遞連續(xù)的分解技術(shù)保證在不同的操作系統(tǒng)上的結(jié)果是相同的HOOPS設(shè)備接口(HDI)Autodesk的Heidi技術(shù)就是從HDI派生的渲染管道使所有設(shè)備上的渲染效果達(dá)到最優(yōu)HOOPS3dGS數(shù)據(jù)庫(kù)基礎(chǔ)段段操作:打開(kāi)和關(guān)閉HC_Open_SegmentHC_Close_Segment段操作:示例缺省段寫入場(chǎng)景的方法HOOPS3dGS數(shù)據(jù)庫(kù)基礎(chǔ)段段包含圖形的段幾何屬性:顏色,可見(jiàn)性,選擇功能等等子段:更低層的段段的名稱段可以進(jìn)行命名可以像文件系統(tǒng)一樣表示路徑:絕對(duì)路徑、相對(duì)路徑、通配符當(dāng)前段(激活的段)你可以在任何一個(gè)時(shí)間來(lái)處理段總存在一個(gè)激活的段激活的短以先入先出的方式壓入堆棧段包含圖形的段段操作:打開(kāi)和關(guān)閉airplanefuselagewingsjetengine1jetengine2landinggear打開(kāi)段(“airplane”)打開(kāi)段(“fuselage”)打開(kāi)段(“l(fā)andinggear”)關(guān)閉段()關(guān)閉段()打開(kāi)段(“wings”)打開(kāi)段(“jetengine1”)關(guān)閉段()打開(kāi)段(“jetengine2”)關(guān)閉段()關(guān)閉段()關(guān)閉段()段操作:打開(kāi)和關(guān)閉airplanefuselagewingsHC_Open_Segment打開(kāi)一個(gè)段

VoidHC_Open_Segment(constchar*segment)打開(kāi)一個(gè)給定名稱的段如果不存在這個(gè)特定的段則創(chuàng)建新的段建立一個(gè)段結(jié)構(gòu)將打開(kāi)的段壓入堆棧列表先入先出激活段(當(dāng)前打開(kāi)的段)HC_Open_Segment打開(kāi)一個(gè)段

VoidHC_OHC_Close_Segment關(guān)閉一個(gè)段VoidHC_Close_Segment()關(guān)閉一個(gè)激活的段從堆棧列表中獲得激活的段在打開(kāi)一個(gè)段并激活它之前該段都是被激活的HC_Close_Segment關(guān)閉一個(gè)段VoidHC_C段操作:示例airplanefuselagewingsjetengine1jetengine2landinggearHC_Open_Segment(“airplane”)

HC_Open_Segment(“fuselage”)

HC_Open_Segment(“l(fā)andinggear”)

HC_Close_Segment()

HC_Close_Segment()

HC_Open_Segment(“wings”)

HC_Open_Segment(“jetengine1”)

HC_Close_Segment()

HC_Open_Segment(“jetengine2”)

HC_Close_Segment()

HC_Close_Segment()HC_Close_Segment()段操作:示例airplanefuselagewingsjet缺省段根頂層段

樣式庫(kù)保存了通用的顯示屬性。類似于模板包含庫(kù)擁有主要的形體數(shù)據(jù)驅(qū)動(dòng)器在圖形驅(qū)動(dòng)器下生成可見(jiàn)的視圖保存各種各樣的圖形驅(qū)動(dòng)器OpenGL:“opengl”direct3D:“direct3d”WindowsGDI:“msw”“/”“stylelibrary”“driver”“direct3d”“msw”“opengl”“driver”缺省段根“/”“stylelibrary”“driver”場(chǎng)景輸入的方法在合適的驅(qū)動(dòng)器下打開(kāi)一個(gè)段將在相機(jī)范圍內(nèi)的可見(jiàn)場(chǎng)景映射到特定的設(shè)備上在驅(qū)動(dòng)器段中的段是驅(qū)動(dòng)器的實(shí)例當(dāng)打開(kāi)段的時(shí)候?qū)a(chǎn)生子段的實(shí)例/driver/opengl/window0/driver/opengl/window1場(chǎng)景輸入的方法在合適的驅(qū)動(dòng)器下打開(kāi)一個(gè)段HOOPS3dGS幾何和屬性幾何基礎(chǔ)HC_Insert_MarkerHC_Insert_Line屬性基礎(chǔ)HC_Set_ColorHC_Set_Line_WeightHC_Set_Line_PatternHC_Set_Visibility終止應(yīng)用程序的方法HOOPS庫(kù)文件練習(xí)1:Win32控制臺(tái)應(yīng)用程序HOOPS3dGS幾何和屬性幾何基礎(chǔ)幾何基礎(chǔ)處理形狀數(shù)據(jù)當(dāng)插入到數(shù)據(jù)庫(kù)后成為顯示對(duì)象主要的幾何圖元MarkerLinePolylineMeshShell幾何基礎(chǔ)處理形狀數(shù)據(jù)幾何插入幾何插入的流程打開(kāi)一個(gè)段調(diào)用API函數(shù)來(lái)插入關(guān)閉一個(gè)段對(duì)每一種幾何圖元都提供API函數(shù)在插入和移動(dòng)后都可以進(jìn)行編輯幾何插入幾何插入的流程HC_Insert_Marker插入一個(gè)標(biāo)記

voidHC_Insert_Marker(doublex,doubley,doublez)X,Y,Z坐標(biāo)最簡(jiǎn)單的幾何圖元可以作為注釋來(lái)使用當(dāng)放大和縮小的時(shí)候標(biāo)記的大小是不變的標(biāo)記得大小是朝向相機(jī)的。它并不旋轉(zhuǎn)HC_Open_Segment(“XXX”); HC_Insert_Marker(0,0,0);HC_Close_Segment();HC_Insert_Marker插入一個(gè)標(biāo)記

voidHCHC_Insert_Line插入一條線

voidHC_Insert_Line(doublexa,doubleya,doubleza,doublexb,doubleyb,doublezb)xa,ya,za:起點(diǎn)坐標(biāo)xb,yb,zb:終點(diǎn)坐標(biāo)HC_Open_Segment(“XXX”); HC_Insert_Line(0,0,0,1,1,1);HC_Close_Segment();HC_Insert_Line插入一條線屬性基礎(chǔ)屬性通常是基于段來(lái)設(shè)置的屬性定義了在場(chǎng)景中怎樣來(lái)顯示幾何體每個(gè)段都有所有屬性的值如果物體有相同的屬性,它們就應(yīng)該由相同的段來(lái)進(jìn)行管理降低段結(jié)構(gòu)的復(fù)雜程度改進(jìn)性能屬性的設(shè)置是從父段繼承得來(lái)的根段對(duì)所有的屬性都有缺省值[HOOPS/3dGSReferenceManual]-[SystemSetup]-[DefaultAttributes]屬性優(yōu)先權(quán)

局部屬性

使用類型庫(kù)的屬性

父段的屬性屬性基礎(chǔ)屬性通常是基于段來(lái)設(shè)置的屬性設(shè)置屬性設(shè)置流程打開(kāi)一個(gè)段調(diào)用設(shè)置屬性的API函數(shù)關(guān)閉一個(gè)段每一種屬性都有對(duì)應(yīng)的設(shè)置函數(shù)不指定一個(gè)類型的幾何但是指定一個(gè)類型的形體markerlineedgeface屬性設(shè)置屬性設(shè)置流程HC_Set_Color顏色設(shè)置VoidHC_Set_Color(constchar*color_spec)顏色說(shuō)明:字符串指定一個(gè)形體類型和顏色“edges”-包含polygons,shells和meshes“faces”-包含shells和meshes“markers”-單獨(dú)的點(diǎn)HC_Open_Segment(“XXX”); HC_Set_Color(“faces=red,line=white”);HC_Close_Segment();HC_Set_Color顏色設(shè)置HC_Set_Line_Weight //設(shè)置線寬寬度:缺省線寬是場(chǎng)景的0.1%HC_Set_Line_Pattern //設(shè)置線型線型:字符串來(lái)定義線型:“實(shí)線”,“虛線”,“點(diǎn)劃線”,“雙點(diǎn)劃線”HC_Set_Visibility //設(shè)置對(duì)象的可見(jiàn)性和有效性List:字符串定義選項(xiàng)edges、faces、markers終止應(yīng)用程序的方法釋放應(yīng)用程序使用的數(shù)據(jù)終止HOOPSHC_Exit_Program()一些編譯器和操作系統(tǒng)并不能完成該操作釋放HOOPS分配的內(nèi)存HC_Reset_System()HC_Reset_System()在HC_Exit_Program()中調(diào)用HC_Set_Line_Weight //設(shè)置線寬HOOPS庫(kù)文件HOOPS庫(kù)文件大小通常比較小顯存考慮是否使用Z-緩沖區(qū)HOOPS使用16位Z-緩沖區(qū)窗口中的每一個(gè)象素都有16位內(nèi)存HOOPS庫(kù)文件HOOPS庫(kù)文件大小練習(xí)1:Win32控制臺(tái)應(yīng)用程序在控制臺(tái)程序中繪制飛機(jī)示例模型參照“Win32控制臺(tái)應(yīng)用程序”文檔飛機(jī)幾何體和顏色設(shè)置系統(tǒng)環(huán)境變量練習(xí)1:Win32控制臺(tái)應(yīng)用程序在控制臺(tái)程序中繪制飛機(jī)示例模HOOPS3dGSAPIHOOPS3dGSAPI命名規(guī)則參數(shù)規(guī)則段名稱的字符串段的鍵值別名HOOPS3dGSAPIHOOPS3dGSAPI命HOOPS3dGSAPI命名規(guī)則對(duì)每個(gè)編譯器來(lái)說(shuō)頭部名稱是不同的HC_是作為C/C++的頭部名稱來(lái)使用HC_<動(dòng)詞>_<名詞>HC_Set_ColorHC_Insert_CircleHC_Define_Colormap提供相關(guān)的函數(shù)HC_KXXX()返回一個(gè)段或幾何圖元的鍵值HC_QXXX()內(nèi)部實(shí)現(xiàn)打開(kāi)和關(guān)閉指定段HC_QKXXX()內(nèi)部實(shí)現(xiàn)打開(kāi)和關(guān)閉指定段返回一個(gè)段的鍵值HOOPS3dGSAPI命名規(guī)則對(duì)每個(gè)編譯器來(lái)說(shuō)頭部名稱參數(shù)規(guī)則字符串可以包含特殊文字支持下劃線和空格缺省情況下不區(qū)分大小寫字母編譯器不能發(fā)現(xiàn)錯(cuò)誤的字符串在運(yùn)行的時(shí)候HOOPS會(huì)顯示錯(cuò)誤消息參數(shù)規(guī)則字符串可以包含特殊文字段名稱字符串段的名稱中可以包含路徑絕對(duì)路徑“/includelibrary/model/airplane”相對(duì)路徑“../../fuselage/landinggear”通配符“*”其他“.”當(dāng)前段“..”上一層段“…”進(jìn)行遞歸段名稱字符串段的名稱中可以包含路徑段的鍵值段和幾何圖元都通過(guò)鍵值(HC_KEY)來(lái)管理HC_KEY的類型與長(zhǎng)整數(shù)是相同的依賴于系統(tǒng)的結(jié)構(gòu)通常是32位或者是64位有時(shí)它比使用字符串名稱更加方便將3dGS的對(duì)象映射到應(yīng)用程序?qū)ο蟛僮髁硪粋€(gè)結(jié)構(gòu)HC_KEYkey;Key=HC_KOpen_Segment(“”);段的鍵值段和幾何圖元都通過(guò)鍵值(HC_KEY)來(lái)管理別名路徑表示成“?”+字符串類似于C語(yǔ)言中的#define缺省的段別名“?Picture”“?StyleLibrary”“?Dirver”HC_Define_Alias(“?Modal”,”/includelibrary/model_1”)別名路徑表示成“?”+字符串?dāng)?shù)據(jù)輸入輸出HOOPS標(biāo)準(zhǔn)文件格式讀HMF文件寫HMF文件實(shí)例化包含HC_Include_SegmentHC_Style_Segment造型矩陣練習(xí)3:數(shù)據(jù)輸入輸出和實(shí)例化數(shù)據(jù)輸入輸出HOOPS標(biāo)準(zhǔn)文件格式HOOPS標(biāo)準(zhǔn)文件格式HMF:HOOPSMetaFile文本格式,可以用于調(diào)試HSF:HOOPS流文件被壓縮的流化處理OpenHSF動(dòng)畫數(shù)據(jù)用戶數(shù)據(jù)HOOPS標(biāo)準(zhǔn)文件格式HMF:HOOPSMetaFileHC_Read_Metafile讀HMF文件voidHC_Read_Metafile(constchar*file,

constchar*segment,

constchar*options)HC_Open_Segment(“/includelibrary/model”); HC_Read_Metafile(“data/airplane.hmf”,”.”,””);HC_Close_Segment();HC_Read_Metafile讀HMF文件HC_Write_Metafile寫HMF文件voidHC_Write_Metafile(constchar*segment,

constchar*file,

constchar*options)HC_Open_Segment(“/includelibrary/model0”); HC_Read_Metafile(“.”,”data/airplane.hmf”,””);HC_Close_Segment();HC_Write_Metafile寫HMF文件實(shí)例化支持幾何和屬性的實(shí)例化創(chuàng)建實(shí)例的段,包含幾何和屬性這些段是通過(guò)場(chǎng)景圖來(lái)實(shí)例化的可以縮小場(chǎng)景圖使之成為一個(gè)模塊“airplane”“fuselage”“jetengine1”“jetengine2”“l(fā)andinggear”“wrings”“includelibrary”“engine”“blades”“wheels”實(shí)例化支持幾何和屬性的實(shí)例化“airplane”“fuselHC_Include_Segment段包含voidHC_Include_Segment(constchar*include)在當(dāng)前的段中包含特定的段包含的段是虛子段段下的幾何體是被包含的類似于UNIX的softlinkHC_Include_Segment段包含HC_Style_Segment包含類型voidHC_Style_Segment(constchar*style)類型:段的名稱有包含的屬性特定段的包含屬性可以應(yīng)用其他段的屬性當(dāng)改變模式的時(shí)候是很有用的HC_Style_Segment包含類型造型矩陣-基于段每一個(gè)段有一個(gè)4×4矩陣在段層上進(jìn)行操作對(duì)段中的所有幾何都是有效的兩會(huì)總方法來(lái)操作矩陣標(biāo)準(zhǔn)函數(shù)HC_Rotate_ObjectHC_Scale_ObjectHC_Transform_Object直接設(shè)置矩陣HC_Append_Modelling_Metrix級(jí)聯(lián)-矩陣相乘HC_Set_Modelling_Metrix重新設(shè)移動(dòng)段中指定對(duì)象的方法將指定的對(duì)象移動(dòng)到其他段中修改一個(gè)段的矩陣造型矩陣-基于段每一個(gè)段有一個(gè)4×4矩陣HC_Translate_Object移動(dòng)對(duì)象voidHC_Translate_Object(doublex,doubley,doublez)x,y,z:距離移動(dòng)段中的幾何HC_Translate_Object移動(dòng)對(duì)象練習(xí)2:輸入輸出和實(shí)例化把練習(xí)1中的飛機(jī)實(shí)例化并完成文件輸出將飛機(jī)移動(dòng)到”includelibrary”在場(chǎng)景中包含”includelibrary”實(shí)例化發(fā)動(dòng)機(jī)和葉片移動(dòng)發(fā)動(dòng)機(jī)和葉片輸出到一個(gè)HMF文件利用HOOPS3DPartViewer檢查段結(jié)構(gòu)是否正確%HOOPS%\bin\nt_i386\hoops3dpartviewer.exe讀入HMF文件夾:[File]-[Open]顯示段的樹(shù)結(jié)構(gòu):[Tools]-[SegmentBrowser]根段模型段視圖段練習(xí)2:輸入輸出和實(shí)例化把練習(xí)1中的飛機(jī)實(shí)例化并完成文件輸出練習(xí)2:輸入輸出和實(shí)例化飛機(jī)的數(shù)據(jù)結(jié)構(gòu)“airplane”“fuselage”“jetengine1”“jetengine2”“l(fā)andinggear”

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論