giuseppe-coco/FireShow: 3D fireworks display design and visualization software

fireshow demo

fireshow is a 3D fireworks display design and visualization software developed in C++ and OpenGL. Inspired by professional tools like FWSim and Finale 3D, this project allows designers to create, synchronize and visualize complex pyrotechnic effects in real-time 3D environments.

  • Real-Time 3D Viewer: A scene rendered with OpenGL
  • Advanced Particle System: Simulates the physics of various fireworks types, including cascading effects (trails) for advanced realism.
  • Pre-defined fireworks types: Includes a library of ready-to-use classic effects like peonies, chrysanthemums, willows and volcanoes.
  • Fireworks Editor: An integrated user interface (built with the beloved ImGui) that allows creating and modifying the properties of each firework type (color, velocity, particle count, etc.).
  • Interactive Timeline: A control panel for placing fireworks events on the timeline with full playback controls (play, pause, reset).
  • Integrated Audio: Each effect can be combined with launch and explosion sounds for a more immersive experience, powered by miniaudio Library.
  • Language: C++17
  • Graphics: OpenGL 3.3+
  • Main Library:
    • GLFW: For window and input management.
    • Happy: To load OpenGL functions.
    • GLM: For mathematical operations related to graphics.
    • Dear Imguy: For graphical user interface.
    • stb_image: For texture loading.
    • MiniAudio: For audio playback.
  • Manufacturing System: make (with g++,

🚀 How to run locally (Windows guide)

This project uses make And g++The easiest way to get these tools on Windows is to use MinGW-w64 (Distributed via MSYS2).

  1. Install MSYS2:

    • Download and install MSYS2 from the official website.
    • Follow the instructions to update the base system (running as usual). pacman -Syu After pacman -Su,
  2. Install development toolchain:

    • Open an MSYS2 UCRT64 (or MINGW64) terminal.
    • install g++ compiler, makeAnd git With the following command:
      pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain git
  3. Download GLFW:

    • This project requires pre-compiled GLFW libraries.
    • Go to GLFW download page and download “64-bit Windows binaries” For MinGW-w64.
    • Extract the zip file.
  1. Clone the repository:

    git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git
    cd YOUR_REPOSITORY
  2. Configure Dependencies (GLFW):

    • Inside the root folder of the project, create the following directories: libs/glfw/include And libs/glfw/lib,
    • From the downloaded GLFW files, copy GLFW folder (which contains glfw3.h) In libs/glfw/include/,
    • from download lib-mingw-w64 Copy folder (or similar), files libglfw3.a And libglfw3dll.a In libs/glfw/lib/,

    The final folder structure for dependencies should look like this:

    /YOUR_REPOSITORY
    |-- /libs
    |   |-- /GLFW
    |       |-- /include
    |       |   |-- /GLFW
    |       |       |-- glfw3.h
    |       |-- /lib
    |           |-- libglfw3.a
    |   |-- /glad
    |       .......
    |..............
    |-- /src
    |-- /vendors
    |-- Makefile
    ...
    

compilation and execution

  1. Compile the project:

    • Make sure you are in the root directory of the repository within your MSYS2 terminal.
    • run make Permission:
    • This will compile all the source files and create the final executable FireworksSimulator.exe In bin/ Directory.
  2. Run the software:

    • Execute the program with:
      ./bin/FireworksSimulator.exe

To remove all generated build files (objects and executables), run:



<a href

Leave a Comment