物理引擎分析报告

unity3D游戏开发十一之物理引擎 Unity内置了NVIDIA的Physx物理引擎,Physx是mu'qian 阅读详情

物理引擎分析报告

前言:

物理引擎已经作为游戏引擎的重要组成部分,在3D的游戏中,开发者对物理表现的追求日趋苛刻,因此物理引擎必然会象图形引擎那样独立分支出来,作为专攻对象,这是一个趋势。最近由美国AGEIA公司开发的专门用作物理运算的硬件PPU(Physics processing unit),SEGA、UBISoft、EPIC都率先表示支持这个技术,EPIC甚至表示把这个技术整合到Unreal3.0的引擎上。从以上种种事例,物理引擎得到的重视已可见一斑。

一般的游戏引擎都会包括物理模块,但我们今天讨论的是专业的物理引擎,分别是Havok、Vortex、ode、NovodeX、takamak等。下面将对这几款引擎进行横向的比较。

简述:

Ø         Havok

 

 

 

http://www.havok.com

简介:

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。

Ø         Vortex

 

 

 

http://www.cm-labs.com/

简介:

       CMlabs公司的产品和Havok专注的方向不同,他是着重于工程领域的应用,而非游戏领域。专攻机器方面的模拟,所以追求运算的精确性。

       因为他的合作伙伴多数是一些非游戏公司,这里就不作介绍了。

Ø         Ode

 

 

 

http://www.ode.org/

简介:

       Ode是一个开源的引擎,支持跨平台。Ode能够高效的模拟刚体动力学,例如模拟汽车,还有真实环境中的各种物件。现在已经有很多电脑游戏采用了此开发库。

成功案例:

       BloodRayne2、Xpand Rally、18 Wheels of Steel: Pedal to the Metal。

Ø         NovodeX

 

 

 

http://www.ageia.com/novodex.html

简介:

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

案例:

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

Ø         takamak

 

 

 

http://www.tokamakphysics.com/index.htm

简介:

takamak是由David Lam开发的物理引擎。采用了独特的算法,尽可能的减少矩阵的运算,从而提高模拟的效率。

       案例:

       有一款智力游戏Bontago采用了此引擎,主要展现的都是规则多边形的物理表现。

横向比较

 

 

 

 

Hovok

Vortex

Ode

NevodeX

Takamak

开发公司/作者

Hovok

CMLabs

Russell Smith

AGEIA

David Lam

版本

3

2.3

0.5

2.1.2

1.21

发行日期

2005.3

2004.7

2004.5

2004.11

2005.3

是否支持C++开发

是

是

是

是

是

文档/Demo

详细

详细

较详细

详细

较详细

License

商业

价格需要协商

商业

价格需要协商

GNU LGPL/BSD/价格和使用需要协商

商业

价格需要协商

免费

技术支持

全面

全面

少

全面

无

其他

NA

NA

开放源码

支持PPU

NA

 

 

 

 

 

 

 

 

 

各个引擎的特性:

Hovok

Collision Detection - including Continuous Physics

Dynamics and Constraint Solving

Vehicle Dynamics

Data Serialization and Art Tool Support

Visual Debugger for in-game diagnostic feedback

 

 

 

Vortex

Fast rigid-body dynamics

Accurate collision detection

Stable constraint system

Comprehensive vehicle dynamics

Object oriented C/C++ API

Cross-platform: Microsoft Windows 95-98, NT, 2000, XP, SGI IRIX, Linux

Professional services and training

 

 

 

Ode

Rigid bodies with arbitrary mass distribution.

Joint types: ball-and-socket, hinge, slider (prismatic), hinge-2, fixed, angular motor, universal.

Collision primitives: sphere, box, capped cylinder, plane, ray, and triangular mesh.

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.

 

 

 

NevodeX

Fully Configurable NxJoint

'Roll your own Joint' with the new, fully configurable NxJoint! With this new flavor of NxJoint constraint you can selectively freeze, limit or free each of 6 DOF's independently, for unparalleled flexibility and ease of use. Virtually any type of joint can be expressed by setting parameters of the NxJoint--completely dynamically. For example, set up a hinge joint (1 DOF free), then convert it to a ball-and-socket (3 DOFs free) to simulate damage.

 

 

 

Support for Multi-Threading

Take advantage of next-generation multiprocessing systems with the new multi-threaded API in the NovodeX SDK. NovodeX makes it easy to provide state-of-the-art physical behavior for gameplay and effects by harnessing the power of leading-edge parallel system architectures.

 

 

 

Improved High-Speed Collision Detection

The industry's fastest and most comprehensive collision system is more robust than ever. Expect reduced tunneling artifacts and improved performance with high-speed objects.

 

 

 

New Raycast Vehicles

The NovodeX SDK now supports an advanced implementation of the single-rigid-body style wheeled vehicle.

 

 

 

Takamak

Tokamak features a unique iterative method for solving constraint.

This allows developers to make the trade-off between accuracy

and speed, as well as providing more predictable processor and

memory usage. In addition, Tokamak's constraint solver does not

involve solving large matrices, there by avoiding memory

bandwidth limitation on some game consoles.

 

 

 

Joints Tokamak supports a variety of joint types and joint limits.

Friction Tokamak provides a very realistic friction model and its computational cost is

minimal.

 

Stacking Tokamak is specially optimized for stacking large number of

objects; one of the most frequently requested features by game

developers.

Collision Detection Build within Tokamak is a very efficient collision

detection module. Currently, Tokamak provides collision detection

for primitives (box, sphere, capsule), combination of primitives, and

arbitrary static triangle mesh.

(NEW! Tokamak now support convex to convex collision detection..)

 

 

 

Rigid Particle A lightweight rigid body providing particle effects in games at minimal cost.

Breakage Constructing model which will break when collision occurs is a breeze in Tokamak. Fragment of

original model will automatically be spawn by Tokamak's built-in breakage functionality.

 

 

 

综述

在观看了每个引擎所提供的demo和相关的文档后,我觉得应该在NevodeX和Ode两者之间进行选择。

Hovok是众多引擎里面最有名气的一个,但是能够获得相关的资料却是最少。从他支持的游戏,如Half-Life和Medal of Honor等,可以看出这款引擎的实力。

VorTex是一款面向工业的物理引擎,他追求的方向是精确而非速度。汇集各个方面的因素,我觉得此款物理引擎不可取。

