JoaoESmoreira

Computer Graphics project

CG-Proj is a computer graphics project developed for the Computer Graphics course within the the Informatics Engineering curriculum at the University of Coimbra. The project demonstrates real-time rendering, lighting, camera control, and interactive manipulation of scene parameters.

The full repository and documentation can be found here: Computer-Graphics-Project Repository.

Tools and Technologies

  • C and C++ (project is implemented mainly in C++).
  • OpenGL
  • Make utility for build automation.

Features

  • Real-time rendering of 3D geometry with different materials.
  • Switchable lighting sources: spot light and bulb (point) light.
  • Interactive control of camera orientation and position.
  • Adjustable RGB intensities for lights.
  • Mesh point toggling (show/hide mesh vertices).
  • Multiple predefined camera positions (front, back, left, right).

Controls

Key Function
ESC Exit the application
W / w Move camera upward
S / s Move camera downward
A / a Rotate camera left
D / d Rotate camera right
1 Position camera on right side
2 Position camera on front side
3 Position camera on left side
4 Position camera on back side
M / m Change material of the objects
Y / y Toggle mesh points visibility
P / p Toggle spot light
O / o Toggle bulb (point) light
H / h Move spot light to left side
J / j Move spot light to front side
K / k Move spot light to back side
L / l Move spot light to right side
R / r Increase / change red intensity of lights
G / g Increase / change green intensity of lights
B / b Increase / change blue intensity of lights
I / i Adjust blue intensity of light(s)

Build & Run

In the src directory there is a Makefile that you can use to manage compilation and execution. The typical commands are:

# run the code with:
make

# compile the code with:
make compile

# clean bin and object files with:
make clean

Footer

Copyright © 2025 Joao ES Moreira

The contents of this website are licensed under the Creative Commons Attribution-NoDerivatives 4.0 International License (CC-BY-ND 4.0).

The source code of this website is licensed under the MIT license, and available in GitHub repositor. User-submitted contributions to the site are welcome, as long as the contributor agrees to license their submission with the CC-BY-ND 4.0 license.