本文整理汇总了C++中btDiscreteDynamicsWorld::setGravity方法的典型用法代码示例。如果您正苦于以下问题:C++ btDiscreteDynamicsWorld::setGravity方法的具体用法?C++ btDiscreteDynamicsWorld::setGravity怎么用?C++ btDiscreteDynamicsWorld::setGravity使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类btDiscreteDynamicsWorld
的用法示例。
在下文中一共展示了btDiscreteDynamicsWorld::setGravity方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setup
void setup()
{
mCam = new CameraPersp( getWindowWidth(), getWindowHeight(), 60.0f );
mCam->lookAt(Vec3f(100,400,-400), Vec3f::zero());
mSurface = 0;
mTexture = 0;
mCapture = new Capture( 320, 240 );
mCapture->startCapture();
mPaused = false;
mDrawTextured = true;
btVector3 worldAabbMin(-10000,-10000,-10000);
btVector3 worldAabbMax(10000,10000,10000);
int maxProxies = 1024;
btAxisSweep3 * broadphase = new btAxisSweep3(worldAabbMin,worldAabbMax,maxProxies);
btDefaultCollisionConfiguration * collisionConfiguration = new btDefaultCollisionConfiguration();
btCollisionDispatcher * dispatcher = new btCollisionDispatcher(collisionConfiguration);
btSequentialImpulseConstraintSolver * solver = new btSequentialImpulseConstraintSolver;
dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);
dynamicsWorld->setGravity(btVector3(0,-10,0));
btCollisionShape * groundShape = new btStaticPlaneShape(btVector3(0,1,0),1);
btDefaultMotionState * groundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,-1,0)));
btRigidBody::btRigidBodyConstructionInfo groundRigidBodyCI(0,groundMotionState,groundShape,btVector3(0,0,0));
groundRigidBody = new btRigidBody(groundRigidBodyCI);
dynamicsWorld->addRigidBody(groundRigidBody);
}
示例2: initPhysics
void triMeshApp::initPhysics()
{
// setup physics environment. for all basic rigid body physics this can be left as it is
m_collisionConfiguration = new btDefaultCollisionConfiguration();
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
m_broadphase = new btDbvtBroadphase();
btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver;
m_solver = sol;
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_solver, m_collisionConfiguration);
m_dynamicsWorld->setGravity(btVector3(0,-10,0));
}
示例3: init
void init()
{
m_collisionConfiguration = new btDefaultCollisionConfiguration();
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
m_overlappingPairCache = new btDbvtBroadphase();
m_solver = new btSequentialImpulseConstraintSolver();
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher, m_overlappingPairCache, m_solver, m_collisionConfiguration);
m_dynamicsWorld->setGravity(btVector3(0, 0, 0));
m_debugDraw = new BulletDebugDraw();
m_dynamicsWorld->setDebugDrawer(m_debugDraw);
}
示例4: World
World(const FieldGeometry *const field_geom)
: field_geometry{field_geom}, field{field_geom} {
dynamics.setGravity({0, 0, -9.80665});
dynamics.addRigidBody(&field.ground_body);
dynamics.addRigidBody(&field.ceil_body);
dynamics.addRigidBody(&field.left_wall_body);
dynamics.addRigidBody(&field.right_wall_body);
dynamics.addRigidBody(&field.top_wall_body);
dynamics.addRigidBody(&field.bottom_wall_body);
dynamics.addRigidBody(&field.left_goal_body);
dynamics.addRigidBody(&field.right_goal_body);
balls.emplace_back();
dynamics.addRigidBody(&balls.back().body);
ball_set_vec(&balls.back(), {});
}
示例5: init
void BulletWrapper::init()
{
assert(!m_Broadphase && !m_CollisionConfiguration && !m_Dispatcher && !m_Solver && !m_DynamicsWorld);
m_Broadphase = new btDbvtBroadphase();
m_CollisionConfiguration = new btDefaultCollisionConfiguration();
m_Dispatcher = new btCollisionDispatcher(m_CollisionConfiguration);
m_Dispatcher->setNearCallback(MyNearCallback);
m_Solver = new btSequentialImpulseConstraintSolver;
m_DynamicsWorld = new btDiscreteDynamicsWorld(m_Dispatcher, m_Broadphase, m_Solver, m_CollisionConfiguration);
//m_DynamicsWorld->setGravity(btVector3(0, -10, 0));
m_DynamicsWorld->setGravity(btVector3(0, 0, 0));
}
示例6: initPhysics
void winBodiesApp::initPhysics()
{
// setup physics environment. for all basic rigid body physics this can be left as it is
m_collisionConfiguration = new btDefaultCollisionConfiguration();
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
m_broadphase = new btDbvtBroadphase();
btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver;
m_solver = sol;
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_solver, m_collisionConfiguration);
m_dynamicsWorld->setGravity(btVector3(0,-10,0));
// make a ground plane that cannot be moved
btCollisionShape * groundShape = new btStaticPlaneShape(btVector3(0,1,0),1);
btDefaultMotionState * groundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,-1,0)));
btRigidBody::btRigidBodyConstructionInfo groundRigidBodyCI(0,groundMotionState,groundShape,btVector3(0,0,0));
m_groundRigidBody = std::shared_ptr<btRigidBody>(new btRigidBody(groundRigidBodyCI));
m_dynamicsWorld->addRigidBody(m_groundRigidBody.get());
}
示例7: createBulletSim
void createBulletSim(void) {
// EN:: collision configuration contains default setup for memory, collision setup.
// EN:: Advanced users can create their own configuration.
// BR:: configuração de colisão contem configurações padrão da memória.
// BR:: usuários avançados podem criar suas próprias configurações.
collisionConfiguration = new btDefaultCollisionConfiguration();
// EN:: use the default collision dispatcher. For parallel processing
// EN:: you can use a diffent dispatcher (see Extras/BulletMultiThreaded)
// BR:: use o dispatcher padrão. para processamento paralelo
// BR:: você pode usar um dispatcher diferente. (ver Doc)
dispatcher = new btCollisionDispatcher(collisionConfiguration);
// EN:: btDbvtBroadphase is a good general purpose broadphase.
// EN:: You can also try out btAxis3Sweep.
// BR:: btDbvtBroadphase é um bom broadphase de propósito geral.
// BR:: Você pode tentar também btAxis3Sweep.
overlappingPairCache = new btDbvtBroadphase();
// EN:: the default constraint solver. For parallel processing
// EN:: you can use a different solver (see Extras/BulletMultiThreaded)
// BR:: usa a constraint solver padrão. Para processamento paralelo
// BR:: você pode ver um solver diferente (ver Doc)
solver = new btSequentialImpulseConstraintSolver;
dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,overlappingPairCache,solver,collisionConfiguration);
dynamicsWorld->setGravity(btVector3(0,-10,0));
// EN:: create a few basic rigid bodies
// EN:: start with ground plane, 1500, 1500
// BR:: cria alguns corpos rígidos básicos
// BR:: inicializa com um chão plano.
btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(1500.),btScalar(1.),btScalar(1500.)));
collisionShapes.push_back(groundShape);
btTransform groundTransform;
groundTransform.setIdentity();
groundTransform.setOrigin(btVector3(0,-2,0));
{
btScalar mass(0.);
// EN:: rigidbody is dynamic if and only if mass is non zero, otherwise static
// BR:: corpo rigido é dimâmico apenas se massa for diferente de 0.
bool isDynamic = (mass != 0.f);
btVector3 localInertia(0,0,0);
if (isDynamic)
groundShape->calculateLocalInertia(mass,localInertia);
btDefaultMotionState* myMotionState = new btDefaultMotionState(groundTransform);
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,groundShape,localInertia);
btRigidBody* body = new btRigidBody(rbInfo);
// EN:: add the body to the dynamics world
// BR:: adiciona o corpo às dinâmicas do mundo
dynamicsWorld->addRigidBody(body);
}
{
// EN:: create a dynamic rigidbody
// BR:: cria um corpo rígido dinâmico
btCollisionShape* colShape = new btBoxShape(btVector3(1,1,1));
collisionShapes.push_back(colShape);
// EN:: Create Dynamic Objects
// BR:: Cria objetos dinâmicos
btTransform startTransform;
startTransform.setIdentity();
btScalar mass(1.f);
// EN:: rigidbody is dynamic if and only if mass is non zero, otherwise static
// BR:: corpo rigido é dimâmico apenas se massa for diferente de 0.
bool isDynamic = (mass != 0.f);
btVector3 localInertia(0,0,-1.0);
if (isDynamic)
colShape->calculateLocalInertia(mass,localInertia);
startTransform.setOrigin(btVector3(0,250,0));
// *** give it a slight twist so it bouncees more interesting
startTransform.setRotation(btQuaternion(btVector3(1.0, 1.0, 0.0), 0.6));
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
//btDefaultMotionState* myMotionState = new btDefaultMotionState(startTransform);
MyMotionState* motionState = new MyMotionState(startTransform, boxNode);
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,motionState,colShape,localInertia);
btRigidBody* body = new btRigidBody(rbInfo);
dynamicsWorld->addRigidBody(body);
}
}