Существует множество потоков по сети, что сетка Physijs Concave не работает с коллизией. Кажется, что btBvhTriangleMeshShape не предназначен для работы с collission в ammo.js, поскольку я обнаружил поиск этой темы в форумах, связанных с пулями.
То, что сработало для меня, btConvexHullShape:
var triangle, triangle_mesh = new Ammo.btTriangleMesh;
var btConvexHullShape = new Ammo.btConvexHullShape();
var _vec3_1 = new Ammo.btVector3(0,0,0);
var _vec3_2 = new Ammo.btVector3(0,0,0);
var _vec3_3 = new Ammo.btVector3(0,0,0);
for (i = 0; i < triangles.length; i++) {
triangle = triangles[i];
_vec3_1.setX(triangle[0].x);
_vec3_1.setY(triangle[0].y);
_vec3_1.setZ(triangle[0].z);
btConvexHullShape.addPoint(_vec3_1,true);
_vec3_2.setX(triangle[1].x);
_vec3_2.setY(triangle[1].y);
_vec3_2.setZ(triangle[1].z);
btConvexHullShape.addPoint(_vec3_2,true);
_vec3_3.setX(triangle[2].x);
_vec3_3.setY(triangle[2].y);
_vec3_3.setZ(triangle[2].z);
btConvexHullShape.addPoint(_vec3_3,true);
triangle_mesh.addTriangle(
_vec3_1,
_vec3_2,
_vec3_3,
true
);
}
return btConvexHullShape;
В процессе обучения PHYSIC 3d на основе с threejs, я также хочу отметить следующие лучшие практики: при использовании сложных моделей, создать низкую модель поли что вы можете нажать на эту функцию преобразователя вместо исходной модели или столкнуться с переполнением стека.
Обратите внимание, что вы, вероятно, не хотите использовать сетку, которая детализирована (она очень быстро вычисляется очень тяжело), и для таких вычислений обычно используется прокси-модель с низким количеством полисов. Визуально это не будет иметь особого значения. Вам понадобится программное обеспечение для 3D-моделирования, чтобы сделать эту сетку с низким количеством полисов, хотя делать ее программно сложно, и при ее создании вручную вы можете точно настроить результат. – Leeft
@ Спасибо за то, что я ожидаю некоторых вычислительных проблем с прямым подходом, но все же хочу начать с чего-либо работающего, так как правильная физика является ключом к проекту. В следующем шаге я попытаюсь использовать низкополиное приближение (особенно в тех регионах, где мне меньше всего заботятся). Благодаря! –