三个物理引擎(转)

介绍三个物理引擎以及讨论 

物理引擎在3D的领域中是较年轻的,而且难度也比较高,
先製作这篇文章,是想让大家有个先行印象,了解这是什么。

別担心,最终这些教学终將连结成为一体,我只是让大家的概念先推前一下。
当成看杂誌一般的心情即可,如果你有研究,会使用SDK,也可以马上开始。

关於物理
牛顿归纳出了地心引力的通则,並且开始以数学方法描述物理现象,
这已经是很久前的事情了,但是並不只是东西往下掉而已,虽然简单讲是这样。
球会滚动、羽毛会飘落、摩擦力......等等,都是自然界常见的力学现象。

关於游戏的物理
在2D游戏里,大部分的物理被简化为"离开地面的时候,就往下掉",这样简单易懂,
马里奥、洛克人都是这样,所以我们习以为常,甚至大多数的游戏都不考虑物理的。
(比较明显的例子是,1942里的飞机是不可能"空中倒退"的,但实际上没人觉得奇怪)。

事实上有个东西叫做力矩,你拋出一个纸团,他不只受地心引力往下拉,还会旋转,
可是要在游戏里实现这样的功能,只能说是"奢侈、浪费运算",或是"令人不习惯"。

现在的3D游戏已经大抵脱离简单的多边形,在建模上栩栩如生,尤其是FPS,
更是讲求真实,这样的演化路线终於演进到了玩家与环境的关係上。

你用枪打玻璃,玻璃会破碎,打坏一叠箱子底下的一个,整个会塌下来,说实话,
一般人不太可能在现实做这些事情(但是生活中还是有物理),游戏中要求真实性,
那么就需要做出一套运算库,让游戏中实现接近真实的物理。

好吧,3D很难,复杂的数学更难,所以要栩栩如生的表现出来,几乎不可能,
这变成了一种商业机密、或者是纯学术研究的討论,一直到近几年,才比较平民化,
因为3D创作工具也普及了,结合这些东西,你也可以在自己的游戏中实现物理。

普及的物理引擎
这里列出三个常常被使用的物理引擎,不代表全部,但掌握其中一个都很有帮助。

Open Dynamics Enginehttp://www.ode.org/
免费、开源、授权合理,所以基本上很多游戏引擎都有绑定ODE作为物理引擎,
但是其缺点之一就是在多物件时,相较其他物理引擎,会比较慢,但是,
部分修改过的商业版本情况好一点,但却不是开源的了。

Newton Game Dynamicshttp://www.newtondynamics.com/
这个物理引擎是跨Win32/Mac/Linux三个平台的,同时也有3DGameStudio插件,
在速度和功能上很不错,你也可以找到大量范例,虽然没有开源,但广为使用,
有兴趣的人,从这个开始是不错的选择,他也是OGRE游戏引擎的组件之一。

Tokamak Game Physicshttp://www.tokamakphysics.com/
Tokamak是一个速度极快的物理引擎,基本上他只能被使用於Windows平台,
但是速度上的优势让他佔有一席之地,当然这引擎也是免费提供的,
Tokamak有被应用为Blitz3D的插件,所以您若是Blitz3D用户,可能见过其身影。

时间: 2025-01-21 09:34:24

三个物理引擎(转)的相关文章

实例介绍Cocos2d-x中Box2D物理引擎:使用关节

