|
-- 會員 / 註冊 --
|
|
|
|
H5和WebGL 3D開發實戰詳解 ( 簡體 字) |
作者:吳亞峰 于復興 索依娜 | 類別:1. -> 程式設計 -> 網路編程 -> HTML |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 46315 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:2/1/2017 |
頁數:366 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115441010 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 本書共分為14章,由淺入深地進行講解,主要內容包括:開發基礎部分,介紹了初識WebGL,實現WebGL可編程渲染管線著色器的著色語言,投影及各種變換;光照效果部分,介紹了WebGL中光照的基本原理與實現、點法向量與面法向量的區別以及光照的每頂點計算與每片元計算的差別;紋理映射部分,介紹了紋理映射的基本原理與使用,同時還介紹了不同的紋理拉伸與采樣方式、多重過程紋理技術以及壓縮紋理;3D模型加載部分,介紹了如何使用自定義的加載工具類直接加載使用3ds Max創建的3D立體物體;混合與霧部分,主要介紹了混合以及霧的基本原理與使用;標志板、天空盒部分,主要介紹了一些常見的3D開發技巧,包括標志板、天空盒與天空穹、鏡像技術等;Three.js引擎部分,主要介紹了對WebGL封裝比較好的Three.js引擎,包括創建場景、攝像機、基本形狀物體、加載模型,以及一些較高級的內容;Egret 3D游戲引擎應用開發部分,介紹Egret 3D在3D游戲開發中的功能;Ammo物理引擎部分,介紹Ammo物理引擎的剛體、軟體等創建與使用;綜合案例—《極地大作戰》部分,通過一個具體的游戲向讀者較為全面地介紹了游戲項目的開發流程以及運用各種技術解決具體問題的思路,案例中綜合運用了前面章節中講解的知識,讓讀者盡快進入實戰角色。
|
目錄:第1章 HTML 5開發基礎—進入 WebGL 世界的第一道坎 1 1.1 HTML的發展簡史 1 1.1.1 HTML的由來 1 1.1.2 HTML的歷史 1 1.2 HTML5概述 2 1.2.1 HTML5的新標準 2 1.2.2 HTML5引入的新特性 2 1.2.3 HTML5現狀 3 1.3 初識HTML5 4 1.3.1 HTML5標簽簡介 4 1.3.2 基礎標簽 4 1.3.3 格式標簽 5 1.3.4 表單標簽 10 1.3.5 圖像、鏈接、列表標簽 17 1.3.6 表格、元信息等標簽 20 1.3.7 HTML5中的全局屬性 26 1.3.8 HTML5中的事件 29 1.4 初識CSS 31 1.4.1 CSS簡介 31 1.4.2 CSS基礎語法 32 1.4.3 如何插入樣式表 33 1.4.4 使用CSS樣式 33 1.5 初識JavaScript 40 1.5.1 JavaScript的名字和 版本 41 1.5.2 準備使用JavaScript 41 1.5.3 使用語句 41 1.5.4 使用變量和類型 42 1.5.5 JavaScript運算符 43 1.5.6 使用數組 44 1.5.7 創建自己的JavaScript 對象 45 1.5.8 常用的JavaScript工具 47 1.6 HTML5 Canvas概述 47 1.6.1 文檔對象模型(DOM)和Canvas 48 1.6.2 JavaScript與Canvas 48 1.6.3 HTML5 Canvas版“Hello World” 48 1.6.4 Canvas上的基礎圖形 50 1.7 本章小結 51 1.8 習題 52 第2章 初識WebGL 53 2.1 WebGL概述 53 2.1.1 WebGL簡介 53 2.1.2 WebGL效果展示 54 2.2 初識WebGL應用 54 2.2.1 WebGL應用案例部署運行 步驟簡介 55 2.2.2 初識WebGL應用程序 56 2.3 著色器與渲染管線 61 2.3.1 WebGL的渲染管線 61 2.3.2 WebGL中立體物體的 構建 66 2.4 本章小結 68 2.5 習題 68 第3章 著色語言 69 3.1 著色語言概述 69 3.2 著色語言基礎 70 3.2.1 數據類型簡介 70 3.2.2 數據類型的基本使用 73 3.2.3 運算符 74 3.2.4 類型轉換 76 3.2.5 限定符 77 3.2.6 流程控制 79 3.2.7 函數的聲明與使用 81 3.2.8 片元著色器中浮點變量精度 的指定 82 3.2.9 程序的基本結構 82 3.3 特殊的內建變量 83 3.3.1 頂點著色器中的內建變量 83 3.3.2 片元著色器中的內建變量 83 3.4 著色語言的內置函數 84 3.4.1 角度轉換與三角函數 85 3.4.2 指數函數 86 3.4.3 常見函數 86 3.4.4 紋理采樣函數 88 3.5 本章小結 89 3.6 習題 89 第4章 必知必會的3D開發知識— 投影及各種變換 91 4.1 矩陣數學計算工具腳本Matrix 91 4.2 攝像機的設置 92 4.3 兩種投影方式 93 4.3.1 正交投影 93 4.3.2 透視投影 97 4.4 各種變換 100 4.4.1 基本變換的相關數學 知識 100 4.4.2 平移變換 100 4.4.3 旋轉變換 102 4.4.4 縮放變換 103 4.4.5 基本變換的實質 105 4.5 所有變換的完整流程 106 4.6 繪制方式 109 4.6.1 各種繪制方式概覽 109 4.6.2 點與線段繪制方式 110 4.6.3 三角形條帶與扇面繪制 方式 112 4.7 設置合理的視角 116 4.8 卷繞和背面剪裁 120 4.8.1 基本知識 121 4.8.2 一個簡單的案例 121 4.9 本章小結 123 4.10 習題 123 第5章 光照效果 125 5.1 曲面物體的構建 125 5.1.1 球體的構建原理 125 5.1.2 案例效果概覽 126 5.1.3 具體開發步驟 126 5.2 基本光照效果 129 5.2.1 構建球體的原理 129 5.2.2 環境光 129 5.2.3 散射光 131 5.2.4 鏡面光 135 5.2.5 三種光照通道的合成 138 5.3 定位光與定向光 140 5.4 點法向量和面法向量 142 5.5 光照的每頂點計算與每片元 計算 144 5.6 本章小結 146 5.7 習題 146 第6章 紋理映射 147 6.1 初識紋理映射 147 6.1.1 基本原理 147 6.1.2 一個簡單的案例 148 6.2 紋理拉伸 153 6.2.1 兩種拉伸方式概覽 153 6.2.2 不同拉伸方式的案例 154 6.3 紋理采樣 156 6.3.1 紋理采樣簡介 157 6.3.2 最近點采樣 157 6.3.3 線性紋理采樣 158 6.3.4 MIN與MAG采樣 159 6.3.5 不同紋理采樣方式的 案例 159 6.4 mipmap紋理技術 161 6.5 多重紋理與過程紋理 162 6.5.1 案例概覽 162 6.5.2 將2D紋理映射到球面上的 策略 163 6.5.3 案例的場景結構 164 6.5.4 開發過程 165 6.6 壓縮紋理的使用 167 6.6.1 ETC壓縮紋理 167 6.6.2 DXT5 169 6.6.3 PVRTC 171 6.7 本章小結 172 6.8 習題 172 第7章 3D模型加載 173 7.1 obj模型文件概述 173 7.1.1 obj文件的格式 173 7.1.2 用3ds Max設計3D模型 174 7.2 加載obj文件 175 7.2.1 加載僅有頂點坐標與面數據 的obj文件 175 7.2.2 加載后自動計算面法 向量 178 7.2.3 加載后自動計算平均 法向量 180 7.2.4 加載紋理坐標 182 7.2.5 加載頂點法向量 184 7.3 本章小結 185 7.4 習題 185 第8章 混合與霧 187 8.1 混合技術 187 8.1.1 混合的基本知識 187 8.1.2 源因子和目標因子 188 8.1.3 簡單混合效果案例 189 8.2 地月系云層效果的實現 191 8.3 霧 193 8.3.1 霧的原理與優勢 193 8.3.2 霧的簡單實現 194 8.4 本章小結 196 8.5 習題 196 第9章 常用3D開發技巧 197 9.1 標志板 197 9.1.1 案例效果與基本原理 197 9.1.2 開發步驟 198 9.2 灰度圖地形 201 9.2.1 基本原理 201 9.2.2 普通灰度圖地形 202 9.2.3 過程紋理地形 205 9.2.4 mipmap地形 206 9.3 天空盒與天空穹 207 9.3.1 天空盒 207 9.3.2 天空穹 209 9.3.3 天空盒與天空穹的使用 技巧 210 9.4 本章小結 211 9.5 習題 211 第10章 渲染出更加酷炫的3D場景— 幾種剪裁與測試 213 10.1 剪裁測試 213 10.1.1 基本原理與核心代碼 213 10.1.2 一個主次視角的簡單 案例 213 10.2 模板測試 215 10.2.1 基本原理 215 10.2.2 一個簡單的案例 217 10.3 任意剪裁平面 218 10.3.1 基本原理 218 10.3.2 茶壺被任意平面剪裁的 案例 218 10.4 本章小結 220 10.5 習題 220 第11章 Three.js引擎 221 11.1 Three.js概述 221 11.1.1 Three.js簡介 221 11.1.2 Three.js效果展示 222 11.2 初識Three.js應用 222 11.3 Three.js基本組件 224 11.3.1 場景 224 11.3.2 幾何對象 226 11.3.3 攝像機 228 11.3.4 光源 232 11.3.5 材質 239 11.4 模型加載 245 11.4.1 Three.js中支持的模型文件 格式 246 11.4.2 導入三維格式文件 251 11.4.3 骨骼動畫的加載 254 11.5 貼圖的使用 258 11.5.1 使用紋理貼圖 259 11.5.2 使用法向貼圖 260 11.5.3 使用凹凸貼圖 261 11.5.4 使用光照貼圖制作靜態 陰影 262 11.5.5 使用高光貼圖 264 11.6 粒子系統 265 11.7 二次繪制 269 11.7.1 認識效果組合器 269 11.7.2 FilmPass通道 270 11.7.3 BloomPass通道 271 11.7.4 DotScreenPass通道 272 11.7.5 ShaderPass通道 273 11.8 本章小結 276 11.9 習題 276 第12章 Egret 3D游戲引擎應用 開發 277 12.1 Egret入門 277 12.1.1 Egret簡介 277 12.1.2 Egret Engine的安裝、部署與 使用插件 278 12.1.3 使用Egret Wing插件調試與 開發程序 279 12.1.4 Egret Engine 3D簡介 281 12.2 Egret 3D入門 282 12.2.1 創建3D場景 282 12.2.2 使用鼠標事件 285 12.3 天空盒與模型加載 287 12.3.1 Egret 3D中添加天空盒 287 12.3.2 Egret 3D中加載模型 288 12.4 Egret 3D中的紋理與燈光 291 12.4.1 Egret 3D中的紋理應用 291 12.4.2 Egret 3D中的燈光應用 292 12.5 Egret 3D中的骨骼動畫 294 12.5.1 導出Egret引擎的骨骼 動畫 294 12.5.2 使用Egret引擎加載骨骼 動畫 294 12.6 本章小結 296 12.7 習題 296 第13章 Ammo物理引擎 297 13.1 Ammo物理引擎概述 297 13.2 Ammo中常用類概述 297 13.2.1 btVector3類— 三維向量類 298 13.2.2 btTransform類— 變換類 298 13.2.3 btRigidBody類— 剛體類 299 13.2.4 btDynamicsWorld類— 物理世界類 299 13.2.5 btDiscreteDynamicsWorld類 —離散物理世界類 300 13.2.6 btSoftRigidDynamicsWorld類—支持模擬軟體的物理世界類 300 13.2.7 btCollisionShape類— 碰撞形狀類 301 13.2.8 btStaticPlaneShape類— 靜態平面形狀 301 13.2.9 btSphereShape類— 球體形狀類 301 13.2.10 btBoxShape類— 長方體盒碰撞 形狀類 301 13.2.11 btCylinderShape類— 圓柱形狀類 302 13.2.12 btCapsuleShape類— 膠囊形狀類 302 13.2.13 btConeShape類— 圓錐形狀類 302 13.2.14 btCompoundShape類—復合碰撞形狀類 302 13.3 簡單的物理場景 303 13.3.1 案例運行效果 303 13.3.2 案例的基本結構 303 13.3.3 主要方法的介紹 304 13.4 多種形狀剛體的碰撞 306 13.4.1 案例運行效果 306 13.4.2 案例開發過程 307 13.5 旋轉的陀螺 308 13.5.1 案例運行效果 308 13.5.2 案例開發過程 308 13.6 觸發器—消失的箱子 309 13.6.1 案例運行效果 310 13.6.2 案例開發過程 310 13.7 碰撞過濾—物體碰撞下落 311 13.7.1 案例運行效果 311 13.7.2 案例開發過程 312 13.8 關節的介紹 313 13.8.1 關節的父類— btTypedConstraint類 313 13.8.2 鉸鏈關節—btHingeConstraint類 313 13.8.3 鉸鏈關節的案例— 球落門開 314 13.8.4 齒輪關節—btGearConstraint 類 316 13.8.5 齒輪關節的案例—轉動的齒輪 316 13.8.6 點對點關節—btPoint2PointConstraint 類 318 13.8.7 點對點關節的案例— 懸掛的物體 318 13.8.8 滑動關節— btSliderConstraint類 320 13.8.9 滑動關節的案例—6個 方向的物體滑動 321 13.8.10 六自由度關節—btGeneric6DofConstraint 類 323 13.8.11 六自由度關節的案例— 掉落的蜘蛛 323 13.9 交通工具類的介紹 326 13.9.1 交通工具類—btRaycastVehicle 類 326 13.9.2 交通工具的案例—移動的小車 327 13.10 軟體 331 13.10.1 軟體幫助類—btSoftBodyHelps 類 331 13.10.2 軟布案例 332 13.10.3 三角形網格軟體案例 334 13.10.4 繩索軟體案例 337 13.11 本章小結 339 13.12 習題 339 第14章 休閑類游戲—極地大作戰 341 14.1 背景以及功能概述 341 14.1.1 游戲背景概述 341 14.1.2 游戲功能簡介 342 14.2 游戲的策劃及準備工作 343 14.2.1 游戲的策劃 343 14.2.2 游戲的準備工作 343 14.3 游戲的架構 344 14.3.1 各個腳本簡介 344 14.3.2 游戲架構簡介 345 14.4 網頁文件example.html 346 14.5 游戲相關腳本 350 14.5.1 初始化資源腳本 350 14.5.2 鍵盤事件監聽腳本 354 14.5.3 添加模型腳本 356 14.5.4 碰撞檢測腳本 360 14.6 游戲中相關工具類腳本概述 363 14.7 游戲中著色器的開發 363 14.7.1 帶有光照的著色器 363 14.7.2 不帶有光照的簡單 著色器 365 14.8 游戲的優化與改進 365 參考文獻 367
|
序: |
|