-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

游戲物理引擎開發

( 簡體 字)
作者:(美)米靈頓 著類別:1. -> 遊戲 -> 遊戲程式
譯者:徐明亮 等譯
出版社:清華大學出版社游戲物理引擎開發 3dWoo書號: 37680
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:11/1/2013
頁數:334
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302344568
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

  本人于20世紀80年代踏上游戲編程之路,當時正是8位機風行的年代,低預算與較短的開發周期鼓勵研發人員不斷嘗試和創新,其中不乏某些游戲精品。至今,我依然對兩款游戲印象深刻,它們均采用了真實的物理行為作為游戲體驗的核心內容。
  第一款游戲由Jeremy Smith開發,并針對英國BBC Micro家用計算機平臺而發布,即Thrust。該游戲根據街機游戲Gravitar改編,其中藤葉狀船只游弋于地下溶洞之間,且通過2D物理模擬對其加以支配。游戲任務是竊取大型燃料棒,并通過線纜連接至船體。隨后,相對簡單的船體模型演變為兩個大型對象之間的交互行為。游戲本身頗具挑戰性且令人欲罷不能,因而不失為一款經典游戲。
  第二款游戲則是Exile,由Peter Irvin和Jeremy Smith聯袂開發。該游戲具有一定的創造性且令人印象深刻,游戲所蘊含的技術亮點已超出了物理范疇,例如游戲對象的過程式構建方式。
  游戲Exile中的物理內容體現于游戲中的各個對象上。其中,發射物沿彈道軌跡行進;玩家可投擲手榴彈,且爆炸沖擊波可掀翻周圍物體;玩家可負重前行且身體呈彎曲狀態;另外,玩家還可漂流于水面上。總之,游戲Exile首次采用了相對完整的物理引擎。
  盡管游戲Exile發布于1988年,但其物理編碼內容并不落伍。本人于1999年涉足游戲物理引擎程序設計,并在一款賽車游戲中負責車輛模型的物理引擎開發,期待中一個月的開發周期最終變得遙遙無期。
  開始階段,物理問題并未引起足夠重視,因而產生了各種各樣的問題。例如,硬質懸掛彈簧將車輛以螺旋方式彈射至無限遠處;摩擦力導致輪胎高速旋轉時產生振動現象;硬質表面呈現為軟質橡膠材質。對此,我曾嘗試了多種處理方案,包括沖量方案、Jacobian方案、規約坐標方案以及模擬物理方案,其學習曲線不同于之前任何游戲編碼經歷。
  盡管開發時間超出了最后的期限(開發內容為向第三人稱射擊行為提供物理驅動),但公司人員依然對各個中間件物理系統進行了嚴格檢測,本人也從中了解到各類方案的優缺點。在隨后的開發歲月中,本人所編寫的代碼體現了一定的復用性,并應用于多個不同場合。隨著經驗的不斷積累,本人也研發了多款物理引擎,并為諸多應用制定了相關的物理解決方案。關于如何獲取最為簡單的方案以及最佳物理效果,我自認為具有正確的判斷力。
  游戲開發已步入了物理模擬商品化這一階段,即物理模擬常出現于各類游戲中,且開發公司均會研制內部物理庫,或對某一主要的中間件處理方案提供應用許可。盡管物理行為日趨普遍,但其研發階段仍可視為一個黑盒過程,即開發人員負責實現物理行為,其他團隊則直接使用結果。
  關于游戲物理學,相關信息以及參考資料均假設讀者具有一定的數學和物理知識。然而,某些著作僅羅列了相應的物理內容,且不包含對應的應用框架結構。更為糟糕的是,一些資料甚至包含了某些錯誤理論,進而使讀者陷入困境。物理引擎通常較為復雜,且存在較大的優化和改良空間,部分內容還有待于進一步探討研究。例如,在讀者嘗試實現Lemke樞軸算法之前,應于先期理解其基本概念并包含相應的代碼測試框架。
  本書源自個人初始階段所經歷的種種磨難,同時也希望本書能夠填補這一方面的空白,且兼顧邏輯性和清晰易懂之特征,進而引領讀者從零開始打造一款屬于自己的物理引擎。本書僅是萬里長征中的第一步,但卻是堅實的一步,因為我們已然擁有了正確的方向。
