网站大量收购闲置独家精品文档,联系QQ:2885784924

osg与物理引擎的结合.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
osg与物理引擎的结合

osg与物理引擎的结合 3DVRI osg与物理引擎的结合 Newton与osg的结合过程 Newton与osg的结合过程 Newton与osg的结合过程 Newton与osg的结合过程 Newton与osg的结合过程 Newton与osg的结合过程 我们进行虚拟仿真时,为了表现真实世界的物理特型,老的做 法是使用一些简单的数学公式,而仿真的结果缺乏真实性,并且对 于仿真程序的编写也有很大的复杂性与难度,目前很多老式的仿真 系统已被淘汰,新一代仿真系统很多都是基于真实的物理模型进行 仿真,这样就导致了一些物理引擎被广泛引入到仿真系统中。目前 比较常用的物体引擎有PhysX,ODE,Newton等等。我们以Newton 引擎为例向大家介绍一下与OSG结合的应用。 首先我们先看一些Newton引擎中的一些范例。 下面我给大家介绍下Newton与osg的结合过程。 1)当我们初始化完我们的图形环境后,我们需要进行物理世界的初始化工作: 1,创建一个物理世界。 _p_world = NewtonCreate( physicsAlloc, physicsFree ); 2, 设置物理世界更新的最小帧数率 NewtonSetMinimumFrameRate( _p_world, 1.0f / 60.0f ); 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)? 2)载入我们三维图形场景的静态物理实体或刚体。 BuildStaticGeometry (...)? NewtonBodySetMaterialGroupID(m_worldBody, LevelID)? 3)设置我们图形场景中的动态物理实体或刚体。 1,创建动态几何体的刚体。 对于规则图形,Newton中有特定的创建函数如box, 球体,圆锥体等等。 对于不规则图形,我们首先要获得几何体的所有顶点坐标, 然后根据几何顶点进行创建。 NewtonCreateConvexHull (...)? 2,设置动态集合体的相关属性,如材质,质量,重心,位置, 刚体关联数据等等。 NewtonBodySetMaterialGroupID (...)? NewtonBodySetMassMatrix (...)? NewtonBodySetMatrix (...)? NewtonBodySetUserData (...)? 3,设置几何体的回调函数,如作用力回调,空间位置回调, 销毁时回调等等,通过这些回调函数我们可以输入或获得物理 计算的结果,实现图形系统与物理引擎的交互。 NewtonBodySetDestructorCallback (...)? NewtonBodySetTransformCallback (...)? NewtonBodySetForceAndTorqueCallback (...)? 4)对动态物体施加作用力。 NewtonBodySetForce( p_body, force._v[ 0 ] )? 5)进行物理更新,一般放在图形的渲染循环中。 NewtonUpdate(_p_world, 1.0f / 60.0f)? 这样一个简单的物体世界就创建完成。

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档