Skip to content

Volume Raymarching #554

@JohnPiwinski

Description

@JohnPiwinski

Hello,

Thank you for the excellent library. It has been very useful for visualizing homotopies in my topology class.

I was hoping to use your library to visualize the Poincare ball model of hyperbolic space. This is a picture of the ball model in d=2 dimensions; however, I was hoping to visualize the d=3 dimensional case.

Image

With your library, I have already been able to plot hyperbolic geodesics, cones, and horospheres, which have been very helpful in gaining an intuition for Mobius transforms. I was curious if I could plot a 3D hyperbolic function inside the ball model. By modifying an existing surface nets library and introducing an alpha channel, I have been able to visualize the isosurfaces of certain Mobius transforms. Unfortunately, this approach doesn't give me enough resolution towards the boundary of the ball. The hyperbolic metric actually explodes to infinity here, so like the above d=2 drawing, the features of the function become infinitely small. Of course, I don't expect to be able to render everything, but I was hoping to get a degree of resolution similar to the drawing. Once the changes in the function become smaller than a single cube in the surface nets approach, my plotter fails to pick up on these details and gives an incorrect depiction.

I searched around on the internet and read about volumetric raymarching. I am able to define a scalar field by mapping the interior of the ball into hyperbolic space and evaluating my target function at the resultant point. Practically, I think this would amount to me being able to define a function

fn hyperbolic_color_plot(x : Vec3) -> Srgba

where the magnitude of x is assumed to be less than or equal to 1. I read about Texture3D and isosurface material. Do you think it would be possible for me to create a rendering like the following except for a sphere?

Image

Best regards,
John Piwinski

P.S.
Here are what current visualizations of lattice structures in hyperbolic space look like. They can quickly become quite busy, so I was hoping to make a color plot instead and then restrict it to a small neighborhood of a lattice point to get a laser-focused understanding of my function.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions