所以我有这行代码:
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
。网格是一个平面。
从btTriangleMesh.h:
// findOrAddVertex is an internal method, use addTriangle instead
int findOrAddVertex(const btVector3& vertex, bool removeDuplicateVertices);
因此,请尝试使用addTriangle代替。
编辑:使用btTriangleIndexVertexArray而不是btTriangleMesh效率更高。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句