Thursday, February 16, 2012

Oriented Granule Population

I figured it's about time that I post something relevant to FX, graphics, and simulation. Without giving away too much, I wanted to post some preliminary photos of the research I've been helping Seth Holladay with here at BYU. His work centers around efficient granule simulations. This particular portion of the problem relates to the need for granular level detail in a render as opposed to a displaced surface.

For the layman, I'll explain. Most ground surfaces, even in movies, is done like this:

This is great in most cases, but what if I want to get really close to the dirt and see individual pieces? Ever see Spiderman 3?

Well, in order to put all of those sand particles onto the sandman's skin, the artists had to instance thousands of particles and then pack them in so they would look right. Our research eliminates that process and instead instances the granules right on the surface (which can also be used in a Level of Detail situation at render-time based on camera distance from the surface, but that's another story). The process of instancing the granules onto the surface is simple, but can basically be explained in 4 steps. I won't give great detail here, but a trained eye ought to be able to pick out what's going on from the photos. You can get the details from Seth's paper once it's published.

1. Instance Granules within a volume.

2. Resolve Granule Penetrations.

3. Delete Out of Bounds Granules.

4. Settle Granules with a few steps of Gravity.

I hope you enjoyed the sneak peek! I'll most likely post more on this topic as we make some more progress.

Intelligent Everything - Mass Collaboration

Why does life run in real time? (And yes, I am serious.)

The greatest super computer on earth would take more than a week to run a physically-precise simulation of millions of sand granules falling through my fingers, but it happens naturally in an instant. Without going into the philosophical or religious details, it appears as though each particle knows how to react to everything around it. (You're thinking, "Did he just imply a grain of dirt is intelligent?" Yup. And they're pretty good at what they do too.)

There are a host of subjects I'd love to discuss about that doctrine, but I'd like to prove just one thing at the moment. The tools for solving the world's toughest problems may no longer be super computers. According to the NY Times todays fastest super computer is "able to make 8.2 quadrillion calculations per second, or in more technical terms, 8.2 petaflops. The performance of [this super computer] is equivalent to linking around one million desktop computers, Mr. Dongarra said." Only a million? Come on guys...we already hit the one billion PC mark back in 2008, not to mention recently surpassing something like 150M smartphone users...

What if large simulations or other tasks could be decentralized and farmed out to each of these users? Graphics aficionados already know the importance of parallelized processing, but let's take it a step farther. Conceptually, give each particle its own set of rules, processor, and access to communicate with the nearest 10 particles around it. Sure, the method has a unique set of problems, but nothing innovative comes easily. Gamification, crowd sourcing, and social networks are already conceptual proof of the idea. I want to see it done.