天天看点

[Bullet3]常见物体和初始化

物体的形状由<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 &amp; impulse, const btVector3 &amp; rel_pos)</code>

设置冲量/动量(通过这个设置初始速度)

<code>void btRigidBody::applyCentralImpulse(const btVector3 &amp; 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 &amp; 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  ,如需转载请自行联系原作者

继续阅读