1 / 10

osg与物理引擎的结合

3DVRI. osg与物理引擎的结合. osg与物理引擎的结合. 我们进行虚拟仿真时,为了表现真实世界的物理特型,老的做 法是使用一些简单的数学公式,而仿真的结果缺乏真实性,并且对 于仿真程序的编写也有很大的复杂性与难度,目前很多老式的仿真 系统已被淘汰,新一代仿真系统很多都是基于真实的物理模型进行 仿真,这样就导致了一些物理引擎被广泛引入到仿真系统中。目前 比较常用的物体引擎有PhysX,ODE,Newton等等。我们以Newton 引擎为例向大家介绍一下与OSG结合的应用。 首先我们先看一些Newton引擎中的一些范例。. Newton与osg的结合过程.

duy
Download Presentation

osg与物理引擎的结合

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3DVRI osg与物理引擎的结合

  2. osg与物理引擎的结合 我们进行虚拟仿真时,为了表现真实世界的物理特型,老的做 法是使用一些简单的数学公式,而仿真的结果缺乏真实性,并且对 于仿真程序的编写也有很大的复杂性与难度,目前很多老式的仿真 系统已被淘汰,新一代仿真系统很多都是基于真实的物理模型进行 仿真,这样就导致了一些物理引擎被广泛引入到仿真系统中。目前 比较常用的物体引擎有PhysX,ODE,Newton等等。我们以Newton 引擎为例向大家介绍一下与OSG结合的应用。 首先我们先看一些Newton引擎中的一些范例。

  3. Newton与osg的结合过程 下面我给大家介绍下Newton与osg的结合过程。 1)当我们初始化完我们的图形环境后,我们需要进行物理世界的初始化工作: 1,创建一个物理世界。 _p_world = NewtonCreate( physicsAlloc, physicsFree ); 2, 设置物理世界更新的最小帧数率 NewtonSetMinimumFrameRate( _p_world, 1.0f / 60.0f );

  4. Newton与osg的结合过程 3,设置物理世界的计算精度 NewtonSetSolverModel( _p_world, 0 ) // 0: exact, 1 adaptive, n linear. NewtonSetFrictionModel( _p_world, 0 )// 0: exact, 1 adaptive 4,设置物理世界中预定义的材质属性 setupMaterials()‏ 5,设置物理世界的尺寸 NewtonSetWorldSize (_p_world, bmin, bmax)‏

  5. Newton与osg的结合过程 2)载入我们三维图形场景的静态物理实体或刚体。 BuildStaticGeometry (...)‏ NewtonBodySetMaterialGroupID(m_worldBody, LevelID)‏ 3)设置我们图形场景中的动态物理实体或刚体。 1,创建动态几何体的刚体。 对于规则图形,Newton中有特定的创建函数如box, 球体,圆锥体等等。 对于不规则图形,我们首先要获得几何体的所有顶点坐标, 然后根据几何顶点进行创建。 NewtonCreateConvexHull (...)‏

  6. Newton与osg的结合过程 2,设置动态集合体的相关属性,如材质,质量,重心,位置, 刚体关联数据等等。 NewtonBodySetMaterialGroupID (...)‏ NewtonBodySetMassMatrix (...)‏ NewtonBodySetMatrix (...)‏ NewtonBodySetUserData (...)‏

  7. Newton与osg的结合过程 3,设置几何体的回调函数,如作用力回调,空间位置回调, 销毁时回调等等,通过这些回调函数我们可以输入或获得物理 计算的结果,实现图形系统与物理引擎的交互。 NewtonBodySetDestructorCallback (...)‏ NewtonBodySetTransformCallback (...)‏ NewtonBodySetForceAndTorqueCallback (...)‏

  8. Newton与osg的结合过程 4)对动态物体施加作用力。 NewtonBodySetForce( p_body, &force._v[ 0 ] )‏ 5)进行物理更新,一般放在图形的渲染循环中。 NewtonUpdate(_p_world, 1.0f / 60.0f)‏ 这样一个简单的物体世界就创建完成。

More Related