Wednesday 21 January 2009

21/01/09 Update

Over the Christmas period I have read up on several papers. Some have really interesting ideas. Stams' 'Stable fluids' which is something I should be aiming to achieve as Stable fluids can run for along time without 'blowing up'. Another paper by Foster and Metaxas goes on about the importance of boundaries and the different types you can have and how the effect the equations of motion.

Had my first meeting for this semester with Dr Lucas. He suggests that I start to implement some of the ideas which I think is a good idea, may help me to understand some of the equations more. Also he suggested reading a chapter in GPU Gems 3 on fluid simulation which I have had a quick glance at and seems really interesting.

So my goals for the next two weeks are:
Familiarise myself with Direct X
Get a basic window running up on Direct X
Read up on GPU Gems.
Read up and try to get some of particle engine implement in Direct X

Honours Project Proposal

Introduction:
“Fluid flows are everywhere from rising smoke, clouds and mist to the flows of rivers and oceans” (Stam 2003, p.1). The phenomena may seem simple in real-life but are complex and difficult to simulate in real-time. “The reason for the complexity of fluid behaviour is the complex interplay of various processes such as convection, diffusion, turbulence and surface tension” (Müller, Charypar and Gross 2003, p.1).
“One of the major goals of games is to immerse players into plausible virtual worlds. It is then desirable to include fluid flows into games engines” (Stam 2003, p.1) which is why for many years game developers have included some sort of fluid simulations within their games, from basic animated textures, which was basically used to give the essence of fluid to 3D fluid simulations, which had some of the physical properties of fluid included.
There are many algorithms for fluid simulation, most of which rely on the Navier-Stoke’s equations (named after Claude-Louis Navier and George Gabriel Stokes), which “simply account for all momentum exchange possibilities within a fluid” (Foster and Metaxas 1996, p.2). These equations are very good at describing a large number of simulations, for instance simulations of ocean currents and water flow in a pipe can use Navier-Stoke’s equations to accurately model the fluid. The accuracy of these equations comes at a price. They are very complex and time consuming and are pretty much impossible to use in real-time environments as frame-rates will be hit hard by the inclusion of them. They are usually used when great accuracy is necessary (e.g. designing aircrafts).
“In computer graphics and in games on the other hand what matters most is that simulations both look convincing and are fast” (Stam 2003, p.1). Therefore it is possible to have some simulation of the physical properties. These simulations do not have to be physically accurate but do have to look accurate enough to allow the player to believe that this substance is in fact a fluid. This allows the process of simplifying complex algorithms to allow the process of solving them to run a lot faster, improving the running of the game.
Even though fluid simulation has been around for many years is it still a hot topic within game development. As technology improves, what game developers can do with fluid simulation also improves. Many of the recent games which have been released have shown off their fluid simulation to advertise the game and the developers have been praised for it. One such game is BioShock (2007) developed by Irrational which was set in a under ocean city and not only used fluid simulation to model various fluids within the game but used it to set the “feel” of the game and to allow players to believe that they are in a city on the ocean floor, which may have been hard to achieve if the inclusion of simulation of fluid was not there.

Research Topic:
“Established engineering techniques for simulating and modelling the real world have been modified and applied to computer graphics more frequently over the last years” (Foster and Fedkiw 2001, p.1) . Therefore the main objective of this project is to not only perform a scholarly research into existing techniques and ideas for fluid simulations for current-state consoles and PCs but see if available real world techniques can be used in a real-time environment. Each of these techniques will be studied carefully to allow me to understand the equations and algorithms which are used for fluid simulation. Also research will be conducted to possibly improve current fluid simulation models. The kind of techniques which will be looked into are the ones which you uses versions of Navier-Stoke’s equations and Lagrange equations of motion which are “used to place buoyant dynamic objects into a scene” (Foster and Metaxas 1996, p.1).
Visual affects will also be looked into especially the laws which involve lighting like Snell’s law which can be used to produce the required underwater caustics by refracting and reflecting incoming light. This will allow the understanding of how fluid can get the visual simulation in a real-time environment.
The research will look in fluid as a whole but the algorithms and demo applications will be built around the physical properties of water rather than any other fluid (i.e. smoke).

Research Question:
“Can fluid interactions with objects be accurately simulated in a real-time environment?”

Addressing the Question:
Research will be conducted into existing techniques for fluid simulations and evaluations of these techniques will be done to determine what the best technique to use for the simulation is. What will determine a technique as the best is one that shows the physically properties of the fluid accurately enough and that it runs efficiently. For each technique studied determination of what is good about them and what is bad will be highlighted. Also, there might be possibility of combining a number of techniques to create a hybrid algorithm for fluid simulation which is better than a single technique.
A demo application will be built to show how the technique(s) are applied. The demo application will be built in Direct X and will show the fluid in a 2D environment and how the fluid interacts when it comes into contact with stationary objects. The fluid will also be represented by particles because this will allow it not to be restricted to a finite grid and only performs computation where necessary (Green 2008) meaning that it will be faster than using vertex grid. Frame rates will also be shown in the application to show the performance of this simulation.
A 3D application of the algorithms selected will also be built within the given time. Also as with the 2D simulation, the performance of the application will be shown in terms of frame rate being outputted to the screen.
The fluid that will be simulated in both these demo applications will be designed around the visual look and physical properties of water. This will allow a familiar visual comparison between real-life and the simulation to be made.

Project Evaluation:
The measure of success of my project will be shown through the demo applications. These applications will show clearly if the fluid technique is viable in producing accurate simulations in a real-time environment.
Frame rates will be measured as well for the application. For it to be used within a game engine then must have a suitable frame rate. In modern games frame rates can vary. Take Halo 3(2007) by Bungie for instance it runs at 30 frames per second while Call of Duty 4: Modern Warfare (2007) by Infinity Ward runs at 60 frames per second. So having a fluid simulation that runs at these frame rates or higher will be classified as a success.

Issues:
One main issue that needs to be addressed through this project is how physically accurate can fluid simulations be in real-time before the performance becomes a big issue. This balanced needs to be addressed through experimentation in order to determine the best technique to use for fluid simulation.
Applying the correct technique will be another issue which will have to be addressed during the course of this project. The techniques out there are mostly mathematical equations so they will have to be adapted so that they can be used with an application.

Resource Requirements:
The demo application will be built using Microsoft Visual Studios 2005 and Direct3D. The DirectX API has the ability of creating particles and is commonly used within the games industry.
Also as the demo application will be designed around the current generation of consoles and PCs, a modern PC preferably built for modern day games with appropriate graphics cards and processors will be required to run the application reasonably. These types of PCs are currently available at both home and the university game labs.