2015-06-13 5 views
5

Wie Sie auf dem Bild sehen können, rollt die Box nicht, sondern rutscht auf der Piste.Box rollt nicht in Bullet Physics

enter image description here

Hier ist, wie ich die Box in Code erstellen,

config = new btDefaultCollisionConfiguration(); 
dispatcher = new btCollisionDispatcher(config); 
broadphase = new btDbvtBroadphase(); 
solver = new btSequentialImpulseConstraintSolver(); 
bWorld = new btDiscreteDynamicsWorld(dispatcher, broadphase, solver, config); 
bWorld->setGravity(btVector3(0, -9.8f, 0)); 

// ... 

btTransform t; 
t.setIdentity(); 
t.setOrigin(btVector3(position.x, position.y, position.z)); 

btBoxShape* box = new btBoxShape(btVector3(size.x, size.y, size.z)); 
btVector3 inertia(0, 0, 0); 
float mass = 10.f; 
box->calculateLocalInertia(mass, inertia); 

btMotionState* mState = new btDefaultMotionState(t); 
btRigidBody::btRigidBodyConstructionInfo cInfo(mass, mState, box); 
//cInfo.m_restitution = 0.4f; 
//cInfo.m_friction = 0.5f; 
btRigidBody* body = new btRigidBody(cInfo); 
//body->setLinearFactor(btVector3(1,1,0)); 
//body->setAngularFactor(btVector3(0,0,1)); 
m_impl->bWorld->addRigidBody(body); 

ich mit Reibung und anderen Parametern versucht, aber Ergebnis ist das gleiche. Lass mich wissen, was ich hier falsch mache.

Antwort

1

Sie müssen Ihren inertia Vektor an btRigidBodyConstructionInfo übergeben. Überprüfen Sie den 4. Parameter auf btRigidBodyConstructionInfo Konstruktor (der mit Standardwert).

+0

oh .. ja, danke. – shan