<div dir="ltr">If you post a small compilable example that illustrates the performance issues we might be able to help.<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 29, 2013 at 6:09 PM, M W <span dir="ltr">&lt;<a href="mailto:sonomw@yahoo.com" target="_blank">sonomw@yahoo.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif">Hi David,<br><br>I&#39;m setting the input to the vtkImageResliceMapper from a vtkImageImport object.  However since I&#39;m using SetInput instead of SetInputConnection shouldn&#39;t the update not matter?  As I understand it, this would remove any reliance on the vtkImageImport object once its GetOutput method is invoked.  However I tried your suggestion and called the Update function on the vtkImageImport object before the for loop and did not observe any performance increase.<br>
<br>Another thing I&#39;ve noticed is that if I render two render windows simultaneously (one displaying the slice image, one displaying the full volume), the time is not simply the sum of the two separately.  That is, if it takes 5 seconds to run the for loop with just the slice render window, and 4 seconds to run the for loop with just the
 volume render window, the time to run the for loop with both is not 9 seconds, but more like 14 seconds.  This is another reason I would like to really up the speed, since ultimately we&#39;d like to be able to show both views simultaneously.  Maybe this new mystery sheds some light on the problem?<br>
<br>Wasn&#39;t quite sure what you meant about the vblank, but it sounds like you&#39;re saying there might be some kind of sleep call?<br><br>Thanks again for all the help, I&#39;m at a loss here!<br><br>--Matt<br><div><span><br>
</span></div><div><br></div>  <div style="font-family:times new roman,new york,times,serif;font-size:12pt"> <div style="font-family:times new roman,new york,times,serif;font-size:12pt"> <div dir="ltr"> <hr size="1">  <font face="Arial"><div class="im">
 <b><span style="font-weight:bold">From:</span></b> David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;<br> <b><span style="font-weight:bold">To:</span></b> M W &lt;<a href="mailto:sonomw@yahoo.com" target="_blank">sonomw@yahoo.com</a>&gt;
 <br><b><span style="font-weight:bold">Cc:</span></b> &quot;<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a>&quot; &lt;<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a>&gt; <br>
 </div><b><span style="font-weight:bold">Sent:</span></b> Thursday, August 29, 2013 5:47 AM<div><div class="h5"><br> <b><span style="font-weight:bold">Subject:</span></b> Re: [vtkusers] vtkRenderer vs vtkRenderWindow performance<br>
 </div></div></font> </div><div><div class="h5"> <div><br>Hi Matt,<br><br>Are you using some kind of VTK image reader to load the image?<br>Make sure that the whole image is cached in memory by doing this<br>after you have set up the reader:<br>
<br>reader.Update();<br><br>Otherwise, it&#39;s possible that on each render, the reader is hitting<br>the disk to load the slices that are needed for that render.  That<br>would be a big performance killer.  Ideally, you should also call<br>
Update() on whatever filter immediately precedes the mapper.<br><br>The fact that you get a max of 60fps after removing all actors<br>suggests that it might be waiting for
 a vblank every time it renders,<br>though I might be wrong about that.<br><br> - David<br><br>On Thu, Aug 29, 2013 at 1:10 AM, M W &lt;<a href="mailto:sonomw@yahoo.com" target="_blank">sonomw@yahoo.com</a>&gt; wrote:<br>
&gt; Hi David,<br>&gt;<br>&gt; Thanks for all the info!  I&#39;ve reimplemented our system using<br>&gt; vtkImageResliceMapper, but unfortunately the performance seems about the<br>&gt; same.  Here&#39;s a (really) stripped-down version of what my test case looks<br>
&gt; like now:<br>&gt;<br>&gt; mapper = vtk.vtkImageResliceMapper()<br>&gt; mapper.SetInput(input)<br>&gt; mapper.SetSlicePlane(plane)<br>&gt; actor.SetMapper(mapper)<br>&gt; renderer.AddActor(actor)<br>&gt;<br>&gt;<br>&gt; start_time = time.time()<br>
&gt; for i in range(100)<br>&gt;      mapper.SetSlicePlane(new plane)<br>&gt;<br>&gt;      renderWindow.Render()<br>&gt; end_time = time.time()<br>&gt; print &#39;Elapsed time = &#39;,
 end_time - start_time<br>&gt;<br>&gt; Currently I&#39;m getting about 15 fps, which is better, but would be great to<br>&gt; get above 30.  An interesting thing I noticed is that even if I comment out<br>&gt; the AddActor line, the for loop still takes about 1.6 seconds to run.  With<br>