本書附帶光盤
  本書附帶光盤包含了源代碼庫,進而實現本書所討論的各項技術以及示例程序。該代碼庫易于閱讀,并輔以注釋和應用示例。
  本書附帶光盤中的全部內容已上傳至www.tup.com.cn,請讀者自行下載。
關于作者
  Ian Millington,IPR Ventures咨詢公司合伙人,該公司致力于次世代技術的研發工作,涉及娛樂、建模技術以及模擬仿真技術。在此之前,他曾創辦了Mindlathe Ltd(計算機游戲領域內一家最大的專業AI中間件公司),并涉足多種游戲類型以及開發技術。Ian Millington具有深厚的AI專業背景,包括復雜理論和自然計算博士項目研究。除此之外,他還發表了多篇專業學術論文和文章,內容涉及古生物學和超文本技術。同時,他還是Artificial Intelligence for Games一書的作者(該書由Morgan Kaufmann出版社于2006年出版)。
致謝
  本書旨在打造一款健壯的游戲物理引擎,該過程歷盡艱辛并得到了編碼人員以及數學家們的巨大幫助,本書的出版源自他們所發表的論文和文章、SIGGRAPH大會演講以及所發布的源代碼。當然,我的感謝名單遠不止于此,這里要著重感謝Chris Hecker,Andrew Watkin和David Barraf,其思想奠定了本書的編寫風格。
  感謝本書技術評審小組成員所付出的艱辛勞動,他們是Philip J. Schneider,Jonathan Purdy博士以及Eitan Grinspun,他們的建議極大地提升了本書的編寫質量、可讀性以及有效性。另外,這里還要特別感謝Dave Eberly,他對細節的關注令我受益匪淺。
  本書編寫時恰逢R&D咨詢公司創業期,因而本書獻給我的妻子Mel,感謝她兩年來陪我度過無數個不眠之夜。
游戲物理引擎開發
  
前 言
  
·IV·
  
·V·
  
  
  

  
內容簡介:

《游戲物理引擎開發》詳細闡述了與游戲物理引擎相關的高效解決方案及相應的數據結構和算法,主要包括粒子數學、運動定律、粒子物理引擎、合力、彈力、硬約束條件、質體物理引擎、旋轉操作的數學知識、剛體運算定律、剛體物理引擎、碰撞檢測、生成碰撞、碰撞處理方案、靜態接觸和摩擦力、穩定性和優化問題、整合方案以及其他物理引擎等內容。此外,本書還提供了相應的算法、代碼以及偽代碼,以幫助讀者進一步理解相關方案的實現過程。
  《游戲物理引擎開發》適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
目錄:

