Virtools引擎3D游戲程序設計( 簡體 字) | |
作者:覃伯明 | 類別:1. -> 多媒體 -> Virtools |
出版社:清華大學出版社 | ![]() 詢問書籍請說出此書號! 缺書 NT售價: 295 元 |
出版日:6/5/2013 | |
頁數:492 | |
光碟數:0 | |
站長推薦: ![]() ![]() ![]() ![]() ![]() | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302313274 | 【不接受訂購】 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第一部分 VSL腳本語言程序設計 第1章 認識VSL 3 1.1 VSL簡介 3 1.1.1 BB與VSL的關系 3 1.1.2 VSL的優勢 3 1.1.3 VSL腳本語言與C語言的對比 5 1.1.4 VSL與其他腳本語言的差異 5 1.2 VSL腳本管理器 5 1.2.1 VSL腳本管理器的使用 5 1.2.2 創造VSL腳本程序 6 1.2.3 帶輸入輸出的VSL腳本程序 7 1.2.4 VSL腳本程序的重命名、定位和刪除 10 1.2.5 VSL快捷鍵使用 10 1.3 VSL語法描述 11 1.3.1 VSL的變量和常量 11 1.3.2 VSL的運算符 12 1.3.3 VSL的表達式與語句 13 1.3.4 VSL的賦值語句、聲明語句和注釋 15 1.3.5 VSL的條件判斷語句 15 1.3.6 VSL的循環和控制語句 20 1.3.7 數組和多維數組 25 第2章 VSL的函數 28 2.1 函數的定義與調用 28 2.1.1 函數的概念 28 2.1.2 定義函數 29 2.1.3 函數的調用 29 2.1.4 函數的重載 30 2.2 函數的參數及其返回值 31 2.2.1 形參和實參 31 2.2.2 函數值的返回 32 2.3 變量的作用域和存儲類型 33 2.3.1 局部變量、全局變量和作用域 33 2.3.2 VSL全局共享變量和全局靜態變量 35 2.3.3 結構體和枚舉類型 36 2.4 字符串類的使用 39 2.4.1 字符變量、字符串類型變量、字符數組和字符串類的區別 39 2.4.2 字符串類的定義與賦值 39 2.4.3 字符串的處理函數 40 2.4.4 字符串的應用 41 第3章 VSL中的3D數學與變換以及簡單幾何體 43 3.1 向量 43 3.1.1 向量的概念 43 3.1.2 向量長度和歸一化 44 3.1.3 向量的加減 44 3.1.4 向量和標量的乘法 45 3.1.5 向量的點積 45 3.1.6 向量的叉積 45 3.1.7 位置和位移向量 46 3.2 VSL中的2D向量Vector2D 46 3.2.1 Vector2D的方法 46 3.2.2 Vector2D的應用 48 3.3 VSL中的3D向量Vector 50 3.3.1 Vector的方法 50 3.3.2 Vector的應用 50 3.4 矩陣和Matrix 51 3.4.1 矩陣的概念 51 3.4.2 Matrix的方法和應用 52 3.5 簡單幾何體 53 3.5.1 點、線、面 53 3.5.2 正方體 54 3.5.3 圓錐體和圓球 55 3.5.4 矩形 55 第4章 Virtools中的2D實體 60 4.1 2D幀Entity2D 60 4.1.1 Entity2D與Rect 60 4.1.2 Entity2D的應用 60 4.2 2D精靈Sprite 64 4.2.1 Sprite與Entity2D 64 4.2.2 Sprite的應用 65 第5章 燈光、材質和紋理 68 5.1 光 68 5.1.1 光的類型 68 5.1.2 用VSL設置光照 69 5.1.3 光的衰減屬性 69 5.1.4 高光 70 5.1.5 色彩 71 5.2 材質的特性 72 5.2.1 物體表面材質屬性 72 5.2.2 3D物體填充模式 73 5.2.3 Flat渲染和Gouraud渲染 74 5.2.4 Alpha混合 74 5.2.5 Alpha測試 76 5.2.6 紋理采樣過濾 77 5.2.7 紋理尋址 78 5.2.8 多重紋理混合 79 5.2.9 紋理過濾和紋理尋址的顯示例程 80 5.3 紋理的特性 81 5.3.1 紋理的插槽屬性 81 5.3.2 天空盒紋理 83 第6章 3D物體 85 6.1 3D Entity 85 6.1.1 坐標系和3D物體 85 6.1.2 3D Entity的位置、方向與縮放 86 6.1.3 物體的父子關系 89 6.1.4 物體的網格 91 6.1.5 3D物體的屏幕坐標位置 92 6.2 Mesh 93 6.2.1 Mesh的應用 93 6.2.2 Mesh與材質、紋理貼圖 95 6.2.3 紋理坐標:(u, v)坐標 95 6.2.4 Mesh的通道材質特性 96 6.3 3D精靈Sprite 3D 97 6.3.1 3D精靈和公告板 97 6.3.2 3D精靈的應用 97 第7章 角色動畫 99 7.1 角色 99 7.1.1 角色的概念 99 7.1.2 播放角色動畫 99 7.1.3 角色的次級動畫播放 102 7.1.4 角色的身體 104 7.2 角色動畫 105 7.2.1 如何確定角色動畫是否有問題 105 7.2.2 角色的動畫幀 105 7.2.3 角色動畫的一些設置 108 7.2.4 用VSL設置角色動畫 110 7.3 角色動畫的應用 111 第8章 攝像機 116 8.1 相機的基本屬性 116 8.1.1 相機的投影 116 8.1.2 相機的視錐 118 8.1.3 目標相機 119 8.2 相機的應用 119 8.2.1 第一人稱相機 119 8.2.2 第三人稱相機 122 第9章 曲線與網格 126 9.1 3D曲線 126 9.1.1 3D曲線和3D曲線節點的概念 126 9.1.2 3D曲線的應用 128 9.1.3 3D曲線節點的詳細設置 129 9.2 2D路徑 131 9.3 網格 133 9.3.1 網格和層 133 9.3.2 網格的VSL應用 133 第10章 表、組和場景 137 10.1 表 137 10.1.1 表的數據存儲類型 137 10.1.2 使用VSL創建表和存儲數據 138 10.1.3 通過VSL提取表中數據和刪除行列 140 10.1.4 通過VSL對表中數據的操作 142 10.2 組 143 10.2.1 組的意義 143 10.2.2 組的應用 143 10.3 場景 144 10.3.1 場景的概念 144 10.3.2 場景技術的簡單應用 146 10.4 數據容器 147 10.4.1 數據容器的使用 147 10.4.2 String、StringTokenizer和ArrayString 150 第11章 聲音與視頻 152 11.1 聲音的基本運用 152 11.1.1 聲音的特性 152 11.1.2 播放聲音的方法 153 11.1.3 2D聲音和3D聲音 154 11.2 聲音的高級應用 155 11.2.1 錐形的聽覺范圍 155 11.2.2 聲音的多重播放 157 11.3 視頻的播放 158 11.3.1 視頻的屬性 158 11.3.2 視頻的播放 159 第12章 VSL中的bc 161 12.1 工廠的概念 161 12.1.1 工廠的作用 161 12.1.2 工廠的產品 161 12.1.3 工廠如何復制產品 162 12.1.4 工廠如何刪除產品 164 12.2 屬性控制 165 12.2.1 屬性的概念 165 12.2.2 屬性的操作 165 12.3 bc的其他功能 168 12.3.1 取得場景物件 168 12.3.2 bc的其他一些小功能 172 12.4 輸入管理器 174 12.4.1 鼠標的使用 174 12.4.2 鍵盤的使用 176 12.5 渲染設備 179 12.5.1 渲染設備的概念 179 12.5.2 如何設置霧 179 12.5.3 鼠標拾取物件 181 12.5.4 2D屏幕與3D位置 185 12.6 ac 188 12.6.1 ac的概念 188 12.6.2 如何創建和使用ac 188 第二部分 高級渲染語言 第13章 Virtools中的Shader 193 13.1 認識Shader 193 13.1.1 Shader的誕生 193 13.1.2 Virtools中的Shader 193 13.1.3 Virtools中Shader的執行過程 194 13.1.4 Shader編輯器 195 13.2 Shader語言 196 13.2.1 創建第一個Shader程序 196 13.2.2 頂點著色器和像素著色器 198 第14章 光照 200 14.1 參數 200 14.1.1 設置自發光參數的Virtools寫法 200 14.1.2 設置自發光參數的HLSL寫法 201 14.2 光照 203 14.2.1 光照的原理 203 14.2.2 光照Shader 204 14.2.3 光照的HLSL寫法 206 14.3 鏡面反射 210 14.3.1 一盞燈的鏡面反射光照 210 14.3.2 兩盞燈的鏡面反射光照 212 第15章 紋理貼圖光照 214 15.1 簡單的紋理渲染 214 15.1.1 Virtools紋理渲染的Shader代碼 214 15.1.2 HLSL紋理渲染 215 15.1.3 帶光照的紋理渲染 216 15.1.4 逐像素地紋理渲染 217 15.1.5 兩層紋理渲染 220 15.2 凹凸紋理映射 221 15.2.1 凹凸紋理映射的由來 221 15.2.2 凹凸紋理映射的原理 222 15.2.3 凹凸紋理映射的實現 222 15.2.4 改良的凹凸紋理映射 226 15.3 環境映射 230 15.3.1 環境映射的原理和立方貼圖紋理 230 15.3.2 Virtools中如何生成立方體貼圖 231 15.3.3 反射環境映射 231 15.3.4 折射環境映射 234 15.3.5 菲涅爾效果和顏色色散 237 15.3.6 環境映射和凹凸紋理映射的結合 241 15.4 2D Frame的Shader 244 15.4.1 2D幀的多次渲染 244 15.4.2 2D幀的旋轉 246 第16章 Shader的效果 250 16.1 Shader實現動畫效果 250 16.1.1 脈動的茶壺——頂點動畫 250 16.1.2 舞動的花朵——紋理UV動畫 252 16.1.3 波光粼粼的淺水區——序列幀動畫 256 16.2 簡單的修飾效果 258 16.2.1 廣告墻變換效果 258 16.2.2 海底焦散 261 16.2.3 畫面模糊效果 265 16.2.4 景深效果 268 16.2.5 地球大氣效果 271 16.3 簡單的幾個其他效果 276 16.3.1 灼燒 276 16.3.2 發光 277 16.3.3 綻放 280 16.3.4 毛發 284 16.3.5 灰度 288 第17章 Shader的應用 290 17.1 地形渲染 290 17.1.1 Texture Splatting原理簡介 290 17.1.2 Texture Splatting對地形建模的一點要求 291 17.1.3 Shader代碼剖析 291 17.2 運動模糊 296 17.2.1 運動模糊原理簡介 296 17.2.2 設置需要配合的資源 296 17.2.3 運動模糊的Shader代碼 297 17.3 帶倒影的水面渲染 300 17.3.1 渲染水面的步驟 300 17.3.2 水面的設置 302 17.3.3 水的Shader代碼 303 第18章 Shader的其他應用 307 18.1 渲染車 307 18.1.1 渲染車燈 307 18.1.2 渲染車輪 311 18.1.3 渲染車窗 314 18.2 渲染場景 317 18.2.1 帶法線的地形渲染 317 18.2.2 樹的渲染 322 18.2.3 樹葉與草的渲染 323 第三部分 Virtools SDK 第19章 認識Virtools SDK 329 19.1 Virtools的體系結構 329 19.1.1 SDK的介紹 329 19.1.2 幀循環的介紹 331 19.1.3 主要對象之間的關系 332 19.2 使用SDK創建BB 333 19.2.1 行動前的準備 333 19.2.2 通過向導創建BB 335 19.2.3 BB源文件的解釋 338 19.2.4 編譯生成BB 344 第20章 用SDK開發BB 346 20.1 BB的參數 346 20.1.1 BB的3種參數 346 20.1.2 BB參數值的獲取和賦值 347 20.1.3 改變BB參數的數量和類型 349 20.2 BB的輸入輸出端口 354 20.3 自定義類型的參數 358 20.3.1 自定義類型的參數說明 358 20.3.2 創建簡單的自定義參數 359 20.3.3 結構體類型參數的處理函數 361 20.4 使用SDK的BB 367 20.4.1 修改PushBotton和DragAndDrop 367 20.4.2 轉向功能 368 20.4.3 有層級關系的中文顯示 370 第21章 用SDK擴展功能 379 21.1 多線程的應用 379 21.1.1 進程和線程 379 21.1.2 VxThread、VxMutexl、VxMutexlLock 380 21.1.3 多線程的應用 381 21.2 管理器的開發使用 391 21.2.1 管理器 391 21.2.2 Manager代碼解釋 394 21.2.3 Virtools與ADO的整合 395 21.2.4 創建ADOACCESSManager 397 21.2.5 在BB中調用管理器的方法 404 21.2.6 管理器功能的整合 406 21.3 為VSL綁定新類型 408 21.3.1 綁定新類型的規則 408 21.3.2 綁定的細則 409 21.3.3 綁定的簡單范例 414 21.4 第三方聲音引擎與Virtools的整合 415 21.4.1 整合第三方聲音引擎的原因 415 21.4.2 第三方聲音引擎使用介紹 416 21.4.3 不同喇叭播放不同聲音 417 21.5 網絡引擎與Virtools的整合 425 21.5.1 整合網絡引擎的原因 425 21.5.2 使用網絡引擎創建服務器 425 21.5.3 網絡模塊管理器 430 21.5.4 連接到服務器的BB 436 21.5.5 發送消息到服務器的BB 438 21.5.6 處理服務器消息的BB 439 第22章 用SDK開發新功能 442 22.1 讀寫注冊表 442 22.1.1 注冊表的簡單介紹 442 22.1.2 讀寫注冊表功能描述 443 22.1.3 訪問注冊表的BB 444 22.2 文件目錄的操作 446 22.2.1 列舉所有指定類型文件 446 22.2.2 記錄日志文件 449 22.2.3 設置打印 451 22.2.4 復制移動文件 455 22.3 Virtools與串口通信 457 22.3.1 串口通信類 457 22.3.2 定義串口通信協議 458 22.3.3 串口通信管理器 461 22.3.4 啟用串口BB 462 22.3.5 從串口中得到數據 463 22.3.6 向串口寫數據 464 22.4 Virtools與Flash整合 466 22.4.1 和Flash整合的原因 466 22.4.2 Flash的封裝 466 22.4.3 封裝一個播放swf文件的BB 467 第23章 發布應用程序 473 23.1 編譯生成獨立的執行程序 473 23.1.1 關于執行程序的介紹 473 23.1.2 編譯生成Virtools自帶的播放器 474 23.1.3 CustomPlayer類分析 474 23.1.4 CustomPlayerApp類分析 475 附錄A VSL全局函數 478 附錄B Virtools參數類型GUID 481 附錄C 枚舉CK_BEHAVIOR_FLAGS的標識 484 附錄D CKBehavior::SetCallbackFunction回調標準 486 附錄E Virtools消息使用須知 487 E.1 消息的接收 487 E.2 消息的參數 488 附錄F 常用類的標識符類CK_CLASSID 491 參考文獻 493 本書直接從VSL、Shader、SDK的角度來講解Virtools開發游戲、虛擬漫游的各方面,所以本書面向的是已經具有一定編程經驗的讀者,最好已經學會了Virtools。
本書的內容是先從容易上手的VSL腳本講起,最先講的是VSL的基礎語法。可以讓沒有代碼開發經驗的讀者也能夠看懂VSL,然后慢慢講解各個VSL類型的用法。 VSL部分講解完后,接著就是Shader的學習和應用。Shader可謂是短小精悍,算法卻博大精深,所以要求讀者了解HLSL語言基礎,這一部分講解了目前游戲中經常用到的畫面效果,非常值得學習。 SDK是發揮和擴充Virtools功能的利器,SDK涉及的面很廣,所以沒有像VSL部分那樣羅列所有類的用法,而是強調如何進行開發,講解了常用的SDK開發方式。掌握這一部分,就相當于完全駕馭了Virtools引擎。 隨書附送有配套光盤。光盤按章節順序提供了書中所用的實例代碼,這些代碼都經過了作者的精心調試,在Windows XP、Virtools 4.0下保證可用。 如果你是Virtools開發者,如果你是3D游戲開發者,如果你是虛擬現實項目開發者,請你相信,此書會對你很有用。 |