物体的形状由<code>btCollisionShape</code>对象维护;
物体的位置,旋转状态由<code>btTransform</code>对象维护;
最终需要将物体封装成<code>btRigidBody</code>或<code>btSoftBody</code>或其它对象;
然后将步骤3的对象加入到场景中。
例如
btCollisionObject 基类
btRigidBody 刚体
btSoftBody 流体
<code>btCollisionShape* btCollisionObject::getCollisionShape()</code>
btCollisionObject对象中获取形状维护对象
<code>void btCollisionObject::setFriction(btScalar frict)</code>
设置摩擦力
默认值:0
<code>void btCollisionObject::setRestitution(btScalar rest)</code>
设置碰撞反弹系数
<code>void btRigidBody::applyImpulse(const btVector3 & impulse, const btVector3 & rel_pos)</code>
设置冲量/动量(通过这个设置初始速度)
<code>void btRigidBody::applyCentralImpulse(const btVector3 & impulse)</code>
<a href="http://bulletphysics.org/Bullet/BulletFull/classbtCollisionShape.html">http://bulletphysics.org/Bullet/BulletFull/classbtCollisionShape.html</a>
常见的物体有长方体、球体、胶囊体、三角网格集合。
btCollisionShap
基类
btBoxShape
长方体
BOX_SHAPE_PROXYTYPE
btSphereShape
球体
SPHERE_SHAPE_PROXYTYPE
btCapsuleShape
胶囊体
CAPSULE_SHAPE_PROXYTYPE
btBvhTriangleMeshShap
三角网格
TRIANGLE_MESH_SHAPE_PROXYTYPE
<code>int btCollisionShape::getShapeType() const</code>
获取物品类型,类型参考以下枚举
<code>#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" //for the shape types</code>
构造函数<code>btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface,bool useQuantizedAabbCompression)</code>
构造函数<code>btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface,bool useQuantizedAabbCompression, bool buildBvh = true)</code>
<code>btTriangleIndexVertexArray</code>类集成于 <code>btStridingMeshInterface</code>接口。
<code>btIndexedMesh</code> 三角网格顶点列表和索引列表维护类
顶点表 Vertex Buff
三角形表 Index Buff
通用高性能三角网格访问接口。
构造函数<code>btBoxShape::btBoxShape(const btVector3 & boxHalfExtents)</code>
长宽高,封装成<code>btVector3</code>对象
构造函数<code>btSphereShape::btSphereShape(btScalar radius)</code>
radius xyz轴的半径,可以设置为椭圆球
构造函数<code>btCapsuleShape::btCapsuleShape()</code>
构造函数<code>btCapsuleShape::btCapsuleShape(btScalar radius, btScalar height)</code>
radius 胶囊体半径,可以设置为椭圆球
height 胶囊体长度,height为圆心之间的距离
胶囊体的aabb的边的长度为 {radius2, radius2, radius*2+height}
本文转自 Ron Ngai 博客园博客,原文链接:http://www.cnblogs.com/rond/p/6375917.html ,如需转载请自行联系原作者