物理引擎和图形引擎互相的配合

原创 2018年04月16日 16:56:29

    由于还没有学习游戏引擎的相关知识,所以不太清楚物理引擎和图形引擎互相之间是怎么联系起来的。所以根据在网上找到的资料,简单讲一下这两个引擎的实现方式和互相的配合。


配合:

    物理引擎和图形引擎的配合可以简单描述为:输入场景信息(包括物体的形状、物理参数和位置等),通过物理引擎计算出场景中所有物体的新的形状和位置,再由图形引擎将它们渲染后显示在计算机上。以physX物理引擎和OGRE图形引擎作为例子:

一、OGRE初始化: 创建显示对象、地形、灯光等,完成其他准备。

二、PhysXc初始化:准备相关物理环境,根据OGRE中的几何体,创建用于物理计算的静态和动态角色。并互相关联。

三、创建帧监听器,进行帧循环更新图形显示。

四、调用PhysX引擎中的运算函数,对场景中物体与物体之间的相互作用进行模拟运算。


以上步骤第三、四步由于PhysX引擎的模拟计算线程是独立的,与OGRE帧循环线程分开,因此物理引擎的计算过程与图形引擎的显示渲染过程同时进行。根据物理引擎计算的结果,更新场景内物体的位置、方向、速度等参数,将更新后的参数传递给OGRE更新图形显示,循环进行下一步模拟计算。

PhysX引擎

既然物理引擎是计算每个物体的运动状态,那么unity使用的physX引擎做了些什么呢?

Physx里的基本术语:

1.     Scene场景:就像演员表演都需要一个舞台一样, PhysX的所有物理运动都在这个scene中进行。

2.     Actor角色:角色(Actor)为场景中参与运算具有形状、实体的对象

3.     bosy刚体:用来记录物体之间世界交互的各种系数,如速度,阻尼等.

4.     shape形状:描述和表达某一角色的外形,PhysX中提供六种基本形状:盒子(Box) 、球体( Sphere ) 、胶囊( Cap sule ) 、凸状网格( Conv2exMesh) 、三角网格( TriangleMesh) 和平面( Plane ) 

定义各种不同的角色(actor),然后指定每个角色的形状(shape)属性和刚体(body)属性,最后是把这些角色都加入到场景(scene)空间中去,接下来就是计算

计算部分:

//则应该是我熟悉的部分,暂时没找到网上没资料,先留着,以后再写。

游戏引擎的简单描述:

引用了知乎谢天奇的答案

如果渲染和逻辑在一个线程中

1.计算本帧逻辑-渲染本帧

最差的方式 GPU必须等待CPU执行完后才能开始工作

2.渲染上一帧-计算本帧

会有“差一帧”现象

并且都无法解决一个问题 就是渲染和逻辑一一对应并非必要 逻辑帧率和渲染帧率互相绑架了

并且以上方式如果出现渲染压力过大 超过一帧时间 就会拖慢游戏逻辑 当然你可以在下一帧多次执行逻辑 来追赶 不过因为每帧总有一次渲染 所以这么做更可能的情况是 逻辑帧拖欠的债反而越来越高 最终导致游戏永远卡死

所以解决办法是渲染逻辑在两个独立的线程中

渲染全力执行
每次都只是采样场景最新的逻辑状态而已 并且对于动画的插值计算 并不需要每个逻辑帧都计算 而是需要渲染的时候才需要计算 逻辑只需要更新时间就可以了

这种情况下就不会出现因为渲染压力大导致游戏卡死了 最多渲染跳帧 逻辑依旧正常 不会拖慢 更不会卡死 除非你逻辑慢到无法在一帧完成 那么就没救了 只能拖慢了

并且逻辑和渲染各自都能以任意频率执行

不过这么做也有难度
就是所有逻辑数据都要做双缓冲 逻辑更新从读缓冲读数据 更新到写缓冲 处理完交换读写缓冲

渲染每次都读最新的读缓冲数据



一个人事经理眼中的中国人劣根性

我在一个生物技术企业工作了四年,之前是做市场的,最近一年被老板调到了人力资源部当经理。一年的人事工作经历使我对人性有了更深入的认识,对中国人(包括自己在内)的坏毛病有颇多感慨和无奈。之所以放大说是中国...
  • shinebei
  • shinebei
  • 2004-05-31 11:42:00
  • 906

Android8个优秀的开源游戏引擎

8个优秀的Android开源游戏引擎   很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iP...
  • wang2470198567
  • wang2470198567
  • 2014-06-27 10:32:57
  • 1458

开源游戏引擎哪家强?八款知名引擎资料够你忙

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。本文介绍了几款常见的开源游戏引擎,并附上相关资料。 游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互...
  • flyingleo1981
  • flyingleo1981
  • 2014-09-26 14:29:05
  • 2078

QT图形引擎

图形引擎部分       QGfx 封装了对FrameBuffer的绘图操作,是低级别的QPainter.       QScreenCursor 在 QScreen 上绘制鼠标光标等       Q...
  • songjinshi
  • songjinshi
  • 2011-06-14 19:28:00
  • 4972

3D图形引擎决定三维产业差异化

从2009年中国3D产业初步兴起开始,短短几年间中国的3D技术得到了飞速的发展,3D打印机、3D投影仪、Web3D、虚拟现实、场景漫游等等产业应用应运而生,设备制造商和内容提供商都开始发挥自主创新的优...
  • u010270797
  • u010270797
  • 2013-08-23 14:55:13
  • 665

3D图像引擎,3D图像引擎原理

产生的背景和定义 随着计算机软、硬件突飞猛进的发展,计算机图形学在各个行业的应用也得到迅速普及和深入。目前,计算机图形学己进入三维时代,三维图形在人们周围无所不在。科学计算可视化、计算机动画和虚拟现实...
  • gogor
  • gogor
  • 2011-07-06 13:47:45
  • 4022

一个图形引擎的画面风格是由那些因素(技术)决定的?

可能很多人第一直覺會認為shader決定了視覺風格,但我認為可以從多個方面去考慮。1. 幾何模型一個畫面由多個成分組成,最基本的應該是其結構,在圖形學中通常稱為幾何模型。一些引擎,如Quake/UE,...
  • u013467442
  • u013467442
  • 2015-08-22 17:19:52
  • 1121

Android 核心图形引擎

Google Android 使用 skia 作为其核心图形引擎。skia 也是 Google Chrome 的图形引擎。Skia 图形渲染引擎最初由 Skia 公司开发,该公司于 2005 年被 G...
  • blueRobot
  • blueRobot
  • 2010-03-16 10:47:00
  • 2840

[图形引擎Skia之一]源码下载与编译(Ubuntu)

首先呢,作为一个懒了好几年不写博文的程序猿,我居然有脸回来写博客,好吧,话不多说,以后我会经常更新的,希望各位多多支持一下。 1.什么是SKIA? Skia是一个跨平台的2D的向...
  • var_Rain
  • var_Rain
  • 2018-02-12 18:12:59
  • 171

一个超快的3D图形引擎的实现

学计算机图形学时写过一个简单的3D图形引擎, 注意,不是使用OpenGL或 DirectX,连GDI 都没有使用,基本原理是做一个内存区,把它当做一个位图,然后在这个位图上画所有要画的,最后把它画到窗...
  • lionhunter2010
  • lionhunter2010
  • 2007-12-17 19:39:00
  • 3117
收藏助手
不良信息举报
您举报文章:物理引擎和图形引擎互相的配合
举报原因:
原因补充:

(最多只允许输入30个字)