Русская Википедия:Bullet Physics Library
Bullet Physics Library (Библиотека физики «Bullet»; далее — «Bullet»[1]) — физический движок реального времени, который распространяется под свободной лицензией zlib. Скомпилированная библиотека и исходный код движка размещены в свободном доступе на хостинге Google Code. Основной автор «Bullet», Эрвин Куманс (Шаблон:Lang-en), ранее работал над движком Havok.
«Bullet» активно используется в компьютерных играх, фильмах, программах трёхмерного моделирования, как компонент других игровых движков и во множестве других более специфичных случаях. «Bullet» используется компанией AMD в рамках программы Open Physics Initiative, которая предполагает создание нового физического движка на базе «Bullet» и Digital Molecular Matter, который будет активно использовать аппаратное ускорение расчётов физических вычислений посредством OpenCL и DirectCompute.
Согласно статье из журнала Шаблон:Нп3, которая была опубликована в августе 2009 года, «Bullet» по популярности использования разработчиками компьютерных игр занимает третье место, уступая лишь движкам nVidia PhysX и Havok.[2]
История
В середине сентября 2009 года компания AMD предложила свою поддержку в разработке OpenCL-версии движка «Bullet» для видеокарт.[3][4]
30 сентября 2009 года было официально объявлено о том, что DMM станет составным компонентом новообразованного движка, который разрабатывается AMD и Pixelux соответственно проекту «Open Physics Initiative».[5]
В середине октября 2009 года журналисты сайта Icrontic взяли интервью у руководителя технического маркетинга nVidia Тома Питерсена с целью узнать отношение компании к Bullet после инициативы AMD. Питерсон заявил, что nVidia и дальше будет максимально поддерживать развитие движка.[6]
В конце февраля 2010 года была выпущена версия движка и SDK под номером 2.76. В этой версии были сделаны необходимые приготовления к поддержке исполнения через OpenCL и обновлены предварительные демонстрации MiniCL. Был улучшен плагин Dynamica для Autodesk Maya, введён новый бинарный платформонезависимый формат экспорта-импорта физических данных .bullet, а также добавлены предварительные версии новых инструментов: btInternalEdgeUtility для исключения ненужных коллизий при взаимодействии объектов и редактор/отладчик физики.[7]
22 сентября 2010 года вышла версия 2.77, в которой рамках Open Physics Initiative была добавлена запланированная ранее поддержка аппаратного ускорения на графических процессорах через OpenCL и DirectCompute. В версии 2.77 аппаратное ускорение было реализовано для модуля симуляции одежды (BulletSoftBody). В будущих версиях планируется поддержка и других модулей движка. Также в рамках версии 2.77 разработчики создали плагин для 3DS Max, который добавляет в программу поддержку Bullet.[8][9]
В начале августа 2011 года на конференции SIGGRAPH 2011 компания Autodesk при поддержке AMD представила для редактора трёхмерной графики Maya 2012 новый плагин Bullet Physics, который использует OpenCL и который вошел в набор Subscription Advantage Pack. «Мы продвигаем индустриальные стандарты вроде OpenCL и Bullet Physics, так как они упрощают программирование и устраняют препятствия, вызванные проприетарными технологиями, которые могут ограничить творчество разработчиков», — заявил по этому поводу Сандип Гупте (Шаблон:Lang-en), главный управляющий подразделения профессиональной графики в AMD.[10][11]
16 сентября 2011 года была выпущена версия 2.79, основная часть которой была направлена на исправление ошибок, однако также и вносила новый функционал: новый метод декомпозиции выпуклых поверхностей на основе библиотеки HACD и новая система сборки premake, которая может автоматически генерировать файлы проекта Microsoft Visual Studio. Одновременно с выходом этой версии были опубликованы материалы по Bullet, которые презентовались на SIGGRAPH 2011 в рамках доклада «Destruction and Dynamicsfor Film and Game Production».[12][13]
Функциональные возможности
- Просчитывает столкновения (Шаблон:Lang-en) таких фигур: сфера, параллелепипед, цилиндр, конус, выпуклый корпус и сетка треугольников (Шаблон:Lang-en)[14];
- Реализует алгоритм расчёта столкновений Гилберта-Джонсона-Кёрти (GJK) и EPA (Шаблон:Lang-en)[15];
- Просчёт пересечения координат в AABB-деревьях (Шаблон:Lang-en)[16];
- Поддержка мягких тел (Шаблон:Lang-en) и, как развитие технологии, тканей[17];
- Поддержка CUDA[18] и OpenCL[19];
- Гидродинамика сглаженных частиц[20];
- Ограничители (Шаблон:Lang-en);
- Импорт данных из файлов формата COLLADA 1.4[21];
- Плагин для Maya 2008[22];
- Многопоточность[23];
- Кроссплатформенность;
- Возможность сериализации физических данных в специально разработанный файловый формат .bullet[24];
- Существует порт под Java[25] и Python (также именуемые «JBullet»[26] и «PyBullet[27]» соответственно) и XNA[28].
Обнаружение столкновений
Обнаружение столкновений, используемое в «Bullet», как и в большинстве других физических движков, имеет широкую и узкую фазы (Шаблон:Lang-en). Во время широкой фазы алгоритм обнаружения столкновений уменьшает количество потенциально взаимодействующих объектов путём применения ограничивающих объёмов к сцене. «Bullet» содержит несколько разных реализаций широкой фазы, предназначенных для различных целей. Наиболее общая реализация базируется на динамических иерархиях ограничивающих объёмов (Шаблон:Lang-en): используются выровненные по осям ограничивающие параллелепипеды (Шаблон:Lang-en), которые постепенно обновляются при перемещении, добавлении или удалении объектов. Также присутствует другая реализация широкой фазы, имеющая аппаратное ускорение на графических процессорах посредством OpenCL, однако она имеет ограничения на размеры объектов.[29]
Этап узкой фазы связан с точной генерацией точек контакта между парами соприкоснувшихся между собой объектов. «Bullet» использует несколько обобщённых алгоритмов, а именно алгоритм Гилберта-Джонсона-Кёрти (Шаблон:Lang-en) и Expanding Polytope Algorithm (EPA), которые решают задачи столкновения для широкого набора типов геометрических форм столкнувшихся объектов.[29]
Присутствует поддержка непрерывного обнаружения столкновений, которое вычисляет время столкновения между движущимися и вращающимися объектами, однако по умолчанию «Bullet» вычисляет наименьшее расстояние и глубину проникновения в дискретные моменты времени для получения информации о точках контакта между объектами.[29]
Использование
Благодаря своей бесплатности и открытому свободному коду «Bullet» активно используется не только в индустрии компьютерных игр, но и в производстве спецэффектов к фильмам. Многие производители спецэффектов, использующие «Bullet», модифицируют его под свои проприетарные программные инструменты или под текущие задачи, которые должен выполнять движок. Например, Digital Domain использовала модифицированный «Bullet» для создания эффектов к фильму «2012», а Шаблон:Нп3 интегрировала изменённую версию движка в свой внутренний программный инструмент fBounce при создании фильма «Шерлок Холмс». Weta Digital интегрировала движок в свою внутреннюю программу wmRigid при создании спецэффектов фильма «Команда-А».[29]
Помимо этого, «Bullet» активно используется в программах трёхмерного моделирования в качестве плагина или уже интегрированного инструмента. Он доступен для Cinema 4D, Houdini, 3ds Max, Шаблон:Нп3, Blender, Maya и Lightwave.[29]
Согласно Эрвину Кумансу, такая популярность в использовании и адаптации движка проистекает из его кросс-платформенности, свободности и открытости, чего не имеют конкуренты — проприетарные Havok и nVidia PhysX. По сравнению со своим ближайшим свободным конкурентом — Open Dynamics Engine, — «Bullet» содержит надежный механизм обнаружения столкновений для объектов с выпуклой оболочкой, что является важным для симуляции разрушаемых структур.[29]
Индустрия компьютерных игр
«Bullet» используется во многих компьютерных играх, как коммерческих, так и некоммерческих.
Киноиндустрия
«Bullet» был задействован в следующих фильмах:
- «2012»[40] — ряд спецэффектов, расчёт твердотельных столкновений;
- «Шерлок Холмс»[41] - расчёт твердотельных столкновений;
- «История игрушек 3»[42] — расчёт твердотельных столкновений;
- «Вольт»[43]
- «Хэнкок»[44]
- «Команда-А»[42] — расчёт твердотельных столкновений, использование «Bullet» в разработке собственного ПО;
- «Мегамозг»[45]
- «Шрек навсегда»[45]
- «Как приручить дракона»[46] — расчёт твердотельных столкновений;
Программы трёхмерного моделирования
Следующие программы трёхмерного моделирования используют движок «Bullet» как плагин для расчётов физики:
- 3ds Max[8]
- Maya 2012[10]
- LightWave 3D с версии 11.5[47]
- Cinema 4D версии 11.5 использует Bullet как часть MoDynamics.[48]
- Blender—Blender использует Bullet для анимации в составе внутреннего игрового движка Blender Game Engine.
- Dynamica — плагин к Maya, разработанный Walt Disney Animation Studios.[43]
- Houdini Bullet Physics — плагин.
- Шаблон:Нп3 — использует Bullet начиная с восьмой версии и только в Pro-редакции.[49]
Игровые движки
Следующие игровые движки используют «Bullet» в качестве физического движка:
- Crystal Space — игровой движок, поддерживающий «Bullet» и переключающийся на него как на главный физический плагин.
- Шаблон:Нп3 — проприетарный игровой движок, разработанный компанией Terathon Software, в который Эрвин Куманс интегрировал «Bullet».
- Шаблон:Нп3 — игровой движок, разработанный Carsten Fuchs Software и распространяющийся как под свободной, так и под коммерческой лицензией.
- Rockstar Advanced Game Engine — игровой движок, разработанный Rockstar San Diego и Rockstar North.
- Blitz3D через враппер BlitzBullet.
- Ducttape — игровой движок[50].
- Urho3D — игровой движок.
- Godot — открытый кроссплатформенный 2D и 3D игровой движок под лицензией MIT, который разрабатывается сообществом Godot Engine Community[51].
- Panda3D — имеет встроенную поддержку Bullet Physics Library.
- Jet Engine — движок, разработанный Gameloft, где Bullet Physics Library отвечает за физику.
Графические движки
Следующие графические движки имеют средства для связи с «Bullet»:
- OGRE через плагин OgreBullet.
- Irrlicht Engine имеет несколько плагинов для интеграции с «Bullet», включая Bullet Physics Wrapper, irrBP и GameKit.
- OpenSceneGraph через плагин osgBullet.[52]
- Verge3D содержит «Bullet», портированный на JavaScript с помощью компилятора Emscripten. Предоставляет доступ к API библиотеки с использованием средств визуального программирования Puzzles.
Прочее
- 3DMark 11 — бенчмарк из серии 3DMark, первый бенчмарк данной серии, использующий «Bullet» с поддержкой аппаратного ускорения.
- Шаблон:Нп3 — открытый кроссплатформенный интерфейс программирования приложений, поддерживающий множество физических движков, включая «Bullet».
Примечания
Внешние ссылки
- ↑ «Bullet» переводится с английского языка как «пуля»
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 8,0 8,1 Ошибка цитирования Неверный тег
<ref>
; для сносокnvworld_2.77
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокoff_2.77
не указан текст - ↑ 10,0 10,1 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 29,0 29,1 29,2 29,3 29,4 29,5 Ошибка цитирования Неверный тег
<ref>
; для сносокinterview_fxguide
не указан текст - ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 39,0 39,1 Ошибка цитирования Неверный тег
<ref>
; для сносокcars_and_Riptide
не указан текст - ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 42,0 42,1 Шаблон:Cite web
- ↑ 43,0 43,1 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 45,0 45,1 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ ducttape » EngineШаблон:Недоступная ссылка
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- Русская Википедия
- Страницы с неработающими файловыми ссылками
- Графические движки
- Свободное программное обеспечение, написанное на Си
- Свободное программное обеспечение, написанное на C++
- Программное обеспечение с лицензией zlib
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии
- Страницы с ошибками в примечаниях