Лучшие вопросы
Таймлайн
Чат
Перспективы
Bullet Physics Library
физический движок реального времени Из Википедии, свободной энциклопедии
Remove ads
Bullet Physics Library (Библиотека физики «Bullet»; далее — «Bullet»[3]) — физический движок реального времени, который распространяется под свободной лицензией zlib. Скомпилированная библиотека и исходный код движка размещены в свободном доступе на хостинге GitHub (до 2014 года на 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]
Remove ads
История
Суммиров вкратце
Перспектива
В середине сентября 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]
Remove ads
Функциональные возможности
Суммиров вкратце
Перспектива

- Просчитывает столкновения (англ. collision shapes) таких фигур: сфера, параллелепипед, цилиндр, конус, выпуклый корпус и сетка треугольников (англ. triangle mesh)[16];
- Реализует алгоритм расчёта столкновений Гилберта-Джонсона-Кёрти (GJK) и EPA (англ. Expanded Polytope Algorithm)[17];
- Просчёт пересечения координат в AABB-деревьях (англ. Swept collision test)[18];
- Поддержка мягких тел (англ. soft body) и, как развитие технологии, тканей[19];
- Поддержка CUDA[20] и OpenCL[21];
- Гидродинамика сглаженных частиц[22];
- Ограничители (англ. constraints);
- Импорт данных из файлов формата COLLADA 1.4[23];
- Плагин для Maya 2008[24];
- Многопоточность[25];
- Кроссплатформенность;
- Возможность сериализации физических данных в специально разработанный файловый формат .bullet[26];
- Существует порт под Java[27] и Python (также именуемые «JBullet»[28] и «PyBullet[29]» соответственно) и XNA[30].
Обнаружение столкновений
Обнаружение столкновений, используемое в «Bullet», как и в большинстве других физических движков, имеет широкую и узкую фазы (англ. broadphase, narrowphase). Во время широкой фазы алгоритм обнаружения столкновений уменьшает количество потенциально взаимодействующих объектов путём применения ограничивающих объёмов к сцене. «Bullet» содержит несколько разных реализаций широкой фазы, предназначенных для различных целей. Наиболее общая реализация базируется на динамических иерархиях ограничивающих объёмов (англ. dynamic bounding volume hierarchies): используются выровненные по осям ограничивающие параллелепипеды (англ. axis aligned bounding box — AABB), которые постепенно обновляются при перемещении, добавлении или удалении объектов. Также присутствует другая реализация широкой фазы, имеющая аппаратное ускорение на графических процессорах посредством OpenCL, однако она имеет ограничения на размеры объектов.[31]
Этап узкой фазы связан с точной генерацией точек контакта между парами соприкоснувшихся между собой объектов. «Bullet» использует несколько обобщённых алгоритмов, а именно алгоритм Гилберта-Джонсона-Кёрти (англ. GJK) и Expanding Polytope Algorithm (EPA), которые решают задачи столкновения для широкого набора типов геометрических форм столкнувшихся объектов.[31]
Присутствует поддержка непрерывного обнаружения столкновений, которое вычисляет время столкновения между движущимися и вращающимися объектами, однако по умолчанию «Bullet» вычисляет наименьшее расстояние и глубину проникновения в дискретные моменты времени для получения информации о точках контакта между объектами.[31]
Remove ads
Использование
Суммиров вкратце
Перспектива
Благодаря своей бесплатности и открытому свободному коду «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» был задействован в следующих фильмах:
- «2012»[42] — ряд спецэффектов, расчёт твердотельных столкновений;
- «Шерлок Холмс»[43] — расчёт твердотельных столкновений;
- «История игрушек 3»[44] — расчёт твердотельных столкновений;
- «Вольт»[45]
- «Хэнкок»[46]
- «Команда-А»[44] — расчёт твердотельных столкновений, использование «Bullet» в разработке собственного ПО;
- «Мегамозг»[47]
- «Шрек навсегда»[47]
- «Как приручить дракона»[48] — расчёт твердотельных столкновений;
Программы трёхмерного моделирования
Следующие программы трёхмерного моделирования используют движок «Bullet» как плагин для расчётов физики:
- 3ds Max[10]
- Maya 2012[12]
- LightWave 3D с версии 11.5[49]
- Cinema 4D версии 11.5 использует Bullet как часть MoDynamics.[50]
- Blender—Blender использует Bullet для анимации в составе внутреннего игрового движка Blender Game Engine.
- Dynamica — плагин к Maya, разработанный Walt Disney Animation Studios.[45]
- Houdini Bullet Physics — плагин.
- Carrara Pro[англ.] — использует Bullet начиная с восьмой версии и только в Pro-редакции.[51]
Игровые движки
Следующие игровые движки используют «Bullet» в качестве физического движка:
- Crystal Space — игровой движок, поддерживающий «Bullet» и переключающийся на него как на главный физический плагин.
- C4 Engine[англ.] — проприетарный игровой движок, разработанный компанией Terathon Software, в который Эрвин Куманс интегрировал «Bullet».
- Cafu Engine[англ.] — игровой движок, разработанный Carsten Fuchs Software и распространяющийся как под свободной, так и под коммерческой лицензией.
- Rockstar Advanced Game Engine — игровой движок, разработанный Rockstar San Diego и Rockstar North.
- Blitz3D через враппер BlitzBullet.
- Ducttape — игровой движок[52].
- Urho3D — игровой движок.
- Godot — открытый кроссплатформенный 2D и 3D игровой движок под лицензией MIT, который разрабатывается сообществом Godot Engine Community. По-умолчанию, при создании проекта, конструктор ставит другой физический движок, однако позволяет выбрать Bullet в качестве физического движка в настройках проекта[53].
- Panda3D — имеет встроенную поддержку Bullet Physics Library.
- Jet Engine — движок, разработанный Gameloft, где Bullet Physics Library отвечает за физику.
Графические движки
Следующие графические движки имеют средства для связи с «Bullet»:
- OGRE через плагин OgreBullet.
- Irrlicht Engine имеет несколько плагинов для интеграции с «Bullet», включая Bullet Physics Wrapper, irrBP и GameKit.
- OpenSceneGraph через плагин osgBullet.[54]
- Verge3D содержит «Bullet», портированный на JavaScript с помощью компилятора Emscripten. Предоставляет доступ к API библиотеки с использованием средств визуального программирования Puzzles.
Прочее
- 3DMark 11 — бенчмарк из серии 3DMark, первый бенчмарк данной серии, использующий «Bullet» с поддержкой аппаратного ускорения.
- Physics Abstraction Layer[англ.] — открытый кроссплатформенный интерфейс программирования приложений, поддерживающий множество физических движков, включая «Bullet».
Remove ads
Примечания
Ссылки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads