G53GRA/COMP3011 – COMPUTER GRAPHICS
This assignment is compulsory and worth 70% of your final mark for this module. It is due for submission
via Moodle by 08/05/2020. Late submissions will receive a penalty of 5% of the assignment grade per
working day. You should submit two files on Moodle:
A single zip file containing your code, including executable (we must be able to run your program
without having to reset the ’include’ and ’lib’ directory paths), and
A single pdf file containing your explanation of your code (you must explain your code) and your
answers to the questions. Please provide screenshots in your pdf file.
In this coursework, you are required to apply what you have learnt about 3D computer graphics and
OpenGL programming to create and display a scene of your choice. The coursework will not only test your
understanding of the concepts of computer graphics, but also your ability to implement a 3D graphics scene.
When thinking about your coursework idea, you should take into account the topics covered in the lectures
and lab sessions. The C++ Framework available on Moodle and the lecture demos should allow you to
quickly create and display your own scene. The tutorials undertaken in the lab sessions have shown you
how to create a basic scene, step-by-step, covering everything from hierarchical modelling, to lighting and
texturing. There are endless opportunities for you to explore in creating your scene. The minimum
expected requirements for this coursework are as follows.
Displays a virtual scene with three or more different 3D objects (3D modelling / hierarchical
Has some well animated objects (animation);
Looks realistic (lighting and texturing);
Is set in a thematic, appropriate environment, e.g. with a skybox;
Allows user control, e.g. for viewing (keyboard and mouse input).
Please note you may be import some models from elsewhere, but your coursework must include OpenGL
programming. You are also required to write a report documenting your work, outlining how you have met
the requirements. The report should be no more than four pages, and contain screenshots of your program.
You should draw attention to any work you found challenging, and highlight particular aspects of your work
that you think exceptional. You should also critically reflect on your coursework.
This section details the graphics techniques that should be implemented in your coursework, to
demonstrate your knowledge and skills.
There are basic 3D models that can be created in OpenGL, such as cubes and spheres, but these alone will
not give a reasonably detailed scene. You will need to combine these basic building blocks in a meaningful
way that will produce convincing and aesthetically pleasing scenes. The OpenGL statements for
manipulating matrix stacks, e.g. glPushMatrix, will help create more complex hierarchical models. You
should create at least three different objects to display in your scene.
The scene you create should contain at least one animated object. There are examples in both the demos
and tutorials for implementing animation.
In the lectures and labs, you are taught static point source lighting, which means you create a light source
by specifying its location and properties. You will need to find appropriate images to texture the objects in
your scene. The principle of texturing and the OpenGL statements required for texturing are covered, and
you are provided with functionality for reading a texture from file (.bmp only).
Viewing and projection
You are required to provide facilities to obtain different views of your scene from different positions and
directions. For example, in first person shooters, the camera is set up as though it is the characters eye,
whilst a third person setup would let the camera track or follow the character from behind as it moves
around. To produce realistic images, you will need to use perspective projection. You may want to
experiment with the camera aspect ratio and field of view. To demonstrate your scene from different
viewpoints, or add additional functionality, you will need to incorporate some input control using key
presses and mouse clicks, as well as mouse motion.
As part of the coursework support, you are provided with a C++ Framework that contains a set of ‘library’
classes and functions that handle some of the work needed to display your scene, e.g. window handling,
image loading, display loops, etc. This is made available for both Windows via Microsoft Visual Studio and
macOS via XCode. The Framework has also been used to create the lecture demo code. Use of the
framework is discretionary.
Submission should be made via Moodle. Two files should be submitted:
1) Your code should be compressed to a zip file (name the zip file ’yourName.zip’) and uploaded to Moodle.
The zip file must include all the source files and the executable file to run your code. You might need to
clean the project before submission, so that it is small enough to be submitted on Moodle.
2) Your report, in either pdf or Word, should be submitted separately from the code. You should remember
to identify yourself in the report. Please refer to the section on the structure of your report.
The deadline for submission is 08/05/2020. Late submissions will receive a penalty of 5% of the coursework
grade per working day.
Before submitting your code, test it on the A32 lab machines using Visual Studio. Marks will be lost for
programs that do not compile or have issues with linking to image resources. Please ensure that you clean
your project build before submission.
Your report should contain 7 sections
Section 1 (Introduction) should explain the reason why you chose to implement this scene, your
inspirations, and a general description of the scene.
Sections 2, 3, 4, 5, 6 should give technical details, accompanied by screenshots and references to specific
bits of code (only if necessary) on how you implemented those aspects of the coursework.
Section 7 (conclusion) should describe what you perceive to be the strength and weaknesses of your project,
what aspect of it you are particularly proud of, and what you think would need to be improved.
There is no word or page limit but overly long reports will be penalised for their readability, or lack thereof.
As part of the assessment, you will be required to do a 5-minute demonstration of your scene to the
lecturer or a tutor. Your demo will highlight your coursework features, and you will be required to answer
questions about your scene and its implementation. This will be an opportunity to show off your knowledge
and skills in computer graphics. The coursework demonstration is provisionally scheduled for the lab
session of the 12/05/2020. You will be provided the location in A32 and a time slot for the demonstration
in due time.
This is not an art class, so you will be judged on your technical proficiency rather than on your artistic
flair. You will be marked in a demo session, during which you will be assigned to a marker.
You will be marked on six criteria, weighted as follows:
The detailed marking rubric is available as a PDF file along with this coursework, detailing the characteristics
of each aspect of a submission for each grade. Those characteristics are left for interpretation by the person
who will mark your submission.