View Full Version : How does smoke rendering (like DD's Storm) work?
08 August 2006, 10:05 AM
OK, this isn't really a PF question, but I figured people in here might know a bunch about the subject.
I'm interested in discussing the theory of how a volumetric smoke/cloud/gas renderer like Digital Domain's STORM works. What exactly are the particles, at render time. Planes, spheres? What is their shape, texture and lighting?
I've read lots of articles on volumetric rendering, ray-casting and what-not, but few deal with in-depth theory about how to light smoke puffs for rendering, like you can see in Digital Domain's three-colored particle lighting passes.
Check these Digital Domain making-of's to see what I mean:
xXx avalanche (http://www.digitaldomain.com/links/features/behindscenes/xxx1/xxx1.htm) ("Computer Generated Avalanche" pass)
Motorola Pebl (http://www.digitaldomain.com/links/comm/behindscenes/BHS1/bhs1.htm) (rising smoke and blowing dust)
Now, I'm not a programmer, but I do like to have basic understand of the tech stuff anyway. :) So, here's what I'm thinking:
They can't be lighting a cloud of billboards, because billboards don't react too well to directional lighting..
Unless of course the billboards are normal mapped to simulate more round shapes?
They can also be "spheric billboards", meaning a cluster of spheres, all camera-mapped with a billboard type smoke texture? That would give them the visual benefit of billboards, but make them lightable like spheres.
They could also just be totally normal sphere (with falloff), and the whole volumetric thing is in the lighting?
Any inside knowledge?
08 August 2006, 12:44 PM
I would go for that cluster of spheres approach. Pete Draper faked volumetrics with instanced blobmeshs in DTE, using a light dependant material(mix or blend maps with shadow/light falloff for the mask)adds a lot too.
08 August 2006, 04:05 PM
I know for a fact the Avalanche thing was done in Houdini using its volumetric particles. They showed it at the Houdini User Group meeting at Siggraph a while back. Look at Afterburn for a similar approach, ie its volumetric rendering driven by particle animation if I remember correctly. Probably something similar in the Peble Ad. One thing they are doing, I think, is using the colored volumetrics to do the lighting/shading/color correction in post using probably Nuke.
08 August 2006, 04:33 PM
I think I can answer this as I've worked at Digital Domain for some time and have used VoxelB and it's latest evolution Storm. I can't really get into specifics, but the volumetric particle concepts you see with Afterburn are similar - placing volumetric primitives at particle locations and tweaking with noise. Now sending particle channel data to a volume renderer from Houdini is quite a bit more flexible than MAX, so there's some added capabilities there. As for VoxelB/Storm, it goes quite a bit farther beyond just dealing with volumetric primitives. There's some capabilities in there that I've used for generating wispy snow blowing off of surfaces (The Day After Tomorrow) and creating splashing water (Flags of Our Fathers).
The three color passes you see in those renderings aren't as special as they would seem. If you render your Key, Fill and Backlight(Rim) with different RGB values, you can tweak the lighting contributions proportionally in a compositing app. In this case we have a Nuke gizmo that essentially does this for us.
Now, if you really want to know if it's possible to make something akin to the avalanche from XXX with MAX and Afterburn: yes.
08 August 2006, 05:01 PM
There's some interesting gubbins on the intricacies of Storm here - http://odforce.net/forum/index.php?showtopic=3332
...and a few words on the pebl spot here - http://odforce.net/forum/index.php?showtopic=3532&hl=pebl
08 August 2006, 12:29 AM
...I'm interested in discussing the theory of how a volumetric smoke/cloud/gas renderer like Digital Domain's STORM works. What exactly are the particles, at render time. Planes, spheres? What is their shape, texture and lighting?...
I am no expert in this, but I believe that there is really no particle there. By ray marching through the volumetric primitive (with all its size, noise, color, density...information) the renderer spits out actual pixel colors accurate to some degree of sampling. In that specific information is passed out to the renderer saying 'make this pixel this color'. All in all it is not that 'smart', so we attach them to particles, other objects, or deamons in the case of AB to make them behave more as we need. I believe this is why things like gaseous fire and smoke sims need to use a bounding area grid to define a 3d resolution of information that can move the volumetric information in 'smarter' ways, relative to each other or other objects.
But again, I am no expert in this, so I may be totally off track here.
08 August 2006, 12:29 AM
odd...it posted twice.
08 August 2006, 02:45 AM
Where volumetrics can get really interesting is when you're able to manipulate buffers in strange and exotic ways. There are things I can do with Storm that I just can't see doing with anything currently commercially available. One of the best things about working with voxels is that they don't have the kind of overhead that geometry does. Imagine filling a buffer with millions of volumetric specks distributed along a surface....
08 August 2006, 06:45 AM
anybody have a website for voxelb i googled it and not a web page for it just people talking about it in fourms?
08 August 2006, 01:08 PM
voxelb is Digital Domain's proprietary voxel engine for houdini. Since D2 Software is not selling it as one of its products, there is no website. You may be able to find some more info on the links Mr Moose posted or on houdini related sites. As Brandon mentioned it has advantages over other commercial products so they probably aren't going to sell it anytime soon as that gives them a competitive advantage over other production houses.
08 August 2006, 01:43 PM
Thanks for all the responses! So, "volumetric primitives" is the hot word.
So how do these render? Raymarching through a 3D defined field of voxels (where a voxel is a 3 dimensionally defined area placed at the center of a particle?), and then rendering the noise/smoke/billboards, inheriting the calculated raymarching information?
Or is that totally off?
08 August 2006, 05:34 PM
Sort of, in a nutshell. The main advantage with volume rendering is you don't have to deal with geometry which is only a surface.
08 August 2006, 06:12 PM
Thanks again, Brandon. :thumbsup:
One final question, if you (or anyone) has the time...
In the mentioned three-colored-lighting renders, are all lights 100% ray-marching (or, volume ray casting) calculations, or is there in the final result any traditional lighting based on surface normals (like spheres), at all?
I seem to recall a years-old Siggraph article about cloud rendering, which described pretty much the same sort of ray casting as in the Wikipedia article (http://en.wikipedia.org/wiki/Volume_ray_casting), except in step (1) they would march the rays from the sun, not from the POV. And step (3) in the Wikipedia article mentions shading based on surface models... so I'm a bit puzzled here. ;)
08 August 2006, 08:16 PM
There are quite a variety of methods that can be used for volume/illumination integration. Generally, the more lights you use in a volume renderer, the more calculations (time) is needed. But this isn't always the case, especially with certain methods that use Spherical Harmonics to assist illumination.
08 August 2006, 11:09 AM
Thank you, it's been a great help!
09 September 2006, 04:43 AM
XXX Avalanche - Max / Afterburn.. hooooooow :)
I am trying to pull together some nature effects for a clients logo.. clouds, explosions etc etc, I have tried an avalanche but it comes off look quite poxy.
I made a pflow scene that had wisps of particles comeing from the logo like snow blowing off the top of a mound (like in Day After..) and then an avalanche to come down behind and swamp the logo.. can't get it looking convincing.
Any tips, samples, links would be really helpful here.
09 September 2006, 05:21 AM
post what you've got so far so we can add some suggestions based on what we see or don't see. The way I would go about it is probably where you're already at, but you probably just need to tweak the afterburn settings / particle counts.
09 September 2006, 02:35 AM
XXX's avalanche used volume rendering technology not unlike Afterburn. Not long afterward, during Day After Tomorrow its capabilities expanded and now, several years later, it's been rewritten and expanded well beyond the original capabilities. Now with that said, there's certain very Houdini specific things that made that avalanche possible that would be difficult to replicate in MAX with PFlow and ABurn.
09 September 2006, 02:54 AM
What I have at the moment is a particle system that emits 20 particles that reference a group of 'rocks' I have set up. From that I collision spawn some particles that I have an AB node in and I am trying to get that dusty, snowy, cloudy sort of look that would come from the rocks / things as they are rolling down the hill. I tried to base it on smoke but it comes off looking not 'thick enough' as to what I am trying to achieve based on the way snow looks when being blown around.. again I am trying to use 'the day after..' shots as there are shots (even from the trailer) where you see snow blowing off objects... THAT is what I am trying to hit.
01 January 2007, 08:49 AM
Guys, thanks for all the great help regarding volumetric rendering theory! Here's what I came up with, using Max without plugins:
01 January 2007, 11:28 AM
Wohoo i didn't knew this topic regarding D2 commericals already going on. I was asking same topic regarding rgb passes at Afterburn forum. Great amount of information regarding all the stuff
Thanks everybody for sharing such a useful knowlege. :applause:
11 November 2007, 12:47 PM
sorry to bump an old thread, but I just wanted to post the fruit of all that insight you helpful people posted here. I created a tut with what I believe is the best way to fake alle this volumetric hullaballo without plugins:
11 November 2007, 12:47 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.