The objective of the course is twofold: On the one hand, a comprehensive introduction to basic and advanced computer graphics concepts will be provided by presenting the most common techniques for 3D modeling, animation and rendering; On the other, the specific aspects related to the acquisition and processing of real 3D data acquired with low- and high-resolution scanners will be addressed, also focusing on practical applications, like 3D retrieval, 3D recognition, 3D biometrics, etc.
Theory and concepts presented throughout the course will be applied using OpenGL and Matlab coding. We will also introduce the CUDA language for GPU programming and apply it to implement computer graphics and 3D algorithms. A short introduction to 3D printing will be also provided.
Prerequisites
.
Teaching Methods
.
Further information
Additional information can be found at the following link:
http://www.dsi.unifi.it/berretti/index.php?n=Teaching.ComputerGraphicsAnd3D
Type of Assessment
Oral examination. A practical assignment can substitute part of the oral examination.
Course program
1. Computer graphics
In the first part of the course, the computer graphics pipeline will be presented and analyzed, by focusing on the aspects of modeling, animation and rendering of a 3D scene. Some hints of the 2D case will be also given. Practical examples on the different subjects will be given using OpenGL and Matlab code. The same programming frameworks will be used for experimental activities (laboratory work and assignments).
Modeling
Essential mathematics and the geometry of 2D-space and 3D-space
- Curves and surfaces: Bézier curves and splines
A simple way to describe shape in 2D and 3D
- “Meshes” in 2D: polylines
- Meshes in 3D: manifold and non-manifold meshes, basic mesh operations
Curve Properties & Conversion, Surface Representations
Coordinates and Transformations: Homogeneous coordinates, Perspective
Hierarchical models: Hierarchical grouping of objects (scene graph), Hierarchical Modeling in OpenGL
Animation
Articulated models: Joints and bones, skeleton hierarchy, forward kinematics, inverse kinematics
Color: Spectra, Cones and spectral response, Color blindness and metamers, Color matching, Color spaces
Character Animation: Animate simple “skeleton”, Attach “skin” to skeleton
Basics of Computer Animation: Keyframing, Procedural, Physically-based
Animation Controls
Character Animation using skinning/enveloping
Collision detection and response: Point-object and object-object detection, Only point-object response
Rendering
Ray Casting
Rasterization
Ray Tracing: Shade (interaction of light and material), Secondary rays (shadows, reflection, refraction)
Textures and Shading
Texture Mapping & Shaders: Sampling & Antialiasing, Shadows, Global illumination
OpenGL
Introduction to the Open Graphics Library: Industry standard graphics library used to produce real-time 2D and 3D graphics
2. 3D acquisition and processing
In the second part of the course, we will focus on the acquisition and processing of 3D real data (both with low and high resolution). Algorithms and methods will be addressed for concrete applications, like 3D retrieval, 3D recognition, 3D biometrics, etc.
3D acquisition
High resolution 3D scanners technology, Low resolution 3D cameras (Kinect)
Algorithms on the mesh
Tangent, Normal, Curvature (mean, Gaussian, principal)
Geodesic computation on the mesh: Dijkstra, Fast marching algorithm
3D descriptors on the mesh: shape-index, shape-context, mesh-SIFT, mesh-HOG, mesh-LBP
Laplace-Beltrami operator
Applications
3D objects retrieval, 3D recognition (static and dynamic), 3D biometrics
Modern graphics hardware
Graphics Processing Unit (GPU) for real-time 3D computer graphics
GPU programming with CUDA