Bullet: сбой btBvhTriangleMeshShape

Итак, у меня есть эта строка кода:

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, Сетка — это плоская плоскость.

введите описание изображения здесь

1

Решение

Из btTriangleMesh.h:

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

Так что попробуйте вместо этого использовать addTriangle.

РЕДАКТИРОВАТЬ: более эффективно использовать btTriangleIndexVertexArray вместо btTriangleMesh.

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector