Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Примеры с библиотеками физики, которые используются для разработки игр и интерактивных анимаций

Запись от 8Observer8 размещена 22.07.2023 в 19:29
Показов 3241 Комментарии 10
Метки c++, gamedev

Содержание блога

Содержание:
  1. Анимация прыгающего мяча в 3D с помощью физической библиотеки Bullet Physics, OpenGL1, FreeGLUT и C++
  2. Пример триггера, текста и рисования коллайдеров с помощью библиотеки физики Bullet Physics, OpenGL1, FreeGLUT и C++
  3. Пример взрыва при касании сферического триггера, текста и отключения/включения рисования коллайдеров с помощью библиотеки физики Bullet Physics, OpenGL1, FreeGLUT и C++
  4. Спрайт в стиле SFML, используя WebGL 1.0 и JavaScript
  5. Jumping with ground check using ray casting, Box2D-WASM, Melon.js, and JavaScript
  6. Рисование коллайдеров на Babylon.js для физических движков: Box2D-WASM, OimoPhysics, Ammo.js и rapier3d-compat
  7. Рисование коллайдеров на Three.js для физического движка Box2D-WASM
  8. Падающие кубики на PhysX и Three.js
  9. Падающие кубики на PhysX и Canvas API

Инструкция для сборки C++ примеров в EXE

Для сборки исходников в EXE с библиотеками в примерах ниже использовался MinGW 8.1.0 из Qt 6.2.0, 64-bit: https://disk.yandex.ru/d/FiDDO5IuAQ4phQ (942 MB - архив, 2.29 GB - в распакованном виде). Здесь статическая сборка, если нужно: https://disk.yandex.ru/d/nIORLx_JIUnfnw (194 MB - архив, 822 MB - в распакованном виде). Нужно извлечь архив, например, на диск C. Вызвать окно с переменной Path, например, можно скопировать эту команду в консоль: rundll32 sysdm.cpl,EditEnvironmentVariables и добавить в Path пути:
  • C:\Qt6\6.2.0\mingw81_64\bin
  • C:\Qt6\Tools\mingw810_64\bin
  • C:\Qt6\Tools\CMake_64\bin
Пути к библиотекам для сборки примера должны совпадать с путями в makefile. Для сборки EXE нужно перейти в каталог с исходниками, вызвать консоль (в пути каталога набрать cmd и нажать Enter) и вести команду сборки: mingw32-make Для запуска EXE можно здесь же в консоли ввести: app + Enter (без .exe в конце)


