An immersive 3D museum experience developed using OpenGL 3.3 for the "Synthèse d'Images" module at USTHB. This project explores real-time rendering, dynamic lighting systems, and interactive gameplay mechanics within a high-fidelity virtual environment.
-
Language: C++17 (Compilateur MinGW-w64 GCC 15.2.0)
-
Graphics API: OpenGL 3.3 Core Profile via GLAD
-
Libraries: * GLFW 3.4.0: Window management and input handling
-
GLM: Matrix and vector mathematics
-
Assimp 6.0.3: Complex 3D model loading (FBX, GLB)
-
stb_image: Texture decoding
-
Build System: CMake with automated deployment scripts
-
High-Fidelity Rendering: Optimized pipeline managing approximately 2.7 million triangles while maintaining a stable 60 FPS.
-
Lighting Engine: Implementation of the Phong Reflection Model (Ambient, Diffuse, Specular) with multiple light types:
-
Flashlight: A camera-aligned Spotlight (Toggle via F).
-
Static Lights: Ambient chandelier and soft-light gallery projectors.
-
Interactive Lights: Context-aware illumination for statues and artifacts.
-
Physics & Navigation: FPS-style camera with vertical clamping and delta-time synchronization. Collision detection is handled via Oriented Bounding Boxes (OBB).
-
Interactive Gameplay: Scripted door animations, spatialized audio feedback, and a specialized Inspection Mode for detailed object observation.
The main hall features high-density 3D models including dinosaur fossils and statues, demonstrating the engine's ability to handle complex geometries.
Demonstration of the dynamic lighting system, showcasing the player's flashlight and the environmental contrast created by the Phong reflection model.
A dedicated mode that allows users to lock onto an artifact and rotate it 360 degrees for a detailed view of its topology and textures.
| Input | Action |
|---|---|
| Z, Q, S, D | Movement (Forward, Left, Backward, Right) |
| Mouse | Camera Look / Orbital rotation in Inspection Mode |
| F | Toggle Flashlight |
| E | Interact (Open Doors / Activate Statue Lights) |
| I | Enter/Exit Inspection Mode |
| ESC | Exit Application |
- Prerequisites: Ensure CMake and a C++17 compatible compiler are installed.
- Clone the repository:
git clone https://github.com/YounesBensafia/MidnightMuseum.git
- Compile:
mkdir build && cd build
cmake ..
make
- Execute: Run the generated binary or the provided
build_run.batscript.
Authors: BENSAFIA Younés, MOUSTARI Abderrahmane, TADJINE Rabah Amine Institution: University of Science and Technology Houari Boumediene (USTHB) Faculty: Computer Science (FI) Academic Year: 2025/2026