轉載:http://blog.csdn.net/Rox_Tu/archive/2007/10/15/1824878.aspx
今天幫朋友找3D物理引擎的資料,以前也看過那么多了,一直沒有總結過,今天順便整理一下.
1. Havok:
老牌的君王,支持功能如下:
http://www.havok.com
· Collision Detection - including Continuous Physics™
· MOPP™ Technology - for compact representation of large collision meshes
· Dynamics and Constraint Solving
· Vehicle Dynamics
· Data Serialization and Art Tool Support
· Visual Debugger for in-game diagnostic feedback
有不少游戲和軟件都選擇了他做物理引擎,比如HOLO3,失落星球,HL2, 細胞分裂,指環王Online ..etc現在Havok被Intel收購了,以后可能對Intel的CPU會有特別的優化。
(Tip: HL2的泄漏源代碼中包含了SDK,就是版本比較老了吧。)
2. NovodeX --- AGEIA PhysX
新興的王者,支持功能如下:
http://www.ageia.com/
· Massively Parallel Physics Architecture
· High-speed GDDR3 Memory Interface
· AGEIA Universal Continuous Collision Detection
· AGEIA Physical Smart Particle Technology
· AGEIA Complex Object Physics System
· AGEIA Scalable Terrain Fidelity
· AGEIA Dynamic Gaming Framework
因為特有的硬件卡(物理加速卡-PPU)支持,所以能處理大量的物理運算,其他幾款暫時沒得比。Unreal3,GameBryo, Reality Engine等多款商業引擎和游戲都使用了他。
(Tip: NovodeX2.2及以前的版本,可以在沒有硬件卡的情況下使用所有功能,晚上能下載到)
3. Bullet
開源屆的霸主,支持功能如下:
http://www.bulletphysics.com
· Multi Platform support
· Supports various shape types:
· Discrete Collision Detection for Rigid Body Simulation
· Single Queries:
· Sweep and Prune Broadphase
· Documentation and Support
· Auto generation of MSVC project files, comes with Jam build system
· Bullet Collision Detection works with Bullet Dynamics, but there is also a sample integration with Open Dynamics Engine.
· Framework with 2 different Constraint Solvers
· Hinge, Point to Point Constraint, Twist Cone Constraint (ragdolls)
· Automatic de-activation (sleeping)
· Generic 6 Degree of Freedom Constraint , Motors, Limits
· LCP Warm starting of contact points
· Collada 1.4 Physics Import using FCollada and COLLADA-DOM
· Convex Decomposition Code
這款物理引擎的歷史也比較久了,但似乎國內知道的ODE的人更多一些,這款物理引擎被Nvidia的開發人員所關注(Nvidia前些時候說過,要用GPU來實現物理加速,可能會最先在這款物理引擎上實現。)
(Tip: 這款引擎是開源的,有興趣的朋友,可以看看。)
4. ODE
開源的名角,支持功能如下:
http://www.ode.org/
· Rigid bodies with arbitrary mass distribution.
· Joint types: ball-and-socket, hinge, slider (prismatic), hinge-2, fixed, angular motor, linear motor, universal.
· Collision primitives: sphere, box, cylinder, capsule, plane, ray, and triangular mesh, convex.
· Collision spaces: Quad tree, hash space, and simple.
· Simulation method: The equations of motion are derived from a Lagrange multiplier velocity based model due to Trinkle/Stewart and Anitescu/Potra.
· A first order integrator is being used. It's fast, but not accurate enough for quantitative engineering yet. Higher order integrators will come later.
· Choice of time stepping methods: either the standard ``big matrix'' method or the newer iterative QuickStep method can be used.
· Contact and friction model: This is based on the Dantzig LCP solver described by Baraff, although ODE implements a faster approximation to the Coloumb friction model.
· Has a native C interface (even though ODE is mostly written in C++).
· Has a C++ interface built on top of the C one.
· Many unit tests, and more being written all the time.
· Platform specific optimizations.
· Other stuff I forgot to mention...
嘿嘿,這個就不用做過多的介紹了,國內使用和學習這個的人比較多了。只是最近看到他的網頁上有這么一句話:“Russell Smith is the primary author of ODE.”不知道是誰又傷害了這位仁兄。
(Tip: Google一下,中文文章一大把。)
5. TOKAMAK
最近想通了,決定開源了。支持功能如下:
http://www.tokamakphysics.com/
· Joints
· Friction
· Stacking
· Collision Detection
· Rigid Particle
· Breakage
這個物理引擎出現也比較早了,作者是日本人,其實日本的游戲也很發達的,能把技術共享出來,難得啊。(日文的技術網站還是很多的。)
6. Newton
更多的專注于生活中的實例模擬。
http://www.newtondynamics.com
這款物理引擎名聲可能不是很響,但是功能上絕對不差。比較出名的作品有:TV3D, Quest3D
(Tip:這款引擎支持Delphi;在后面這個非官方的Wiki上,有一套不錯的教程: http://walaber.com/newton_wiki/index.php?title=Main_Page )
6. Simple Physics Engine
國產精品,支持功能如下:
http://spehome.cn/
· 使用獨創的快速而穩定的Tri-Mesh碰撞檢測算法,使載入模型數據異常簡單。SPE的碰撞檢測系統從一開始就是針對三角形網格(Tri-Mesh)而設計,所以用戶可以方便地使用mesh文件創建任意形狀的剛體,SPE內部將自動處理所有工作。同時,SPE支持球和膠囊兩種基本幾何形狀,方便用戶創建粒子特效和ragdoll系統。此外,SPE支持一定條件下的連續碰撞檢測,可以正確地處理大多數情況下的高速運動物體。
· 碰撞信息分析。SPE對碰撞檢測系統產生的數據進行智能化分析,為碰撞反應計算提供更可靠更正確的原始數據,極大地提高了系統的穩定性。
· 穩定的碰撞與接觸解決系統。從1.5版開始,SPE采用全新的解決算法,更正確地計算摩擦與反彈,而且更穩定。
· SPE提供一種穩定的基本Joint功能,支持最大距離、彈性系數以及破壞力等參數的配置,用戶可以使用它方便地創建各種其他類型的Joint。
· 實時剛體破碎。(Beta)。SPE提供“形狀操作”的功能,任何模型均可被一組平面或另一個模型切成小塊,SPE生成的模型中包括用于區分原始表面與切面的屬性信息,方便用戶更合理地渲染出新的形狀。目前,可破壞剛體的API已經開放。
· 高并行計算。SPE已經完成了多線程化以充分利用多核心CPU的性能. 90%以上的計算任務都可均勻地分配到任意數量的線程中去. 與單線程相比,雙線程至少能提供60%的性能提升,而四線程可以帶來150%以上的性能提升。使用SPEWorld::SetNumThreads( )即可在任何時候開啟多線程計算。
· 簡單易用而人性化的接口,極大地降低了SPE與其他軟件系統結合的難度,使用戶在瞬間即可建立一個具有真實物理屬性的世界。
· 更多的功能正在不斷開發中……
呵呵,國人做的一款物理引擎,關注….
最后: 當然還有其它的2D物理引擎就有很多了,改天有空的時候再整理一下吧。