Русская Википедия: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]

Функциональные возможности

Файл:Bullet Wall.png
Процесс разрушения стены, смоделированный движком «Bullet»

Обнаружение столкновений

Обнаружение столкновений, используемое в «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» используется во многих компьютерных играх, как коммерческих, так и некоммерческих.

Название игры Разработчик Издатель Дата первого выхода Платформы
Шаблон:Нп3 Шаблон:Нп3 Шаблон:Нп3 24 мая 2007 года ПК (Windows, Linux)
Grand Theft Auto IV[30] Rockstar North, Rockstar Toronto Rockstar Games, Take-Two Interactive, Synergex 29 апреля 2008 года ПК (Windows), PlayStation 3, Xbox 360
Crayola Colorful Journey[31] Crave Entertainment Crave Entertainment 31 марта 2009 года Wii
Шаблон:Нп3[32][33] Шаблон:Нп3 Sony Online Entertainment 28 апреля 2009 года ПК (Windows, Mac), PlayStation 3
Шаблон:Нп3[34][35] RedLynx Microsoft Game Studios 12 августа 2009 года Xbox 360
Шаблон:Нп3[36] Medaverse Studios Nintendo (WiiWare) 12 октября 2009 года Wii
Шаблон:Нп3[37] Mattel Activision 17 ноября 2009 года Wii, Nintendo DS
Шаблон:Нп3[38] Шаблон:Нп3, Virtuos Activision 27 октября 2009 года PlayStation 3, Xbox 360, Wii, Nintendo DS
Red Dead Redemption Rockstar San Diego, Rockstar North Rockstar Games 18 мая 2010 года PlayStation 3, Xbox 360
Puzzle Dimension Doctor Entertainment Doctor Entertainment 26 августа 2010 года ПК (Windows, Mac)
Cars 2: The Video Game[39] Avalanche Software, Firebrand Games Disney Interactive 21 июня 2011 года ПК (Windows, Mac OS X), Nintendo DS, PlayStation 3, Wii, Apple iOS, Xbox 360
Riptide GP[39] Vector Unit Vector Unit июль 2011 года Android
Max Payne 3 Rockstar Vancouver Rockstar Games 18 мая 2012 года ПК (Windows), PlayStation 3, Xbox 360
Scania Truck Driving Simulator SCS Software SCS Software 13 июня 2012 года ПК (Windows)
Red Dead Redemption II Rockstar Studios Rockstar Games 26 октября 2018 года PlayStation 4, Xbox One, ПК (Windows)

Киноиндустрия

«Bullet» был задействован в следующих фильмах:

Программы трёхмерного моделирования

Следующие программы трёхмерного моделирования используют движок «Bullet» как плагин для расчётов физики:

Игровые движки

Следующие игровые движки используют «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.

Прочее

Примечания

Шаблон:Reflist

Внешние ссылки

Шаблон:Игровые движки

  1. «Bullet» переводится с английского языка как «пуля»
  2. Шаблон:Cite web
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. Шаблон:Cite web
  6. Шаблон:Cite web
  7. Шаблон:Cite web
  8. 8,0 8,1 Ошибка цитирования Неверный тег <ref>; для сносок nvworld_2.77 не указан текст
  9. Ошибка цитирования Неверный тег <ref>; для сносок off_2.77 не указан текст
  10. 10,0 10,1 Шаблон:Cite web
  11. Шаблон:Cite web
  12. Шаблон:Cite web
  13. Шаблон:Cite web
  14. Шаблон:Cite web
  15. Шаблон:Cite web
  16. Шаблон:Cite web
  17. Шаблон:Cite web
  18. Шаблон:Cite web
  19. Шаблон:Cite web
  20. Шаблон:Cite web
  21. Шаблон:Cite web
  22. Шаблон:Cite web
  23. Шаблон:Cite web
  24. Шаблон:Cite web
  25. Шаблон:Cite web
  26. Шаблон:Cite web
  27. Шаблон:Cite web
  28. Шаблон:Cite web
  29. 29,0 29,1 29,2 29,3 29,4 29,5 Ошибка цитирования Неверный тег <ref>; для сносок interview_fxguide не указан текст
  30. Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Cite web
  33. Шаблон:Cite web
  34. Шаблон:Cite web
  35. Шаблон:Cite web
  36. Шаблон:Cite web
  37. Шаблон:Cite web
  38. Шаблон:Cite web
  39. 39,0 39,1 Ошибка цитирования Неверный тег <ref>; для сносок cars_and_Riptide не указан текст
  40. Шаблон:Cite web
  41. Шаблон:Cite web
  42. 42,0 42,1 Шаблон:Cite web
  43. 43,0 43,1 Шаблон:Cite web
  44. Шаблон:Cite web
  45. 45,0 45,1 Шаблон:Cite web
  46. Шаблон:Cite web
  47. Шаблон:Cite web
  48. Шаблон:Cite web
  49. Шаблон:Cite web
  50. ducttape » EngineШаблон:Недоступная ссылка
  51. Шаблон:Cite web
  52. Шаблон:Cite web