随笔分类 -  仿真物理引擎学习笔记 / Bullet 学习笔记

1
摘要:简述 Bullet 中软体的碰撞检测与响应算法,仅针对 Soft 类型,Deformable 类型不包含在这篇文章中。 1. 软体碰撞检测 在 Bullet Physics 中,软体的碰撞检测采用的是 “点-面” 的方法,即分别用两个软体的 m_ndbvt 和 m_fdbvt 做碰撞检测,两个 bv 阅读全文
posted @ 2024-07-09 18:33 wghou09 阅读(306) 评论(0) 推荐(0)
摘要:每天不是在改 bug,就是在生产 bug ... 在做 Bullet 开发的时候,总会“不由自主地”生产出各种奇奇怪怪的 bug,虽然极大地丰富了工作量,但这些 bug 实在让人头大。记录一下。 btMax() / btMin() 误用:btMax(btScalar a, btScalar b) 可 阅读全文
posted @ 2024-05-27 17:32 wghou09 阅读(71) 评论(0) 推荐(0)
摘要:下面梳理 Bullet Physics 中关于软体的碰撞检测流程及算法。 在 Bullet Physics 中,涉及软体的碰撞检测主要由函数 btDiscreteDynamicsWorld::performDiscreteCollisionDetection() 和函数 btDeformableRi 阅读全文
posted @ 2020-06-24 17:03 wghou09 阅读(1273) 评论(1) 推荐(0)
摘要:形变仿真中,积分方法主要有显式积分方法(Explicit time integration scheme)、隐式时间积分方法(Implicit time integration scheme)等。 下面介绍 中心插值法、Houbolt 方法、Wilson-$\theta$ 方法、以及 Newmark 阅读全文
posted @ 2020-06-22 19:54 wghou09 阅读(1032) 评论(0) 推荐(0)
摘要:下面梳理软体对象的仿真过程。 在例程 VolumetricDeformable 中,使用了 btDeformableMultiBodyDynamicsWrold 类以及 btDeformableBodySolver 类,因此,该仿真流程即为对 btDeformableMultiBodyDynamic 阅读全文
posted @ 2020-06-21 23:36 wghou09 阅读(1131) 评论(0) 推荐(0)
摘要:参照 Bullet Physics 官方例程 VolumetricDeformable,梳理软体形变仿真流程。 0 环境搭建 仿真场景类为 btDeformableMultiBodyDynamicsWorld ,碰撞检测 broadphase 使用类 btDbvtBroadphase 完成,碰撞检测 阅读全文
posted @ 2020-06-21 21:46 wghou09 阅读(411) 评论(0) 推荐(0)
摘要:参照 GraspDeformable 实例,探究软体抓取的仿真流程。 1 仿真场景的构成 仿真场景类为 btDeformableMultiBodyDynamicsWorld ,派生关系为 btDiscreteDynamicsWorld -> btMultiBodyDynamicsWorld -> b 阅读全文
posted @ 2020-05-12 16:24 wghou09 阅读(549) 评论(0) 推荐(0)
摘要:btSoftBodySolver 是 Bullet 物理引擎中关于软体形变仿真的又一个关键类。btSoftBodySolver 提供了关于软体形变仿真求解的一些接口。目前,在 Bullet 物理引擎中,派生出的只有 btDefaultSoftBodySolver 类。 下面来看一下,btDefaul 阅读全文
posted @ 2020-05-04 19:29 wghou09 阅读(541) 评论(0) 推荐(0)
摘要:Soft Body 是 Bullet 引擎中用于布料、软体等形变仿真的类。 1、软体的基本组成元素 Node 、Link、Face、Tetra 以及 Material 在 soft body 中,一般是由点、线、面、四面体单元等基本元素构成。下面将分别介绍一下,各个元素的代码,以及使用方法。 1.1 阅读全文
posted @ 2020-05-04 16:45 wghou09 阅读(1131) 评论(0) 推荐(1)
摘要:在最近几个新的版本中,Bullet 物理引擎逐步加入并完善了软体形变的仿真。btSoftBody 类用于软体的模拟,仿真场景则通过 btSoftRigidDynamicsWorld 搭建。下面简单介绍一下 Soft Body Physics Pipeline 。 0、Overview 软体仿真的场景 阅读全文
posted @ 2020-05-04 13:29 wghou09 阅读(1312) 评论(0) 推荐(0)
摘要:在 Bullet User Manual 第3章 Library Overview 中,介绍了 Bullet Physics 的 pipeline,如下图所示: 这部分工作,都包含在了函数 btDiscreteDynamicsWorld::stepSimulation(...) 中。下面结合具体代码 阅读全文
posted @ 2020-05-03 18:17 wghou09 阅读(1146) 评论(0) 推荐(0)
摘要:在 Bullet 物理引擎的碰撞检测中,两物体之间的碰撞结果由 btPersistentManifold 存放。其中,两物体之间最多可以有4个(0~4个)碰撞/接触点,接触点为 btManifoldPoint 类。 在碰撞检测结果中,形成了那些信息?不同的碰撞检测算法,都涉及到什么样的信息?等等,这 阅读全文
posted @ 2020-05-03 09:29 wghou09 阅读(527) 评论(0) 推荐(1)
摘要:Bullet 物理引擎能够实现多种方式的碰撞检测。其中,对场景中的所有物体进行碰撞检测,是其主要的功能之一。以下将逐步分析一下,该碰撞检测流程 1、碰撞检测主要步骤 在 btCollisionWorld 类中,首先向场景中添加碰撞对象,存入 m_collisionObjects 中,同时向 btCo 阅读全文
posted @ 2020-05-02 23:44 wghou09 阅读(1406) 评论(2) 推荐(1)
摘要:对于 Bullet 物理引擎中的碰撞检测部分,并不太关心它的实现细节,更想知道的是物体的存储方式/数据存放、碰撞结果在哪儿,大致的步骤等 1、碰撞场景类 btCollisionWorld 的结构 btCollisionWorld 是 Bullet 物理引擎中的碰撞场景类,并由此派生出了 btDyna 阅读全文
posted @ 2020-05-02 19:23 wghou09 阅读(1448) 评论(0) 推荐(1)
摘要:Bullet User Manual 第三部分,参见 bullet3/docs/Bullet_User_Manual.pdf 总体上绍了 Bullet 物理引擎的整体架构、仿真流程、基础数据结构等。 Bullet 物理引擎的主要功能为 碰撞检测、碰撞/约束求解、物体状态的更新。 The main t 阅读全文
posted @ 2020-05-01 16:50 wghou09 阅读(893) 评论(0) 推荐(0)
摘要:Bullet User Manual 第一部分,参见 bullet3/docs/Bullet_User_Manual.pdf 总体上概述了 Bullet 物理引擎的功能及特征。 Bullet 物理引擎主要用于游戏、视觉效果仿真、机器人仿真等。 The library is primarily des 阅读全文
posted @ 2020-05-01 16:45 wghou09 阅读(592) 评论(0) 推荐(0)
摘要:Bullet 物理引擎的作者给出了一份简单的用户学习手册,参见bullet3/docs/Bullet_User_Manual.pdf 手册中介绍了总体功能框架及实现思路,主要有以下几个部分。后续随笔中,将逐个部分结合代码做进一步的分析。 借助 Bullet 物理引擎,希望实现的功能是软体机器人仿真。 阅读全文
posted @ 2020-05-01 15:29 wghou09 阅读(839) 评论(0) 推荐(0)
摘要:先初步看一下碰撞相关的对象都有些什么。 (小疑惑,为什么对在 btDiscreteDynamicsWorld 外面单独有一个 CollisionShape,好像是说,CollisionShape 是包含在 CollisionObject 里面的。难道是为了节省内存,对于不同的 CollisionOb 阅读全文
posted @ 2020-05-01 00:31 wghou09 阅读(1269) 评论(0) 推荐(0)
摘要:代码参见:bullet3/examples/BasicDemo 在 Bullet 自带的例程中,仿真主要包括以下三步: (1)example->initPhysics(); 首先,初始化仿真相关的环境。建立仿真相关对象,添加场景中的物体,等等。 (2)example->stepSimulation( 阅读全文
posted @ 2020-04-30 23:42 wghou09 阅读(820) 评论(0) 推荐(0)
摘要:好的物理引擎是实现计算机图形学中某些场景仿真、机器人仿真的重要基础。Bullet 物理引擎包含了碰撞检测、刚体运动/动力学仿真、约束求解、软体仿真等功能。参见Bullet Physics Home Page 及 bulletphysics/bullet3 以下文章记录了 Bullet 学习过程及代码 阅读全文
posted @ 2020-04-30 23:17 wghou09 阅读(678) 评论(0) 推荐(1)

1