# COMPUTER GRAPHICS

Academic year and teacher

If you can't find the course description that you're looking for in the above list,
please see the following instructions >>

- Versione italiana
- Academic year
- 2017/2018
- Teacher
- GIOVANNI DI DOMENICO
- Credits
- 6
- Didactic period
- Primo Semestre
- SSD
- INF/01

#### Training objectives

- The aim of the course consists in providing the basis of the interactive Computer Graphics to the students of Computer Science three-year degree course.

The main acquired knowledge will be:

Structure of a graphics system. The graphics pipeline and its main features.

The graphics primitives and their attributes.

The three-dimensional coordinate systems in computer graphics, change of coordinate systems, transformations in homogeneous coordinates.

The camera transformation, the projection transformations: orthographic and perspective.

The shading models: general aspects, the Phong lighting model, the Blinn-Phong lighting model.

Clipping, Cohen-Sutherland line clipping, Liang-Barsky line clipping. Rasterization, Bresenham’s algorithm. Polygon rasterization.

Texture mapping: general aspects, texture coordinates, texture sampling, multitexturing, bump-mapping, reflection-mapping.

The programmable pipeline. The shading language GLSL.

Particle systems. BillBoarding.

Curves and Surfaces. Rapresentation of curves and surfaces. Interpolation. Bezier curves and surfaces. B-spline curves and surfaces. Rendering curves and surfaces.

Advanced rendering technique: ray-tracing. #### Prerequisites

- The prerequisites for this course are Discrete Mathematics and Programming Languages and Laboratory.
#### Course programme

- Graphics systems and Models The graphics pipeline and its architecture. The graphics API. The OpenGL interface. The OpenGL pipeline. The primitive graphics functions: points, lines and triangles. WebGL applications.

Graphics Programming The fixed and programmable pipeline. The vertex processor, the fragment processor and their main operations. The shading programming languages. OpenGL Shading Language (GLSL). Data types and qualifiers. First application in WebGL. Buffer object in WebGL. The line tracing: the digital differential analyser algorithm (DDA), the Bresenham’s algorithm.

The graphics transformations Geometric objects: scalars, points and vectors. The coordinate systems and frames. The homogenous coordinates. Affine transformations and the associated matrix. Translation, rotation, scaling. Concatenation of transformations. Transformations in WebGL. Camera transformations. Projection transformations: parallel-projection, perspective-projection. Moving the camera in the 3D space.

Graphics primitives and their attributes Vertex coordinates. Colors: RGB and HSV spaces.Vertex Arrays. Building 3D geometric primitive: the color cube. Face normals.

Lighting and Shading The radiance equation. Light and matter interaction. Global lighting models. Local lighting models. Light sources. The Phong lighting model. The Blinn-Phong lighting model. Materials specification. Ambient reflection, diffuse reflection,specular reflection.

Three.js library Introduction to Three.js library; API interface. How to build a graphics scene with Three.js. Geometric objects, materials, lights, camera, projection transformations.

Modeling and Hierarchy Symbols and instances. Hierarchical models. Graphical objects. Scene Graphs.

Clipping, rasterizer, hidden surface Clipping. Line-segment clipping. Cohen-Sutherland clipping. Liang-Barsky clipping. Clipping of other primitives. Rasterization. Bresenham’s algorithm. Polygon rasterization. Hidden-suface removal. Painter algorithm. The z-buffer algorithm and its application in OpenGL and WebGL.

Texture mapping 2D Texture mapping. Texture space, tecture coordinates. Texture sampling. Texture objects. Multitexturing. Texture mapping in opnGL and WebGL. Working with texture coordinates. Sphere Mapping. Bunp-mapping. Parallax-mapping.

Curves and Surfaces Rapresentation of curves and surfaces. Parametric cubic polynomial curves. Interpolation. Bezier curves and surfaces. Cubic B-splines. Belnding functions. Rendering curves and surfaces. Horner method, recursive subdivision of Bezier polynomials. Subdivision of Bezier surfaces.

Particle systems Indipendent particles. Spring forces. Attractive and repulsive forces. Solving particle systems.

GLSL shading language Data types and qualifiers. Operators and functions. Linking shaders with WebGL programs. Examples of vertex and fragment shaders.

Shadows Shadows calculation. Shadow casting in OpenGL and WebGL. Global lighting models: ray-tracing, radiosity. #### Didactic methods

- The course forecasts 48 hours of teaching divided in frontal lectures and tutorials. The course is organized as follow:

Frontal lectures on all course’s topics;

Practice exercises in the classroom to show the graphic programming methods by using WebGL, Javascript and HTML5. #### Learning assessment procedures

- The aim of exam is to verify at which level the learning objectives previously described have been acquired.

The examination is divided in written and oral examination.

The written examination consists of two parts:

The first part consists of the solution of three homeworks given to the students during the course. The homeworks must be returned in a week. The test is useful to evaluate the knowledge of fundamental topics by the students. Each homework is evaluated with 10 points.

The second part consists in carrying out a final project that includes most of the topics shown during the course. The project is evaluated with 30 points. The average score of the first and second part is the final score of written examination. It must be greater than 16 to make the oral exam.

The oral examination is useful to evaluate the knowledge of the topics tackled in the course.

The final mark is the average of written and oral examination. #### Reference texts

- "Interactive Computer Graphics: A Top-down Approach With Webgl", E. Angel, D. Shreiner (2014), Prentice Hall College Div.

Teacher's slides.

Recommended texts are:

"WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL",K. Matsuda, R. Lea,Addison Wesley (2013), Addison-Wesley.

"OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 4.3", D. Shreiner, G.Sellers, J. Kessenich, B. Licea-kane (2013), Addison-Wesley.

"WebGL: Up and Running", T. Parisi (2012), O'Reilly.