110 likes | 392 Views
Моделирование динамики твердых тел на GPU. Выполнили: Гриднев Максим Машинский Леонид Присивко Вячеслав гр. 3057 /2. Моделирование движения твердых тел (ТТ) в виртуальном пространстве. Постановка задачи. Требования: Ограничения движения ТТ: Столкновения
E N D
Моделирование динамики твердых тел на GPU Выполнили: Гриднев Максим Машинский Леонид Присивко Вячеслав гр. 3057/2
Моделирование движения твердых тел(ТТ) в виртуальном пространстве Постановка задачи • Требования: • Ограничения движения ТТ: • Столкновения • Упругие и жесткие связи между телами • Интерактивность: • Моделирование в реальном времени (~10% от общего времени просчета) • Детализированные статические объекты (ландшафт, окружение)
Обзор существующих решенийна CPU • Моделирование движения • Обнаружение пересечений • Широкая фаза • Регулярная и древовидная сетка • AABB, OBB, SAT • Узкая фаза • GJK(EPA) • Lin-Canny • V-Clip • Реакция на пересечения
Модификация решений для GPU • Алгоритмы должны обрабатывать данные для каждого твердого тела независимо и параллельно • Модификация : • Разрешить зависимости между данными твердых тел, используемые алгоритмами • Перенести на GPU алгоритмы для одиночного тела или пары тел Использование GPU может датьзначительный прирост производительности Динамика роста производительности CPU и GPU
Моделирование движения Вход: N тел с кинематическими параметрами Алгоритм: Для каждого твердого тела • Расчет приращений кинематических параметров (функции состояния). • Получение новых значений параметров – решение задачи Коши • метод Эйлера • метод Рунге-Кутта • Применение полученных позиций и скоростей к телам Выход: N тел с новыми значениями параметров Для каждого тела данные независимы и вычисления выполняются параллельно
Вход: N тел с заданными позициями и геометрией • Алгоритм: • Для каждого из N тел на GPU построить список клеток сетки, в которых тело находится • Создание потенциально пересекающихся пар объектов на основе дискретного разбиения пространства на ячейки • Для каждой полученной пары на GPU выполнить грубую проверку • AABB с AABB • OBB с OBB • Выход: Список пар тел, подозрительных на пересечение Обнаружение пересечений Рис.1. (a) Выровненный по осям ограничивающий параллепипед (AABB) (b) Ориентированный ограничивающий параллепипед (OBB) Широкая фаза Узкая фаза • Вход: Список пар тел, подозрительных на пересечение • Алгоритм: • Для каждой пары на GPU выполнить точную проверку на пересечения используя алгоритм GJK • Выход: Список пар пересекающихся сел, информация о пересечениях
Информация о пересечении - точки контактов • Контакт покоя • Метод последовательных импульсов [Catto, 2006] • Ударный контакт • Использование гипотезы Ньютона[Mitrich, 1994] • Последовательная обработка контактов для каждого тела Реакция на пересечения 1 блок 2 блок Рис.1. Контакт покоя Рис.2. Ударный контакт 3 блок • Алгоритм параллельной обработки контактов: • Построение графа зависимостей • Построение реберной раскраски графа зависимостей • Формирование независимых от данных множеств пар - блоки • В каждом блоке пары обрабатываются на GPU параллельно • Расчет импульсов, применяемых к телам Рис. 3. Пример реберной раскраски графа зависимостей
Анализ производительности • Увеличение производительности метода на GPU в 6-8 раз относительно реализации на CPU • Cложность метода относительно количества обрабатываемых объектов – O(N2)
Выводы Моделирование динамики твердых тел на GPU дает следующие преимущества: Разгрузка CPU для выполнения альтернативных задач Возможность увеличения количества обрабатываемых тел в 10 раз без потери производительности
Литература • An Introduction to Physically Based Modeling:Rigid Body Simulation I—Unconstrained Rigid BodyDynamics, David Baraff, 1997 • An Introduction to Physically Based Modeling: Rigid Body Simulation II—Nonpenetration Constraints, David Baraff, 1997 • GPU Gems 3: Part V - Physics Simulation, 2008 • Real-Time Collision Detection, Christer Ericson, 2005 • Physics on NVIDIA GPUs, Mark Harris, 2006 • OpenCL Game Physics : Bullet: A Case Study in Optimizing Physics Middleware for the GPU, Erwin Coumans. 2009