Rendering Jet Engine Exhaust
Team
- Jawed Karim
- Anders Hagvall
Overview
We wanted to reproduce the effect of looking through a mass of turbulent hot air as produced by a jet engine.
Physical explanation
Different temperatures inside the air mass result in varying air densities. The varying densities in turn change the index of refraction throughout the air mass. As a result, a viewer who looks through the hot air sees a blurry and perturbed scene behind it.
Approach
The physically correct model for this is both complex and will probably require huge rendering times, so our first approach will be to see if we can reproduce the same phenomenon using an approach that is less computationally expensive but still yields realistic-looking results. Our first try will be to investigate the possibility of treating the hot air as a solid primitive. To achieve the blurred effect when looking through this primitive, we would vary the index of refraction throughout the material. To reproduce the turbulence shown in the image above, the index of refraction cannot merely be random. The pattern of the varying indexes of refraction must follow a turbulent pattern.
We plan to do this by employing a technique similar to bump mapping, where the normal vectors of a surface are perturbed according to a bump map. However in our case we would not be dealing with normal vectors, but rather we would be perturbing the index of refraction inside a material according to a "refraction map". We plan to generate a refraction map that is essentially a generated texture of smoke, which naturally contains turbulent patterns.
Refraction map:
When intersecting rays with our air mass primitive, we would perform lookups inside this refraction map, and each pixel in the grey-scale refraction map would tell us what index of refraction to use in our intersection computation to generate the transmission-ray.
Original scene |
|
Refraction map |
|
Result |
|
+ |
|
= |
|
In case this approach turns out to work fine there are lots of things we could extend the project with to make it more versatile. We could work on making our method independent of the camera position, or extend the idea to work in an animated simulation over time.
For the scene geometry we plan on approximating the scene background as far away enough to be just a textured plane. For the aircraft we plan on parsing a 3d-model in some format into pbrt and use the triangle mesh for the simulation. For the purpose of showing the physical effect of the project, a fully detailed texturing of the aircraft is not necessary, but in case time will be on our favor, implementing glowing jet engines and other details would be cool.