Уважаемые стекировщики,
Я пытаюсь использовать статическое (твердое) тело в ofxBox2d в openFrameworks. Поскольку это вогнутый объект, я разбиваю его на маленькие треугольники с помощью функции триангуляции ofxBox2d. Триангуляция работает нормально до тех пор, пока я не создаю тело как статическое (то есть плотность ноль).
Итак, в моем коде у меня есть:
//create shape here//
//triangulate shape here//
// now loop through all the triangles and make a box2d triangle
for (int i=0; i<tris.size(); i++)
{
ofPtr<ofxBox2dPolygon> triangle = ofPtr<ofxBox2dPolygon>(new ofxBox2dPolygon);
triangle.get()->addTriangle(tris[i].a, tris[i].b, tris[i].c);
triangle.get()->setPhysics(1, 0, 0); //density, bounce, friction
//triangle.get()->body->SetType(b2_staticBody);
triangle.get()->create(box2d.getWorld());
polyShapes.push_back(triangle);
}
Посмотри пожалуйста этот ссылка на 2 фотографии, показывающие проблему.
в Топ рисунок: объект динамический (плотность> 0), он правильно триангулирован, но перемещается силами падающих шариков, потому что он динамичен. Красным цветом: как выглядит оригинальная форма
в низ картинка: если я установил плотность на 0 (или явно установил ее на статический, раскомментировав строку «SetType» в приведенном выше коде, тогда мой объект рисуется неправильно (обратите внимание на линии в верхнем левом углу изображения), но ведет себя так же, как и раньше ( т. е. шары проходят через него, но сталкиваются с «призрачными» треугольниками; красным цветом: исходная (входная) форма — или твердый объект, который я ожидаю.
Я написал этот небольшая программа, код которой я прилагаю (openFrameworks).
Я старался изо всех сил, чтобы сделать простой случай, чтобы доказать свою точку зрения. Любая помощь высоко ценится :).
Спасибо.
Задача ещё не решена.