Миниатюры
Нажмите на изображение для увеличения
Название: bouncing-ball-bullet-opengl1-freeglut-cpp.gif
Просмотров: 268
Размер:	507.4 Кб
ID:	8180Нажмите на изображение для увеличения
Название: trigger-bullet-opengl1-freeglut-cpp.gif
Просмотров: 870
Размер:	408.0 Кб
ID:	8183Нажмите на изображение для увеличения
Название: explosion-bullet-opengl1-freeglut-cpp-400x400.gif
Просмотров: 877
Размер:	432.2 Кб
ID:	8184
Вложения
Тип файла: zip bouncing-ball-bullet-opengl1-freeglut-cpp.zip (1.44 Мб, 363 просмотров)
Тип файла: zip trigger-bullet-opengl1-freeglut-cpp.zip (1.40 Мб, 281 просмотров)
Тип файла: zip explosion-bullet-opengl1-freeglut-cpp.zip (1.37 Мб, 338 просмотров)
Тип файла: zip bullet3-3.24-mingw-64-bit.zip (4.65 Мб, 366 просмотров)
Тип файла: zip freeglut-3.2.2-mingw-64-bit.zip (296.0 Кб, 280 просмотров)
Тип файла: zip glu.zip (3.0 Кб, 314 просмотров)
Тип файла: zip can-jump-with-ray-casting-box2dwasm-melonjs-js.zip (246.6 Кб, 378 просмотров)
Метки c++, gamedev
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 10
Комментарии
  1. Старый комментарий
    Анимация прыгающего мяча в 3D с помощью физической библиотеки Bullet Physics, OpenGL1, FreeGLUT и C++



    В архиве: исходники, EXE и makefile: bouncing-ball-bullet-opengl1-freeglut-cpp.zip (1.44 MB)

    Библиотеки с которыми собирается данный пример:
    makefile

    Code
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    # build command: mingw32-make
    # -mwindows - a key to hide the console
     
    INC = -I"E:\Libs\freeglut-3.2.2-mingw-64-bit\include" \
          -I"E:\Libs\bullet3-3.24-mingw-64-bit\include" \
          -I"E:\Libs\glu\include"
     
    LIB = -L"E:\Libs\freeglut-3.2.2-mingw-64-bit\lib" \
          -L"E:\Libs\bullet3-3.24-mingw-64-bit\lib"
     
    all: main.o
        g++ main.o $(LIB) -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 \
        -lwinmm -lgdi32 -lglu32 -lBulletDynamics -lBulletCollision \
        -lLinearMath -o app.exe
     
    main.o: main.cpp
        g++ -c $(INC) main.cpp
    Запись от 8Observer8 размещена 22.07.2023 в 19:34 8Observer8 вне форума
  2. Старый комментарий
    Пример триггера, текста и рисования коллайдеров с помощью библиотеки физики Bullet Physics, OpenGL1, FreeGLUT и C++

    Триггер - это невидимый объект, при касании которого срабатывает обработчик этого события.



    В архиве: исходники, EXE и makefile: trigger-bullet-opengl1-freeglut-cpp.zip (1.40 MB)

    Библиотеки с которыми собирается данный пример:
    makefile

    Code
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    # build command: mingw32-make
    # -mwindows - a key to hide the console
     
    INC = -I"E:\Libs\freeglut-3.2.2-mingw-64-bit\include" \
          -I"E:\Libs\bullet3-3.24-mingw-64-bit\include" \
          -I"E:\Libs\glu\include"
     
    LIB = -L"E:\Libs\freeglut-3.2.2-mingw-64-bit\lib" \
          -L"E:\Libs\bullet3-3.24-mingw-64-bit\lib"
     
    all: main.o
        g++ main.o $(LIB) -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 \
        -lwinmm -lgdi32 -lglu32 -lBulletDynamics -lBulletCollision \
        -lLinearMath -o app.exe
     
    main.o: main.cpp
        g++ -c $(INC) main.cpp
    Запись от 8Observer8 размещена 22.07.2023 в 22:21 8Observer8 вне форума
  3. Старый комментарий
    Пример взрыва при касании сферического триггера, текста и отключения/включения рисования коллайдеров с помощью библиотеки физики Bullet Physics, OpenGL1, FreeGLUT и C++



    Библиотеки, с которыми собирается данный пример:
    makefile

    Code
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    # build command: mingw32-make
    # run command: app
    # -mwindows - a key to hide the console
     
    INC = -I"E:\Libs\freeglut-3.2.2-mingw-64-bit\include" \
          -I"E:\Libs\bullet3-3.24-mingw-64-bit\include" \
          -I"E:\Libs\glu\include"
     
    LIB = -L"E:\Libs\freeglut-3.2.2-mingw-64-bit\lib" \
          -L"E:\Libs\bullet3-3.24-mingw-64-bit\lib"
     
    all: main.o
        g++ main.o $(LIB) -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 \
        -lwinmm -lgdi32 -lglu32 -lBulletDynamics -lBulletCollision \
        -lLinearMath -o app.exe
     
    main.o: main.cpp
        g++ -c $(INC) main.cpp
    Запись от 8Observer8 размещена 22.07.2023 в 22:32 8Observer8 вне форума
  4. Старый комментарий
    Спрайт в стиле SFML, используя WebGL 1.0 и JavaScript

    Пример загружает спрайты из sprite sheet, который был создан в FreeTexturePacker и использует страйт в стиле SFML

    Песочницы:


    Исходники на GitHub

    Прикрепил исходники в этих сообщениях:
    Запись от 8Observer8 размещена 24.07.2023 в 15:56 8Observer8 вне форума
  5. Старый комментарий
    Jumping with ground check using ray casting, Box2D-WASM, Melon.js, and JavaScript

    Playgrounds/Sandboxes:

    Topic and discussions:

    Запись от 8Observer8 размещена 01.08.2023 в 17:01 8Observer8 вне форума
  6. Старый комментарий
    Запись от 8Observer8 размещена 24.09.2023 в 17:18 8Observer8 вне форума
  7. Старый комментарий
    Рисование коллайдеров на Three.js для физического движка Box2D-WASM

    Ссылка на тему на официальном форуме Box2D-WASM: Basic Examples of Using Box2D-WASM with Three.js in JavaScript

    Запись от 8Observer8 размещена 24.09.2023 в 17:22 8Observer8 вне форума
  8. Старый комментарий
    Пример на PhysX и Three.js. Взят отсюда. Здесь PhysX и Three.js загружаются в скрипт типа "module". Я скопировал оригинальный пример из песочницы SBEdit в песочницу Plunker. Мне из всех песочниц больше всего нравится Plunker потому что в ней мой разбивать свой код на файлы и загружать модели, текстуры, звуки и другие ассеты.

    Песочницы:

    Код на форуме

    Запись от 8Observer8 размещена 05.03.2024 в 14:39 8Observer8 вне форума
  9. Старый комментарий
    Пример рисования коллайдеров физического движка PhysX на <canvas> в контексте "2d" с использованием библиотеки линейной алгебры glMatrix. PhysX используется в скрипте типа "module". Пример не мой. Его опубликовали в теме здесь. PhysX - кандидат на создание контроллера от третьего лица.

    Песочница: https://sbedit.net/41255c40b51... a28db2f052

    Код на форуме

    Запись от 8Observer8 размещена 05.03.2024 в 14:40 8Observer8 вне форума
  10. Старый комментарий
    Я спросил у Gemini:

    Актуален ли Bullet Physics в 2026 году?
    Ответ:

    Да, Bullet Physics остается актуальным в 2026 году, хотя его роль в индустрии изменилась. В то время как крупные движки (Unreal, Unity) перешли на собственные решения (Chaos, Unity Physics), Bullet нашел свои ниши:
    • Научные исследования и робототехника: Благодаря поддержке вычислений с двойной точностью и интеграции с Python (библиотека PyBullet), движок является стандартом для симуляции роботов и обучения нейросетей (Reinforcement Learning).
    • Спецэффекты и 3D-графика: Bullet продолжает использоваться в профессиональном ПО. Например, он остается частью актуальной версии Autodesk Maya 2026 для симуляции твердых и мягких тел.
    • Open-Source и инди-разработка: Благодаря лицензии zlib и открытому коду, его часто выбирают для самописных движков и открытых проектов (например, в Blender или игровых фреймворках вроде libGDX).
    • Техническая поддержка: Проект продолжает развиваться. В конце 2025 года разработчики оперативно выпускали патчи для совместимости с новыми стандартами компиляторов (например, исправления для Visual Studio 2026).
    • Конкуренция: В игровом мейнстриме 2026 года Bullet уступает позиции более современным и быстрым движкам, таким как Jolt Physics (который стал стандартом в Godot 4) или Chaos в UE5, так как они лучше оптимизированы под многопоточность современных CPU.

    Источники, который использовал Gemini (некоторые ссылки не открываются без VPN):

    FYI Bullet Physics issue with VS2026 : r/gameenginedevs
    25 нояб. 2025 г. — Just wanted to share the fix I found in case anyone else use Bullet Physics had an issue with their constraints ex...
    Reddit

    Maya - Solver Nodes - Autodesk Help
    * What's New in Maya 2026. * Maya 2026 Release Notes. * Flow-connected Capabilities. * Character Animation. * Character Effects an...
    Autodesk

    Is Bullet still in use? Recommended for 2016 new title?
    24 апр. 2019 г. — Post by Erwin Coumans » Sun Jul 17, 2016 3:25 am. HateDread wrote: Also, does the double precision option still wor...
    PyBullet

    Bullet Physics SDK - GitHub
    23 нояб. 2025 г. — Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robo...
    GitHub

    Bullet (software) - Wikipedia
    The Bullet physics library is free and open-source software subject to the terms of the zlib License.
    Wikipedia

    Bullet physics - libGDX
    View revision history • Edit on GitHub. Bullet is a 3D Collision Detection and Rigid Body Dynamics Library. The Library is Open So...
    libGDX

    Top 10 Physics Engines: Features, Pros, Cons & Comparison
    18 дек. 2025 г. — Which Physics Engines Tool Is Right for You? * Solo developers: Lightweight engines like Box2D or Unity Physics off...
    Devopsschool.com

    What is PyBullet? Competitors, Complementary Techs & Usage
    22 нояб. 2025 г. — PyBullet is a Python module for robotics, games and machine learning based on the Bullet Physics SDK. It provides ...
    Sumble

    New Physics Engines Replacing Bullet Engine for Game Dev
    2 дек. 2023 г. — 6 Likes. JavaFor3dGames December 16, 2023, 5:27am 14. In recent months Godot 4 contributors tried to integrate bulle...
    jMonkeyEngine Hub
    Запись от 8Observer8 размещена 09.01.2026 в 17:27 8Observer8 вне форума
    Обновил(-а) 8Observer8 09.01.2026 в 17:30
 
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru