After cleaning up and optimizing my SPH fluid simulator a bit, I implemented marching cubes to generate a mesh over the particles. It’s not terribly efficient but it does alright, usually running 7-9 fps for 400 particles without any tricks like threading or GPU acceleration. Much of it is based on the marching cubes definitions by Paul Bourke, the site is extremely useful and gives a great explanation of the algorithm.
I used two different methods to calculate the scalar field, one being the classic Metaballs by Blinn, and the other is the Averaged Center method by Zhu and Bridson (2005). The averaged center method is supposed to be smoother, but maybe I didn’t have enough particles for it to be really smooth or the radius was too small.
I wrote a basic SPH fluid simulator based on the papers by Muller and Kelager, written in C++, OpenGL, and NGL. The hardest part was finding parameters to balance pressure and viscosity to keep it from exploding. The first video had surface tension disabled for speed, the second is with surface tension active. The only optimization is done with premultiplying the kernel coefficients and a uniform grid. Videos are below.
Houdini Digital Asset for a city generator. The tool can take a black and white image to trace the road layout, or a user-manipulated set of curves to interactively control the roads. The tool also includes options for building geometry, placement, and terrain.
This is a group project I worked on while in the Master’s program at Bournemouth University. I was responsible for simulations, environment details, scripting, and pipeline management. Simulations were done mostly in Rayfire and 3ds Max, while other work was done in Maya, MEL, and Adobe suite. The back wall was also created using Rayfire to shatter it.
Maya assignment on “dynamism.” Frankenstein was modeled in Maya, then sculpted and painted in Mudbox. The maps from Mudbox were then plugged into a misss_fast_skin shader, which was then plugged into the color for an mia shader to try to incorporate specular maps as the misss_fast_skin shader didn’t really work with it. This was my first shot at subsurface scattering: I learned that the subsurface scattering greatly mutes any detail in the maps. If I had time I would’ve gone back and repainted exaggerated details in. The hair is Maya fur applied to a patch of geometry for the scalp and groomed.
Generator and chains both use a layered mia shader for rusty metal. The rust is a lambert layer on top of a metal shader, using high contrast procedural mountain texture for the weight. The walls use an image texture and displacement map. The electricity is done using Maya’s lightning, with variation on segments.
I would’ve liked to spend more time on lighting and learning about rendering and compositing, as that is not an area I’m particularly strong in. Next time!
Here’s a fiery tornado-like effect I created in Maya to learn about fluids. I hadn’t worked much with fluids outside of tutorials, so I spent a lot of time figuring out what everything did. So there’s four nParticle emitters at the base, with a strong vortex field causing the swirl. I offset the vortex just a bit so that the spiral moves slightly from side to side, a bit like a real tornado would as it travels. A gravity field is also pulling the particles upwards. I’ll post a video of just the particles later to show how the movement was planned out. Then two of the emitters were turned into fluid emitters to get a deeper, more layered effect even though I didn’t have much time. The most important fluid contents were temperature and fuel, which controlled the shading. Then another fluid was added, just wider than the central column of fire to get the wisps of stray flames. Then it was rendered using mental ray using the Production preset.