Rigid Body Overview

Introduction


本章将介绍使用 NVIDIA PhysX 引擎simulate刚体动力学的基础知识。

Rigid Body Object Model


PhysX 使用分层刚体对象模型,如下所示:

class Extends Functionality
PxBase N/A 反射/查询对象类型。
PxActor PxBase Actor名称、actor标志、作用域、客户端、聚合、查询世界边界。
PxRigidActor PxActor Shapes 和 transforms
PxRigidBody PxRigidBodyc 质量,惯性,body flags
PxRigidStatic PxRigidActor 场景中静态主体的接口。这种身体具有隐含的无限质量/惯性。
PxRigidDynamic PxRigidBody 场景中动态刚体的接口。引入对运动学目标(kinematic targets )和对象休眠(object sleeping)的支持。
PxArticulationLink PxRigidBody PxArticulation中动态刚体链接的接口。介绍对查询关节和相邻链接的支持。
PxArticulation PxBase 定义PxArticulation 的接口。实际上,包含引用多个PxArticualtionLink刚体。

下图显示了刚体管线中涉及的主要类型之间的关系:

The Simulation Loop

现在使用``PxScene::simulate()`方法及时推进世界前进。下面是示例的固定步进器类(fixed stepper class)的简化代码:

mAccumulator = 0.0f;
mStepSize = 1.0f / 60.0f;virtual bool advance(PxReal dt)
{mAccumulator  += dt;if(mAccumulator < mStepSize)return false;mAccumulator -= mStepSize;mScene->simulate(mStepSize);return true;
}

每当应用完成事件处理并开始空闲时,就会从示例框架中调用此操作。它累积经过的实时时间,直到大于六十分之一秒,然后调用 simulate(),它将场景中的所有对象向前移动该间隔时间。这可能是在推进simulate时处理时间的众多不同方法中最简单的方法。

要允许simulate完成并返回结果,只需调用:

mScene->fetchResults(true);

True 表示simulate应阻塞,直到simulate()完成,以便在返回时保证结果可用。当 fetchResults完成时,您定义的任何simulate事件回调函数也将被调用。请参阅回调序列一章。在simulate过程中,可以从场景中读取和写入。示例利用这一点与物理场并行执行渲染工作。在 fetchResults() 返回之前,当前simulate步骤的结果不可用。因此,与simulate并行运行渲染会将演员渲染为调用 simulate()前的样子。在 fetchResults() 返回后,所有这些函数都将返回新的simulate后的状态。有关在simulate运行时读取和写入的更多详细信息,请参阅Threading一章。为了使人眼将动画运动感知为平滑,每秒至少使用二十个离散帧,每帧对应于一个物理时间步长。要对更复杂的物理场景进行流畅、逼真的simulate,请至少每秒使用五十帧。

注意: 如果您正在进行实时交互式(real-time interactive simulation)simulate,则可能会尝试采用不同大小的时间步长,这些步长对应于自上次simulate帧以来经过的实时量。如果这样做,请非常小心,与采用恒定大小的时间步长不同的是:simulate代码对非常小和很大的时间步长都很敏感,并且对时间步长之间的太大变化也很敏感。在这些情况下,它可能会产生抖动simulate(jittery simulation)。

PhysX3.4文档(4) --Rigid Body Overview相关推荐

  1. PhysX3.4文档(6) --Rigid Body Dynamics

    Rigid Body Dynamics 在本章中,我们将介绍一些主题,一旦您熟悉了设置基本的刚体模拟世界,这些主题也很重要. Velocity 刚体的运动分为线性和角速度(linear and ang ...

  2. PhysX3.4文档(5) --Rigid Body Collision

    Rigid Body Collision Introduction 本节将介绍刚体碰撞的基础知识. Shapes Shape描述actor的空间范围(spatial extent)和碰撞属性(coll ...

  3. PhysX3.4文档(1) -- startup and shutdown

    PhysX3.4文档(1) --startup shutdown startup shutdown introduction 使用physx sdk的第一步是初始化一个全局对象.这些对象会在physx ...

  4. PhysX3.4文档(15) -- Vehicles

    Vehicles Introduction PhysX对车辆的支持在3.x中得到了显着的重新设计.为了取代 NxWheelShape 类 2.8.x,已经开发出核心 PhysX SDK 和车辆仿真代码 ...

  5. PhysX3.4文档(8) -- Advanced Collision Detection

    Advanced Collision Detection Tuning Shape Collision Behavior 用于产生接触的Shape会影响它们通过contacts(Contact poi ...

  6. PhysX3.4文档(2) --Threading

    Threading Introduction 本章介绍了在多线程应用程序中如何使用PhysX.主要有三个方面使用多线程: 如何在不产生竞争的情况下调用PhysX API进行读写 如何使用多线程加速模拟 ...

  7. PhysX3.4文档(7) -- Simulation

    Simulation Callback Sequence 最简单的模拟回调(simulation callbacks)类型是事件.使用回调,应用程序可以简单地侦听事件并根据需要做出反应,前提是回调遵守 ...

  8. PhysX3.4文档(11) -- GPU Rigid Bodies

    GPU Rigid Bodies Introduction GPU 刚体是 PhysX 3.4 中引入的一项新功能.它支持整个刚体管线特征集,但目前不支持铰接.GPU 加速刚体的状态可以使用与修改和查 ...

  9. PhysX3.4文档(3) --Geometry

    Geometry introduction 这部分主要讨论Physx的几何类.geometry主要用来构建刚体的形状,刚体的形状主要用来作碰撞的触发和physx中的屏幕查询系统的量.Physx也提供独 ...

  10. PhysX3.4文档(9) -- Joints

    Joints Joint Basics 关节(Joints)限制了两个Actor相对于彼此移动的方式.关节的典型用途是模拟门铰链或character的肩膀.关节在 PhysX extensions l ...

最新文章

  1. java-第十一章-类的无参方法-计算器运算
  2. flume bucketpath的bug一例
  3. 2018年4月22日笔记
  4. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入代码示例 )
  5. Runtime之IMP指针,isa指针
  6. selenium | TypeError:object of type ‘WebElement’ has no len()
  7. 设置程序中的html,如何在Behat中为HTML格式化程序设置自定义模板
  8. c语言实现文件数据删除视频,如何用c语言实现删除文件中指定的数据;例如
  9. TortoiseGit不同分支合并代码
  10. Lifewire文档阅读笔记-如何使用IP地址找对应的MAC地址
  11. word 代码块_如何优雅的写好 Pythonic 代码?
  12. 仿ios桌面vivo_流畅就是跑分高?vivo选择说不,用这款杀器终结国产手机内卷
  13. 【转】几个超炫的专业词汇
  14. php memcache 缓存与memcached 客户端的详细步骤
  15. CSS颜色渐变的按钮样式
  16. disunity的使用
  17. 微信公众号里面服务器配置关闭,微信公众号服务器配置无法修改
  18. Lipschitz continuity (利普希茨连续)
  19. Building Maintainable Software-java篇之Separate Concerns in Modules
  20. 惊了!这里竟然有你的生日和银行卡密码?

热门文章

  1. python中矩阵怎么表示_python中的列矩阵表示
  2. 因式分解用python写程序_使用Python实现质因式分解算法
  3. Java 蓝桥杯 基础练习 01字串(循环)
  4. 数学不好学python难吗_英语和数学不好的人能学会Python编程吗?
  5. 数据宝贝儿放云上,你放心么?
  6. Class文件格式总结
  7. 小米MIUI夺冠!鲁大师发布2021年Q3季度UI排行!
  8. [转]VC知识库文章 - 在MFC中用正则表达式对窗体进行有效性验证
  9. springboot springcloud 启动优化、性能优化
  10. 网站项目计划书模板范本