<div dir="ltr">
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">Hello, </font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><span><font face="arial, helvetica, sans-serif"> </font></span></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">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. <span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif"> </font></b></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif">/yt/visualization/volume_rendering/interactive_vr.py<span></span></font></b></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><span><font face="arial, helvetica, sans-serif"> </font></span></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">846 def _retrieve_framebuffer(self): <span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">847
ox, oy, width, height = GL. glGetIntegery(GL.GL_VIEWPORT)<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif"><span style="color:black;background:lime">848 +</span><b><span style="color:red;background:lime"> </span></b><span style="color:red;background:lime"> </span><span style="background:lime"> my_buffer
= GL.glReadBuffer(GL.GL_FRONT)</span><span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif"><span style="background:red">849 - debug_buffer = GL.glReadPixels(0,
0, width, height, GL.GL_RGB, GL.GL_UNSIGNED_BYTE)</span><span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif"><span style="background:lime">849 + debug_buffer = GL.glReadPixels(0, 0, width,
height, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, my_buffer)</span><span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">850 arr = np.fromstring(debug_buffer, “unit8”,
count, width*height*3)<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">851 return arr.reshape((width, height, 3)) <span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><span><font face="arial, helvetica, sans-serif"> </font></span></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif"> <span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif">/yt/visualization/volume_rendering/interactive_loop.py<span></span></font></b></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif"> </font></b></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">187 def __call__(self, scene, camera, callbacks): <span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">188 while
not glfw.WindowShouldClose(self.window) or self.should_quit: <span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">189 callbacks(self.window)<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">190 if
callbacks.draw:<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">191 camera.compute_matrices()<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">192 scene.set_camera(cameara)<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">193 scene.render()<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">194 glfw.SwapBuffers(self.window)
<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">195 callbacks.draw
= False<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background:lime"><font face="arial, helvetica, sans-serif">196 + arr =
scene._retrieve_framebuffer()<span></span></font></span></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif"><span style="background:lime">197 +
write_bitmap(arr, “test.png”)</span><span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">198 glfw.PollEvents()<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">199 yield
self<span></span></font></p>
<p class="gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">200 glfw.Terminate()
<span></span></font></p>
<div><font face="arial, helvetica, sans-serif"><br></font></div><div><br></div><div>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. </div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Thanks, </font></div><div><font face="arial, helvetica, sans-serif">Nicole Melso </font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><font face="arial, helvetica, sans-serif">-- <br></font><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div><font color="#000000" face="arial, helvetica, sans-serif">Nicole Melso</font></div><div dir="ltr"><font face="arial, helvetica, sans-serif">NSF Graduate Research Fellow </font><div><font face="arial, helvetica, sans-serif">Columbia Astronomy Department </font></div></div></div></div></div></div></div>
</div>