Fluid Simulation for Computer Graphics
MetadataShow full item record
Fluid simulation for computer graphics is a special part of Computational Fluid Dynamics (CFD) which is used in graphics applications to generate realistic representations of different types of fluids such as water, smoke etc. The main difference between applications in computer graphics and more general CFD applications is that the results do not need to be physically correct as long as they seem convincing and visually appealing to the human observer. Computer graphics applications range from real-time simulations that are integrated in computer games and completely off-line ultra realistic simulations that are mostly used in special effects in the movie industry. In this Master's Thesis we will focus on the Computer Graphics applications of fluid simulation used in the movie industry. We develop a three dimensional fluid simulator, which uses a staggered grid and follows the Eulerian viewpoint together with a semi-Lagrangian advection technique. MICCG(0) (modified incomplete Cholesky conjugate gradient, level zero) is used for the pressure projection. Different methods to track the fluid are implemented, including marker particles, level set method and particle level set method. The interaction between solids and fluid is possible under a fluid-solid coupling technique. The scenes are rendered using pbrt and Robert Bridson's grid-based implicit surface shape plugin for pbrt. Each frame of a simulation that follows the Eulerian viewpoint usually takes several seconds to be computed. As result of this, we focused our efforts into researching what parts delay the simulation the most. Once these parts are identified we propose some methods to deal with these bottlenecks and speed up the simulation. For this purpose, we propose a new hybrid-grid structure, instead of the standard regular grid usually used in this type of simulations, in order to decrease the number of computations needed. Furthermore, we add multi-threading at some time consuming parts of the simulation to further optimize performance. Finally, we combine the two above methods to acquire the highest performance increase featured among our contributions.