This will probably be the final post for the project. Ultimately I can see that I was over-ambitious with the project, however I am still really pleased with the results. Although I have still not managed to implement the fluid simulation in 3D, with more time I believe it would have been possible. With regards to the cloud simulation. I am still working on the equations and putting them into the existing solver. Once that has been done I will have a 2D cloud simulation which works on both iPhone 3GS and 1st Gen. iPad.
On top of this I have added a nice and simple user interface which corresponds to apples human interface guidelines, something I believe to be very important when creating and designing applications for mobile devices.
I will be showing the finished product off at Expo-Tees if any one reading this is attending.
Hope to see you there.
Hey, its been ages. worked out that for the past 3 weeks i have been working 7 days a week 15 hours a day. totalling at over 100 hours a week spent in labs doing work D:
A bit of an update on the project.
i have a 2d implementation of the previous implementation but on a mobile device.
Currently working on the 3D version.
Hoping to have all of the programming for this project done by the end of the month leaving 2 weeks to finish the dissertation which is more than enough as i have already made a good start and made notes on exactly what i want to write about.
Thanks for reading.
I really need to stop leaving my blog posts so long, at least now though I have some real progress to show and a proper update.
^ This is a link to my implementation of a 2D navier stokes solver. I will expand upon this by making it into 3D space before implementing the atmospheric fluid dynamics required to produce clouds, as you can see in the video by using mouse input i am able to manipulate the the forces and apply impulses to manipulate the particles. however this is not possible what i want in my final product, so for now i will keep the code but leave it commented until i make a decision.
Excuse the terrible grammer and format in this post, it has been written in a hurry.
It has been a long time since my last post, I mentioned that my time was monopolised by other modules, that was an understatement. for the past two weeks since last monday I have been working 16/18 hour days to get everything I want to done. I am pleased to say I got all of my work done and handed in on time but it has taken its toll. since monday I have been taking it a bit more relaxed catching up on other work which has been neglected as well as taking the past few days to solidly work of this project.
I am at the stage after considerable reading and researching to begin implementing my space discretisation method.
I might take a simple approach and just do a 3D grid of cube vertices which would require 8 vertices, a centre point as well as the bool variables for affecting the particle simulation which may not seem like a lot, but on a large scale simulation, will eventually add up and mean a lot more calculations.
Another solution to this would be what I am calling ‘Space Cubes’. a space cube is simply a centre point, booleans and a globally defined size which would be a lot less storage.
to calculate if a particle is inside a space cube and therefore should be affected by its booleans I can just get the distance between the particle and the centre point of the space cube, if the distance is less/greater than (centre point +/- size) then it is inside of the space cube.
This method seems much more efficient to me however I may consider testing both of them and measuring their performance in realtime by profiling the application.
Sorry the the lack of updates as of late, I have two assignments due for next week and they have been monopolising my time, however I have spend some time becoming more familiar the xcode Instruments as well as generating queries for gathering data when using openGL ES.
In order to familiarise myself with queries and Instruments, I have been creating small demo applications and gradually making them more complex in order to test and understand how to use the software and queries effectively.
The next step for my project will be to use my knowledge of Instruments and queries to test my particle system and set an average so that when I further develop the system, I can compare how efficient it is compared to previous versions.
Using Xcode allows me to take advantage of the Instruments applications, which enables you to create a set of ‘tests’ which are used on the application whilst its running. By using this software it allows you to keep track of things like memory allocations and over-allocated objects affectionately called zombies, as well as other cool stuff like memory leaks. After a bit of playing around and looking through the documentation, I tested my particle system and did not find any memory leaks as of yet, there did seem to be a lot of allocations however I believe the amount of allocations to be unique per app and seeing as I am doing a particle system. It is bound to require lots of allocations.
I have just uploaded a video to youtube, my first since joining youtube, and its of my particle system that I have working, currently on the iOS simulator since I broke my 3GS by trying to upgrade to iOS 6 😦
Click here for video of my particle system
(Link opens in new tab)
Also found a good resource for the rendering of static and dynamic clouds. It is around 150 pages so I think thats what I will start reading through tonight.
After a brief skim through, they use a voxel grid for rendering dynamic clouds, which I have previously mentioned as a viable method. This confirms my research now I need to decide the best way. I think I will first start by profiling my particle system now, so that I can compare the results once my project is complete. Then start doing back ground research on 3D Arrays, Coupled Map Lattices and Voxel Grids and compare them before making my decision on which one to implement.
Whilst looking around on the internet trying to find examples of how 3D games are made on the iPhone, I stumbled across what I now consider to be the best iOS library for 3D games.
Its call iOS Scene Graph Library or ISGL.
I have been playing around with it for about an hour now and I believe it will be more than suitable for use as a rendering engine in my project.
Initially I had wanted to do all of the rendering of images and particle systems myself, but now, I feel that if I offload some of the time consuming and trivial things over to a 3rd party engine, I can focus on the more complicated aspects such as the physics and implementation of a grid in 3D space.
I am considering simply using a 3D array for this, its simple, effective and it works. However, from what I have read and mentioned earlier, I could implement a ‘Coupled Map Lattice’ which is effectively dividing 3D space into cubes and allowing variables such a boolean statements to be set within them. It could be that this method may be faster than using a 3 dimensional array but testing will have to be done.
I may consider implementing both once I have a basic particle system for testing working. This way I can analyse each method, compare the data, make an informed decision on which one to choose and have some interesting findings to discuss in my dissertation.
Thanks for reading.
I have begun writing my dissertation, as I do not have word on my mac, I am currently using some software called ‘Scrivener’. It’s proven to be an excellent piece of software so far. I currently have 13 pages, which will do for today, I really wanted a skeleton document done so that it will be easy to add more pages and text when I am ready to write more about the development of the application.
For now, I am going to grab the references I posted a while back and get those added into the dissertation.
I will be programming later today, so hopefully I will have a couple of things to show tomorrow.
I have been preparing a short presentation to summarise the components of my project and research as to present within a group consisting of my peers and project supervisor. Once I have put it them into a nice format and not just a series of notes to elaborate on vocally, I’ll upload them.
On a side note I expressed concern regarding the speed we are taking with the final project, my concerns were met with understanding and I have come to the conclusion that I will begin implementing ‘disposable’ projects in a sense of producing small applications with the intention of experimenting with features of x-code such as profiling and experimentation of the possible solutions I can take so that the research I am conducting as well as the programming I will be doing, eventually, will start merging together naturally to find the best solution based on informed decision making.
Also, sorry for not writing anything over christmas, I have been busy reading about complicated subjects but I have also come up with a possible idea to implement on mobile devices once I have successfully completed university.
The idea is inspired from a friend of mine’s project which is using parallel computing.
My idea is to research and design an implementation of parallel computing on mobile devices.
Whether this is plausible or not does not matter to me at the moment as it is simply a thought, however once I find myself with some free time, it is something I would like to research further.
*Side note, Picture of clouds.