Updated Fluid Simulator for 2012

Happy New Year everyone! 2011 was an amazing year and I’m extremely grateful for all the love and support. Thanks for all the feedback for my fluid simulations and the Grantophone. I will try my best to get new features to you as soon as possible. I’m working alone for most of my projects, so I must admit I won’t be able to do everything instantly but I will try. To be honest, sometimes I am overwhelmed with work, but your support keeps me going! Hopefully 2012 will be even more awesome than 2011!

Also, here is a new fluid simulator for you to enjoy:
New Fluid Simulator!

And a video:

HAPPY NEW YEAR!

Grant Kot

New computer


I recently got a 15″ MacBook Pro. It has a 2.0GHz Quad Core i7, ATI 6490M, and 4GB of memory. This is my first MacBook and I am now officially going more cross-platform. I made an iPhone app with my brother’s MacBook last year, but because I haven’t had a Mac of my own I haven’t been able to update it. The video is of the simulator running on Windows but I will work on porting it to Mac and Linux. I’m also going to try to update my mobile apps, so there’s lots of work to be done. Anyway, the simulator is scaling pretty well across all the cores. I’m getting a very detailed simulation with pretty average specs. Check out the video above to see a demo.

Kinect Fire


Here’s a video of a GPU fire simulation I did a couple weeks ago. It is simulated on the GPU and uses a handful of state of the art fluid simulation algorithms. The computer specs are 2.4GHz Core 2 Duo and GTX 480.

For advection it uses the paper: A Semi-Lagrangian CIP Fluid Solver without Dimensional Splitting

For the pressure solve it uses a multi-grid iterative solver. This allows one to use a very small number of iterations for a very large domain. In the case of this simulation, 960×540.

I also compute the optical flow using a multi-grid solver. The optical flow is used to tell the velocity at which I’m moving and uses that to apply forces to the fluid.

Here is a video without Kinect interaction but with the same GPU fluid simulator.

My experience as a WP7 User and Developer

So, I’ve been a WP7 owner for just a little over half a year, and here is what I think. In general, I really like the phone and I think I made the right choice getting this phone instead of the iPhone or the Android.

I chose not to get an iPhone because Apple products cost much more for the same hardware and they also never lower their prices over time. Also, I just don’t find the iPhone to be that attractive, ergonomic or practical. I also have this preconception that the iPhone is extremely fragile. I don’t know if that preconception is justified or not, but I just know that I’ve seen a lot of people using iPhones with shattered screens and not so much with other devices. People are so scared of damaging their iPhones that they put their “revolutionarily” thin iPhones in bulky cases and when you do that the shiny glass panel on the back becomes completely pointless.

I didn’t choose the Android because that platform is so fragmented. The Android OS has to support all of those crappy low end phones that don’t have GPUs so Android never got hardware accelerated and probably won’t for some time. As a result the OS is extremely choppy.

