Программа для многопоточной симуляции ткани методом Extended Position Based Dynamics, поддерживающая разделение задачи между несколькими потоками и коллизии ткани с самой собой и с твердыми телами.
Работа программы делится на четыре этапа:
- редактирование сцены путем добавления частей ткани и твердых тел
- настройка дополнительных ограничений для ткани
- настройка параметров симуляции
- непосредственно симуляция
В программе реализованы следующие ограничения:
- внутренние ограничения ткани:
- ограничение на растяжение,
- реалистичное ограничение на растяжение,
- ограничение на изгиб,
- реалистичное ограничение на изгиб,
- ограничения, созданные коллизиями:
- коллизия ткани с самой собой типа вершина-треугольник,
- коллизия ткани с самой собой типа ребро-ребро,
- коллизия ткани с твердым телом типа вершина-треугольник,
- коллизия ткани с твердым телом типа ребро-ребро,
- пользовательские ограничения:
- задание положения произвольной вершины ткани,
- угла изгиба вдоль произвольного ребра ткани,
- сшивание двух произвольных вершин ткани.
Разделение задачи между потоками реализовано с помощью представления ограничений в виде графа.
Поиск коллизий основан на R-дереве сцены.
Более подробное описание программы приведено в файле docs/theory.pdf
Проект зависит от следующих библиотек:
- Glad – прослойка, упрощающая работу с OpenGL,
- GLFW – библиотека для создания окна, контекста OpenGL и обработки ввода,
- GLM – высокопроизводительная математическая библиотека,
- ImGui – минималистичная библиотека для создания графического интерфейса,
- ImPlot – дополнение для ImGui, позволяющее строить графики.



