Implementing a Black Hole Raytracer

Team Members: Kenny Chen, Leonardo Tang, Lawrence Zhao

Our project is inspired by the renderings of the black hole Gargantua in the movie Interstellar and the work that several scientists and engineers had to grow through to make arguably the most impressive representation of a black hole at its time. We hope to take the Pathtracer we made in Project 3-1 and apply the necessary changes needed to make it appropriate for this task. The final product (which we may or may not be able to reach) will be an animated black hole.

Problem Description

Here we would like to solve the problem of realistic black hole rendering. This problem is important because the visualization of black holes provide interesting scientific insights into their behaviors. Furthermore, the ability to render black holes is also applicable in an artistic way, as was shown in Interstellar. We anticipate that some challenges will include understanding some of the equations, as none of us have advanced physics backgrounds, and rendering time, as using a particle-based approach will require a large number of particles for realistic rendering. Our current idea is to use some shader programs to manipulate a texture to create the distortion effect or some particle-based method used to render the accretion disk, as in Interstellar.

Goals and Deliverables

Ultimately, we hope to be able to create images that resemble those of the black hole from Interstellar, seen below. The quality of the image will be difficult to quantify, but it should meet a common sense baseline for accuracy. In terms of performance, we hope to be able to complete these renders in a short amount of time, essentially 5 minutes or less.

Black Hole from Interstellar

For our Milestone Deliverable, we plan to deliver a quality rendering of a Schwarzschild black hole. For our Final Deliverable, we plan to deliver a quality rendering of a Schwarzschild black hole with its accretion disk.


As for quality assurance, we expect the rendering to take a significant amount of time, so our performance metric would be the similarity of our final rendered image to the images of black holes and diagrams of the light physics found by scientists.


In completing this project, we hope to be able to understand the differences that comes with ray-tracing when light is allowed to bend. We also hope to be able to understand how accurate the visual representation of black holes in media, like Interstellar, is.


Should we get ahead to schedule, we hope to be able to model the physics of the black hole as it changes over time, which will allow us to create animations of the black hole.

Schedule

Week 1: Understand physics regarding travel of light particles and caveats with ray-tracing a black hole. Add the necessary methods to existing code from Project 3-1 to model the non-linear movement of light around a black hole, and update raytracing with these new curves instead of rays


Week 2: Implement rendering of Schwarzschild black hole. At this point, we should be able to generate an image of a black hole with a clearly defined event horizon and the expected trajectories of light near the event horizon.


Week 3: Implement rendering of accretion disc. We will add particles made of diffuse materials that should scatter the light near the event horizon and model the deflection of light over/under the event horizon.


Week 4: Implement animation and create spinning black hole video/gif. In the end, we want to simulate a proper 3D model of the black hole to show that we properly captured the way light behaves around a black hole at all angles

Resources

The paper that the scientists and engineers who worked on Interstellar wrote can be found here. It is quite dense and the math/physics that underlies the concepts in the paper may be somewhat beyond our reach.


Instead, we will probably rely more on the work of Riccardo Antonelli, a PhD student Scuola Normale Superiore in Italy. He built a web application that simulates a Schwarzschild black hole, which can be found here, along with a breakdown of the math and physics behind his work. He also provides a more detailed explanation of his methods here. His open source code can be found here.


Given that we are utilizing our Pathtracer from Project 3-1, we are seeking to implement the rendering in C++. This should be able to allow for the performance boost over Antonelli's, which is in Python. However, it is also difficult to say how the tradeoffs between the unique functions in NumPy and using a lower level language like C++ will compare. In terms of software, we don't plan to use anything other than our personal computers and the instructional machines.




Return to Home Page