Ode是一款基于Open Dynamics Framework下的一款物理引擎,他十分的开放,可以让开发人员窥探里面的实现方式,甚至进行改进。一款叫做GRYPS(http://engine.hlw.co.at)的游戏引擎已经集成了Ode,这款引擎的供应商可以对此Ode的使用,集成做技术支持,但是相对其他商业引擎,支持还是显得不足。很多开发人员利用这款引擎开发了不少Demo,其中有一些汽车类的Demo,已经基本满足我们的需求。

NevodeX是一款商业物理引擎,从他的Demo来看,模拟的真实感到运行速度,与Ode不相上下,而且文档更加的详细。此款引擎又是由AGEIA进行开发,对于将来PPU的使用也会更加方便。

Takamak是由一个爱好者开发的,因此技术实力比较单薄,而且对于技术支持方面做得不足,应该不予考虑。

备注

以上提及到的引擎demo和文档可以通过我的popo共享文件夹下载。

popo:blue_bean@163.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Unity3D学习笔记——物理引擎 Unity3d学习笔记——刚体运动、三维数学一、物理引擎1、刚体1>简介2>属性2、碰撞器1>简介2>分类3>属性4>物理材质5>碰撞条件6>碰撞三阶段3、触发器1>简介2>触发条件3>触发三阶段 一、物理引擎 1、刚体 1>简介 2>属性 2、碰撞器 1>简介 2>分类 3>属性 4>物理材质 用于调整碰撞对象的摩擦力和反弹效果 属性 ----动态摩檫力 Dynamic Friction:移动时摩擦力 阅读详情

相关推荐

【Unity】物理引擎、生命周期物理阶段、刚体、碰撞体、触发器、物理材质

Unity 可帮助您在项目中模拟物理系统,以确保对象正确加速并对碰撞、重力和各种其他力做出响应。从开发方式的角度出发,Unity提供了面向对象和面向数据两种方式。面向数据指的是Unity提供的一种新的技术栈DOTS(Data Oriented Tech Stack),而面向数据的物理引擎需要使用专用的DOTS物理包。由于此项技术栈尚不成熟,可用性很低,所以暂不考虑。面向对象内置3D物理系统(集成 NVIDIA PhysX 引擎)内置2D物理系统(集成Box2D引擎)......

一个普普通通的游戏开发者 4488

物理引擎:实现真实的世界

1.背景介绍 物理引擎是计算机游戏和虚拟现实技术中的一个关键组件,它负责模拟真实世界中的物理现象,如重力、摩擦、弹性等。物理引擎的目标是使得游戏中的对象和环境看起来和行为像真实世界一样,从而提供更加沉浸式的游戏体验。 在过去的几十年里,物理引擎技术发展迅速,从2D游戏的简单物理模拟到现在的高端游戏和虚拟现实系统中的复杂物理模拟,技术已经取得了显著的进展。这篇文章将深入探讨物理引擎的核心概念、算...

AI天才研究院 2563

three.js——物理引擎

剖析案例中物理引擎Ammo.js的使用方法,其中包含运动、碰撞、检测、自由落体、碰撞器、冻结、自定义更新等功能,有大量代码通过链接方式转到gitee,可以根据代码对照使用主要剖析的是threejs中提供的案例,相对于原本案例,本篇文章精简了一些代码,提取了一些方法,新增了一些可配置参数,并结合我上一篇文章做了一个小Demo。先看一下效果从图片中可以看出来,小球在落地时,触碰到人物模型的头部,改变了运动方向,后面人物模型行走时,可以踢球,改变球的运动速度。

2402_85402030的博客 2054

python 物理引擎_第十六章:物理引擎

物理引擎物理引擎概述物理引擎是一种用于模拟真实物理现象的中间件,可以用来创建虚拟的物理环境,并在其中运行来自物理世界的规则。物理引擎应用的最多的地方就是动画和游戏行业,例如3D游戏开发常用的三大物理引擎:Havok引擎的授权则比较昂贵和严格,光环4、上古卷轴5等游戏大作使用的都是这款引擎。PhysX虽然现在不开源,但也实行免费推广政策,是Unity3D、CryEngine等游戏引擎的首选。Bull...

weixin_39730671的博客 3366

Unity3D之物理引擎

【狗刨学习网】 简介        物理引擎就是在游戏中模拟真实的物理效果,比如,场景中有两个立方体对象,一个在空中,一个在地面上,在空中的立方体开始自由下落,然后与地面上的立方体对象发生碰撞,而物理引擎就是用来模拟真实碰撞的效果。        如果需要让模型感应物理引擎的效果,需要将刚体组件或角色控制器组件添加至该对象中。 刚体(Rigidbody)

5393

Rust语言的物理引擎

Rust是一种系统编程语言,旨在提供高速性能与内存安全。它的设计理念是能够像C和C++一样高效,同时避免常见的内存管理问题,如空指针解引用、缓冲区溢出等。Rust通过独特的所有权系统和借用检查器,在编译阶段就能够捕获许多潜在的错误,帮助开发者编写出更加可靠的代码。内存安全:Rust的所有权系统确保了内存管理的安全性,不再需要手动管理内存,避免了内存泄漏和数据竞争的问题。高性能:Rust编译后的代码性能接近C/C++,非常适合需要高效运算的应用场景。并发编程。

2501_91024643的博客 718

读《游戏物理引擎开发》

    2015-04-26              我花了一周多的时间完成了这本书的第一次学习。 我对带有源代码的技术入门书一向有好感,这本书简直太对我的胃口了。本书多直接对各种情况给出了模型,而没有深入的分析模型的准确性与提炼过程,这也挺好,偏实际应用一点。另外还有一本Mathematics and Physics for Programmers倒是从更加基础的角度来分析物理模拟,要...

know yourself 6632

C#如何打造逼真游戏物理引擎

摘要: C#在游戏物理引擎开发中至关重要,尤其在Unity引擎中,通过Rigidbody、Collider等组件实现刚体动力学、碰撞检测与响应。Unity内置的PhysX引擎支持重力、摩擦等物理模拟,开发者可通过C#脚本控制物体运动(如AddForce)。此外,C#支持自定义物理引擎开发,如基于牛顿力学实现动力学计算,或优化碰撞检测(AABB、空间分区)。实际应用涵盖角色控制、车辆模拟及粒子效果,兼顾性能优化(避免GC、并行计算)。无论是使用Unity物理系统还是自研引擎,C#的高效与灵活性使其成为游戏物理

java专栏 963

物理引擎学习-开篇

物理引擎是游戏引擎中一个非常重要的基础模块,也是一个非常有趣的模块。虽然现在商用的物理引擎已经很多了,而且都非常成熟,但是引擎毕竟不是万能的,有些特殊场合还是需要自己去实现。比如: 要实现一个小游戏,使用很简单的碰撞检测就够了,引入庞大的物理引擎,效率反而低而且不够灵活; 要实现一些超自然场景。比如宇宙类宏观题材,或是量子等微观题材,本来常规的物理定律就不适用,更别说是基于常规物理定律实现的物理引擎了; 运动的物体数量太多的游戏,比如弹幕类游戏。这种情况下,物理引擎可能就是瓶颈之一了,也许我们要的仅仅是碰

游蓝海 的专栏 2430

Cocos Creator引擎开发:物理引擎使用_物理引擎基础知识

物理引擎是一种软件组件,用于模拟物理现象。在游戏开发中,物理引擎通常用于处理物体的运动、碰撞检测和响应。刚体动力学:模拟物体在重力、推力、摩擦力等作用下的运动。碰撞检测:检测物体之间的碰撞,并计算碰撞后的响应。关节和约束:模拟物体之间的连接和约束关系,如铰链、弹簧等。流体模拟:模拟水、空气等流体的物理特性(Cocos Creator 目前暂不支持流体模拟)。物理引擎的核心在于其能够高效地计算和更新物理世界的状态,从而让游戏中的物理效果看起来既自然又真实。

chenlz2007的博客 1385

Unity 物理引擎

在Unity中,刚体(RigidBody) 组件提供了一种基于物理的方式来控制游戏对象的移动和位置。使用模拟的物理力和扭矩来移动游戏对象,并让物理引擎计算结果,而不是“变换”属性。刚体属性施加来自物理系统的,从而改变游戏对象的变换;如果直接更改“变换”,Unity将无法正确计算物理模拟,并且您可能会看到不需要的行为。对于具有关节的刚体尤其如此。。刚体可以接受力和扭矩,但变换不能。变换可以被平移和旋转,但这与使用物理引擎不同。亲自尝试使用二者会注意到明显的差异。

m0_66358314的博客 4972

开源的物理引擎_开源物理引擎

物理引擎是用于创建虚拟环境的模拟器,该虚拟环境融合了来自物理世界的定律。 除了对象之间的相互作用(例如,碰撞)之外,该虚拟环境还可以包括具有附加作用力(例如重力)的对象。 物理引擎在模拟的环境中模拟牛顿物理学,并管理这些力和相互作用。 物理引擎最受欢迎的应用之一是娱乐和游戏行业(请参见图1 ),其中物理引擎提供了游戏环境(包括玩家和可能存在的其他对象)的实时仿真。 在将其用于游戏之前,物理...

cuxiong8996的博客 4625

华为eNSP实战:手把手教你配置DHCP全局地址池(含AP固定IP分配)

本文通过华为eNSP模拟器,详细演示了如何配置DHCP全局地址池,为不同业务VLAN动态分配IP地址,并重点讲解了如何通过MAC地址绑定为接入点(AP)分配固定IP。文章涵盖了从拓扑设计、基础网络搭建到地址池精细配置、验证测试及常见故障排查的全流程,是网络工程师掌握企业级DHCP部署与AP管理的实用指南。

weixin_29235923的博客 600

ThreeJS—物理引擎

ThreeJS物理引擎 对于物理引擎ThreeJS是没有对其进行封装的,官方中给出案例中直接使用AmmoJS(使用 Emscripten将Bullet物理引擎的C++源码直接转换成JS),渲染引擎和物理引擎结合来实现碰撞检测、自由落体等物理现象,其核心实质就是将物理引擎的计算结果更新到渲染引擎中。 1.初始化物理引擎 var collisionConfiguration = new Ammo.bt...

SuperMan_ZXW的博客 4231

C#计算八字

private string[] jq = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" };private string[] dz = { "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子" };

m0_72939038的博客 828

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

游戏开发入门(六)游戏物理引擎

视频链接:游戏开发入门(六)游戏物理引擎(4节课 时常:约1小时20分钟 第5节无内容) 该视频主要针对游戏中的物理概念以及应用等方面进行简单的讲解,并不会深入的去分析物理公式与推导细节。 笔记与总结(请先学习视频内容): 1.游戏应用物理的目的就是为了真实 2.物理引擎: 可以认为属于游戏引擎的一个构成部分,但是可以独立剥离开来。游戏中的物理模拟的计算都是通过物理引擎根据真实世界...

Jerish的博客 2万+

AF驱动调试日志全解析:从配置到问题排查

本文全面解析AF驱动调试日志的配置、抓取与分析方法。从内核驱动与HAL层配置入手,确保日志正常输出,并详细解读开机初始化、马达识别、I2C通信等关键日志节点。通过多个实战案例,如对焦失败、前摄无功能、参数不生效及I2C报错等,系统性地展示了如何利用日志定位并解决AF对焦问题,是摄像头模组开发与调试的实用指南。

weixin_28285943的博客 305

Cocos2d-x物理引擎概述

Cocos2d-x物理引擎概述   当我们试图做一款复杂的游戏的时候,那游戏需要模拟现实世界的情境,比如模拟两个物体碰撞,模拟物体收到重力等。 是否需要使用物理引擎   当你的需求很简单时,就不要使用物理引擎。比如只需要确定两个对象是否有碰撞,结合使用节点对象的update函数和Rect对象的containsPoint(),intersectsRect()方法可能就足够了。例如: void update(float dt) { auto p = touch->getLocation();

田螺姑娘的博客 3867

AIoT 在线工程实训平台案例——智能家居

AIoT 在线工程实训平台案例——智能家居的操作步骤

m0_53608652的博客 1431

K8s-K8s部署Zookeeper+Kafka+ELFK+持久化数据

K8s环境下容器化部署`Zookeeper+Kafka+ELFK`日志收集系统

✅ 专注企业级 Linux/DevOps 运维的实战派 ✅ 已输出上百篇可落地方案 ✅ Shell 脚本开箱即用 ✅ K8s/YAML 环境验证 ✅ 故障排查链路完整复现 1915

Unity优化——加速物理引擎1

大家好,这里是七七,今天开始更新物理引擎相关的优化部分了,本文介绍的是。Unity技术有两种不同的物理引擎:用于3D物理的Nvidia的PhysX和用于2D物理的开源项目Box2D。然而,Unity对它们的实现是高度抽象的,从通过主Unity引擎配置的更高级别Unity API的角度来看,两个物理引擎解决方案以功能相同的方式运行。无论是哪种情况,对Unity的物理引擎了解的越多,就越能理解可能的性能增强。本文将介绍一些关于Unity如何实现这些系统的理论。

m0_63024355的博客 2357

Python爬虫实战:Playwright 攻克京东图书新书榜(含动态价格与分页)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 593

物理引擎matter.js

Matter.js 是一个轻量级的 2D 物理引擎库,用于创建和模拟物理世界中的物体运动。主要模块包括 Engine(物理引擎)、Render(渲染器)、World(物理世界容器)和 Bodies(创建刚体)。通过 Bodies.circle 等方法可以创建圆形刚体,并配置弹性、摩擦力等物理属性。Engine.create() 初始化物理引擎,Render.create() 创建可视化渲染。World 作为容器存放所有物体,通过 Engine.run() 启动模拟。Matter.js 还支持鼠标交互,Mat

weixin_70907143的博客 1121

Apache Jena SPARQL 查询完全指南:入门与实战案例

本文介绍了使用Apache Jena执行SPARQL查询的完整指南。SPARQL是用于RDF数据的标准查询语言,在知识图谱领域地位相当于SQL。教程从基础开始,涵盖创建模型、加载数据以及执行各种查询类型。特别强调了WHERE子句中的图模式匹配机制,通过Mermaid图直观展示数据图与查询图的匹配过程。文章还对比了变量命名规范(?和$前缀),解释了SPARQL引擎如何通过变量绑定实现数据检索。通过Hello World示例演示了完整查询流程,为开发者提供了SPARQL的实用入门指导。

Lincoln 的专栏 1373

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: Operator new Surprises in VC6
下一篇: Visual Assist X: The Indispensable IDE Add-In
amdk_7
博客等级 码龄22年 12粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值