Skip to content

Latest commit

 

History

History
48 lines (37 loc) · 3.16 KB

File metadata and controls

48 lines (37 loc) · 3.16 KB

ClothSimulation

Программа для многопоточной симуляции ткани методом Extended Position Based Dynamics, поддерживающая разделение задачи между несколькими потоками и коллизии ткани с самой собой и с твердыми телами.

Работа программы делится на четыре этапа:

  1. редактирование сцены путем добавления частей ткани и твердых тел
  2. настройка дополнительных ограничений для ткани
  3. настройка параметров симуляции
  4. непосредственно симуляция

В программе реализованы следующие ограничения:

  1. внутренние ограничения ткани:
  • ограничение на растяжение,
  • реалистичное ограничение на растяжение,
  • ограничение на изгиб,
  • реалистичное ограничение на изгиб,
  1. ограничения, созданные коллизиями:
  • коллизия ткани с самой собой типа вершина-треугольник,
  • коллизия ткани с самой собой типа ребро-ребро,
  • коллизия ткани с твердым телом типа вершина-треугольник,
  • коллизия ткани с твердым телом типа ребро-ребро,
  1. пользовательские ограничения:
  • задание положения произвольной вершины ткани,
  • угла изгиба вдоль произвольного ребра ткани,
  • сшивание двух произвольных вершин ткани.

Разделение задачи между потоками реализовано с помощью представления ограничений в виде графа.

Поиск коллизий основан на R-дереве сцены.

Более подробное описание программы приведено в файле docs/theory.pdf

Проект зависит от следующих библиотек:

  • Glad – прослойка, упрощающая работу с OpenGL,
  • GLFW – библиотека для создания окна, контекста OpenGL и обработки ввода,
  • GLM – высокопроизводительная математическая библиотека,
  • ImGui – минималистичная библиотека для создания графического интерфейса,
  • ImPlot – дополнение для ImGui, позволяющее строить графики.

Примеры работы программы

Alt text

Alt text

Alt text

Alt text

demo.mp4