Ограничивающая фигура динамического 3D объекта, библиотека Bullet

349
17 января 2017, 23:35

Столкнулся с проблемой создания ограничивающей фигуры для 3D объекта моделька которого состоит из множества Mesh Для создаия ограничивающей фигуры использую метод :

    /**Создает ограничивающую фигуру для динамичного объекта
 * @param model - 3D модель
 * @param optimize - флаг определяющий необходимость применения оптимизации (упрощения)
 * @param numMesh - по номеру какого меша модели будет создаваться ограничивающая фигура*/
public static btConvexHullShape createConvexHullShape (final Model model, boolean optimize, int numMesh) {
    final Mesh mesh = model.meshes.get(numMesh);
    final btConvexHullShape shape = new btConvexHullShape(mesh.getVerticesBuffer(), mesh.getNumVertices(), mesh.getVertexSize());
    if (!optimize) return shape;
    // оптимизация формы
    final btShapeHull hull = new btShapeHull(shape);
    hull.buildHull(shape.getMargin());
    final btConvexHullShape result = new btConvexHullShape(hull);
    // удаление вспомогательных форм
    shape.dispose();
    hull.dispose();
    return result;
}

мною была предпринята попытка создания ограничивающих фигур по всем имеющимся Mesh модели ,

    public static Array<btConvexHullShape> createConvexHullShapeArray (final Model model, boolean optimize)
{
    Array<btConvexHullShape> result = new Array<btConvexHullShape>();
    for (int i=0;i<model.nodes.size;i++) {result.add(createConvexHullShape(model, optimize,i));}
    return result;
}

но это не дало результата т.к. все эти ограничивающие фигуры начинали жить отдельной жизнью , хотя должны быть привязаны друг к другу.

Вопрос, как программно объединить все имеющиеся Mesh в одну (ограничивающую сетку) и уже по неё создать ограничивающую фигуру , или может быть нужно применить какой то другой приём ?

Полностью исходный код можно посмотреть тут

класс com.leganas.game.framework.graphics.engine3D.Phisics.java

READ ALSO
Spring security, тестирование MVC и заглушка для сервисов

Spring security, тестирование MVC и заглушка для сервисов

Пытаюсь протестировать контроллер, у которого есть @PreAuthorize и сервис, который надо подменить заглушкой

399
Tesseract Android Java. Ошибка подключения языка

Tesseract Android Java. Ошибка подключения языка

За основу беру эту статьюhttp://www

326
Получения фокуса окна по PID

Получения фокуса окна по PID

В данной теме я узнал, как получить PID процессаИз выведенного списка все процессы Java отображаются просто java

332
Получить заголовок страницы webview

Получить заголовок страницы webview

Как получить заголовок страницы webview?

327