Black Hole and Accretion Disk

This documents my exploration into representing Black Holes. I’ve also made a more recent project using what I learned for making Nebula, it is documented in my sketchbook page.

Newtonian Gravity

I am currently investigating a method I developed that incorporates Newton’s Law of Gravitation as a POP force. I have a demo recorded below and beside it is the POP wrangle I used to implement the force. I haven’t rendered anything with this yet as I am still dialing in the fluid simulation and particle to VDB conversion, but it is looking promising.

In the below example, the values are strange because of the scale, but the equation itself is accurate to and when adjusted to the scale the simulation is on (by making the fluid very heavy and the black hole very light) the effect seems to be what you would expect.

In the example below I created a scenario in which 3 rogue stars meet in the vicinity of a black hole or some other high-mass high-density object. In the center of the simulation is a sphere that acts as a sink, removing any fluid that interacts with it. The gravity point is placed at the center of this sink object through the POP wrangle ‘gravity_obj’ variable. This creates an event horizon, which can be accurately scaled through the use of the Schwartzchild radius equation with the POP wrangle’s ‘m2’ variable as the mass component.

Past Renders

These are previous attempts. Neither of them implemented the gravity force above and were primarily artistic endeavors.

Process

My current method is to simulate the accretion disk and jets with particles, as they are much easier to control. Although my current method is exploring the gravity POP force I created, my past methods have implemented combinations of axis and attraction forces, along with custom velocity field SDFs to drive the motion and effectively fake the accretion.

After the particles are simulated I find converting them to VDBs is best for representing cosmic matter. This is done either through using the points as a source for a pyro simulation, or through Houdini’s many other particles to VDB workflows.

I then find exporting and rendering the VDBs in Blender is my best option as I have not figured out a good solution for the lensing effect within Houdini, and Blender renders tend to be faster on my machine.

Gravitational Lens

My current solution for lensing is to create a transparent material on a sphere with an IOR value that scales as it approaches the sphere’s center. It works well for now, but it takes a lot of trial and error to implement.

On the right is my first attempt, where I mainly focused on the lens. For the disk, I used a volume with noise-driven density. On the left is a visualization demonstrating the effects of a gravity lens.

Future Improvements

My next step is to work on a better gravitational lens effect. My goal is to be able to input a mass and get a Schwarzschild radius and accurate surrounding lens effect. With this accuracy to mass, I would also be interested in shading the accretion disk based on the properties of whatever gas or galaxy is being eaten by the black hole.

I am also interested in working with scientific simulation data. Given that my current method is based on a particle simulation, it seems feasible to switch out my own POP setup with accurately simulated data and get some exciting results.