Refraction deformations caused by movement of atmospheric gas

I know how to make solid glass deform refractions in Blender Render, using Raytrace transparency and the correct IOR value. But there’s a similar thing I’ve been wondering about: How do you simulate refraction deformations caused by the movement atmospheric gas?

In real life, this effect is frequently seen when an object is very hot, and causes air to flow upward so quickly you see everything in the vicinity deform. If you heat up a metal plate positioned horizontally, you’ll see the phenomenon above its surface. Most modern FPS games implement this, making rocket explosions deform the air around them.

For now I’m still using Blender Render, but I’d like to know for both for it and Cycles.

Perhaps this helps http://www.blenderguru.com/videos/how-to-create-heat-distortion/

Thanks. The method suggested there should work in some cases, but not quite what I’m looking for. A plane placed in front of the camera won’t help with precise heat distortion.

Say I want to animate a jetpack like those in sci-fi movies, which is worn on the back and has a muzzle pointed downward (shooting hot matter). I’d want the heat to distort downward from the muzzle, in a cone shaped pattern and fading with distance. Is there a way to achieve this too?

One idea that comes to mind is to use the same basic method, but make some smoke with the smoke simulator, render it on its own layer, and use that either to mask the distortion, or as the vector for the displace node itself. (the main idea in that tutorial is making a distorted texture and using it as a vector for the displace node with it, the rest is just an “serving suggestion”, really).

The heat distortion you’re looking for is caused by the variation in refractive indices between the hot exhaust of the jetpack and the cool air surrounding it. So, considering that, if Blender would allow it, you might be able to use the smoke simulator to mimic this effect by varying the refractive index of the “smoke,” and possibly applying a transparent texture to it (if that’s even possible).

I don’t use the smoke simulator, so I’m completely clueless regarding its limitations, but this approach should work, at least in theory.

Very GOOD assumption I use this metod with good results, and you can use particles isnted of smoke.

Hmmm… thinking about it that would be a great way! I could create a separate render layer and render smoke to that. The background of this layer should be black / alpha, and the smoke white… while it should be masked by the normal layer to avoid distortions behind walls. Then under render nodes, I can use a node to distort the normal render with the smoke render. This is possible by using the Displace -> Distort node.

Only apparent issue is that the distortion won’t scale with distance. So after the area of distortion is set to the smoke layer, the strength must be set to the Z-buffer of that layer. Such should assure that if the smoke is located further from the camera, it creates smaller waves.

This looks like it will solve the issue. Thanks for the help and suggestions :slight_smile:

Im guessing but you can use velocity or particle life information.
-Particle Object mask is our field of Heat distorts .
-Particle Life value are our Cloud+Distortion value.
Closer to emiter the smaler cloud+Distortion value.

I have to check it ;).