天天看點

[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  ,如需轉載請自行聯系原作者

繼續閱讀