Wednesday, 21 January 2009

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.

Worksheet 3

Introduction

The aim of this project is to take a look into current methods and techniques for fluid simulation used within games and see what single or combination of techniques is best in terms of visually and performance wise.

Motivation

Fluid flows are everywhere: from rising smoke, clouds and mist to the flow of rivers and oceans. Because one of the major goals games is to immerse players into plausible virtual worlds, it is desirable to include flows into games engines (Stam 2003). Therefore games developers are interested in finding out what are the best techniques to use to accurately simulated fluids within their games. I believe that having accurate simulating water is something which is also expected from consumers within games now a days and knowing what the best techniques are for producing such simulations something that I am interested in knowing and understanding. Obtaining the knowledge of fluid simulation is something that can be quite versatile as well as some of the techniques used for fluid are used for simulating smoke and fire.

Research Question

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

Addressing the Question

The first thing that will be done will be looking into the techniques that are currently being used and have been investigated for real-time fluid dynamics and see how they look and perform. For each of the techniques that I find they were be a number of test will be carried out to see if visually looks like fluid and if it acts correctly with an object. Also I will look into improve techniques or combining techniques together to prove an ideal fluid simulation.

Resource Requirements

In order for me to answer my research question I will intend to create a program in possibly OpenGL or Direct X which will use a numerical technique to represent fluid. Initially I will start by creating a 2D scene for the fluid and have objects placed so the user can see the fluid reacting when it interacts with the objects. Once I have created this scene I will intend to expand on it to make a 3D scene where users can move the fluid and drop objects into the fluid and seeing the reaction on the screen.

References and Bibliography

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]

Jensen, L.S and Golias, R. 2001. Deep-Wate Animation and Renderingr. [online] Available from: http://www.gamasutra.com/gdce/2001/jensen/jensen_01.htm [Accessed 05 November 2008]
Bart, A., et al. 2007.Adaptively sampled particle fluids. In ACM SIGGRAPH 2007 papersACM, San Diego, California.

Winter, E And Larsson, M 2006. Go With The Flow -- Water Effects And Fluid Dynamics In Games. Game Developer, November 1, 21-28. http://www.proquest.com/ (accessed October 17, 2008).

Lengyel,E. 2004. Mathematics for 3D Game Programming and Computer Graphics. 2nd ed. Massachusetts: Charles River Media

Monday, 3 November 2008

Working On Worksheet 3 and Presentation

Currently I'm working on Worksheet 3 to get myself prepare for the presentation on Monday 17th November.

Somethings seem to be coming about my research question which is it seems that I need to work on it alot more as it something that seems to be done before and fluid simulation is a topic which has had alot done to it which I believe may be a problem.

Just sent out an email to Dr Lucas about having another meeting with him regarding my Research Question and also plan to talk about the presentation aswell.

Worksheet 2 with comments

Honours Project Worksheet 2
Michael Daglish 0500981

Comments by Stuart McGaw

1.) Formulate a research question for your project. Details on the research question can be found in presentation 1 in the module folder.

Can fluid be accurately simulated when forces are applied and when objects are dropped into it?

2.) When developing a research question you must produce a question that can be answered by performing literature research, practical experimentation and critical analysis. The question should also focus the activities of your project.

a) What is the focus of your project?
How to accurately simulate fluid within a game engine.

b) What information do you need to find out about?
What are the existing techniques used to simulate fluid. How fluid react in real life and the physics behind it.

c) What Experimental work do you need to perform?
An application will be created which will contain some fluid of some sort and the user will be able to apply wind to fluid and see the reaction. Also the application will allow the user to drop objects into the fluid as well.

3.) How will the information that you obtain in 2 allow you to answer the research question?

The information that is obtained will help me answer the research question as I will find out what happens to fluid when forces are applied and objects are dropped in it. So I will know what fluid should act and researching into existing techniques will be able to find out if fluid can be accurately simulated.

Fluid dynamics is an areas in which a lot of work has already been done (though there’s still a lot to do), for example the PhysX physics engine has in-built fluid dynamics simulation (see here for a video example of fluid in a vessel which is ruptured then collapses into the fluid). I couldn’t find any examples of wind acting on fluids in PhysX but I know wind can be simulated in PhysX perhaps you would be best experimenting within that framework so you are not starting absolutely from scratch? Good luck with all the fun maths this is going to involve.