Skip to content

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.

Notifications You must be signed in to change notification settings

galassooo/GraphicEngine

Repository files navigation

Graphics Engine

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.

Features

  • 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

Controls

Camera Controls

  • W/A/S/D: Move/rotate camera
  • C: Switch between different camera perspectives

Chess Controls

  • Arrow keys: Navigate the chess board
  • Enter: Select/move chess pieces
  • U: Undo move
  • O: Redo move
  • P: Reset board to initial state

Light Controls

  • Y/H/G/J: Move light in different directions
  • R: Randomize light color

Rendering Controls

  • F: Toggle FPS display
  • X: Toggle coordinate axes display
  • Z: Toggle wireframe mode
  • B: Toggle face culling
  • I: Show help menu
  • ESC: Exit application

Architecture

The engine is built on a component-based architecture with key classes:

  • Node: Base class for all scene elements
  • Mesh: For 3D model rendering
  • Material: For surface properties
  • Camera: For scene viewing
  • Light: For scene illumination
  • List: For efficient render sorting and processing

Dependencies

  • OpenGL
  • FreeGLUT
  • GLM (OpenGL Mathematics)
  • FreeImage

Building the Project

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

Credits

Martina Galasso & Kevin Quarenghi

About

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.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •