In the above movies of Metal Gear there are several scenes of pouring (and bouncing) rain (and some snow). My question is, does anyone have an idea of how these (realtime?) animations are generated (and how one could do it in OpenGL)?? I know that it could be done using particle systems, but this seems like a large number of particles especially if collisions (for the bouncing rain) must be computed.
It is very convincingly faked. If you look at the movie in your second link, near the beginning, look very closely at the stairs handrail. You can see how there is a “cloud of splattering rain” (almost like a cloud of smoke) around the railing. The splatering off the surface is done in that manner. How they determine where to have this splatting occur, I dont know. They could hard code it into the world, or they could examine the geometry at runtime and create the “clouds of splattering rain” whereever the dot product of the surface normal and up vector is greater than zero. And they could even scale it so that the spattering effect grows as the surface gets more horizontal. Alternatively, instead of using the up vector in the calculation, they could also use the rain velocity vector.
I tend to think that for the world, the splattering is precalculated, because you only see it in certain areas (the handrailing has it, but the steps dont). But for the player, it looks to be dynamically calculated (perhaps with the dot product method), because as his body moves, the splattering occurs in different spots.
As far as the falling rain, that is very easily done with a large poly with a mostly transparent texture. Unreal Tournament had a simple form of this in the “Dreary Outpost” board. You could see rain out the windows, but it was just 1 or 2 polys with a rain texture and the texture coords were just being offset slightly each frame (like sliding the texture along the polygon). Of course with only a few rain polys, you lose the effect if you walk through them (which is why they were places outside the window). However, give modern graphics speed, you could easily put a few hundred rain planes all at slightly different distances from the camera, some parallel, some at angles, etc. This (with a bit of care) should be quite convincing. And as the camera moves, you either move the rain planes with it, or you remove planes that go behind the camera and enable some new rain planes farther away. You can also use animated textures, so that you can make it look like the rain is being driven by gusts of wind (that video looks like it did this). Or you could also achieve that same effect by varying the number and/or transparency of the rain planes rahter than using an animated texture.
Thats my take on it
P.S. Metal Gear Solid 2 is the only reason I have even considered getting a PS2. It seems just incredible.
Definetly a great demo! But, after reading over the Popsy Team website, and each of the members home pages, all of their programmers say they use DirectX. Is there any documentation with the invitation that says that OpenGL is used? Just curious, as that I really liked the rain effects and wanted to investigate how it was done.
I’ll be studying that one more carefully. Thanks for the link again Paddy. Scene.org seemed, for a long time, to be only 2d art and little 3d programming. I’ll be paying closer attention to it now.
What’s really interesting about that VIP2 demo is that it uses an orthographic projection! There is no glLoadMatrix anywhere either. Makes me suspect they do all the transforms and simply pass projected polys. That’s not TnL friendly is it?
If you really want to see something astonishing look at “Please The cookie thing” from AARDBEI (can’t remember wich party won) and look what they managed to put in just 64kb ;D
Another one to give a look is “Lapsus” by MATURE FURK (try to anagram the name of the group and…) who won ASSEMBLY2000 demo competition. (That’s much better than VIP Invitation)
For rain effects I thinks the best way to implement it is particles with a good phisics managment, there should be a good tutorial on Fatech and on Gamedev (I belive the one on fatech is better, but PORTOGUESE only).
Originally posted by rIO: For rain effects I thinks the best way to implement it is particles with a good phisics managment
Now, nothing is impossible, but I sure as heck wouldnt even want to think about implementing realistic rain (like the MGS2 movie) via particles in any real time engine. At least not on any current hardware.
rIO :
Lapsus may be a beautiful demo, but as many “badly” coded scene stuff it won’t run in Win2K/NT because of illegal memory accesses… Too Bad !
At least VIP2 is clean coded.
I’m no so new to the scene … if you remember the Amiga Wild Copper demos, you may also remember me … names have changed but people stay
Hey, good old Amiga Thats what I grew up with… making demo’s for Amiga (and C64 before). We always dreamed of things we can see in demos now, and thought, they will be possible maybe in 20 years…