&gt; zero actors to render (I verify this before the loop by calling<br>&gt; VisibleActorCount) I would expect the loop to complete nearly<br>&gt; instantaneously.  Any additional thoughts?  Thanks again.<br>&gt;<br>&gt; --Matt<br>
&gt;<br>&gt;<br>&gt; ________________________________<br>&gt; From: David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;<br>&gt; To: M W &lt;<a href="mailto:sonomw@yahoo.com" target="_blank">sonomw@yahoo.com</a>&gt;<br>
&gt; Cc: &quot;<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a>&quot; &lt;<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a>&gt;<br>&gt; Sent: Tuesday, August 27, 2013 10:32 PM<br>
&gt; Subject: Re: [vtkusers] vtkRenderer vs vtkRenderWindow performance<br>&gt;<br>&gt; Hi Matt,<br>&gt;<br>&gt; Are you reslicing the whole volume on each render?  For it to be going<br>&gt; that slow, the vtkImageReslice class must be producing 200 output<br>
&gt; slices for each render, which doesn&#39;t make sense because the renderer<br>&gt; is (I&#39;m guessing) only displaying one slice at a time.  In other<br>&gt; words, I think that if you reworked your pipeline you would probably<br>
&gt; see things speed up by a factor of about 200.<br>&gt;<br>&gt; I recommend that you use vtkImageResliceMapper instead of<br>&gt; vtkImageReslice.  See this wiki page for details:<br>&gt; <a href="http://www.vtk.org/Wiki/VTK/Image_Rendering_Classes" target="_blank">http://www.vtk.org/Wiki/VTK/Image_Rendering_Classes</a><br>
&gt;<br>&gt; About the timings, please note that vtkRenderer::Render() is not a<br>&gt; user method and you should never, ever call it directly.  It is only<br>&gt; meant to be called from the vtkRenderWindow.  When you call it<br>
&gt; directly as in your code example, it doesn&#39;t do what it is supposed to<br>&gt; do, so the time you are getting for it is invalid.  I won&#39;t explain<br>&gt; any further than that.<br>&gt;<br>&gt; David<br>&gt;<br>
&gt; On Tue, Aug 27, 2013 at 10:55 PM, M W &lt;<a href="mailto:sonomw@yahoo.com" target="_blank">sonomw@yahoo.com</a>&gt; wrote:<br>&gt;&gt; Hi all, I&#39;m relatively new to VTK and am having some issues with<br>&gt;&gt; performance.  I am trying to achieve interactive slicing of a roughly<br>
&gt;&gt; 200x200x200 vtkVolume using vtkImageReslice, displayed through a 640x480<br>&gt;&gt; wxVTKRenderWindow in
 Python.  This is all working great, but it&#39;s slow,<br>&gt;&gt; maybe 5 - 10 frames per second, making the application difficult to use.<br>&gt;&gt; I&#39;m running this on a Windows 7 / Intel Core i7 / nVidia Geforce GTX<br>
&gt;&gt; laptop.<br>&gt;&gt;<br>&gt;&gt; The main bottleneck is the call to the wxVTKRenderWindow Render function.<br>&gt;&gt; Out of curiosity, I timed the speed of the Render function of the<br>&gt;&gt; vtkRenderer directly, and this was nearly an order of magnitude faster.<br>
&gt;&gt; Is<br>&gt;&gt; this to be expected?  I figured the bulk of the work would be in the<br>&gt;&gt; vtkRenderer.  I&#39;m fairly new to all of this so I&#39;m not quite clear on what<br>&gt;&gt; work is performed by the<br>
&gt;&gt; renderer/rendercollection/renderwindow/interactor,<br>&gt;&gt; but is there a way to get the vtkRenderWindow Render to better match the<br>&gt;&gt; speed of the vtkRenderer Render?<br>&gt;&gt;<br>&gt;&gt; I get very smooth
 results rotating the entire volume within the<br>&gt;&gt; wxVTKRenderWindow, so it seems somewhat unexpected that rendering a single<br>&gt;&gt; slice is so much slower.<br>&gt;&gt;<br>&gt;&gt; My test case looks something like this:<br>
&gt;&gt;<br>&gt;&gt; start_time = time.time()<br>&gt;&gt; for i in range(100):<br>&gt;&gt;      self.sliceRenderer.Render()<br>&gt;&gt;      #self.sliceRenderWindow.Render()<br>&gt;&gt; end_time = time.time()<br>&gt;&gt; print &#39;Elapsed time = &#39;, end_time - start_time<br>
&gt;&gt;<br>&gt;&gt; Any ideas?  Thanks!<br>&gt;&gt;<br>&gt;&gt; --Matt<br>&gt;<br>&gt;<br><br><br></div> </div></div></div> </div>  </div></div><br>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Unpaid intern in BillsBasement at noware dot com<br>
</div>