Bullet物理碰撞开发库说明

Bullet物理引擎中文文档
英文文档正在更新中
详情查看Wiki和论坛(bulletphysics)
© 2009 Erwin Coumans
All Rights Reserved.
翻译:五行谦饼
Email:cqw1022@gmail
目录
1. 简介 (3)
1.1. 类库描述 (3)
1.2. 2.74版新添加的元素 (3)
1.3. 计划 (3)
1.4. 主要特性 (3)
1.5. 联系和支持 (3)
2. 快速入门 (3)
3. 类库概述 (4)
3.1. 简介 (4)
3.2. 软件设计 (4)
3.3. 刚体物理管线 (4)
3.4. 整体概貌 (5)
3.5. 基本数据类型和数学类库 (5)
3.6. 内存管理、分配和容器 (6)
3.7. 时间和性能分析 (7)
3.8. 调试画图 (7)
4. Bullet的碰撞检测 (7)
4.1. 碰撞检测 (7)
4.2. 碰撞图形 (8)
4.3. 凸原始图元 (9)
4.4. 复合图形 (9)
4.5. 凸核图形 (9)
银行复点机>ca3780
4.6. 凹三角网格 (9)
4.7. 凸分解 (9)
拐角
4.8. 高度场 (9)
4.9. Buttle的静态平面(btStaticPlane)图形 (9)
4.10. 碰撞图形缩放 (9)
4.11. 碰撞边框 (9)
1.简介
1.1.类库描述
Bullet物理引擎是开源的,专业的集刚体、软体和碰撞检测于一身的动力学类库。在Zlib授权下用户可以免费用于商业开发。
1.2.  2.74版新添加的元素
1.3.计划
拖鞋生产设备
1.4.主要特性
1)在Zlib授权中使用开源的C++代码,可免费用于包括PLAYSTATION 3, XBox 360, Wii, PC, Linux, Mac OSX and iPhone平台的商业开发。
窄叶火棘
2)包括射线和凸扫测试在内的离散和连续碰撞检测,可检测的碰撞物体形状包括凹凸网格和所有的基本形状。
3)快速和稳定的刚体动力约束和求解、动态车辆、人物控制和滑动器、铰链、普通的6自由度和针对碎布木偶的圆锥和扭曲约束。
4)软体动力学方面可用于布料、绳子和双向变容的刚体,包括约束支持。
5)Maya动态插件,集成Blender渲染器,支持COLLADA格式导入导出。
1.5.联系和支持
1)公开的帮助和回馈论坛bulletphysics
2)PS3合法的开发用户可以从ps3.scedev/projects/spubullet下载到用于Cell SPU的优化版本
2.快速入门
1)下载
Windows平台的开发者可以从bulletphysics下载到BulletZIPPED格式的源代码。
MacOSX、Linux和其他平台的开发者可以下载到GZIPPED TAR格式的压缩包。
2)生成
Bullet能在所有的平台编译,并且包含了所有的依赖项。
Windows Visual Studio平台的所有项目文件都在Bullet/msvc文件夹中,主要的解决方案在Bullet/msvc/8/wksbullet.sln中。
3)测试示例
可以尝试着以运行体验Demos/AllBulletDemos来作为学习使用Bullet的起点。Bullet 可以用于一下几个方面,完整刚体模拟,碰撞检测类库和(low level snippets such as GJK closest point calculation.)。这方面的帮助支持可以在Directories下的doxygen documentation中到。
4)集成到应用程序
仔细研究CcdPhysicsDemo项目中是如何创建一个btDiscreteDynamicsWorld,btCollisionShape,btMotionState和btRigidBody。在动态世界中每帧调用stepSimulation,同时动态世界能转换你的图形对象。前提条件:
#include “btBulletDynamicsCommon.h “
添加头文件路径Bullet/Src
添加类库libbulletdynamics, libbulletcollision, libbulletmath
5)只整合碰撞检测类库
Bullet的碰撞检测也可以脱离Dynamics/Extras而单独使用,仔细研究起步的碰撞
接口示例,尤其是CollisionWorld这个课程。前提条件:
#include “btBulletCollisionCommon.h”
添加路径Bullet/src
添加类库libbulletcollision, libbulletmath
6)只用切片?
3.类库概述
3.1.简介
物理引擎的主要任务是碰撞检测,解决碰撞和其他约束,给虚拟世界中的所有物体提供世界转换的更新。本章将会大体上介绍一下所有部分中共享的刚体动力学管道、基本数据类型和数学类序
3.2.软件设计
Bullet是定制式和模块化开发的。开发者可以按如下方式自由使用
1)只使用碰撞检测组件
2)使用刚体动力学组件而不使用软体动力学组件
3)以众多方式使用类库的一部分和扩展类库
4)选个单精度或者双精度版本的类库
5)use a custom memory allocator, hook up own performance profiler or debug drawer 主要组件的机构如下:
3.3.刚体物理管线
在介绍细节前,下图展示了在Bullet引擎动态管线中的主要的数据结构和计算阶段。管线从左到右执行,以接受重力作用开始,位置整合结束,然后更新世界转换。
整个物理管线的计算过程和它的数据结构在Bullet的动态世界中完全展现出来。当在动态世界中执行stepSimulation时,所有上面的阶段都会执行。默认的动态世界实现是btDiscreteDynamicsWorld。
Bullet让开发者明确地选择动态世界的几个部分,如初测阶段(broadphase)碰撞检测,细测阶段(narrowphase)碰撞检测(分配器)和约束解决程序。
3.4.整体概貌
如果你想在你自己的3D程序中使用Bullet,你最好按照Bullet/Demos/HelloWorld文件夹中HelloWorld中的步骤来。简单地说:
创建一个btDiscreteDynamicsWorld 或者 btSoftRigidDynamicsWorld
这写来自btDynamicsWorld的类提供了一个高水平管理动态物体和约束的接口,也实现了每帧更新所有物体状态的功能。
创建btRigidBody然后添加到btDynamicsWorld
要创建btRigidBody或者btCollisionObject,你还要提供:
1)质量,动态移动的物体质量为正数,静态物体则为0;
2)碰撞形状,想盒子、球体、圆锥体、三角网格、凸壳
3)材料的属性如摩擦系数和restitution
每帧更新仿真情况
stepSimulation
在动态世界中调用stepSimulation,btDiscreteDynamicsWorld会自动通过插值取代小仿真stepSimulation来计算timestep变量,btDiscreteDynamicsWorld使用内置的大小有60Hertz 的timestep。stepSimulation会进行碰撞检测和物理仿真,通过调用btMotionState的setWorldTransform来更新主动物体的世界转换。
下一章将提到更多关于碰撞检测和刚体运动学的内容。许许多多的细节在Bullet/Demos 都展示出来。如果你不能到某个函数,请去bulletphysics论坛查询。
3.5.基本数据类型和数学类库
基本数据类型,内存管理和内存容器都保存在Bullet/src/LinearMat件中。
btScalar
半轴螺栓btScalar是Bullet中用来表示浮点数类型的词。为了能用当精度浮点数和双精度浮点数

本文发布于:2024-09-22 05:23:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/205687.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:动态   刚体   碰撞检测   类库   物体   使用
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议