[yt-users] Interactive Volume Rendering Screenshot

Matthew Turk matthewturk at gmail.com
Wed Jan 3 08:32:57 PST 2018


Hi Nicole,

On Tue, Jan 2, 2018 at 3:28 PM, Nicole DyAnn Melso <ndm2126 at columbia.edu>
wrote:

> Hello,
>
>
>
> I am attempting to create a series of volume rendered images of my
> simulation at different time steps so that I can compile them into a movie.
> I want to use the maximum intensity fragment shader, which I believe is
> only available in the yt interactive volume rendering with OpenGL (I've
> looked into simply using a maximum intensity projection, but this is only
> available on-axis). I would like to be able to take a screenshot of the
> OpenGL window created when I run the yt interactive volume rendering, but
> I'm having difficulty adding this feature to the volume rendering source
> code in my local yt directory. Below is the modification I’ve made to the
> code as well as a screenshot of the problem. I have no prior experience
> with OpenGL.
>
>
>

Ah!  This looks pretty close, I think.  What might be happening is a
strangeness with how the bytes are coming back, and maybe even
double-writing based on the start/end and which buffer is being read.  I
can't quite say for sure.

But!  Since you're experimenting with the OpenGL stuff anyway, I would
suggest checking out the branch for interactive VR that I have in an open
pull request:

https://github.com/yt-project/yt/pull/1452

This isn't *completely* working, but it *should* work precisely for what
you're doing.  The API is considerably different, but also much simpler.
This is an example script that gets your started:

import yt
import yt.visualization.volume_rendering.interactive_vr as ivr
ds = yt.testing.fake_amr_ds()

data_source = ds.sphere("c", 0.5)

ivr.SceneGraph.from_ds(data_source, ("index", "x"))

This will dump you into an IPython shell that has access to variables such
as "scene" which has an "image" property.  I'm hoping to have the time to
finish this up in the next month or so and get it accepted upstream in yt.

This also has the ability to do offscreen rendering, but the API is
(currently) slightly more complicated.  Hope that helps!

-Matt


> */yt/visualization/volume_rendering/interactive_vr.py*
>
>
>
> 846     def _retrieve_framebuffer(self):
>
> 847                    ox, oy, width, height = GL.
> glGetIntegery(GL.GL_VIEWPORT)
>
> 848   +               my_buffer = GL.glReadBuffer(GL.GL_FRONT)
>
> 849    -               debug_buffer = GL.glReadPixels(0, 0, width, height,
> GL.GL_RGB,    GL.GL_UNSIGNED_BYTE)
>
> 849    +              debug_buffer = GL.glReadPixels(0, 0, width, height,
> GL.GL_RGB,    GL.GL_UNSIGNED_BYTE, my_buffer)
>
> 850                    arr = np.fromstring(debug_buffer, “unit8”, count,
> width*height*3)
>
> 851                    return arr.reshape((width, height, 3))
>
>
>
>
>
> */yt/visualization/volume_rendering/interactive_loop.py*
>
>
>
> 187      def  __call__(self, scene, camera, callbacks):
>
> 188                  while not glfw.WindowShouldClose(self.window) or
> self.should_quit:
>
> 189                              callbacks(self.window)
>
> 190                              if callbacks.draw:
>
> 191                                          camera.compute_matrices()
>
> 192                                          scene.set_camera(cameara)
>
> 193                                          scene.render()
>
> 194
> glfw.SwapBuffers(self.window)
>
> 195                                          callbacks.draw = False
>
> 196   +                                     arr =
> scene._retrieve_framebuffer()
>
> 197   +                                     write_bitmap(arr, “test.png”)
>
> 198                              glfw.PollEvents()
>
> 199                              yield self
>
> 200                              glfw.Terminate()
>
>
> The simulation is a single rectangular box, but the screenshot I get with
> the above code is multiple boxes that look like they should be overlaid?
> Maybe there is a simpler method of accomplishing this? I'd appreciate any
> suggestions.
>
> Thanks,
> Nicole Melso
>
> --
> Nicole Melso
> NSF Graduate Research Fellow
> Columbia Astronomy Department
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20180103/19aa8e7e/attachment-0002.html>


More information about the yt-users mailing list