Thursday, 14 May 2009
Update 14/05
Wednesday, 6 May 2009
Update 06/05
Also I have done my presentation on Sunday which I believe went well and am pretty happy what was said.
Thursday, 23 April 2009
Update 23/04
This week I have been able to complete my Methodology and I am currently working on my results which I have still to take not of the frame rates for the different sizes of grids. Next week alot of work will be done on my presentation which is to be done on the 5th May.
Thursday, 16 April 2009
16/04 Update
Thursday, 9 April 2009
09/04 Gannt Chart
Wednesday, 8 April 2009
Update 08/04
On the write up side I am still working on my literature review which is behind schedule but I have made alot of progress on my application and have done alot of work on my other coursework which I thought would take longer which has given me more hours to work on the dissertation.
My Gannt chart for this week should be up by tomorrow as I have left a copy on my Uni Drive and forgot to copy it over.
Thursday, 2 April 2009
02/04 Update
Over the last week I have been working a lot on my Literature which has required a lot more than what I was expecting due to large number of mathematical terms which I have to describe which has caused me to be slightly delayed due to it but I do plan on having it complete by this weekend.
A big break through has occurred on the programming side of things I have finally been able to complete the 2D grid and have the input in correctly. The only thing is that it is done on the OpenGL application and not the DirectX one but I believe I should get it done by the end of the day. However there is one problem the velocity is only moving up to the top right hand corner which means I have to look over the calculations code again which shouldn’t take that long as I’m looking only at the velocity not the density parts.
Once I have sorted these problems I'm going to do a quick research into boundary conditions and see if it feasible to have stationary objects within the application.
Tuesday, 24 March 2009
Update 24/03
Above is the gannt chart which has some of the new colours which show where I am at this time (guide to the left of this blog). At the moment I am falling behind with the coding due to having problems with it not producing the right results. All it was doing is pushing the densities horizontally. However today I have manage to solve this problem but I have got another one at the moment which is that the gird is fuzzy. Hopefully this shouldnt take me too long and with me putting in more hours into it I should have it completed by Friday. Another problem is the grid currently I can't get it to fill the entire screen which I am looking to solve within the next few days.
On the writing side at the moment I have made a start at the literature review which seems to be going ok. Should hopefully have this done for Sunday if everything goes well.
Draft Abstracts
In this paper we present a simple and fast implementation of a stable fluid simulator which can be used within a games engine. Here the technique is used to represent a water based fluid but the technique can be used to for a number of realistic fluid-like effects like swirling smoke. The technique uses simplified Navier-Stokes questions which are hard to solve with strict physical accuracy being their main goal. Our technique on the other hand gears towards the visual side of the equation and where stability and speed are the prime importance to the equations. We also show that our technique is easy to code by providing the source code for our technique along with this paper. Our algorithms run in real-time for 2D grids on a standard PC hardware which includes Direct3D.
Version 2
Simulating accurate representations of fluids in a real-time environment can be tricky and sometimes impossible to be included within a game due to the complex structure and physical equations which are required to represent them accurately. However, within a game environment it is not really necessary to have physically accurate representations of fluid but have something that looks like it and that has some of its physical properties. In this paper we present a fast and stable technique for representing fluids in a real-time environment which is based on Navier-Stokes equations but have been adapted so that visual quality and speed are the prime importance. We also show that the technique can be easily coded by providing source code to a demo application along with this paper. Our algorithm runs in real-time for a 2D grid of a reasonable size on a Standard PC which has DirectX included with it.
Tuesday, 17 March 2009
Gannt Chart Update
Monday, 16 March 2009
16/03 Update
After my meeting with Dr Lucas some questions have appear about of the forces are going to be applied in term of direction and magnitude which I haven't really thought about. The way round this was an idea of having to clicks to apply the force. This in turn would give a direction and magnitude for these two coordinates and would be simple to calculate.
We also talk about me doing my report and how it would be best to do the introduction at the end of the schedule rather than doing it this week. Therefore my Gantt chart will be alter to effect this change which will be up tomorrow along with a progress report after my meeting with Dr Özveren.
Tuesday, 10 March 2009
Progress Report
Work Done
Most of the work that has been done since the project began is research into the Jos Stam’s work especially into his techniques for stable fluids which is techniques required if the fluid is to be included in a game environment. Also research in to Navier-Stokes equations has been done to get a understanding how they are used and what each of the terms included in the equations mean. Once an understanding was developed then it was decided between me and my supervisor that it would be best to start building my application earlier because it will help me understand the functions of the Navier-Stokes equations more and also allow for more time if any problems occur. The class which contains all the functions of the Navier-Stokes equations has been created with some problems cropping up along the way. The main problem that occurred was the pointers used was not being evaluated correctly which took a couple of weeks to solve which is longer than I hoped but with me starting the application earlier and spending more time working on the application I believe I still have enough time to complete it.
Work in progress
Currently I’m working on creating the visual aspects of the fluid. I am trying to get a 2D grid which will show the changes of density within a fluid when a force is implied. This force will be applied by the use of a mouse click onto the grid which is something else that I am working on. The visual aspects are currently going to represent in DirectX.
Work still to be done
There is still work to be built into the application which will deal with stationary objects which I want to be included into the application. Another thing that needs to be achieved as well is the boundary calculations for the fluid. Currently at the moment it is set to a basic box but I plan on expanding it to have ‘free surfaces’ which is discussed by Nick Foster and Dimitri Metaxas. The application also has to be tested by looking at the performance of the application and the look of the fluid. Then once this application has been built the final report and presentation will be prepared and written up before the project completion date 22nd May.
Thursday, 5 March 2009
05/03 Update
So the goals to be achieved are:
Sort the problem with the output.
Get the mouse input included into the application.
Wednesday, 11 February 2009
Update 11/02
Hydrophobia teaser trailer
This week's goals are:
- Get the velocity step for the application built in.
- Get a visual representation of the fluid done.
Tuesday, 3 February 2009
Update 03/02
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
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
“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.