Collision Detection in Interactive 3D Environments (Hardcover)
暫譯: 互動式 3D 環境中的碰撞檢測 (精裝版)
Gino van den Bergen
- 出版商: Morgan Kaufmann
- 出版日期: 2003-10-27
- 定價: $2,800
- 售價: 8.0 折 $2,240
- 語言: 英文
- 頁數: 277
- 裝訂: Hardcover
- ISBN: 155860801X
- ISBN-13: 9781558608016
-
相關分類:
3D 列印、物理學 Physics、Computer-networks
立即出貨 (庫存=1)
買這商品的人也買了...
-
$480$379 -
$880$695 -
$650$429 -
$1,920$1,824 -
$420$328 -
$780$741 -
$590$466 -
$690$538 -
$650$618 -
$990$782 -
$750$638 -
$720$569 -
$540$427 -
$560$476 -
$2,370$2,252 -
$780$663 -
$550$468 -
$390$304 -
$490$417 -
$880$695 -
$480$379 -
$750$593 -
$2,280$2,166 -
$5,250$4,988 -
$1,960Physics Based Animation (書側有斑點不影響閱讀)
相關主題
商品描述
Descriptions:
The heart of any system that simulates the physical interaction between objects is collision detection—the ability to detect when two objects have come into contact. This system is also one of the most difficult aspects of a physical simulation to implement correctly, and invariably it is the main consumer of CPU cycles. Practitioners, new to the field or otherwise, quickly discover that the attempt to build a fast, accurate, and robust collision detection system takes them down a long path fraught with perils and pitfalls unlike most they have ever encountered. Without in-depth knowledge and understanding of the issues associated with engineering a collision detection system, the end of that path is an abyss that has swallowed many a good programmer!
Gino van den Bergen's new book is the story of his successful journey down that path. The outcome is his well-known collision detection system, the SOftware Library for Interference Detection (SOLID). Along the way, he covers the topics of vector algebra and geometry, the various geometric primitives of interest in a collision system, the powerful method of separating axes for the purposes of intersection testing, and the equally powerful Gilbert-Johnson-Keerthi (GJK) algorithm for computing the distance between convex objects. But this book provides much more than a good compendium of the ideas that go into building a collision system. The curse of practical computational geometry is floating-point arithmetic. Algorithms with straightforward implementations when using exact arithmetic can have catastrophic failures in a floating-point system. Specifically, intersection and distance algorithms implemented in a floating-point system tend to fail exactly in the most important case in a collision system—when two objects are just touching. Great care must be taken to properly handle floating-point round off errors. Gino's ultimate accomplishment in this book is his presentation on how to correctly implement the GJK distance algorithm in the presence of single-precision floating-point arithmetic. And what better way to illustrate this than with a case study, the final chapter on the design and implementation of SOLID.
About the CD-ROM
The companion CD-ROM includes the full C++ source code of SOLID 3.5 as well as API documentation in HTML and PDF formats. Both single (32bit) and double (64bit) precision versions of the SOLID SDK plus example programs can be compiled for Linux platforms using GNU g++ version 2.95 to 3.3 and for Win32 platforms using Microsoft Visual C++ version 6.0 to 7.1. Use of the SOLID source code is governed by the terms of either the GNU GPL or the Trolltech QPL (see CD-ROM documentation for details).
About the Author
Gino van den Bergen is a game developer living and working in The Netherlands. He is the creator of SOLID and holds a Ph.D. in computing science from Eindhoven University of Technology. Gino implemented collision detection and physics in NaN Technologies' Blender, a creation suite for interactive 3D content.
Table of Contents:
1 Introduction
1.1 Problem Domain
1.2 Historical Background
1.3 Organization
2 Concepts
2.1 Geometry
2.1.1 Notational Conventions
2.1.2 Vector Spaces
2.1.3 Affine Spaces
2.1.4 Euclidean Spaces
2.1.5 Affine Transformations
2.1.6 Three-dimensional Space
2.2 Objects
2.2.1 Polytopes
2.2.2 Polygons
2.2.3 Quadrics
2.2.4 Minkowski Addition
2.2.5 Complex Shapes and Scenes
2.3 Animation
2.4 Time
2.5 Response
2.6 Performance
2.6.1 Frame Coherence
2.6.2 Geometric Coherence
2.6.3 Average Time
2.7 Robustness
2.7.1 Floating-Point Numbers
2.7.2 Stability
2.7.3 Coping with Numerical Problems
3 Basic Primitives
3.1 Spheres
3.1.1 Sphere-Sphere Test
3.1.2 Ray-Sphere Test
3.1.3 Line-Segment-Sphere Test
3.2 Axis-Aligned Boxes
3.2.1 Ray-Box Test
3.2.2 Sphere-Box Test
3.3 Separating Axes
3.3.1 Line-Segment-Box Test
3.3.2 Triangle-Box Test
3.3.3 Box-Box Test
3.4 Polygons
3.4.1 Ray-Triangle Test
3.4.2 Line Segment-Triangle Test
3.4.3 Ray-Polygon Test
3.4.4 Triangle-Triangle Test
3.4.5 Polygon-Polygon Test
3.4.6 Triangle-Sphere Test
3.4.7 Polygon-Volume Tests
4 Convex Objects
4.1 Proximity Queries
4.2 Overview of Algorithms for Polytopes
4.2.1 Finding a Common Point
4.2.2 Finding a Separating Plane
4.2.3 Distance and Penetration Depth Computation
4.3 The Gilbert-Johnson-Keerthi Algorithm
4.3.1 Overview
4.3.2 Convergence and Termination
4.3.3 Johnson's Distance Algorithm
4.3.4 Support Mappings
4.3.5 Implementing the GJK Algorithm
4.3.6 Numerical Aspects of the GJK Algorithm
4.3.7 Testing for Intersections
4.3.8 Penetration Depth
5 Spatial Data Structures
5.1 Nonconvex Polyhedra
5.1.1 Convex Decomposition
5.1.2 Polyhedral Surfaces
5.1.3 Point in Nonconvex Polyhedron
5.2 Space Partitioning
5.2.1 Voxel Grids
5.2.2 Octrees and k-d Trees
5.2.3 Binary Space Partitioning Trees
5.2.4 Discussion
5.3 Model Partitioning
5.3.1 Bounding Volumes
5.3.2 Bounding-Volume Hierarchies
5.3.3 AABB Trees versus OBB Trees
5.3.4 AABB Trees and Deformable Models
5.4 Broad Phase
5.4.1 Sweep and Prune
5.4.2 Implementing the Sweep-and-Prune Algorithm
5.4.3 Ray Casting and AABBs
6 Design of SOLID
6.1 Requirements
6.2 Overview of SOLID
6.3 Design Decisions
6.3.1 Shape Representation
6.3.2 Motion Specification
6.3.3 Response Handling
6.3.4 Algorithms
6.4 Evaluation
6.5 Implementation Notes
6.5.1 Generic Data Types and Algorithms
6.5.2 Fundamental 3D Classes
7 Conclusion
7.1 State of the Art
7.2 Future Work
Bibliography
Index
About the CD-ROM
Trademarks
商品描述(中文翻譯)
描述:
任何模擬物體之間物理互動的系統的核心是碰撞檢測——即檢測兩個物體何時接觸的能力。這個系統也是物理模擬中最難正確實現的方面之一,並且無可避免地是 CPU 週期的主要消耗者。無論是新手還是有經驗的從業者,都會迅速發現,試圖建立一個快速、準確且穩健的碰撞檢測系統會讓他們走上一條充滿危險和陷阱的漫長道路,這條道路與他們以往所遇到的截然不同。若沒有對設計碰撞檢測系統相關問題的深入了解,這條道路的盡頭將是一個吞噬了許多優秀程序員的深淵!
Gino van den Bergen 的新書是他成功走過這條道路的故事。最終的成果是他著名的碰撞檢測系統——干擾檢測軟體庫(SOftware Library for Interference Detection,簡稱 SOLID)。在這個過程中,他涵蓋了向量代數和幾何學的主題、碰撞系統中各種幾何原始體、用於交集測試的強大分離軸方法,以及計算凸物體之間距離的同樣強大的 Gilbert-Johnson-Keerthi(GJK)算法。但這本書提供的不僅僅是建立碰撞系統所需思想的良好彙編。實用計算幾何的詛咒是浮點運算。在使用精確算術時實現簡單的算法在浮點系統中可能會出現災難性的失敗。具體而言,在浮點系統中實現的交集和距離算法往往在碰撞系統中最重要的情況下失敗——當兩個物體剛好接觸時。必須非常小心地處理浮點數的四捨五入誤差。Gino 在這本書中的最終成就是他展示如何在單精度浮點運算的情況下正確實現 GJK 距離算法。而用案例研究來說明這一點再好不過了,最後一章是關於 SOLID 的設計和實現。
關於 CD-ROM
隨書附贈的 CD-ROM 包含 SOLID 3.5 的完整 C++ 原始碼以及 HTML 和 PDF 格式的 API 文檔。SOLID SDK 的單精度(32bit)和雙精度(64bit)版本以及示例程序可以使用 GNU g++ 版本 2.95 到 3.3 編譯 Linux 平台,並可使用 Microsoft Visual C++ 版本 6.0 到 7.1 編譯 Win32 平台。使用 SOLID 原始碼受 GNU GPL 或 Trolltech QPL 的條款約束(詳情請參見 CD-ROM 文檔)。
關於作者
Gino van den Bergen 是一位居住和工作的遊戲開發者,位於荷蘭。他是 SOLID 的創建者,並擁有埃因霍溫科技大學的計算科學博士學位。Gino 在 NaN Technologies 的 Blender 中實現了碰撞檢測和物理,這是一個用於互動 3D 內容的創作套件。
目錄:
1 介紹
1.1 問題領域
1.2 歷史背景
1.3 組織
2 概念
2.1 幾何
2.1.1 符號約定
2.1.2 向量空間
2.1.3 仿射空間
2.1.4 歐幾里得空間
2.1.5 仿射變換
2.1.6 三維空間
2.2 物體
2.2.1 多面體
2.2.2 多邊形
2.2.3 二次曲面
2.2.4 Minkowski 加法
2.2.5 複雜形狀和場景
2.3 動畫
2.4 時間
2.5 響應
2.6 性能
2.6.1 幀一致性
2.6.2 幾何一致性
2.6.3 平均時間
2.7 穩健性
2.7.1 浮點數
2.7.2 穩定性
2.7.3 應對數值問題
3 基本原始體
3.1 球體
3.1.1 球體-球體測試
3.1.2 光線-球體測試
3.1.3 線段-球體測試
3.2 軸對齊盒
3.2.1 光線-盒測試
3.2.2 球體-盒測試
3.3 分離軸
3.3.1 線段-盒測試
3.3.2 三角形-盒測試
3.3.3 盒-盒測試
3.4 多邊形
3.4.1 光線-三角形測試
3.4.2 線段-三角形測試
3.4.3 光線-多邊形測試
3.4.4 三角形-三角形測試
3.4.5 多邊形-多邊形測試
3.4.6 三角形-球體測試
3.4.7 多邊形-體積測試
4 凸物體
4.1 鄰近查詢
4.2 多面體算法概述
4.2.1 尋找共同點
4.2.2 尋找分離平面
4.2.3 距離和穿透深度計算
4.3 Gilbert-Johnson-Keerthi 算法
4.3.1 概述
4.3.2 收斂和終止
4.3.3 Johnson 的距離算法
4.3.4 支持映射
4.3.5 實現 GJK 算法
4.3.6 GJK 算法的數值方面
4.3.7 測試交集
4.3.8 穿透深度
5 空間數據結構
5.1 非凸多面體
5.1.1 凸分解
5.1.2 多面體表面
5.1.3 非凸多面體中的點
5.2 空間劃分
5.2.1 體素網格
5.2.2 八叉樹和 k-d 樹
5.2.3 二元空間劃分樹
5.2.4 討論
5.3 模型劃分
5.3.1 邊界體積
5.3.2 邊界體積層次結構
5.3.3 AABB 樹與 OBB 樹
5.3.4 AABB 樹和可變形模型
5.4 廣義階段
5.4.1 掃描和修剪
5.4.2 實現掃描和修剪算法
5.4.3 光線投射和 AABBs
6 SOLID 的設計
6.1 需求
6.2 SOLID 概述
6.3 設計決策
6.3.1 形狀表示
6.3.2 動作規範
6.3.3 響應處理
6.3.4 算法
6.4 評估
6.5 實現註釋
6.5.1 通用數據類型和算法
6.5.2 基本 3D 類
7 結論
7.1 當前技術狀況
7.2 未來工作
參考文獻
索引
關於 CD-ROM
商標