A modular OpenGL-based 3D graphics engine with scene graph architecture supporting meshes, materials, lighting systems, and multiple cameras, demonstrated through an interactive chess application with move tracking and reflection effects.
- Scene Graph Architecture: A hierarchical tree structure for organizing and transforming 3D objects
- Mesh Rendering: Support for 3D mesh loading, manipulation, and rendering
- Material System: Configurable materials with color, transparency, and texture properties
- Lighting: Multiple light types including point lights, directional lights, and spotlights
- Camera System: Perspective and orthographic camera support with dynamic view switching
- Input Handling: Keyboard-driven controls for manipulating the scene
- Chess Demo: Interactive chess board with piece movement, capture system, and move history
- Visual Effects: Reflection effects, transparency, and dynamic lighting demonstrations
W/A/S/D: Move/rotate cameraC: Switch between different camera perspectives
- Arrow keys: Navigate the chess board
- Enter: Select/move chess pieces
U: Undo moveO: Redo moveP: Reset board to initial state
Y/H/G/J: Move light in different directionsR: Randomize light color
F: Toggle FPS displayX: Toggle coordinate axes displayZ: Toggle wireframe modeB: Toggle face cullingI: Show help menuESC: Exit application
The engine is built on a component-based architecture with key classes:
Node: Base class for all scene elementsMesh: For 3D model renderingMaterial: For surface propertiesCamera: For scene viewingLight: For scene illuminationList: For efficient render sorting and processing
- OpenGL
- FreeGLUT
- GLM (OpenGL Mathematics)
- FreeImage
The project includes a Makefile for compilation on Linux/macOS systems:
make debug # Build debug version
make release # Build release version
make clean # Clean build files
Martina Galasso & Kevin Quarenghi