Bullet物理学,btBvhTriangleMeshShape和btStaticPlaneShape之间的碰撞不会起作用

时间:2014-05-17 13:34:45

标签: c++ visual-studio-2012 bullet bulletphysics

首先是一些事实: 我尝试使用Visual Studio 2012在C ++中实现与Bullet的碰撞检测。  到目前为止,我有一个球体:

    btCollisionShape* fallShape = new btSphereShape(100); 
    btDefaultMotionState* fallMotionState =
            new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,500,0)));
    btScalar mass = 1000;
    btVector3 fallInertia(0,0,0);
    fallShape->calculateLocalInertia(mass,fallInertia);
    btRigidBody::btRigidBodyConstructionInfo fallRigidBodyCI(mass,fallMotionState,fallShape,fallInertia);
    btRigidBody* fallRigidBody = new btRigidBody(fallRigidBodyCI);
    physicsWorld->addRigidBody(fallRigidBody);

和我的等级,实现为btBvhTriangleMeshShape:

    triangles.addTriangle(btVector3 (0, 0, 0),btVector3 (0, 0, 0),btVector3 (0, 0, 0));

btCollisionShape* levelShape = new btBvhTriangleMeshShape(&triangles, true, true);
    btDefaultMotionState* levelMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,0,0)));
  btRigidBody::btRigidBodyConstructionInfo
      levelRigidBodyCI(0,levelMotionState,levelShape,btVector3(0,0,0));
   btRigidBody* levelRigidBody = new btRigidBody(levelRigidBodyCI);
    physicsWorld->addRigidBody(levelRigidBody);

我知道在三角形中只有一个三角形,但它们会发生碰撞。

现在我的问题是,当它们发生碰撞时,我的程序关闭时没有发生任何特定错误,只是来自visual studio的unhandle异常窗口。

有人有想法吗?

2 个答案:

答案 0 :(得分:3)

为了将来参考,下面是一个简单的{+ 1}} C ++的简短工作示例,受上述问题的启发。质量为btBvhTriangleMeshShape,因为网格显然是一个静态对象。

0.0f

答案 1 :(得分:2)

在这一行

triangles.addTriangle(btVector3 (0, 0, 0),btVector3 (0, 0, 0),btVector3 (0, 0, 0));

你给所有坐标都是零值,所以三角形不正确,也许这就是问题的原因。