Final Project
Group members
Jawed Karim
Anders Hagvall
Proposal
Overview
The idea behind this project is to reproduce the effect of looking through a mass of turbulent hot air as produced by a jet engine. Different temperatures inside the air mass result in varying air densities throughout it. The varying densities mean that the index of refraction varies throughout the air mass. As a result, a viewer who looks through the hot air will see a blurry and perturbed scene behind it.
Physical Sense
The physically correct way to model this would be to create a 3D space in which we numerically assign a density to small volumes of air, and then intersect a ray in many successive tiny increments, each time updating the direction of the ray according to these densities. Behind an aircraft exhaust, we would have to simulate the effect of the jet engine shooting out a density flow, that spreads throughout the scene with time, changing the density of each air volume.
Approach
The physically correct model for this is both complex and will probably generate huge rendering times, so our first approach will be to see if we can reproduce the same phenomenon an approach that is less computationally intensive 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. When intersecting rays with our air mass primitive, we would perform lookups inside the refraction map, and each pixel in the grey-scale refraction map would tell us what index of refraction to use in our transmission-ray computation.
Refraction map:
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.