Bullet Physics Library | |
---|---|
Тип | физический движок |
Ключевые программисты | Эрвин Куманс (англ. Erwin Coumans), Ли Хоус (англ. Lee Howes) |
Аппаратные платформы | IBM PC-совместимые компьютеры, PlayStation 3, PlayStation Portable, Wii, Nintendo DS, Xbox 360, Android, iPhone |
Поддерживаемые ОС | Microsoft Windows, macOS, Linux, Google Android, Apple iOS |
Написан на языках | Си, C++ |
Лицензия | свободная — лицензия zlib[1] |
Последняя версия | 3.2.4 (25 апреля 2022[2]) |
Первая игра на движке | «Regnum Online » (24 мая 2007) |
Последняя игра на движке | Red Dead Redemption 2 |
bulletphysics.org/wordpress/ | |
Медиафайлы на Викискладе |
Bullet Physics Library (Библиотека физики «Bullet»; далее — «Bullet»[3]) — физический движок реального времени, который распространяется под свободной лицензией zlib. Скомпилированная библиотека и исходный код движка размещены в свободном доступе на хостинге Google Code. Основной автор «Bullet», Эрвин Куманс (англ. Erwin Coumans), ранее работал над движком Havok.
«Bullet» активно используется в компьютерных играх, фильмах, программах трёхмерного моделирования, как компонент других игровых движков и во множестве других более специфичных случаях. «Bullet» используется компанией AMD в рамках программы Open Physics Initiative, которая предполагает создание нового физического движка на базе «Bullet» и Digital Molecular Matter, который будет активно использовать аппаратное ускорение расчётов физических вычислений посредством OpenCL и DirectCompute.
Согласно статье из журнала Game Developer , которая была опубликована в августе 2009 года, «Bullet» по популярности использования разработчиками компьютерных игр занимает третье место, уступая лишь движкам nVidia PhysX и Havok.[4]
В середине сентября 2009 года компания AMD предложила свою поддержку в разработке OpenCL-версии движка «Bullet» для видеокарт.[5][6]
30 сентября 2009 года было официально объявлено о том, что DMM станет составным компонентом новообразованного движка, который разрабатывается AMD и Pixelux соответственно проекту «Open Physics Initiative».[7]
В середине октября 2009 года журналисты сайта Icrontic взяли интервью у руководителя технического маркетинга nVidia Тома Питерсена с целью узнать отношение компании к Bullet после инициативы AMD. Питерсон заявил, что nVidia и дальше будет максимально поддерживать развитие движка.[8]
В конце февраля 2010 года была выпущена версия движка и SDK под номером 2.76. В этой версии были сделаны необходимые приготовления к поддержке исполнения через OpenCL и обновлены предварительные демонстрации MiniCL. Был улучшен плагин Dynamica для Autodesk Maya, введён новый бинарный платформонезависимый формат экспорта-импорта физических данных .bullet, а также добавлены предварительные версии новых инструментов: btInternalEdgeUtility для исключения ненужных коллизий при взаимодействии объектов и редактор/отладчик физики.[9]
22 сентября 2010 года вышла версия 2.77, в которой рамках Open Physics Initiative была добавлена запланированная ранее поддержка аппаратного ускорения на графических процессорах через OpenCL и DirectCompute. В версии 2.77 аппаратное ускорение было реализовано для модуля симуляции одежды (BulletSoftBody). В будущих версиях планируется поддержка и других модулей движка. Также в рамках версии 2.77 разработчики создали плагин для 3DS Max, который добавляет в программу поддержку Bullet.[10][11]
В начале августа 2011 года на конференции SIGGRAPH 2011 компания Autodesk при поддержке AMD представила для редактора трёхмерной графики Maya 2012 новый плагин Bullet Physics, который использует OpenCL и который вошел в набор Subscription Advantage Pack. «Мы продвигаем индустриальные стандарты вроде OpenCL и Bullet Physics, так как они упрощают программирование и устраняют препятствия, вызванные проприетарными технологиями, которые могут ограничить творчество разработчиков», — заявил по этому поводу Сандип Гупте (англ. Sandeep Gupte), главный управляющий подразделения профессиональной графики в AMD.[12][13]
16 сентября 2011 года была выпущена версия 2.79, основная часть которой была направлена на исправление ошибок, однако также и вносила новый функционал: новый метод декомпозиции выпуклых поверхностей на основе библиотеки HACD и новая система сборки premake, которая может автоматически генерировать файлы проекта Microsoft Visual Studio. Одновременно с выходом этой версии были опубликованы материалы по Bullet, которые презентовались на SIGGRAPH 2011 в рамках доклада «Destruction and Dynamicsfor Film and Game Production».[14][15]
Обнаружение столкновений, используемое в «Bullet», как и в большинстве других физических движков, имеет широкую и узкую фазы (англ. broadphase, narrowphase). Во время широкой фазы алгоритм обнаружения столкновений уменьшает количество потенциально взаимодействующих объектов путём применения ограничивающих объёмов к сцене. «Bullet» содержит несколько разных реализаций широкой фазы, предназначенных для различных целей. Наиболее общая реализация базируется на динамических иерархиях ограничивающих объёмов (англ. dynamic bounding volume hierarchies): используются выровненные по осям ограничивающие параллелепипеды (англ. axis aligned bounding box — AABB), которые постепенно обновляются при перемещении, добавлении или удалении объектов. Также присутствует другая реализация широкой фазы, имеющая аппаратное ускорение на графических процессорах посредством OpenCL, однако она имеет ограничения на размеры объектов.[31]
Этап узкой фазы связан с точной генерацией точек контакта между парами соприкоснувшихся между собой объектов. «Bullet» использует несколько обобщённых алгоритмов, а именно алгоритм Гилберта-Джонсона-Кёрти (англ. GJK) и Expanding Polytope Algorithm (EPA), которые решают задачи столкновения для широкого набора типов геометрических форм столкнувшихся объектов.[31]
Присутствует поддержка непрерывного обнаружения столкновений, которое вычисляет время столкновения между движущимися и вращающимися объектами, однако по умолчанию «Bullet» вычисляет наименьшее расстояние и глубину проникновения в дискретные моменты времени для получения информации о точках контакта между объектами.[31]
Благодаря своей бесплатности и открытому свободному коду «Bullet» активно используется не только в индустрии компьютерных игр, но и в производстве спецэффектов к фильмам. Многие производители спецэффектов, использующие «Bullet», модифицируют его под свои проприетарные программные инструменты или под текущие задачи, которые должен выполнять движок. Например, Digital Domain использовала модифицированный «Bullet» для создания эффектов к фильму «2012», а Framestore интегрировала изменённую версию движка в свой внутренний программный инструмент fBounce при создании фильма «Шерлок Холмс». Weta Digital интегрировала движок в свою внутреннюю программу wmRigid при создании спецэффектов фильма «Команда-А».[31]
Помимо этого, «Bullet» активно используется в программах трёхмерного моделирования в качестве плагина или уже интегрированного инструмента. Он доступен для Cinema 4D, Houdini, 3ds Max, Carara , Blender, Maya и Lightwave.[31]
Согласно Эрвину Кумансу, такая популярность в использовании и адаптации движка проистекает из его кросс-платформенности, свободности и открытости, чего не имеют конкуренты — проприетарные Havok и nVidia PhysX. По сравнению со своим ближайшим свободным конкурентом — Open Dynamics Engine, — «Bullet» содержит надежный механизм обнаружения столкновений для объектов с выпуклой оболочкой, что является важным для симуляции разрушаемых структур.[31]
«Bullet» используется во многих компьютерных играх, как коммерческих, так и некоммерческих.
«Bullet» был задействован в следующих фильмах:
Следующие программы трёхмерного моделирования используют движок «Bullet» как плагин для расчётов физики:
Следующие игровые движки используют «Bullet» в качестве физического движка:
Следующие графические движки имеют средства для связи с «Bullet»: