Перейти к содержимому

Моделирование столкновений зданий: введение в компьютерную графику

Reducible

0:00 / 0:00

Моделирование столкновений зданий: введение в компьютерную графику

534 432 просмотра · 5 лет назад
Reducible
336 тыс. подписчиков
534 432 просмотра · 5 лет назад
Системы обнаружения столкновений используются во всевозможных видеоиграх и симуляторах. Но как на самом деле создаются эти системы? Оказывается, ключевые идеи, лежащие в основе этих систем, встречаются во всей области компьютерной науки, называемой компьютерной графикой. Мы начинаем с основ анимации, а затем переходим к идеям дискретного и непрерывного обнаружения столкновений. Мы разбираем их на примере простых симуляций небольшого числа частиц, но масштабирование этих симуляций — отдельная сложная задача. Мы представляем важные идеи в рамках схем оптимизации фазы для ускорения обнаружения столкновений, включая алгоритм прогонки и обрезки, равномерные сетки, деревья Короля-Диана и иерархии ограничивающих объёмов. 0:00 Введение 1:25 Введение в анимацию 2:46 Дискретное обнаружение столкновений и реакция на них 5:50 Реализация 6:50 Ограничения дискретного обнаружения столкновений 8:10 Непрерывное обнаружение столкновений 11:42 Моделирование двух частиц 13:13 Масштабирование моделирования 15:42 Алгоритм «развертка и обрезка» 19:05 Разбиение пространства на равномерную сетку 20:43 Деревья KD 23:51 Иерархии ограничивающих объёмов 27:12 Повторение Исправление: На отметке 9:02 уравнения линейной интерполяции должны быть следующими: x(t) = t * x(1) + (1 - t) * x(0) и y(t) = t * y(1) + (1 - t) * y(0). Во всех последующих выводах x(0) заменяется на x(1). Все y(0) также следует заменить на y(1) по той же причине. После исправления 2: Я провёл эксперимент, используя наивное решение проверки каждой пары частиц с дополнительной неэффективностью рендеринга анимации, поэтому сравнение было некорректным, и поэтому число было таким большим. Фактическое ускорение всё ещё довольно значительно, но не НАСТОЛЬКО. Небольшое исправление: p.vel обновляется и используется в следующей строке на 6:28, p.vel и p.pos должны обновляться одновременно. Это видео поддерживается сообществом Patreon. Особая благодарность следующим участникам Patreon: Бёрту Хамбургу Джастину Хайстеру Майклу Навенштейну Ричарду Уэллсу Заку Лэндису Поддержка:   / reducible   Твиттер:   / reducible20   Это видео было бы невозможно без библиотеки с открытым исходным кодом manim, созданной 3blue1brown: https://github.com/3b1b/manim Вот ссылка на репозиторий с кодом, использованным для создания анимаций в этом видео: https://github.com/nipunramk/Reducible Обзор вывода уравнения вектора реакции на столкновение в 2D: https://www.vobarian.com/collisions/2... Алгоритм обхода иерархии ограничивающего объёма для широкой фазы: https://thegeneralsolution.wordpress.... Идеи и презентация в этом видео были вдохновлены множеством ресурсов — вот некоторые из них, которые я счёл особенно полезными для дальнейшего изучения: https://www.toptal.com/game/video-gam... Разработка игрового физического движка Яном Миллингтоном, глава 12 https://github.com/mattleibow/jitterp... http://www.mcihanozer.com/tips/comput...