出版時間:2010-1 出版社:清華大學(xué)出版社 作者:肖鵬,劉更代,徐明亮 編著 頁數(shù):421
Tag標(biāo)簽:無
前言
OpenSceneGraph(OSG)場景圖形系統(tǒng)是一個基于工業(yè)標(biāo)準(zhǔn)OpenGL的軟件接口,它讓程序員能夠更加快速、便捷地創(chuàng)建高性能、跨平臺的交互式圖形程序。本書是一本基于OSG 2.8版本的編程入門指南書籍,也通用于OSG 2.x系列及以后版本的開發(fā)?! 腛SG正式發(fā)布以來,OSG可以閱讀的文檔資料只有源代碼。值得慶幸的是,OSG的源代碼中提供了一些相關(guān)的程序示例,通過它們,用戶可以學(xué)習(xí)如何使用OSG編程實(shí)現(xiàn)虛擬系統(tǒng)軟件的功能。分析示例程序很艱辛,并非一朝一夕的事情。筆者通過對OSG大量示例程序和源代碼的分析及豐富的實(shí)際應(yīng)用經(jīng)驗(yàn),逐漸對OSG的開發(fā)流程及核心有了一定的了解。隨著OSG的不斷發(fā)展,越來越多的人開始關(guān)注、學(xué)習(xí)OSG和應(yīng)用OSG開發(fā),但由于OSG本身文檔資料缺乏,作為初學(xué)者,很難在短時間內(nèi)通過分析示例程序和源代碼得到提高。筆者長期置身于OSG開發(fā),作為OsgChina(http://www. OsgChina.org)中國官方網(wǎng)站管理員,同時也是OSG國內(nèi)各大論壇OSG版面的版主,在與開發(fā)者交流的過程中,發(fā)現(xiàn)初學(xué)者普遍存在入門難、應(yīng)用開發(fā)難等問題,于是寫了《OpenSceneGraph三維渲染引擎編程指南》一書。 本書首先介紹了OSG的歷史和開源組織、如何獲取和正確安裝OSG以及一些簡單示例程序的運(yùn)行;然后深入探討了一些OSG的數(shù)學(xué)基礎(chǔ)、內(nèi)部管理機(jī)制和實(shí)用技術(shù),主要包括坐標(biāo)系統(tǒng)、內(nèi)存管理、場景樹結(jié)構(gòu)、圖形節(jié)點(diǎn)的概念和分類、OSG的狀態(tài)屬性和模式控制、紋理映射、光照和材質(zhì)、I/O接口、場景渲染控制、更新回調(diào)、文字、動畫陰影及粒子系統(tǒng)添加等功能的具體介紹;最后探討了關(guān)于OSG地形與地理信息的應(yīng)用,主要包括VirtualPlanetBuilder和OSGGIS的使用方法,還提出了關(guān)于大規(guī)模地形渲染的解決方案?! ⊥ㄟ^本書,讀者不但可以學(xué)習(xí)到OSG在虛擬現(xiàn)實(shí)開發(fā)中最重要、最實(shí)用的知識和技能,還可學(xué)習(xí)到一些開源軟件使用的基本技法。在學(xué)習(xí)完本書后,讀者將會對OSG有一個深入全面的了解,同時也將具備開發(fā)一個基于OSG的虛擬現(xiàn)實(shí)系統(tǒng)的能力?! ”緯鴧㈤喠藝鴥?nèi)外大量的最新圖形開發(fā)和虛擬現(xiàn)實(shí)實(shí)用技術(shù)的資料,所講解的內(nèi)容都是基于圖形開發(fā)的最新方法和技術(shù)。書中提供了大量豐富、新穎、實(shí)用的原創(chuàng)示例程序,并經(jīng)過嚴(yán)格的測試,可以完全應(yīng)用到實(shí)際工程或者系統(tǒng)開發(fā)中。由于作者能力有限,書中難免存在錯誤和不足之處,懇請廣大讀者批評指正。同時,歡迎到OsgChina中國官方討論區(qū)(http://bbs.OsgChina.org)發(fā)帖提問,筆者會盡量在第一時間回復(fù)相關(guān)的問題?! ”緯軌蝽樌瓿刹⒊霭妫玫搅诉@些人大量的幫助: 感謝編輯,他對本書傾注了大量的心血,給了我巨大的幫助和指導(dǎo)?! 「兄x我的師兄劉更代和徐明亮,沒有他們,難以想象這本書什么時候才能完成并出版?! 「兄x我的師兄楊石興和曹明亮,他們引導(dǎo)我進(jìn)入OSG的開發(fā)領(lǐng)域。 感謝我的爸爸、媽媽和姐姐,他們給了我生活自主的空間,讓我能夠盡情地飛翔在自己的天空?! 「兄x我的女友雄英,她每天都給我很多鼓勵和幫助。
內(nèi)容概要
本書是一本全面深入介紹OpenSceneGraph(OSG)基礎(chǔ)及核心API函數(shù)的入門教程。OpenSceneGraph(OSG)是一個基于工業(yè)標(biāo)準(zhǔn)OpenGL跨平臺的三維開源場景圖形系統(tǒng)應(yīng)用程序開發(fā)接口(API)。作為一個高性能的圖形開發(fā)引擎,它在3D程序開發(fā)中扮演著重要的角色?! ”緯凑誒SG的設(shè)計(jì)結(jié)構(gòu)體系,逐一深入討論OSG的各個功能模塊。首先介紹了OSG的歷史和開源組織,以及配置開發(fā)環(huán)境;然后深入探討OSG的核心庫、NodeKits工具庫、OSG插件庫、互操作庫及擴(kuò)展庫等,重點(diǎn)分析了如何將OSG集成到用戶應(yīng)用開發(fā)程序的核心功能及各種應(yīng)用技術(shù),主要包括場景組織和管理、場景數(shù)據(jù)優(yōu)化、交互操作及數(shù)據(jù)實(shí)時動態(tài)更新等技術(shù);最后探討了關(guān)于OSG地形與地理信息的應(yīng)用?! ”緯笞x者有比較好的C++基礎(chǔ)知識和一些3D數(shù)學(xué)基礎(chǔ)知識,適合所有對OpenGL和OSG編程感興趣的讀者。
書籍目錄
第1章 OpenSceneGraph概述 1.1 OpenSceneGraph簡介 1.1.1 什么是OpenSceneGraph 1.1.2 OpenSceneGraph的歷史和發(fā)展 1.1.3 OSG中國 1.1.4 OSG組成模塊 1.2 開發(fā)的預(yù)備知識 1.3 OSG的安裝及編譯 1.3.1 OSG的獲取及安裝 1.3.2 編譯OSG 1.3.3 OSG郵件列表 1.4 OSG基礎(chǔ) 1.4.1 開發(fā)環(huán)境設(shè)置 1.4.2 OSG中的HelloWorld工程 1.4.3 OSG實(shí)用工具——場景瀏覽器osgViewer 1.4.4 OSG實(shí)用工具——版本信息查看器osgVersion 1.4.5 OSG實(shí)用工具——場景圖形壓縮歸檔工具osgArchive 1.4.6 OSG實(shí)用工具——數(shù)據(jù)轉(zhuǎn)換工具osgConv 第2章 OpenSceneGraph數(shù)學(xué)基礎(chǔ) 2.1 坐標(biāo)系統(tǒng) 2.2 坐標(biāo)系變換 2.2.1 世界坐標(biāo)系-物體坐標(biāo)系變換 2.2.2 物體坐標(biāo)系-世界坐標(biāo)系變換 2.2.3 世界坐標(biāo)系-屏幕坐標(biāo)系變換 2.3 向量、矩陣及四元數(shù) 2.3.1 向量 2.3.2 矩陣 2.3.3 四元數(shù) 2.3.4 矩陣與四元數(shù)之間的轉(zhuǎn)換 第3章 場景的組織及渲染 3.1 OSG場景樹 3.1.1 OSG場景樹節(jié)點(diǎn) 3.1.2 OSG中的父節(jié)點(diǎn)與子節(jié)點(diǎn) 3.2 Geode 3.2.1 Billboard節(jié)點(diǎn) 3.2.2 布告板示例 3.3 Group 3.3.1 位置變換節(jié)點(diǎn) 3.3.2 位置變換節(jié)點(diǎn)示例 3.3.3 矩陣變換節(jié)點(diǎn) 3.3.4 矩陣變換節(jié)點(diǎn)示例 3.3.5 自動對齊節(jié)點(diǎn) 3.3.6 自動對齊節(jié)點(diǎn)示例 3.3.7 開關(guān)節(jié)點(diǎn) 3.3.8 開關(guān)節(jié)點(diǎn)示例 3.3.9 細(xì)節(jié)層次節(jié)點(diǎn) 3.3.10 細(xì)節(jié)層次節(jié)點(diǎn)示例 3.3.11 分頁細(xì)節(jié)層次節(jié)點(diǎn) 3.3.12 分頁細(xì)節(jié)層次節(jié)點(diǎn)示例 3.3.13 替代節(jié)點(diǎn) 3.3.14 替代節(jié)點(diǎn)示例 3.3.15 遮擋裁剪節(jié)點(diǎn) 3.3.16 遮擋裁剪節(jié)點(diǎn)示例 3.3.17 坐標(biāo)系節(jié)點(diǎn) 3.3.18 坐標(biāo)系節(jié)點(diǎn)示例 3.4 場景中節(jié)點(diǎn)的拷貝——osg::CopyOp類 3.4.1 自定義場景拷貝示例(一) 3.4.2 自定義場景拷貝示例(二) 第4章 OSG中幾何體的繪制 第5章 渲染狀態(tài)、紋理與光照 第6章 文件的讀寫 第7章 場景圖形的工作機(jī)制 第8章 場景圖形管理 第9章 OSG文字 第10章 OSG動畫與聲音 第12章 osgFX擴(kuò)展庫及osgSim擴(kuò)展庫 第13章 OSG地形與地理信息 參考文獻(xiàn)
章節(jié)摘錄
早在1997年,DonBums便作為軟件設(shè)計(jì)顧問受雇于SiliconGraphics(SGI),他在業(yè)余時間還喜歡滑翔運(yùn)動。正因?yàn)閷τ?jì)算機(jī)圖形和滑翔機(jī)同樣的熱衷及對尖端渲染設(shè)備的了解,他使用Performer場景圖形(SGI專有)系統(tǒng)設(shè)計(jì)了一套基于SGIOnyx的滑翔仿真軟件?! ∮捎谑艿狡渌钀酆谜叩墓膭?,Don開始嘗試使用Linux上的Mesa3D和3dfx的Voodoo設(shè)備,以開發(fā)基于更多硬件平臺的仿真軟件。當(dāng)這套軟件開始支持OpenGL時,場景圖形的概念還未能應(yīng)用于Linux。為了填補(bǔ)這一空缺,Don開始編寫一套簡單的、類似于Performer的場景圖形系統(tǒng),開發(fā)強(qiáng)調(diào)樸素且易用,它滿足了當(dāng)時人們對于場景圖形系統(tǒng)的需求,也使Don的滑翔仿真軟件能夠運(yùn)行于低成本的Linux系統(tǒng)。 到了1998年,Don在滑翔愛好者的郵件組中遇到了Robe~Osfield。那時Robert在MidlandValleyExploration工作,那是一個來自蘇格蘭格拉斯哥的油氣公司。Robert同樣對計(jì)算機(jī)圖形學(xué)和可視化技術(shù)有著濃厚的興趣。兩人開始合作,對仿真軟件進(jìn)行改善。Robert倡導(dǎo)開源,并提議將SG作為獨(dú)立的開源場景圖形項(xiàng)目繼續(xù)開發(fā),并由自己擔(dān)任項(xiàng)目主導(dǎo)。項(xiàng)目的名稱改為OpenSceneGraph,當(dāng)時共有9人加入了OSG的用戶郵件列表。 2000年底,BredeJohansen為OpenSceneGraph作出了第一份貢獻(xiàn),即添加了OSG的OpenFlight模塊?! ‘?dāng)時他在挪威孔斯貝格的KongsbergMaritime船舶仿真公司工作,該公司后來設(shè)計(jì)了基于OSG的SeaViewR5視覺系統(tǒng)?! ⊥瑯釉?000年,Robe離開了原來的工作單位,作為OpenSceneGraph的專業(yè)服務(wù)商開始全職進(jìn)行OSG的開發(fā)工作。在這段時間,他設(shè)計(jì)并實(shí)現(xiàn)了今天的OSG所使用的許多核心功能,并且是在完全沒有客戶和薪酬的情況下完成的。Don到了Keyhole數(shù)字地圖公司(現(xiàn)在是Google的GoogleEarth部門),于2001年辭職,他也組建了自己的公司——AndesComputerEngineering,位于加利福尼亞州的圣何塞,公司成立后繼續(xù)進(jìn)行OSG的開發(fā)工作。第一屆OpenSceneGraph“同好”會在SIGGRAPH2001舉行,只有12個人參加。
編輯推薦
全面深入介紹opensceneGraph基礎(chǔ)知識及核心API函數(shù)?! ≈鹨惶接慞pensceneGraph中的各個功能模塊以及配置開發(fā)環(huán)境。 提供大量的示例程序演示、源代碼分析以及豐富的實(shí)際開發(fā)經(jīng)驗(yàn)?! ∽x者將具備開發(fā)一款基于OpenSceneGraph的虛擬現(xiàn)實(shí)系統(tǒng)的能力?! 碛胸S富的社區(qū)資源和強(qiáng)大的網(wǎng)絡(luò)支持,以方便讀者進(jìn)一步的學(xué)習(xí)和交流?! 』诠I(yè)圖形標(biāo)準(zhǔn)OpenGL的高層次三維渲染引擎?! ∩钊胫v解OpenSceneGraph)~染引擎的內(nèi)部實(shí)現(xiàn)及其應(yīng)用?! ≡敿?xì)介紹OpenSceneGraph渲染引擎的組織架構(gòu)及其實(shí)現(xiàn)流程?! penGL架構(gòu)評估編委會(ARB)獨(dú)立撰稿人PauIMartz先生強(qiáng)力推薦?! 碛胸S富的社區(qū)資源和強(qiáng)大的網(wǎng)絡(luò)支持,以方便讀者進(jìn)一步的學(xué)習(xí)和交流。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
OpenSceneGraph三維渲染引擎編程指南 PDF格式下載