下面我们将使用Box2D物理引擎技术进行重构.使得关节能够掌握如何在Box2D使用关节约束.HelloWorldScene.cpp中与使用关节的相关代码如下 void HelloWorld::addNewSpriteAtPosition(Vec2 p) { log("Add sprite %0.2f x %02.f",p.x,p.y); //创建物理引擎精灵对象A auto spriteA = Sprite::create("BoxA2.png"); ① sprit

实例介绍Cocos2d-x物理引擎:HelloPhysicsWorld

我们通过一个实例介绍一下在Cocos2d-x 3.x中使用物理引擎的开发过程熟悉这些API的使用.这个实例的运行后的场景当场景启动后玩家可以触摸点击屏幕每次触摸时候就会在触摸点生成一个新的精灵精灵的运行是自由落体运动. HelloPhysicsWorld实例 使用物理引擎的一般步骤如下图所示. 这个过程与上帝创建世界的过程类似上帝首先创建了世界然后为世界指定了边界否则万物就会掉到世界之外的混沌里去了最后上帝创建了万物.当然这只是一个最基本的步骤有的时候还需要碰撞检测和使用关节等处理.下面我们就按

实例介绍Cocos2d-x物理引擎:碰撞检测

碰撞检测是使用物理引擎的一个重要目的使用物理引擎可以进行精确的碰撞检测而且执行的效率也很高.在Cocos2d-x 3.x中使用事件派发机制管理碰撞事件EventListenerPhysicsContact是碰撞事件监听器.碰撞检测相关的API我们在前面一节介绍过了下面通过一个实例介绍碰撞检测的实现.这个实例的运行后的场景如图所示当场景启动后玩家可以触摸点击屏幕每次触摸时候就会在触摸点生成一个新的精灵精灵的运行是自由落体运动.当这些精灵之间发生接触时候它们的颜色被设置为黄色分离后颜色又恢复到原来状

如何在物理引擎的碰撞计算中得到碰撞作用线?

问题描述 如何在物理引擎的碰撞计算中得到碰撞作用线?初次接触制作物理引擎,看了一本叫做<游戏开发物理学>的书,这本书关于公式给的很好但是要知道碰撞作用线,就是碰撞时撞击的边的垂线,苦思不知道怎么求,希望能给出算法步骤或原理,谢了. 解决方案 解决方案二:没做过碰撞处理,帮你顶解决方案三:顶求帮助啊...有急用.解决方案四:碰撞边的过碰撞点的中垂线,和物体碰撞速度方向夹角的另一边的相同夹角的逆向方向,复杂一点要计算能量损失和摩擦损失的角度,以及碰撞边的非平滑情况还有运动物体的角度,但是基本来说,

JavaScript 的物理引擎对比

在本文中,我们将对比看一下当前三个非常流行的和一个目前还在开发中的JavaScript 物理引擎库,分别是: box2dweb,Ammo.js,JigLibJS 以及 Connon.js.我们会简短的介绍下每个 JS库,之后开始按照使用.性能和特征来评分. 不过运行其中任意一个库文件都是不带任何可视化效果的,这样很无趣,因此我们会设置一个小的环境来查看这些模拟运行的结果.由于 Three.js 的流行和使用简易,我使用它和它的 CanvasRenderer 来呈现结果.除了可以展示物体是如何交互

实例介绍Cocos2d-x中Box2D物理引擎:HelloBox2D

我们通过一个实例介绍一下在Cocos2d-x 3.x中使用Box2D物理引擎的开发过程熟悉这些API的使用.这个实例运行后的场景如图所示当场景启动后玩家可以触摸点击屏幕每次触摸时候就会在触摸点生成一个新的精灵精灵的运行自由落体运动.   HelloBox2D实例使用Box2D引擎进行开发过程如图12-15所示.下面我们就按照这个步骤介绍一下代码部分.首先看一下看HelloWorldScene.h文件它的代码如下 #ifndef __HELLOWORLD_SCENE_H__ #define __H

《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例

6.7 物理引擎综合案例 Unity 4 3D开发实战详解 前面已经详细介绍了Unity中物理引擎的基础知识,同时,通过一些小案例来具体介绍了物理引擎的相关应用.本小节将通过一个综合案例,使读者对Unity中的物理引擎有进一步的理解. 1.案例的构思 开发案例首先要有一个明确的思路,倘若思路混乱,就会导致案例的整体不协调.接下来介绍一下本案例的设计思路. (1)首先要明确案例要达到的目的.本案例是为了演示物理引擎模拟现实的特性. (2)接着要明确案例场景的周边环境,要确定场景的天气.本案例中,为

小神之Newton物理引擎教程(一) Newton物理引擎教程

第一节 Getting started   这个例程将告诉你如何把 newton 物理引擎和你的图形引擎结合起来. 如果你没有解过 SDK 包,先解开包. 打开 Visual studio 找到包里的 Tutorials.dsw 后双击.   选择子项目 Tutorial 1 getting started 并使它活动起来.   选择 Tutorial.cpp 文件并双击在编辑框中打开.   在文件的开始你将发现 include 部分.   看下面几行(注意黑体):   #include "ne

.Net 三款工作流引擎比较:WWF、netBPM 和 ccflow

原文:.Net 三款工作流引擎比较:WWF.netBPM 和 ccflow 下面将对目前比较主流的三款工作流进行介绍和比较,然后通过三款流程引擎分别设计一个较典型的流程来给大家分别演示这三款创建流程的过程.这三款工作流程引擎分别是 Windows Workflow Foundation,NetBPM, CCFlow. NetBPM 与 CCFlow 是两款国内知名的开源软件,尤其是ccflow在国内的发展势头强劲. 这个典型的流程假设:公司有两级领导,一级为主管Chief,一级为老板Boss 场