So, I went with a Windows Phone 7 and I really like it. The UI is buttery smooth, simple, and clean. On the development side, their SDK is really nice and easy to work with. You develop Windows Phone 7 apps in C#, which is a really nice language, and you don’t have to deal with pointless low level stuff that just eats away at your time. Out of all the operating systems out today, I think that WP7 has the most potential. As a developer I also got access to the Mango beta. Mango is going to be a really big update. A lot of things will unlocked to the developers. For the users of WP7, it adds a lot of features while maintaining its clean and simple layout. Everything is really well thought out. However, here is why I’m not recommending WP7 to all my friends just yet.

  1. Despite how good I think WP7 is, I am also aware that it is still a very risky thing to commit to. It is still an early adopter product and at the moment is still missing a lot of features. That is going to improve a lot with Mango, and I feel that as they push out more updates, the update process for users will get much smoother.
  2. Being on time – This has been my main concern with Microsoft recently. WP7 is pretty late to the market. Everybody already has an iPhone or Android. People are likely to stick with what works and so I feel many people will feel awkward switching to WP7. The updates to WP7 have also been massively behind schedule. I guess most of that is due to the phone carriers but people don’t care. People associate WP7 with Microsoft and that’s who they’re going to get pissed off at.
  3. Better betas – The Mango beta is great on the software side, but unfortunately, the firmware was not updated, and according to people on forums the device manufacturers are eventually going to have to do that. So while the beta SDK provides a combined motion sensor API, there is no way to actually access the Compass in real hardware and you have to develop it in the emulator.
  4. I hate developing things in the emulator. The emulator gives no indication how your app will perform on the phone. Sometimes code more optimized for the emulator will actually perform worse on the phone. One example is people using integer arithmetic to try to speed up their computationally intensive code. But surprisingly, in the phone hardware, double precision numbers perform just as well as integers. Also, I want to try out the Combined Motion Sensor API as there are some really cool things I want to do with it for the Grantophone. I don’t want to be late to the market, but I also don’t want to do the majority of the testing on the emulator. In the real world, sensors get all kinds of noise and I want to see if the Combined Motion Sensor API is really as good as I want it to be. When testing in the emulator, you don’t get noise.
  5. Better reports – I’ve resorted to 3rd party monitoring tools for my applications because the official reports are so bad. In fact, for the Grantophone, I still have no data as to how many downloads I’ve gotten. I’ve been e-mailing back and forth with the support team for a couple months now and they still haven’t provided a fix. Extremely frustrating.
  6. Firmware – This is something I got extremely pissed off about. After the NoDo update, multi-touch broke for a lot of phones. The phone is no longer able to sustain 3 or more fingers and has ruined a bunch of apps. I’ve gotten a few reviews for my Grantophone and I got extremely upset when somebody gave me four stars out of five with the reason being that my app doesn’t sustain for more than two fingers. It makes me feel extremely frustrated that there is this glaring bug that I can do nothing about. I am trying to push UX forward with my apps by really using multi-touch as opposed to single touch. One example of this can be seen in my Fluid app where I created a completely custom UI that allows the user to simultaneously adjust multiple sliders and drag the fluid. I have always tried to push technology forward and I just wish I could have some help from whoever is responsible for this bug.I guess with this problem I am kind of in the same situation as MS with their updates. There is somebody else responsible but you are taking all the blame for it not working correctly.

Anyway, these are my thoughts. I hope I didn’t paint a negative image for you if you’re considering a WP7. I am aware that this is an early adopter product and is going to improve quite a bit over time. I know that I am going to be recommending WP7 to a lot more people once Mango comes out.

Crazier Tentacles (HTML5 Demo)

A while back I released a demo called Crazy Tentacles to the web. Today I give you… Crazier Tentacles!

The previous demo was a little boring. All it did was cycle over and over again. There was no interactivity. This one is physics based (it uses the previous formula to generate the target shapes and then physics to bring it towards that shape) and you can interact with it with your mouse. You can play around with the sliders and get lots of different rest shapes. Enjoy!

By the way, if it doesn’t work in your browser try Chrome/Safari.

The Future of the Grantophone

Hi everybody! It’s been a while since my last post. I’ve been a little busy with the school year finishing up, so I haven’t been able to work that much on my computer stuff lately. I did find the time to make a short video last night though:

I haven’t really been able to make much progress with the user interface, but I can tell you that what I have planned will be pretty awesome. I have done some cleaning up on the sound engine though. The synthesis is now faster and can handle more simultaneous oscillators. The harp mode demonstrates this by not deleting the oscillators as soon as the associated touches are released. Instead, they slowly decay to nothing, like a plucked/struck string. Because of this, at certain times of the video, there is a pretty high number of active oscillators, but the phone handles it without a problem.

I’ve also worked on cleaning up the architecture of the code and opening it up to things like filters and feedback effects such as reverb.

Also, if you’re curious, here is another sound experiment with granular synthesis. I plan on doing some cool things with that too and perhaps I will integrate something like this into the Grantophone.

Grantophone Now Available in Marketplace


Hi everyone. This is just a short blog post to announce that the Grantophone is now available on the Marketplace! You can get it right here: Grantophone

It is available for free but if you like it please support the project by donating using the donate button on my blog. If you don’t feel like donating money, I would also really appreciate if you took the time to give me some comments and suggestions. For example, what you like about it, what you don’t like about it, features you wish it had etc. Thanks!