Wednesday, 11 February 2009

Update 11/02

Well there has been a lot achieved programming side this week. I have managed to implement some of the functions for the Navier-Stokes equation into my program. What is up is the Advection and Diffuse equations have been included along with the density calculation step for the entire grid. The velocity step still needs to be done but it similar to the density as it used Advection equation as well.
I have also came across the game called Hydrophobia (Blade Interactive) which has a game engine (HydroEngine) which provides realistic fluid dynamics technology for flowing water, allowing it to interact with the surroundings. The game is set to be released in March sometime so I do plan on having a look at the game to see how their fluid dynamics are represented.

Hydrophobia teaser trailer

This week's goals are:

  1. Get the velocity step for the application built in.
  2. Get a visual representation of the fluid done.

Tuesday, 3 February 2009

Update 03/02

Well I have managed to achieve the goals which I set myself over the last two weeks. My application has been started which is a basic window which runs with DirectX. I have read up on GPU Gems 3 which was good but I have also read GPU Gems which was really good. It has help me come to terms with the ideas and terms behind Navier-Stoke equations. Also the steps you have to follow to produce the desirable fluid has been achieved. However the one problem with this book is that it uses the GPU to create the fluid rather than the CPU which is a type of code which I have not used before and is difficult to understand. However if I plan on building the fluid to run on the CPU first then convert it to the GPU. As it can run 6 times faster than the CPU.
I have also managed to get a demo application of Jos Stams work along with code which I plan on looking at to see how the equations are applied in his applications.

Goals for this week:
Build up on my application to include the functions of Navier-Stokes equations
Look it to the techniques used to represent fluids (Grids and Particles).

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.

Friday, 5 December 2008

05/12/08 Update

Well it has been a busy few weeks with alot of coursework to be complete for the last week of term which has caused me to fall behind on my blog.
Well since the last update I have had my presentation which didnt go as bad as I thought it would have. Got alot of good feed back from it which has helped me for my project proposal which I am currently still working on which I hope to have my first draft up for next week.
Still doing alot of research on fluid simulation, reading alot of papers by Jos Stam and Nick Foster who both seem to have very good ideas which I think I may use for the project.

Wednesday, 12 November 2008

Worksheet 4 with Comments

CS1004a Honours Project Worksheet 4

Introduction:
Fluid flows are everywhere from rising smoke, clouds and mist to the flows of rivers and oceans. Because one of the major goals of games is to immerse players into plausible virtual worlds, it is desirable to include fluid flows into games engines (Stam 2003). Therefore there are a lot of techniques which have been developed over years that have varying effects.
With the improvements in graphics and processors over the years what is the best technique to use for the current generation of hardware?
The aim of this project is to find out through research and experimentation what is the best technique to use to produce real-time fluid simulations which has good visuals and performs fast?

I think it sounds like a good topic to approach, since many games have been lacking a realistic looking fluid system and only focusing on speed. Bioshock was the last game I remember seeing where the developers spent a lot of time on the realistic visuals for that water.

Issues:
There are a lot of dedicated applications out there which use algorithms which strive for accuracy and are fairly complex and time consuming but these applications need to be physically accurate. However in computer graphics and in games what matters most is that the simulations both look convincing and are fast (Stam 2003). So the main issue I want to address is what is the best technique to use for fluid simulation in games? This technique must look visually good and doesn’t slow the frame rate greatly

Sounds like good way of going around it, but I was wondering if the time scale allows you to look over the wide range of fluid systems. Would modelling the dynamics of a river allow you enough time look over cloud systems?

Research Question:
“Can fluid reactions with objects be accurately simulated in a real-time environment using numerical techniques?”

Addressing the Question:
Research into existing work on fluid simulation is one of the first steps that must be carried in order to find the best techniques or techniques for implementing an application demo. Also possible improvements will be looked into for these techniques.
An application demo will be created in either Direct X or OpenGL in order to answer the question. An application demo will first be designed to show a 2D version of a fluid where the technique decided during the research will be used to show how fluid reacts when it comes into contact with stationary objects. Then the 2D version will be expanded into a 3D application and will show how the fluid reacts when objects are dropped into the fluid.

Would a varying scene including different object and landscapes be feasible for the different types of fluids?

Progress:
So far I have done a lot of research into the techniques that are out there. I have read a lot into the techniques in both Jos Stam and Nick Fosters papers on fluid dynamics. These techniques have given me some ideas on what equations are good to use to represent certain physical properties of fluid. They have also talked a lot on Navier-Stoke equations which have influenced what I need to research as it has come apparent that these are helpful to simulate the properties of fluid.

Although it may be lacking in technical details I believe high end graphics development programs such as 3ds Max might show examples and features that could be used for a template in your application.

References:

Stam, J. 2003. Real-Time Fluid Dynamics for Games. [online] Available from: http://www.dgp.toronto.edu/people/stam/reality/Research/pdf/GDC03.pdf [Accessed 05 November 2008]

Wednesday, 5 November 2008

05/11 Meeting with Dr Lucas

Had a meeting with Dr Lucas today. Seems to be most of my worrys to rest regarding my research question being unique. Was informed that in honours year it's not about coming up something new but doing scholar research on a subject and being able to write up on it well.

Also had a discussion regarding my RQ which I happy with which has been put into Worksheet 3.

Plans for next week:
Get the presentation ready.
Read up of Navier Stoke equations and how Jos Stam used them for fluid simulation.