Vizard軟件是近年來不斷受到國內外專業人士推崇的虛擬現實開發平臺。它不但具有免費試用、免費在線技術支持等應用優勢,還具有功能完備、適合多種應用環境、支持多種交互設備等技術特點。因此,學習該軟件能夠在較短時間內掌握虛擬現實應用的相關開發技術,并可進行快速應用。
本書首先簡單介紹Vizard軟件的功能特點和開發技巧,然后詳細介紹該軟件的各個功能模塊,具體包括三維模型的操作,任務流程的控制,人物角色的控制,圖形用戶界面,場景,窗口和虛擬視點,紋理貼圖和視音頻素材,著色器編程,物理引擎,硬件交互設備,網絡控制等。本書最后還給出基于該軟件開發出的幾個綜合實例。針對Vizard軟件中的每一個功能模塊,本書都提供詳細的程序案例和源代碼,以幫助讀者深入理解它們的使用方法。
值得一提的是,本書在介紹Vizard軟件的每一個功能模塊時,都詳細解釋了與其相關的圖形學原理。因此,本書既可作為高等院校計算機應用技術、數字媒體技術等相關專業的教材,也可作為虛擬現實技術、人機交互技術等從業人員的自學讀物和參考用書。
前言
虛擬現實(VirtualReality,VR)技術起源于20世紀60年代。它的目標是:以計算機技術為核心,在視覺、聽覺、觸覺等方面創造出逼真的虛擬環境;用戶借助必要的裝備與其進行交互,從而獲得身臨其境的感受和體驗。VR技術涉及心理學、控制學、計算機圖形學、數字圖像處理、計算機視覺、數據庫設計、實時分布系統、電子學和多媒體技術等多個學科,具有較強的綜合性和交叉性。
由于它的綜合性和不可替代性,世界各國均重視虛擬現實技術的戰略研究。我國2006年頒布的《國家中長期科技規劃綱要(2006—2020)》也將虛擬現實技術列為信息領域優先支持的3個方向之一。近十幾年來,隨著信息技術的不斷發展,與虛擬現實相關的各個學科都積累了豐富的成果,這些成果極大地推動了虛擬現實技術的發展和應用。目前,虛擬現實技術已被廣泛應用于城市規劃、醫學、娛樂與藝術、衛星與航天、室內設計、產品展示、教育等各個領域。
在最近兩年,VR技術已經進入了一個全新的發展時期。例如,在交互硬件方面,OculusRift頭盔顯示器、HTCVive頭盔顯示器、LeapMotion體感控制器等各種價格低廉的VR設備層出不窮;在產業發展方面,我國各級政府部門已經紛紛開始籌備VR產業基地?梢,VR研究和應用正在向高端和民用兩個方向拓展,VR技術已經開始普及化和商業化?梢灶A見,在不遠的未來,VR相關技術不僅會帶來更大規模的技術革命,還會推動商業模式不斷推陳出新,甚至直接影響人們的思維模式和生活方式。
虛擬現實技術的推廣和應用,離不開專業開發平臺的支持。目前,相對成熟的虛擬現實開發平臺并不多,而僅有的一些知名虛擬現實平臺(如Unity、Unreal等)均是從游戲領域衍生而來的。本書所介紹的Vizard虛擬現實開發平臺來自于美國的WorldViz公司。該公司起源于美國加利福尼亞大學虛擬環境與行為研究中心。該公司推出的Vizard引擎最初被應用于心理學研究,然后經多個版本的迭代改進,逐漸被商業化為成熟的VR引擎。
近年來,Vizard軟件一直活躍在企業級的虛擬現實應用領域。目前,Vizard軟件的企業級用戶已經有數千家,其中包含了全球頂尖的科研機構和世界500強企業。國內外的眾多高校和研究機構也都相繼應用該軟件展開科學研究。其中,國外的研究機構包括加利福尼亞大學圣巴巴拉分校虛擬環境與行為研究中心、邁阿密大學心理與計算機科學實驗室、加拿大滑鐵盧大學心理系、斯坦福大學信息學院虛擬人機交互實驗室等;國內的研究機構包括中國科學院心理研究所、北京師范大學心理學院國家級實驗教學示范中心等。
可見,Vizard軟件越來越受到國內外虛擬現實相關領域用戶的推崇。然而,它的相關學習資料并不多,中文資料更加匱乏。所以,本書的目標在于系統地總結該軟件的開發方法,為國內用戶提供詳細的中文參考資料。相比其他VR軟件,Vizard軟件具有如下特點:第一,它具有免費試用、免費技術支持等應用優勢,能夠使初學者快速入門;第二,它具有功能完備、適合多種應用環境、支持多種交互設備等技術特點,能夠使用戶全面體驗虛擬現實領域的各種技術;第三,它既提供專用的模型瀏覽工具,又提供了腳本程序的集成開發環境,更提供了擴展插件的開發接口。這些特點能使用戶在較短時間內掌握虛擬現實應用的相關開發技術并進行快速應用。
本書的章節安排如下:第1章介紹Vizard軟件的基本特點、集成開發環境、相關技術概念等內容,然后給出一個簡單的開發實例,該實例能夠使用戶對Vizard軟件的開發過程有一個整體感受;第2章介紹Python語言的編程技巧;第3~12章詳細介紹Vizard軟件的各個功能模塊,具體包括三維模型的操作,任務流程的控制,人物角色的控制,圖形用戶界面,場景、窗口和虛擬視點,紋理貼圖和視音頻素材,著色器編程,物理引擎,硬件交互設備,網絡控制;第13章介紹Vizard軟件的一些輔助功能,包括軟件環境的全局配置、矩陣運算函數庫、可執行文件的發布等;第14章介紹Vizard軟件的一些綜合應用實例。
本書的讀者最好已經掌握了如下一些基礎知識:Python編程語言、計算機圖形學基礎等。這些基礎知識能夠幫助讀者深入理解Vizard軟件的技術特點,從而獲得Vizard軟件的專業開發能力。對于沒有這些基礎知識的虛擬現實愛好者而言,本書同樣具有閱讀價值。本書能夠引導初學者快速實現一個簡單的虛擬現實程序。在介紹各個功能模塊時,本書同時對相關的圖形學概念進行了解釋說明,以輔助讀者對虛擬現實各項關鍵技術的理解。
本書的官方網站為www.t3edu.com。讀者可以在此網站上下載本書所有的電子資源,此網站還會陸續推出與本書相關的視頻教程。另外,該網站還提供了全球最大的中文Vizard在線論壇。本書的微信公眾號為“T3教育”(該公眾號的二維碼如右圖所示),新浪微博為“T3VR”,QQ群號為548909625。這些平臺會持續更新Vizard軟件的相關資訊。如果讀者有任何關于Vizard軟件方面的疑問,均可在這些平臺上獲得解答。
致謝
本書的編寫集合了作者多年的教學和實踐經驗,并參考和借鑒了互聯網上的一些圖片資源。這些圖片的原始來源已無法考證,所以在此對這些圖片的發布者表示感謝。
在這里,首先要感謝TSenseVR實驗室全體工作人員的大力支持,TSenseVR實驗室是美國WorldViz在中國獨家授權的培訓實驗室。在本書的編寫過程中,該實驗室的工作人員提出了很多寶貴的意見和建議。還要感謝TSenseVR實驗室提供的硬件資源,這些硬件資源在國內外都具有一定的領先性。這使得本書第11章的編寫過程變得非常順利。
在此還要感謝北京語言大學信息科學學院的張習文教授和付永剛副教授。在Vizard軟件的教學過程中,他們和作者一起進行課程設計、教學分析,并給出了很多的寶貴意見;還要感謝北京語言大學信息科學學院數字媒體技術專業在過去10年的歷屆學生,他們對該書投入的熱情、及時的信息反饋,都為本書的設計和編寫提供了寶貴的思路;還要感謝北京語言大學信息科學學院的數字媒體實驗室,該實驗室中的各種專業設備為本書編寫提供了良好的硬件保障。
本書的編寫和出版受到了如下科研項目的資助:國家自然科學基金項目(61202249)、北京語言大學梧桐創新平臺項目(中央高;究蒲袠I務費)(16PT04)、北京語言大學中青年學術骨干支持計劃。
由于作者水平有限,書中難免存在不足和疏漏之處,懇請廣大讀者批評指正。在閱讀本書的過程中,如果遇到任何問題,均可發送電子郵件至anweihua@t3vr.com或者xuyan@t3vr.com進行交流。
編者2017年6月
第1章Vizard虛擬現實開發平臺簡介
1.1Vizard軟件的特點
1.1.1Vizard軟件的開發特點
1.1.2Vizard軟件的功能特點
1.2Vizard軟件的安裝
1.3Vizard軟件的開發環境
1.3.1開發環境的自定義設置
1.3.2Python工具包的安裝
1.3.3腳本文件的編寫
1.3.4代碼的瀏覽與定位
1.3.5腳本文件的運行與調試
1.4Vizard軟件的開發基礎
1.4.1基本開發流程
1.4.2相關技術概念
1.5一個簡單的開發實例
第2章Python語言編程基礎
2.1Python語言的基本概念
2.1.1Python語言的特點
2.1.2Python編程的注意事項
2.1.3Python程序的執行模式
2.2變量、表達式和語句
2.2.1變量和類型
2.2.2變量名和關鍵字
2.2.3語句
2.2.4表達式
2.2.5運算符和操作數
2.2.6運算的順序
2.2.7字符串操作
2.2.8注釋
2.3函數和條件表達式
2.3.1函數
2.3.2條件表達式
2.4高級數據類型
2.4.1字符串
2.4.2列表
2.4.3元組
2.4.4字典
2.5面向對象技術
2.5.1類和對象
2.5.2類和方法
2.5.3類的繼承
2.6Python語言的工具包
2.7總結
第3章三維模型的操作
3.1三維模型的文件格式
3.2三維模型的準備
3.2.1三維模型的優化方法
3.2.2OSG模型的準備
3.2.3Vizard所支持的OSG模型特征
3.3三維模型的基本操作
3.4三維模型的層次關系與坐標系統
3.5三維模型的高級操作
3.6OSG模型文件內部的層次關系及其操作
3.7文本模型
3.8在腳本程序中創建三維模型
3.9其他特殊模型
第4章任務流程的控制
4.1vizact庫
4.1.1簡單示例
4.1.2vizact庫的基本使用方法
4.1.3vizact庫的高級應用
4.1.4小結
4.2物體之間的鏈接
4.2.1鏈接的基本概念
4.2.2鏈接的高級應用
4.2.3鏈接對象的矩陣操作符
4.2.4路徑動畫
4.3viztask庫
4.3.1簡單示例
4.3.2Task對象的基本概念
4.3.3Task對象的應用分析
4.3.4小結
4.4Director庫
4.5Timer工具
4.5.1vizact庫中的Timer控制方法
4.5.2Event庫中的Timer控制方法
4.5.3利用面向對象方法封裝Timer功能
4.6Event庫
4.6.1Event庫的應用方法
4.6.2用戶自定義事件
4.6.3常用標準事件參考
4.6.4路徑動畫中的事件機制
4.6.5vizact庫中的相關函數
4.7其他流程控制工具
4.8各種流程控制方法的分析
第5章人物角色的控制
5.1人物角色的基本概念
5.2人物角色的程序控制
5.2.1人物角色的基本控制
5.2.2基本控制的程序舉例
5.2.3人物角色的骨骼控制
5.2.4骨骼控制的程序舉例
5.2.5小結
5.3角色模型的制作
5.3.1角色建模的注意事項
5.3.2Cal3D文件導出的總體說明
5.3.3Cal3D文件導出的詳細步驟
5.3.4編寫CFG索引文件時的注意事項
5.4面部表情的控制
5.5vzf頭部模型的制作方法
5.6總結
第6章圖形用戶界面
6.1一個簡單示例
6.2GUI對象的基本操作
6.3GUI對象的布局
6.4利用畫布管理GUI對象
6.5通用對話框
6.6其他GUI工具
第7章場景、窗口和虛擬視點
7.1虛擬場景、虛擬視點和顯示窗口之間的關系
7.2虛擬視點的操作方法
7.3顯示窗口的操作方法
7.4顯示窗口的立體效果
7.5應用程序窗口的操作方法
7.6總結
第8章紋理貼圖和視音頻素材
8.1三維模型的外觀
8.2三維模型的紋理操作
8.2.1紋理的基本操作
8.2.2多重紋理
8.2.3環境映射
8.2.4程序渲染的紋理
8.2.5紋理操作的總結
8.3場景渲染的特殊處理技巧
8.3.1全景圖的瀏覽
8.3.2非真實感的繪制
8.3.3繪制序號和深度偏移
8.3.4半透明效果的處理機制
8.4視音頻操作
8.5燈光的操作
8.5.1光源的基本操作
8.5.2光源的屬性
8.5.3多光源設置
8.5.4光源的投影效果
第9章著色器編程
9.1著色器編程的基本方法
9.1.1著色器編程的步驟
9.1.2著色器編程舉例
9.2vizfx庫簡介
9.3vizfx庫提供的著色器特效
9.3.1與光照相關的功能
9.3.2與投影特效相關的功能
9.3.3用戶自定義的effect對象
9.3.4用戶自定義的effect對象舉例
9.4postporcess函數庫
9.4.1畫面后處理對象的應用
9.4.2畫面后處理對象的組合
第10章物理引擎
10.1物理引擎的基本概念
10.1.1物理引擎的應用步驟
10.1.2物理形狀的設置方法
10.1.3物理引擎的基本應用舉例
10.2三維模型的物理屬性和人為外力
10.3復雜物理形狀和碰撞事件的響應
10.4關節裝置的使用
10.4.1關節裝置的類型
10.4.2關節裝置的受力
10.5物理引擎的其他注意事項
10.6總結
第11章硬件交互設備
11.1普通交互設備
11.1.1鼠標的控制
11.1.2鍵盤的控制
11.2特殊交互設備概述
11.3運動跟蹤設備的一般用法
11.4運動跟蹤設備的舉例說明
11.4.1游戲設備
11.4.2虛擬跟蹤設備
11.4.3PolhemusFastrak設備
11.5力反饋設備的用法
11.6特殊顯示設備的用法
11.7視頻采集設備的用法
11.8基于VRPN的硬件交互
11.8.1基于VRPN的通用交互方法
11.8.2WorldVizPPT設備的訪問方法
11.9三維交互的輔助工具包
11.10硬件交互的整體解決方案
11.10.1Vizconnect工具的功能介紹
11.10.2Vizconnect工具的配置舉例
第12章網絡控制
12.1端到端的網絡連接
12.2端到端的網絡連接舉例
12.3viznet函數庫
12.4客戶端/服務器的網絡連接舉例
12.5集群繪制
12.5.1集群繪制的基本概念
12.5.2集群繪制的編程步驟
12.6洞穴虛擬現實系統
第13章其他輔助功能
13.1文件的存取
13.2軟件環境的全局配置
13.3矩陣運算函數庫
13.4可執行文件的發布
13.5插件開發工具
第14章綜合應用實例
14.1面向對象的編程技巧
14.2科學實驗的程序設計
14.3交互游戲的程序舉例
14.4在線程序實例說明
第5章人物角色的控制
5.1人物角色的基本概念
1.人物角色的類型
人物角色是虛擬場景中的一類特殊三維模型,它一般作為真實用戶在虛擬場景中的扮演者,能夠按照用戶的意圖完成各種變形動作效果,從而使用戶達到身臨其境的感覺。這就要求,人物角色模型不但具有人體的幾何外形,還應該封裝有真實人物的動畫特征,如行走、坐臥、跑跳、駕駛等。在某些應用場合中,角色模型還可以表現為各種動物或植物。
Vizard軟件支持3種文件類型的人物角色,它們對應了3種不同的動畫封裝方式。第一種類型是普通的三維模型文件格式,如osgb、wrl、3ds等文件格式。用戶可以使用3dsMax軟件創建這些三維模型。首先,使用關鍵幀方法為三維模型設定動畫效果,或者使用運動捕捉設備記錄真實人體的動作效果并賦給三維模型;然后,將這些模型導出為osgb、wrl、3ds等文件格式。此時,關鍵幀動畫參數也會被保存在模型文件中。
上述文件格式存在著一定的局限性:當使用Vizard軟件將這些模型導入到虛擬場景中后,它們所封裝的動畫效果將立即被執行,并且被重復不斷地執行,永不終止。這樣一來,用戶沒辦法將多個動作封裝在一個三維模型中并且選擇執行某個特定的動作,更沒有辦法控制動作執行的時機。因此,不提倡使用這種文件格式存儲人物角色。
......