常见的物理引擎

1649 篇文章 11 订阅
786 篇文章 9 订阅

1. Havok:

  老牌的君王,支持功能如下:

  · 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会有特别的优化。

  Havok对PS2、XBOX、GameCube、PC多种游戏平台都有支持。也是世界顶级游戏公司Valve(Half Life的公司),Pandemci,Remedy等的合作伙伴。这个物理引擎曾经支持过各种类型的游戏,包括racing game,first-persion shooter,MMOGs,adventure games,puzzle games等等。Hovak还曾经负责电影Matrix的部分效果处理。

  成功案例:

  Crash Nitro Kart、Half-Life 2、Max Payne 2、Medal of Honor、F.E.A.R.、Lord of the Rings: Middle Earth Online。

  2. NovodeX --- AGEIA PhysX

  新兴的王者,支持功能如下:

  · 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等多款商业引擎和游戏都使用了他。

  NovodeX是由开发PPU的公司AGEIA进行维护,因此对于将来PPU硬件的支持,无疑NovodeX是最有优势的。NovodeX是一个模拟刚体动力学的物理引擎,支持速度,加速度,动量,冲量,碰撞等等的物理概念。NovodeX的开发库支持跨平台,多线程,高速碰撞检测等特性,专门对汽车物理的模拟做了优化。案例:

  根据官方文档,已经有超过60个游戏工作室、公司和研究机构采用了NovodeX的技术。

  3. Bullet

  开源届的霸主,支持功能如下:

  · 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

  开源的名角,支持功能如下:

  · 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

  最近想通了,决定开源了。支持功能如下:

  · Joints

  · Friction

  · Stacking

  · Collision Detection

  · Rigid Particle

  · Breakage

  这个物理引擎出现也比较早了,作者是日本人,其实日本的游戏也很发达的,能把技术共享出来,难得啊。(日文的技术网站还是很多的。)

  6. Newton

  更多的专注于生活中的实例模拟。

  6. Simple Physics Engine

  国产精品,支持功能如下:

  · 使用独创的快速而稳定的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与其他软件系统结合的难度,使用户在瞬间即可建立一个具有真实物理属性的世界。

  

几款常用物理引擎比较


  

  

开发公司/作者HovokCMLabsRussell SmithAGEIADavid Lam
版本32.30.52.1.21.21
发行日期2005.32004.72004.52004.112005.3
是否支持C++开发
文档/Demo详细详细较详细详细较详细
License商业
  价格需要协商
商业
  价格需要协商
GNU LGPL/BSD/价格和使用需要协商商业
  价格需要协商
免费
技术支持全面全面全面
其他NANA开放源码支持PPUNA

[4]

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity的物理引擎使用的是计算机中的定点数(Fixed Point)来进行计算。定点数是一种用固定小数部分的数来表示实数的数值表示方法。 在计算机中,浮点数和定点数是两种常见的表达实数的方式。浮点数使用科学计数法来表示实数,它包含小数部分和指数部分。由于浮点数的存储和计算都需要考虑指数部分,所以相对于定点数来说,浮点数的运算速度更慢。 而定点数则采用一种固定的小数位来表示实数,没有指数部分。在Unity的物理引擎中,使用定点数可以提高运算速度和准确性,因为它不需要进行复杂的浮点数运算,只需要进行简单的整数运算即可。 Unity的物理引擎使用的是定点数的一种特殊形式,称为"Fixed"。在Unity中,Fixed数据类型类似于整数,但实际上它以定点数的形式进行存储和计算。Fixed数据类型将一个整数分为整数部分和小数部分,小数部分的位数是固定的,通常为16位。通过使用Fixed数据类型,Unity可以在进行物理计算时更加准确地模拟物理行为,同时也能提高运算速度,使游戏运行更加流畅。 总之,Unity的物理引擎使用的是定点数来进行计算。它通过定义一个固定的小数部分来表示实数,并且通过使用Fixed数据类型来存储和计算这些实数。这种使用定点数的方式可以提高运算速度和准确性,在物理模拟和游戏开发中起到非常重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值