作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先是一些事实:我尝试使用 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 的未处理异常窗口。
有什么想法吗?
最佳答案
为了将来引用,下面是受上述问题启发而用 C++ 编写的平面 btBvhTriangleMeshShape
的简短工作示例。质量为 0.0f
,因为网格显然是静态对象。
btVector3 vertex1, vertex2, vertex3, vertex4;
btTriangleMesh* triangleMeshTerrain = new btTriangleMesh();
for (int i = -250; i < 250; i = i + 10) {
for (int j = -250; j < 250; j = j + 10) {
vertex1 = btVector3(i, 0.0f, j);
vertex2 = btVector3(i + 10.0f, 0.0f, j);
vertex3 = btVector3(i + 10.0f, 0.0f, j + 10.0f);
vertex4 = btVector3(i, 0.0f, j + 10.0f);
triangleMeshTerrain->addTriangle(vertex1, vertex2, vertex3);
triangleMeshTerrain->addTriangle(vertex1, vertex3, vertex4);
}
}
btCollisionShape* collisionShapeTerrain = new btBvhTriangleMeshShape(triangleMeshTerrain, true);
btDefaultMotionState* motionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, -15, 0)));
btRigidBody::btRigidBodyConstructionInfo rigidBodyConstructionInfo(0.0f, motionState, collisionShapeTerrain, btVector3(0, 0, 0));
btRigidBody* rigidBodyTerrain = new btRigidBody(rigidBodyConstructionInfo);
rigidBodyTerrain->setFriction(btScalar(0.9));
m_dynamicsWorld->addRigidBody(rigidBodyTerrain);
关于c++ - Bullet Physics,btBvhTriangleMeshShape 和 btStaticPlaneShape 之间的碰撞不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23711957/
所以我有这行代码: new btBvhTriangleMeshShape(meshInterface, true); 这让我的程序崩溃了。显然,函数内部某处有一个 assert(numIndices>
我试图在我的应用程序中从一个大网格中创建一个 btBvhTriangleMeshShape,并将其用作刚体。这个刚体将构成静态且永不移动的“地平面”。问题是一切都直接落下,就像它根本不存在一样。这是当
首先是一些事实:我尝试使用 Visual Studio 2012 在 C++ 中使用 Bullet 实现碰撞检测。 到目前为止我有一个球体: btCollisionShape* fallSha
我是一名优秀的程序员,十分优秀!