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 a real-time 3D environment.
- Real-Time 3D Viewer: A scene rendered with OpenGL
- Advanced Particle System: Simulates the physics of various firework types, including cascading effects (trails) for enhanced realism.
- Pre-defined Firework Types: Includes a library of classic effects such as Peonies, Chrysanthemums, Willows, and Volcanoes, ready to be used.
- Firework Editor: An integrated user interface (built with Dear ImGui) that allows creating and modifying the properties of each firework type (color, velocity, particle count, etc.).
- Interactive Timeline: A control panel for placing pyrotechnic events on a timeline, with full playback controls (play, pause, reset).
- Integrated Audio: Each effect can be associated with launch and explosion sounds for a more immersive experience, powered by the
miniaudiolibrary.
- Language: C++17
- Graphics: OpenGL 3.3+
- Core Libraries:
- GLFW: For window and input management.
- GLAD: For loading OpenGL functions.
- GLM: For graphics-related mathematical operations.
- Dear ImGui: For the graphical user interface.
- stb_image: For texture loading.
- miniaudio: For audio playback.
- Build System:
make(withg++)
This project uses make and g++. The easiest way to get these tools on Windows is by using MinGW-w64 (distributed via MSYS2).
-
Install MSYS2:
- Download and install MSYS2 from the official website.
- Follow the instructions to update the base system (usually running
pacman -Syufollowed bypacman -Su).
-
Install the Development Toolchain:
- Open an MSYS2 UCRT64 (or MINGW64) terminal.
- Install the
g++compiler,make, andgitwith the following command:pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain git
-
Download GLFW:
- This project requires the pre-compiled GLFW libraries.
- Go to the GLFW download page and download the "64-bit Windows binaries" for MinGW-w64.
- Extract the zip file.
-
Clone the Repository:
git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git cd YOUR_REPOSITORY -
Configure Dependencies (GLFW):
- Inside the project's root folder, create the following directories:
libs/glfw/includeandlibs/glfw/lib. - From the downloaded GLFW files, copy the
GLFWfolder (which containsglfw3.h) intolibs/glfw/include/. - From the downloaded
lib-mingw-w64folder (or similar), copy the fileslibglfw3.aandlibglfw3dll.aintolibs/glfw/lib/.
The final folder structure for the dependencies should look like this:
/YOUR_REPOSITORY |-- /libs | |-- /GLFW | |-- /include | | |-- /GLFW | | |-- glfw3.h | |-- /lib | |-- libglfw3.a | |-- /glad | ....... |.............. |-- /src |-- /vendors |-- Makefile ... - Inside the project's root folder, create the following directories:
-
Compile the Project:
- Make sure you are in the root directory of the repository within your MSYS2 terminal.
- Run the
makecommand: - This will compile all source files and create the final executable
FireworksSimulator.exein thebin/directory.
-
Run the Software:
- Execute the program with:
./bin/FireworksSimulator.exe
- Execute the program with:
To remove all generated build files (objects and the executable), run: