Итак, у меня есть эта строка кода:
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.