Computer Graphics Coursework Assignment Brief
Introduction
This document provides an overview of the coursework assignment for COMS30064 Computer Graphics. This
assignment is the only assessment for this unit and as such is worth the whole 15 credit points.
The deadline for submission of all optional unit assignments is 1300 on Thursday 8th of December (the University
discourages Friday deadlines !). Students should submit all required materials to the "Assessment, submission and
feedback" section of Blackboard - it is essential that this is done on the Blackboard page related to the "With
Coursework" variant of the unit.
You are expected to work on both of your optional unit courseworks in the 3-week coursework period as if it were a
working week in a regular job - that is 5 days a week for no more than 8 hours a day. The effort spent on the
assignment for each unit should be approximately equal, being roughly equivalent to 1.5 working weeks each. It is
up to you how you distribute your time and workload between the two units within those constraints.
You are strongly advised NOT to try and work excessive hours during the coursework period: this is more likely to
make your health worse than to make your marks better. If you need further pastoral/mental health support, please
talk to your personal tutor, a senior tutor, or the university wellbeing service.
Each Monday at 2-4pm during the coursework period there will be an online support session on Teams. This
session is for high-level Q&A regarding the nature and intent of the assignment and as such is NOT intended to be a
"debugging service" - if you are having problems getting your code to run you should use the usual Teams
discussion forum channel.
This coursework is an individual piece of work. You should therefore not collaborate with other students - if you do,
this will be considered as an academic offence and will be dealt with in accordance with university plagiarism
processes.
Assignment Overview
The aim of this unit has been to provide you with an understanding of a variety of different approaches to 3D
rendering. Pre-recorded lecture segments and narrated animations have provided the main theoretical content of
this unit and the tasks from the weekly workbooks have allowed you to practically explore the key concepts
presented.
The assignment for this unit provides an opportunity for you to demonstrate your understanding of these concepts,
as well as a chance to exercise the codebase that you have been accumulating over the course of the unit.
Many of the approaches to rendering that we have explored can only be fully appreciated by the movement of the
camera through/around a model. For this reason, your task is to create a short (approximately 15 second) animated
"ident" video. For more insight into the concept of an "ident", you should view this compilation of BBC2 idents. Note
that there are a wide variety of examples presented in this video - some are more relevant to this unit than others !
To provide a focus and purpose for your animation, you should create an ident for promotional use by the MVB
hackspace
We have provided a texture-mapped hackspace logo which you may like to use to help you on your way. This
however is not mandatory and you are free to use any alternative models you see fit.
Assignment Details
The aim of this assignment is to refine and extend the codebase that you have developed during the completion of
the weekly workbooks, in order to build a fully functioning C++ renderer. You should maintain and update your
GitHub repository throughout this assignment. We will use this to monitor your progress and the evolution of your
code over the course of the assignment (the journey is often as important as the final destination !). We will also use
the final version of your code to verify the correct implementation of particular rendering features.
If you wish to attain a high mark, you should attempt to implement some of the approaches introduced in the
"advanced topics" workbook. It is up to you to select which approaches you implement, however you should
remember that there is a performance trade-off at work. The more complex the features you implement, the longer
will be the rendering time for your animation. You will need to find an appropriate compromise between: renderer
sophistication, algorithmic performance, animation complexity, animation aesthetics and rendering time.
You should use your code to render out individual frames of an animation (as images) and then sequence these
together into an mp4 using an external video manipulation tool. The recommended way to do this is with the
ffmpeg command-line video editing/encoder tool. For example, the following command will generate an MP4 video
from a folder of PPM files:
ffmpeg -framerate 5 -i %05d.ppm -c:v mpeg4 -q 5 out.mp4
Note that the %05d wildcard matches PPM filenames with 5 numerical digits (e.g. 00001.ppm, 00002.ppm,
00003.ppm etc.). The above command uses the default mpeg4 is the codec to create the video file: libxvid
might give better results (if you have that codec installed). The -q flag is a quality parameter: the lower the
number the higher the quality (and the larger the filesize).
You MUST ensure that your animation clearly demonstrates all of the rendering approaches that you have
implemented. If we can't see the feature operating correctly, then we can't award marks for it. Note that you may
find some features of your renderer can only be fully demonstrated using certain modes of rendering
(wireframe/rasterising/raytracing) so you may need to switch between these during your animation.
Marking criteria
Your work will be assess on the extent to which you achieve the following objectives:
Successful implementation of different approaches to 3D rendering (wireframe, rasterising, raytracing)
Successful implementation of a range of different approaches to lighting and shading
(ambient/diffuse/specular, hard/soft shadows, Phong/Gouraud shading)
Effective animation of camera position, camera orientation and model elements
Selection and implementation of advanced rendering features, such as:
"Exotic" materials (e.g. glass, mirrors, metal)
Surface mapping (texture maps, bump maps, environment maps)
Advanced lighting approaches (e.g. photon maps)
An indicative marking guide has been provided to illustrate the grades you might expect to receive for a given set of
features and capabilities.
Submission
You should submit a single 480p (640×480) MP4 video file containing your ident via Blackboard. Note that it is
essential this is done on the Blackboard page related to the "With Coursework" variant of the unit COMS30064 and
NOT the teaching unit COMS30020. On the assessment unit page, go to “Assessment, Submission and Feedback”
and follow the instructions found there. You must submit the video file itself (i.e. NOT the URL to an online video).
You should make an effort to compress your video in order to reduce the file size.
So that we may access your private GitHub repository, you MUST invite GitHub user sl17668 as a collaborator to
your repository (goto Settings > Collaborators > Add people ). Note that we may contact you during the
marking process if there are any aspects of the codebase or development process which we are unsure of.
Be sure to include a Make file to build your renderer and ensure that your code compiles on the MVB lab machines
(this is where your code will be tested and marked !). As with other assignments, your code will be checked against
other submissions using automated plagiarism analysers.
Upon submission, you must also fill out this questionnaire indicating which approaches you have used to implement
specific rendering features. The aim of this is to help streamline the marking process (so that we don't spend time
searching for a feature or approach that you haven't actually implemented !)
Academic Offences
Academic offences (including submission of work that is not your own, falsification of data/evidence or the use of
materials without appropriate referencing) are all taken very seriously by the University. Suspected offences will be
dealt with in accordance with the University s? policies and procedures. If an academic offence is suspected in your
work, you will be asked to attend a plagiarism panel, where you will be given the opportunity to defend your work.
The panel are able to apply a range of penalties, depending on the severity of the offence. These include:
requirement to resubmit assignment; capping of grades to the pass mark (40%); awarding a mark of zero for an
element of assessment; awarding a mark of zero for the entire unit.
Extenuating circumstances
If the completion of your assignment has been significantly disrupted by serious health conditions, personal
problems, periods of quarantine, or other similar issues, you may be able to apply for consideration of extenuating
circumstances (in accordance with the normal university policy and processes). Students should apply for
consideration of extenuating circumstances as soon as possible when the problem occurs, using the following
online form: https://www.bristol.ac.uk/request-extenuating-circumstances-form
You should note however that extensions of any significant length are not possible for optional unit assignments. If
your application for extenuating circumstances is successful, you may be required to retake the assessment of the
unit at the next available opportunity (e.g. during the summer reassessment period).