第1章 概述 1
1.1 游戲物理 1
1.2 物理引擎 2
1.2.1 物理引擎的優點 3
1.2.2 物理引擎的缺點 3
1.3 物理引擎的實現方案 4
1.3.1 對象類型 4
1.3.2 碰撞處理方案 4
1.3.3 沖量和作用力 5
1.3.4 構建內容 6
1.4 物理引擎中的數學 6
1.4.1 必備的數學知識 6
1.4.2 數學知識回顧 7
1.4.3 本書引入的數學概念 8
1.5 本書源代碼 8
1.6 本書組織方式 9
第1部分 粒 子 物 理
第2章 粒子數學 11
2.1 向量 11
2.1.1 左手空間和右手空間 14
2.1.2 向量和方向 15
2.1.3 標量和向量的乘法運算 17
2.1.4 向量的加法和減法運算 18
2.1.5 向量乘法 20
2.1.6 分量積 20
2.1.7 標量積 21
2.1.8 向量積 24
2.1.9 正交基向量 26
2.2 積分運算 27
2.2.1 微分學 27
2.2.2 積分運算 30
2.3 本章小結 31
第3章 運動定律 32
3.1 粒子 32
3.2 運動定律 33
3.2.1 牛頓第一定律 33
3.2.2 牛頓第二定律 34
3.2.3 力學方程 34
3.2.4 向粒子添加質量 35
3.2.5 動量和速度 36
3.2.6 重力 36
3.3 積分算式 37
3.3.1 更新方程 38
3.3.2 完整的積分算式 39
3.4 本章小結 40
第4章 粒子物理引擎 41
4.1 彈道軌跡 41
4.1.1 設置發射對象屬性 41
4.1.2 實現方法 42
4.2 焰火效果 44
4.2.1 焰火數據 45
4.2.2 焰火效果規則集 46
4.2.3 實現方法 47
4.3 本章小結 50
第2部分 質量集合體物理
第5章 合力 51
5.1 DAlembert定理 51
5.2 作用力發生器 53
5.2.1 接口和多態 54
5.2.2 實現方法 54
5.2.3 重力發生器 57
5.2.4 阻力發生器 57
5.3 內建重力和阻尼機制 59
5.4 本章小結 59
第6章 彈力 60
6.1 胡克定律 60
6.1.1 彈力限制條件 61
6.1.2 彈性材質 61
6.2 彈力發生器 61
6.2.1 基礎型彈力發生器 62
6.2.2 固定彈簧發生器 63
6.2.3 彈性橡皮筋 65
6.2.4 浮力發生器 66
6.3 硬質彈簧 69
6.3.1 硬質彈簧產生的問題 70
6.3.2 仿硬質彈簧 71
6.4 本章小結 75
第7章 硬約束條件 77
7.1 簡單的碰撞解決方案 77
7.1.1 閉合速度 77
7.1.2 回彈系數 78
7.1.3 碰撞法向和碰撞法線 79
7.1.4 沖量 80
7.2 碰撞處理方案 81
7.2.1 碰撞檢測 83
7.2.2 處理相交對象 84
7.2.3 靜態碰撞 87
7.3 碰撞處理算法 90
7.3.1 處理順序 90
7.3.2 時分引擎 93
7.4 類碰撞材質 94
7.4.1 繩索 94
7.4.2 連桿 97
7.5 本章小結 98
第8章 質體物理引擎 100
8.1 引擎概述 100
8.2 使用物理引擎 105
8.2.1 索橋和線纜 105
8.2.2 摩擦力 106
8.2.3 Blob游戲 107
8.3 本章小結 107
第3部分 剛體物理系統
第9章 旋轉操作的數學知識 108
9.1 二維環境下的旋轉對象 108
9.1.2 角速度 110
9.1.3 原點和質心 110
9.2 三維環境中的方向 113
9.2.1 歐拉角 113
9.2.2 軸-角 115
9.2.3 旋轉矩陣 115
9.2.4 四元數 116
9.3 角速度和加速度 117
9.3.1 點速度 118
9.3.2 角加速度 119
9.4 實現方案 119
9.4.1 矩陣類 119
9.4.2 矩陣乘法 120
9.4.3 逆矩陣和轉置矩陣 127
9.4.4 將四元數轉換為矩陣 133
9.4.5 轉換向量 135
9.4.6 調整矩陣中的基向量 138
9.4.7 四元數類 139
9.4.8 四元數的標準化操作 140
9.4.9 四元數組合操作 141
9.4.10 旋轉 142
9.4.11 基于角速度的更新操作 142
9.5 本章小結 143
第10章 剛體運算定律 144
10.1 剛體 144
10.2 基于旋轉的牛頓第二定律 147
10.3 轉矩 147
10.3.1 轉動慣量 148
10.3.2 世界坐標系中的慣性張量 151
10.4 基于旋轉的DAlembert定理 153
10.5 剛體積分運算 158
10.6 本章小結 159
第11章 剛體物理引擎 161
11.1 引擎概述 161
11.2 物理引擎應用 163
11.2.1 飛行模擬器 164
11.2.2 帆船模擬器 168
11.3 本章小結 173
第4部分 碰撞檢測系統
第12章 碰撞檢測 174
12.1 碰撞檢測管線 174
12.2 粗略碰撞檢測 175
12.3 包圍體 175
12.3.1 層次結構 177
12.3.2 構造層次結構 182
12.3.3 子對象層次結構 187
12.4 空間數據結構 188
12.4.1 二分空間劃分 189
12.4.2 八叉樹和四叉樹 192
12.4.3 網格方案 194
12.4.4 多分辨率圖 196
12.5 本章小結 196
第13章 生成碰撞 198
13.1 碰撞幾何體 198
13.1.1 圖元組裝 199
13.1.2 生成碰撞幾何體 199
13.2 碰撞生成過程 200
13.2.1 碰撞數據 201
13.2.2 點-面碰撞 203
13.2.3 邊-邊碰撞 203
13.2.4 邊-面碰撞 204
13.2.5 面-面碰撞 204
13.2.6 前期退出 205
13.3 圖元碰撞算法 205
13.3.1 球體間的碰撞 206
13.3.2 球體和平面之間的碰撞 208
13.3.3 盒體與平面之間的碰撞 211
13.3.4 球體與盒體之間的碰撞 213
13.3.5 盒體間的碰撞 216
13.3.6 效率和通用多面體 223
13.4 本章小結 224
第5部分 接觸型物理系統
第14章 碰撞處理方案 225
14.1 沖量和沖擊轉矩 225
14.1.1 沖擊轉矩 226
14.1.2 旋轉碰撞 227
14.1.3 處理旋轉碰撞 228
14.2 碰撞沖量 228
14.2.1 調整碰撞坐標系 229
14.2.2 基于沖量的速度變化 234
14.2.3 基于速度的沖量變化 237
14.2.4 計算期望速度變化 238
14.2.5 沖量計算 239
14.2.6 沖量應用 239
14.3 處理相交行為 240
14.3.1 方案選取 241
14.3.2 實現非線性投影 243
14.3.3 避免過度的旋轉 245
14.4 碰撞處理過程 247
14.4.1 碰撞處理管線 247
14.4.2 預置碰撞數據 249
14.4.3 處理相交問題 253
14.4.4 處理速度 258
14.4.5 更新算法的替代方案 260
14.5 本章小結 262
第15章 靜態接觸和摩擦力 264
15.1 靜態作用力 264
15.2 微碰撞 266
15.2.1 移除速度 267
15.2.2 減少復原 268
15.2.3 計算最新速度 269
15.3 摩擦力類型 269
15.3.1 靜態摩擦力和動態摩擦力 270
15.3.2 各向同性摩擦力和各向異性摩擦力 272
15.4 摩擦力實現方案 272
15.4.1 基于沖量的摩擦力 273
15.4.2 調整速度處理算法 274
15.4.3 整合方案 279
15.5 碰撞和連續碰撞處理 281
15.6 本章小結 282
第16章 穩定性和優化問題 283
16.1 穩定性 283
16.1.1 四元數漂移 284
16.1.2 斜面上的相交 284
16.1.3 積分穩定性 286
16.1.4 保守碰撞檢測的優點 287
16.1.5 調整數學精確度 288
16.2 優化操作 289
16.2.1 休眠機制 289
16.2.2 相交和速度誤差處理 295
16.2.3 碰撞(接觸)分組機制 297
16.2.4 代碼優化 298
16.3 本章小結 300
第17章 整合方案 301
17.1 引擎綜述 301
17.2 物理引擎應用 302
17.2.1 布娃娃系統 303
17.2.2 斷裂物理學 306
17.2.3 爆炸物理學 310
17.3 引擎的局限性 316
17.3.1 堆砌型對象 316
17.3.2 反作用力摩擦力 316
17.3.3 關節組裝 316
17.3.4 硬質彈簧 317
17.4 本章小結 317

第6部分 擴 展 引 擎
第18章 其他物理引擎 318
18.1 同步碰撞處理 318
18.1.1 Jacobian方案 318
18.1.2 線性互補問題 319
18.2 約化坐標方案 321
18.3 本章小結 322
參考文獻 323
附錄A 常見慣性能量 324
A.1 離散質體 324
A.2 連續質體 324
A.3 常見形狀 325
A.3.1 長方體 325
A.3.2 球體 325
A.3.3 圓柱體 326
A.3.4 圓錐體 326
附錄B 游戲中常見的摩擦系數 327
附錄C 其他程序設計語言 328
C.1 C語言 328
C.2 Java語言 328
C.3 公共語言運行庫(.NET) 329
C.4 Lua語言 329
附錄D 數學背景知識 330
D.1 向量 330
D.2 四元數 331
D.3 矩陣 332
D.4 積分運算 333
D.5 物理運算 333
D.6 其他公式 334
  
  
游戲物理引擎開發
  
目 錄
  
·VI·
  
·XI·
序: