Computer graphics

A.Y. 2019/2020
Overall hours
Learning objectives
The course has the goal of introducing the basic notions of 3D modeling and rendering, in the context of computational graphics. It also presents the main data structures for the digital representation of three-dimensional objects, as well as rendering algorithms, which are used to synthesize digital images that depict the modeled objects (either in real time or offline). The course also presents common software tools and formal languages ​​used in this field.
Expected learning outcomes
Students are expected to acquire the notions of Computer Graphics that will allow them to correctly identify an appropriate solution to a given problem that requires digital modeling of three-dimensional objects and their visualization (in any of the many possible fields of application). Furthermore, the acquired mathematical, algorithmic and data-structure principles will provide a starting point for the implementation of the identified solution.
Course syllabus and organization

Single session

Lesson period
Second semester
Course syllabus
* [-] Intro

PART I: modelling 3D structures

** [M] Modelli 3D: intro and properties
** [M] Point Clouds [data structure and operations]
** [G] Vector and Point algebra [recap]
** [M] Meshes [attributes, normals, indexed structures]
* [M] Meshes [processing in brief: simplification & remeshing]
* [M] Meshes [processing in brief: smooth, denoise, clean]
* [M] Meshes [half-edges based structures]
** [M] Meshes: textures & UV mapping.
* [G] Superfici: normals, curvature, smoothness.
** [M] Subdivision surfaces
* [M] Height fields / Range Maps
** [M] Parametric curves [Bézier curves]
* [M] Parametric surfaces [Bézier patches]
* [M] Volumetric models: voxelized [Oct-tree, marching cubes]
* [M] Volumetric models: Implicit models [CSG]
* [M] Volumetric models: polyhedral meshes.
* [M] Modelli 3D: Construction [in brief]
** [M] Modelli 3D: Acquisition. [Range Maps.]

PART II: 3D rendering

* [R] Rendering [intro]
* [R] Ray-tracing [intro]
* [P] GLSL language
* [P] Ray-tracing in GLSL [ray casting of spheres]
** [P] Ray-tracing in GLSL [planes, intersections]
** [P] Ray-tracing in GLSL [shadows, reflections]
** [R] Rasterization [intro to the HW pipeline]
** [G] Spatial transforms [affine transf.]
** [G] Spatial transforms [Rotations and translations]
** [G] Spatial transforms [reference systems]
** [R] Transform Pipeline [Overview. Model matrix]
* [R] Transform Pipeline [View Matrix]
* [R] Transform Pipeline [Projection]
** [P] Rasterization in three.js [hello triangle]
* [R] Rasterization in three.js [meshes]
* [P] Rasterization in three.js [textures]


* = 1 hour
[M] Modelling (1st part)
[R] Rendering (2nd part)
[G] Geometry (math)
[P] Programming (2nd part)
Prerequisites for admission
Linear algebra, functional analysis, algorithms, and programming are required.

Passing the Programming and Mathematics exams are therefore *necessary* for the Computer Graphics course.
Teaching methods
Most of the topics are exposed through lectures. In the first part (3D modeling) modeling and geometry processing tools are used to exemplify the covered topics. In the second part (3D rendering) the lessons are alternated with live coding sessions, in the classroom, which retrace the proposed topics. For this purpose, specialized libraries and languages ​​are used.
Teaching Resources
The web-page of the course provides lecture slides and additional material:

The following textbook can help studying for this course:

* "Introduction to Computer Graphics: A Practical Learning Approach" M Corsini, F Ganovelli, S Pattanaik, M Di Benedetto
Assessment methods and Criteria
Written test (3 hours long), which consists in the solution of exercises related to the course topics, and the answer to short open questions.
The written test is divided into two parts, focusing on the content of the first and second parts of the course respectively.

The written test can be entirely replaced by two tests "in itinere", each of which focuses on one half of the course, which are carried out during the semester. Each test "in itinere", if passed, can replace one of the two parts of the written exam.

The evaluation is aimed at verifying the full understanding of the topics covered in the course, the ability to identify existing Computer Graphics solutions suitable to face a given technical challenge, the acquisition of the technical vocabulary of the field, and, in particular, the degree of familiarity achieved by the student in the use of the relative mathematical tools.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Tarini Marco
Educational website(s)
Tuesday 14:30-17:30 (or by appointment)
Department (Via Celoria 18) -- Office 4006