bootstrap table

Computer Graphics and 3D

The course on "Computer Graphics and 3D" (CG&3D) is held at the second level graduate program in Computer Engineering, at the School of Engineering of the University of Florence. In 2020 the course will start on March 3rd  (second semester). The course can be included in students individual curriculum 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, rendering and animation;
- 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. 2018/19 [pdf]
Course diary a.a. 2018/19 [pdf]
Course slides, code and additional material are available on the UNIFI Moodle platform with restricted access [link


CG&3D final projects

augmented reality


"Survival Gane" [Author: Calamai, Simioni - April 2020] 
VR game with Oculus Rift. Unity 3D has been used for scene modeling and scripting in C# [video]

augmented reality


"AI vs Human fight" [Author: Plesoiu - March 2020] 
This project develops a fighting game between an AI avatar and an avatr driven by a human subject performing actions in front of a Kinect camera. The AI avatar is developed by using the AI tool of Unity [video]

augmented reality


"Archer vs. Orcs" [Author: Del Lungo, Magnolfi - October 2019] 
VR game with Oculus Rift. Unity 3D has been used for scene modeling and scripting in C# [video]

augmented reality


"Dark Madness" [Author: Celozzi, Ciabini - July 2019] 
The projects develops a Virtual reality game with Oculus Rift. Unity has been used for scene modeling and scripting in C# [video]

augmented reality


"Oculus 3D Action Game" [Author: Barlacchi, Gemelli - July 2018] 
In this project, a 3D game based on VR with Oculus Rift has been developed using Unity for scene modeling and scripting in C#. The game is articulated in three levels that can be passed following some hidden clues [video]

augmented reality


"Augmented Reality on the Web" [Author: Guidi - Sept. 2018] 
The goal of this project is to visualize a synthetic 3D model into a real scene taken from a live camera. For example, this can allow us to get an idea of how an object fit to our home before to buy it. One goal was to do this with a web based application without the need for installing native app. Used resources: AR.js, three.js (possible alternative: A-Frame). 3D models (obj+mtl) from poly.google.com [demo]

Mobirise

"Volumetric Rendering" [Author: Malavolti, Vaccaro - further extended by Vaccaro]
This project investigated OpenGL rendering (in C++) using the tessellation shader in the case of procedural terrain generation. The project was then extended to include volumetric rendering of procedurally generated clouds [full extended project on github]

terrain

"Procedural Terrain" [Author: Mansueto - Sept. 2018]
A procedural terrain is generated using a Fractal Brownian Motion model [demo]

solar sytem

"Earth's Orbit around the Sun" [Author: Undri, Innocenti - July 2018]
This project aims to reproduce Earth’s orbit scene around the Sun. The stars and sun’s phoposphere are represented as particle systems. Shaders are used to model the physical behavior of the particles [demo]

procedural maze

"Procedural Maze" [Author: Fusaro -  July 2018]
The project is based on a procedurally generated and potentially infinite maze. The base idea is a camera traveling across a system of hallways and crossroads which is randomly generated on movement. WebGL and the ThreeJS library have been used for graphic primitives [demo]

music player

"Music Viewer Particle System" [Authors: Minervini, Soci - Sept. 2017] 
The goal of the project is to implement a music viewer using particles systems. Particles systems are divided into three groups: 1. Bass particles system 2. Treble particles system 3. High particles system. WebGL and shaders are used to achieve the behavior of particles systems following the background music [demo]

Mobirise

"Smoke and Flame Particle System" [Author: Angioloni, Pegoraro - Sept. 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]

Mobirise

"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]

Mobirise

"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]

Mobirise

"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]

Mobirise

"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]

Mobirise

"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: (i) modeling the 3D world with OpenGL; (ii) modeling the avatars with OpenGL; (iii) using quaternions to relate Kinect skeleton movement with the avatar movement. A complete video of two avatars animation can be seen here [video

Mobirise

"Volcano Particle System" [Authors: Niccolai, Panicucci - July 2016]
A particle system is defined to simulate a volcano eruption. The purposes were: (i) particle trajectories modeling; (ii) use a point light source and normals for lighting rendering; (iii) apply a grass texture to the floor; (iv) render a volcano using OpenGL elements. 

Mobirise

"Procedural Terrain" (Authors: Bambagioni, Berlincioni - July 2016)
In this procedural terrain generation approach, a Midpoint displacement algorithm variant, called ''Diamond-Square'' has been implemented. 

Mobirise

"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: (i) each and every species has its own pattern of growth that makes it recognizable from the others; (ii) 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]

Mobirise

"Procedural Terrain using Perlin Noise" [Authors: Di Guardo, Garritano, Marchetti - June, 2016]
The term procedural refers to the process that computes a particular function (fractals are an example of procedural generation). Commonplace procedural content includes textures and meshes. The solution experimented in this course final assignment, automatically generates large amounts of terrain using ''perline noise''. WebGL has been used.