Assignment Brief

The Brief

The full brief and submission instructions are located on Brightspace for download this is for information only


OpenGL is a relative low-level 3d API which does not support object/scene management. This is usually left to the user of the API. For example, importing and exporting data to and from OpenGL has to be implemented by the application programmer. Hierarchical structures although indirectly supported using shader matrix operations have no direct support in OpenGL.

You task is to develop a set of C++ classes / data structures and algorithms that provide a high level OpenGL object/scene management for one of the following:

  • Develop a small library that provide an interface that allows the simulation of real world physic such as gravity, friction springs; To demonstrate the library a simple particle system with physics and collisions could be written.
  • A simple 3D game using OpenGL which should allow for the detection of object collisions in 3D space and user control of the game characters. (3D space invaders would be a good example).
  • Develop a framework that allows the simulation of a Craig Reynolds-like flocking system using OpenGL. The system should allow for any number of boids to be added to the scene, with detection of objects within a scene. (see
  • Develop a system that provide an interface that allows L-systems (Lindermayer systems) based modelling of plant like structures using OpenGL. The L system should read in the grammar of the system from a file.
  • A simple raytracing framework that will read a scene file and render out the scene using materials / lights supplied in the scene file.
  • A “Fantasy UI” most movies / TV shows have interesting interactive computer systems, using OpenGL and shaders create a futuristic User Interface for examples see here Other project Ideas may be discussed with the unit leader. A list of ideas can be found here


This assignment is designed to be a continual software development project using a Test Driven Design / Development approach, you are required to use the NGL graphics library as part of the assignment ( It is also expected that the project uses the main Qt development system and is capable of running within this environment. Third party libraries such as GLUT should not be used, however if you are developing a game SDL could be considered.

It is suggested that the program be written using C++ and OpenGL however any system may be used for the final program.

Your code should be uploaded to this GitHub classroom which we will setup in the Lab. You are expected to add work to the repository at regular interval to show the development process and this will form part of the formative assessment for this unit. Feedback on code and design will be given as part of the code review process when it is submitted.

The final report should be written using the GitHub file for the repository you create and contain the initial research into the topic including references to sources and initial design consideration for the project. Marks will be awarded for clarity of research and use of images / algorithms. As software design is an iterative process it is expected that the actual program will have evolved, and this process should be reflected on in the project report. Marks will be awarded for good use of C++, data structure design and documentation of the code with respect to and algorithms and techniques used.

Intended Learning Outcomes

This assignment will allow you to demonstrate your ability of the following learning outcomes.

• understand and apply Object Oriented concepts and techniques to the design and implementation of CGI systems • demonstrate an ability to analyse and select suitable data structures for program development. • demonstrate an ability to understand and implement computer animation related algorithms using OOP • develop GUI based systems using a suitable API for animation

Assessment Criteria and Weightings

  1. Code Documentation / Design, background research and submission of code for review on Github- 20 marks.
  2. Use and understanding of Object Oriented Programming - 25 marks
  3. Use and understanding of OpenGL / Computer Graphics API’s - 25 marks
  4. Following the NCCA coding standard 10 marks
  5. Project specific, Use of a GUI, efficiency and/or Visual impact - 20 marks