1

所以我有这行代码:

new btBvhTriangleMeshShape(meshInterface, true);

这使我的程序崩溃。显然,函数内部的某处有一条assert(numIndices>0)线,导致崩溃。

如果false我在行尾再添加一个参数,它看起来像:

new btBvhTriangleMeshShape(meshInterface, true, false);

我告诉它不要生成包围体数据,它继续正常(没有崩溃)。所以我的问题是:为什么当我明确有索引时meshInterface,它会崩溃并说我没有索引。

附加信息:

meshInterface是这样创建的:

btTriangleMesh *meshInterface = new btTriangleMesh();
for(uint i = 0; i < terrainMesh.position.size(); i++) {
    //don't remove duplicate vertex because there won't ever be any
    meshInterface->findOrAddVertex(toBt(terrainMesh.position[i]), false);
}
for(uint i = 0; i < terrainMesh.index.size(); i++) {
    meshInterface->addIndex(terrainMesh.index[i]);
}

我已经在另一个对象中设置了我的数据,我只是将它加载到项目符号设置中。

在这里你可以看到我的meshInterface. 网格是平面。

在此处输入图像描述

4

1 回答 1

2

来自 btTriangleMesh.h:

// findOrAddVertex is an internal method, use addTriangle instead
int findOrAddVertex(const btVector3& vertex, bool removeDuplicateVertices);

所以尝试使用 addTriangle 代替。

编辑:使用 btTriangleIndexVertexArray 而不是 btTriangleMesh 更有效。

于 2014-08-04T22:26:54.193 回答