原創(chuàng)|其它|編輯:郝浩|2012-09-07 15:42:18.000|閱讀 1090 次
概述:上一個(gè)教程中介紹了HOOPS的背景和編譯相關(guān)的內(nèi)容,這篇文章將要向大家介紹HOOPS的幾大主要模塊。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
上一個(gè)教程中介紹了HOOPS的背景和編譯相關(guān)的內(nèi)容,這篇文章將要向大家介紹HOOPS的幾大主要模塊。
上一教程請參見:《HOOPS 3D可視化入門教程一:簡介及安裝部署》
下一教程請參見:《HOOPS 3D可視化入門教程三:基本概念和數(shù)據(jù)結(jié)構(gòu)》
HOOPS是一個(gè)模塊兒化的開發(fā)套件,各個(gè)模塊功能專一,模塊之間的互操作也處理得不錯(cuò)。模塊兒化是任何一個(gè)大型的開發(fā)工具的必由之路,好比國家大了必須劃分成多個(gè)省一樣。在我這個(gè)系列文章中將會(huì)涉及到的模塊主要有:3dGS,MVO,GUI,Stream還有Modeling Kernel Bridge。它們之間的關(guān)系如下圖所示。
3dGS是HOOPS最為核心的模塊,其負(fù)責(zé)HOOPS的繪圖及數(shù)據(jù)管理任務(wù)。它屏蔽了不同底層繪圖庫(OpenGL、DirectX等)接口的不同,向上提供一套統(tǒng)一的、更加直觀且便于調(diào)用的接口。3dGS使用純C語言編寫,HOOPS優(yōu)秀的跨平臺(tái)以及跨開發(fā)工具的特性也正是基于3dGS這一模塊。此外,3dGS還針對特定的底層繪圖庫有相應(yīng)的優(yōu)化,例如針對OpenGL的紋理渲染,3dGS就做了充分的算法優(yōu)化,而這種優(yōu)化如果要直接在OpenGL上做,則需要編程人員具有非常老練的技術(shù),可謂非斲輪老手不可為。我曾經(jīng)親自做過測試,拿一個(gè)用HOOPS編寫的虛擬現(xiàn)實(shí)渲染程序和師兄用OpenGL寫的差不多的程序?qū)Ρ龋渌俣纫焐?倍左右(fps,即每秒幀數(shù))。而該師兄在我眼里已經(jīng)是編程好手了。
MVO是HOOPS另一個(gè)重要模塊,而且將是我們實(shí)際編程中接觸最多的一個(gè)模塊。MVO分別是Model、View、Operator的縮寫,即文檔、視圖和操作算子。MVO有時(shí)候也稱為MVC,這個(gè)C是Controler的縮寫。相信用MFC開發(fā)過的同學(xué)對MVO或者M(jìn)VC應(yīng)該不會(huì)陌生,CDocument和CView正是M和V的具體化身。至于O么,在MFC里面則分散在各種消息映射里,此處且不多提,在后續(xù)文章中用到的時(shí)候可順便說明。
3dGS和MVO什么關(guān)系?它倆的關(guān)系跟Windows API和MFC的關(guān)系是一樣的。做過Windows C/C++編程的人都知道,Win API實(shí)際上可以實(shí)現(xiàn)Windows上編程的所有功能(這個(gè)不難理解,因?yàn)樗蠾indows上的程序最終都是轉(zhuǎn)化成對若干個(gè)最底層的Win API的調(diào)用),但是大家也知道用Win API直接編寫大型程序是不現(xiàn)實(shí)的,因?yàn)檫@種C風(fēng)格的程序接口在面對龐大的工程需求時(shí)完全是心有余而力不從。所以后來微軟推出了MFC,實(shí)際上是在面向?qū)ο蠛烷_發(fā)框架的基礎(chǔ)上對底層Win API的封裝。3dGS和MVO也是一樣。實(shí)際上用3dGS可以實(shí)現(xiàn)HOOPS上的所有功能,但是幾乎沒有人會(huì)完全用3dGS去做項(xiàng)目開發(fā)(搞研究自己折騰的人除外)。MVO是對3dGS的上層封裝,提供了更加友好直觀的編程接口,從而使得HOOPS能夠適應(yīng)大型程序開發(fā)的需要。
Stream主要負(fù)責(zé)HOOPS的I/O模塊,處理數(shù)據(jù)流的讀寫和控制。HOOPS特有的文件類型主要有兩種,分別是字符格式的hmf和二進(jìn)制格式的hsf。hsf具有非常優(yōu)秀的特點(diǎn),它具有高壓縮比,支持流式加載,同樣的模型,用hsf存儲(chǔ),文件大小僅為常見格式的五分之一左右。流式加載的能力使得HOOPS能夠很好地勝任B/S架構(gòu)的程序。對于大型模型來說,流式加載是非常關(guān)鍵的,它使得觀看者可以像收看流式視頻那樣,邊下載邊查看模型,而不必等到整個(gè)模型都下載完畢才能夠打開瀏覽。
如果說3dGS、MVO、Stream等模塊處理的是和繪圖相關(guān)的邏輯命令,那么真正把HOOPS包裝成一個(gè)可執(zhí)行程序并且在Windows等窗口界面中繪制出圖像來則是GUI模塊的功勞。HOOPS可以寄宿于多種GUI開發(fā)庫中,包括MFC、Qt、X11、WPF等等。支持多種GUI框架也是保證HOOPS跨平臺(tái)能力的重要條件。在最新的版本中,HOOPS更隨潮流,添加了在iOS平臺(tái)上的支持。不過作為一名業(yè)余Android開發(fā)者,我非常期待HOOPS能夠在不遠(yuǎn)的將來增加在該平臺(tái)上的兼容。
本文最后介紹的一個(gè)模塊是Bridge。上篇文章中我們也提到了,HOOPS本質(zhì)上只是一個(gè)三維圖形渲染框架,雖然它有一定的建模能力,但是估計(jì)沒有人會(huì)完全用它來進(jìn)行復(fù)雜模型設(shè)計(jì)。而實(shí)體造型是幾何建模引擎所擅長的,因此在用HOOPS進(jìn)行CAD/CAE/CAM開發(fā)時(shí)常會(huì)搭配一個(gè)幾何造型引擎,所謂尺有所短寸有所長,在各領(lǐng)域選擇合適的工具對于大型系統(tǒng)來說是非常必要的。HOOPS可以和多個(gè)實(shí)體造型內(nèi)核相連接,例如Spatial的ACIS和Siemens的Parasolid。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)