Computer Graphics and 3D (CG&3D) will start on March 2017 (second semester). It is held at the second level graduate program in Computer Engineering, at the School of Engineering of the University of Firenze. The course will be delivered both at 9cfu and 6cfu.

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.

Detailed course program as in the a.a. 2015/16 [pdf]

Course diary a.a. 2015/16 [pdf]

Course slides, code and additional material are available on the UNIFI Moodle platform (restricted access). https://e-l.unifi.it/

CG&3D final projects

Procedural Terrain with WebGL - (Authors: Di Guardo, Garritano, Marchetti - June, 2016)
The term procedural refers to the process that computes a particular function. Fractals, an example of procedural generation, express this concept, around which a whole body of mathematics—fractal geometry—has been developed. Commonplace procedural content includes textures and meshes.
The solution experimented in this CG&3D course final assignment, automatically generates large amounts of terrain using perline noise.
Procedural Terrain with WebGL - (Authors: Bambagioni, Berlincioni - July 2016)
In this procedural terrain generation approach, a Midpoint displacement algorithm variant, called Diamond-Square is implemented.
Simulating the growth of trees and plants using L-systems - (Author: Benericetti - June 2016)
Trees and plants are very difficult to model convincingly in 3D by hand:
- each and every species has its own pattern of growth that makes it recognizable from the others
- but at the same time, these patterns leave room for subtle changes that let every individual within the species itself be unique in its own arrangement of branches, leaves, etc.
Therefore, there’s need for tools that aid the 3D designer to develop trees and plants that not only look realistic, but are also slightly different from each other, in order to avoid a fake «copy/paste» effect.
Lindenmeyer systems, or L-systems, have proven quite effective in doing so.
A demo can be accessed here [demo]
Volcano Particle System - (Authors: Niccolai, Panicucci - July 2016)
A particle system is defined to simulate a volcano eruption. The purposes were:
- particle trajectories modeling
- use a point light source and normals for lighting rendering
- apply a grass texture to the floor
- render a volcano using OpenGL elements
Animating a 3D Avatar using Kinect Skeleton - (Authors: Brizzi, Fancelli, Sanesi - Sept. 2016)
Multiple avatars can be animated in a virtual OpenGL world by using Kinect camera capturing as input. One or two users can move in front of a Kinect depth sensors. The sensor detects a body skeleton, which is then used to animate the avatars. The solution requires:
- modeling the 3D world with OpenGL
- modeling the avatars with OpenGL
- using quaternions to relate Kinect skeleton movement with the avatar movement.
A complete video of two avatars animation can be seen here [video].
Procedural Planet - (Authors: Casini, Grazzi - Dec. 2016)
This project uses the Procedural Generation technique to develop a system that is capable of generating 3D planets. The main idea of the proposed approach is to use a noise function to model the characteristics of a real planet, like mountains and clouds (several noise functions have been experimented). The WebGL and the ThreeJS libraries have been used for graphics primitives.
A demo can be seen here [demo].
Waterfall Particle System and Water Shader - (Author: Cuffaro - Feb. 2017)
The objetive of this project is to simulate a waterfall with realistic interaction between the water particles and the water plane. A realistic solution has been obtained for the water using the combination of several shaders for specular reflection, light, etc. WebGL and the ThreeJS library have been used for graphic primitives.
A demo can be seen here [demo].
Geyser Particle System - (Authors: Lombardi, Sestini - June 2017)
The objetive of this project is to simulate a geyser explosion with water drops and gas particles. WebGL and the ThreeJS library have been used for graphic primitives.
A demo can be seen here [demo].
Saturn's Rings as Particle System - (Author: Ramadan - June 2017)
The objetive of this project is to simulate the Saturn's rings with a particle system. WebGL and the ThreeJS library have been used for graphic primitives.
A demo can be seen here [demo].
Smoke and Flame Particle System - (Author: Angioloni, Pegoraro - September 2017)
The goal of this project is to simulate a candle flame and smoke. The effects for the flame and smoke are obtained by combining particle modeling with the physical laws regulating the reality of these phenomena. WebGL and the ThreeJS library have been used for graphic primitives.
A demo can be seen here [demo].