создание статических объектов в box2d

Уважаемые стекировщики,

Я пытаюсь использовать статическое (твердое) тело в 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).

Я старался изо всех сил, чтобы сделать простой случай, чтобы доказать свою точку зрения. Любая помощь высоко ценится :).
Спасибо.

0

Решение

Задача ещё не решена.

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


По вопросам рекламы [email protected]