<div dir="ltr"><br><div>Hi Nicole,</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 2, 2018 at 3:28 PM, Nicole DyAnn Melso <span dir="ltr"><<a href="mailto:ndm2126@columbia.edu" target="_blank">ndm2126@columbia.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">
















<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">Hello, </font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><span><font face="arial, helvetica, sans-serif"> </font></span></p>

<p class="gmail-m_8983147417993916255gmail-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-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif"> </font></b></p></div></blockquote><div><br></div><div>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.</div><div><br></div><div>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:</div><div><br></div><div><a href="https://github.com/yt-project/yt/pull/1452">https://github.com/yt-project/yt/pull/1452</a><br></div><div><br></div><div>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:</div><div><br></div><div><div>import yt</div><div>import yt.visualization.volume_rendering.interactive_vr as ivr</div><div>ds = yt.testing.fake_amr_ds()</div><div><br></div><div>data_source = ds.sphere("c", 0.5)</div><div><br></div><div>ivr.SceneGraph.from_ds(data_source, ("index", "x"))</div></div><div><br></div><div>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.</div><div><br></div><div>This also has the ability to do offscreen rendering, but the API is (currently) slightly more complicated.  Hope that helps!</div><div><br></div><div>-Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif">/yt/visualization/volume_<wbr>rendering/interactive_vr.py<span></span></font></b></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><span><font face="arial, helvetica, sans-serif"> </font></span></p>

<p class="gmail-m_8983147417993916255gmail-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-m_8983147417993916255gmail-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-m_8983147417993916255gmail-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-m_8983147417993916255gmail-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-m_8983147417993916255gmail-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-m_8983147417993916255gmail-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-m_8983147417993916255gmail-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-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><span><font face="arial, helvetica, sans-serif"> </font></span></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif"> <span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif">/yt/visualization/volume_<wbr>rendering/interactive_loop.py<span></span></font></b></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><b><font face="arial, helvetica, sans-serif"> </font></b></p>

<p class="gmail-m_8983147417993916255gmail-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-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">188                  while
not glfw.WindowShouldClose(self.<wbr>window) or self.should_quit: <span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">189                           <wbr>   callbacks(self.window)<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">190                           <wbr>   if
callbacks.draw:<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">191                           <wbr>               camera.compute_matrices()<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">192                           <wbr>               scene.set_camera(cameara)<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">193                           <wbr>               scene.render()<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">194                               <wbr>           glfw.SwapBuffers(self.window)
<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">195                           <wbr>               callbacks.draw
= False<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-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-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif"><span style="background:lime">197   +                           <wbr>         
write_bitmap(arr, “test.png”)</span><span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">198                           <wbr>   glfw.PollEvents()<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">199                           <wbr>   yield
self<span></span></font></p>

<p class="gmail-m_8983147417993916255gmail-MsoNormal" style="margin:0in 0in 0.0001pt"><font face="arial, helvetica, sans-serif">200                           <wbr>   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><span class="gmail-HOEnZb"><font color="#888888"><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-m_8983147417993916255gmail_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>
</font></span></div>
<br>______________________________<wbr>_________________<br>
yt-users mailing list<br>
<a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
<a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" rel="noreferrer" target="_blank">http://lists.spacepope.org/<wbr>listinfo.cgi/yt-users-<wbr>spacepope.org</a><br>
<br></blockquote></div><br></div></div>