<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi all,<div class=""><br class=""></div><div class="">I have a file (pandas + hdf --> final.h5) that contains positions of <em class="">"seed points"</em> over time. It is of the format (tuple with x,y,z positions):</div><div class=""><br class=""></div><div class=""><pre class="lang-py prettyprinted prettyprint"><code class=""><span class="pln">              t </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">\                 t </span><span class="pun">=</span><span class="pln">  </span><span class="lit">1</span><span class="pln">\                    t </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pln">\
</span><span class="lit">0</span><span class="pln">   </span><span class="pun">(</span><span class="lit">33.8</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">36.6</span><span class="pun">)</span><span class="pln">        </span><span class="lit">0</span><span class="pln">   </span><span class="pun">(</span><span class="lit">35.7</span><span class="pln"> </span><span class="lit">17.9</span><span class="pln"> </span><span class="lit">37.1</span><span class="pun">)</span><span class="pln">        </span><span class="lit">0</span><span class="pln">   </span><span class="pun">(</span><span class="lit">33.3</span><span class="pln"> </span><span class="lit">17.9</span><span class="pln"> </span><span class="lit">39.4</span><span class="pun">)</span><span class="pln">
</span><span class="lit">1</span><span class="pln">   </span><span class="pun">(</span><span class="lit">32.3</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">38.5</span><span class="pun">)</span><span class="pln">        </span><span class="lit">1</span><span class="pln">   </span><span class="pun">(</span><span class="lit">33.8</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">36.6</span><span class="pun">)</span><span class="pln">        </span><span class="lit">1</span><span class="pln">   </span><span class="pun">(</span><span class="lit">35.7</span><span class="pln"> </span><span class="lit">17.9</span><span class="pln"> </span><span class="lit">37.1</span><span class="pun">)</span><span class="pln">
</span><span class="lit">2</span><span class="pln">   </span><span class="pun">(</span><span class="lit">34.8</span><span class="pln"> </span><span class="lit">17.9</span><span class="pln"> </span><span class="lit">40.1</span><span class="pun">)</span><span class="pln">        </span><span class="lit">2</span><span class="pln">   </span><span class="pun">(</span><span class="lit">32.3</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">38.5</span><span class="pun">)</span><span class="pln">        </span><span class="lit">2</span><span class="pln">   </span><span class="pun">(</span><span class="lit">33.8</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">36.6</span><span class="pun">)</span><span class="pln">
</span><span class="lit">3</span><span class="pln">   </span><span class="pun">(</span><span class="lit">32.2</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">38.8</span><span class="pun">)</span><span class="pln">        </span><span class="lit">3</span><span class="pln">   </span><span class="pun">(</span><span class="lit">34.8</span><span class="pln"> </span><span class="lit">17.9</span><span class="pln"> </span><span class="lit">40.1</span><span class="pun">)</span><span class="pln">        </span><span class="lit">3</span><span class="pln">   </span><span class="pun">(</span><span class="lit">32.3</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">38.5</span><span class="pun">)</span><span class="pln">
</span><span class="lit">4</span><span class="pln">   </span><span class="pun">(</span><span class="lit">35.3</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">39.9</span><span class="pun">)</span><span class="pln">        </span><span class="lit">4</span><span class="pln">   </span><span class="pun">(</span><span class="lit">32.2</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">38.8</span><span class="pun">)</span><span class="pln">        </span><span class="lit">4</span><span class="pln">   </span><span class="pun">(</span><span class="lit">34.8</span><span class="pln"> </span><span class="lit">17.9</span><span class="pln"> </span><span class="lit">40.1</span><span class="pun">)</span><span class="pln">
</span><span class="lit">5</span><span class="pln">   </span><span class="pun">(</span><span class="lit">34.4</span><span class="pln"> </span><span class="lit">17.9</span><span class="pln"> </span><span class="lit">37.0</span><span class="pun">)</span><span class="pln">        </span><span class="lit">5</span><span class="pln">   </span><span class="pun">(</span><span class="lit">35.3</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">39.9</span><span class="pun">)</span><span class="pln">        </span><span class="lit">5</span><span class="pln">   </span><span class="pun">(</span><span class="lit">32.2</span><span class="pln"> </span><span class="lit">18.0</span><span class="pln"> </span><span class="lit">38.8</span><span class="pun">)</span></code></pre><div class="">I am trying to animate the path these 6 <em class="">"seed points"</em> inside a 3d pipe model by iterating them over time(t). I used the sphere animation example and wrote the following code:</div></div><div class=""><br class=""></div><div class=""><pre class="lang-py prettyprinted prettyprint"><code class=""><span class="kwd">import</span><span class="pln"> vtk
</span><span class="kwd">import</span><span class="pln"> os </span><span class="com">#needed for directory listing & sorting</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> numpy </span><span class="kwd">as</span><span class="pln"> np
</span><span class="kwd">import</span><span class="pln"> pandas </span><span class="kwd">as</span><span class="pln"> pd

seeds </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6</span><span class="pln">
timeS </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pln">

</span><span class="kwd">class</span><span class="pln"> vtkTimerCallback</span><span class="pun">():</span><span class="pln">
    </span><span class="kwd">def</span><span class="pln"> __init__</span><span class="pun">(</span><span class="pln">self</span><span class="pun">):</span><span class="pln">
        self</span><span class="pun">.</span><span class="pln">i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">

    </span><span class="kwd">def</span><span class="pln"> execute</span><span class="pun">(</span><span class="pln">self</span><span class="pun">,</span><span class="pln"> obj</span><span class="pun">,</span><span class="pln"> event</span><span class="pun">):</span><span class="pln">
        </span><span class="kwd">for</span><span class="pln"> i </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="pln">len</span><span class="pun">(</span><span class="pln">timeS</span><span class="pun">)-</span><span class="lit">1</span><span class="pun">):</span><span class="pln">
            </span><span class="kwd">for</span><span class="pln"> sd </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="pln">len</span><span class="pun">(</span><span class="pln">seeds</span><span class="pun">)):</span><span class="pln">                  
              self</span><span class="pun">.</span><span class="pln">sphereActor</span><span class="pun">[</span><span class="pln">sd</span><span class="pun">].</span><span class="typ">SetPosition</span><span class="pun">(</span><span class="pln">finalMatrixh5</span><span class="pun">[</span><span class="pln">i</span><span class="pun">][</span><span class="pln">sd</span><span class="pun">])</span><span class="pln">            
              iren </span><span class="pun">=</span><span class="pln"> obj
              iren</span><span class="pun">.</span><span class="typ">GetRenderWindow</span><span class="pun">().</span><span class="typ">Render</span><span class="pun">()</span><span class="pln">


finalMatrixh5 </span><span class="pun">=</span><span class="pln"> pd</span><span class="pun">.</span><span class="pln">read_hdf</span><span class="pun">(</span><span class="str">'final.h5'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'endFrame'</span><span class="pun">,</span><span class="pln"> mode</span><span class="pun">=</span><span class="str">'r'</span><span class="pun">)</span><span class="pln">   

</span><span class="kwd">def</span><span class="pln"> main</span><span class="pun">():</span><span class="pln">
    </span><span class="com"># Create a sphere</span><span class="pln">
    sphere </span><span class="pun">=</span><span class="pln"> vtk</span><span class="pun">.</span><span class="pln">vtkSphereSource</span><span class="pun">()</span><span class="pln">
    sphere</span><span class="pun">.</span><span class="typ">SetRadius</span><span class="pun">(</span><span class="lit">0.25</span><span class="pun">)</span><span class="pln">
    sphere</span><span class="pun">.</span><span class="typ">SetThetaResolution</span><span class="pun">(</span><span class="lit">4</span><span class="pun">)</span><span class="pln">
    sphere</span><span class="pun">.</span><span class="typ">SetPhiResolution</span><span class="pun">(</span><span class="lit">4</span><span class="pun">)</span><span class="pln"> 

    sphereMapper </span><span class="pun">=</span><span class="pln"> vtk</span><span class="pun">.</span><span class="pln">vtkPolyDataMapper</span><span class="pun">()</span><span class="pln">
    sphereMapper</span><span class="pun">.</span><span class="typ">SetInputConnection</span><span class="pun">(</span><span class="pln">sphere</span><span class="pun">.</span><span class="typ">GetOutputPort</span><span class="pun">())</span><span class="pln">

    actorlist </span><span class="pun">=</span><span class="pln"> list</span><span class="pun">()</span><span class="pln">
    ren1 </span><span class="pun">=</span><span class="pln"> vtk</span><span class="pun">.</span><span class="pln">vtkRenderer</span><span class="pun">()</span><span class="pln">

    sphereActor </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">vtk</span><span class="pun">.</span><span class="pln">vtkActor</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> i </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="pln">len</span><span class="pun">(</span><span class="pln">seeds</span><span class="pun">))]</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> obj </span><span class="kwd">in</span><span class="pln"> sphereActor</span><span class="pun">:</span><span class="pln">
        actorlist</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="pln">obj</span><span class="pun">)</span><span class="pln">

    </span><span class="kwd">for</span><span class="pln"> sd </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="pln">len</span><span class="pun">(</span><span class="pln">seeds</span><span class="pun">)):</span><span class="pln">
        sphereActor</span><span class="pun">[</span><span class="pln">sd</span><span class="pun">].</span><span class="typ">SetMapper</span><span class="pun">(</span><span class="pln">sphereMapper</span><span class="pun">)</span><span class="pln">
        ren1</span><span class="pun">.</span><span class="typ">AddActor</span><span class="pun">(</span><span class="pln">sphereActor</span><span class="pun">[</span><span class="pln">sd</span><span class="pun">])</span><span class="pln">     

    ren1</span><span class="pun">.</span><span class="typ">SetBackground</span><span class="pun">(</span><span class="lit">0.1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.4</span><span class="pun">)</span><span class="pln">
    renWin </span><span class="pun">=</span><span class="pln"> vtk</span><span class="pun">.</span><span class="pln">vtkRenderWindow</span><span class="pun">()</span><span class="pln">
    renWin</span><span class="pun">.</span><span class="typ">AddRenderer</span><span class="pun">(</span><span class="pln">ren1</span><span class="pun">)</span><span class="pln">
    renWin</span><span class="pun">.</span><span class="typ">SetSize</span><span class="pun">(</span><span class="lit">1600</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1600</span><span class="pun">)</span><span class="pln">
    iren </span><span class="pun">=</span><span class="pln"> vtk</span><span class="pun">.</span><span class="pln">vtkRenderWindowInteractor</span><span class="pun">()</span><span class="pln"> 
    iren</span><span class="pun">.</span><span class="typ">SetRenderWindow</span><span class="pun">(</span><span class="pln">renWin</span><span class="pun">)</span><span class="pln">
    style </span><span class="pun">=</span><span class="pln"> vtk</span><span class="pun">.</span><span class="pln">vtkInteractorStyleTrackballCamera</span><span class="pun">()</span><span class="pln"> 
    iren</span><span class="pun">.</span><span class="typ">SetInteractorStyle</span><span class="pun">(</span><span class="pln">style</span><span class="pun">)</span><span class="pln">

    renWin</span><span class="pun">.</span><span class="typ">Render</span><span class="pun">()</span><span class="pln"> </span><span class="com">#</span><span class="pln">
</span><span class="com"># Sign up to receive TimerEvent</span><span class="pln">
    iren</span><span class="pun">.</span><span class="typ">Initialize</span><span class="pun">()</span><span class="pln"> </span><span class="com">#initialize the rendering process   </span><span class="pln">
    cb </span><span class="pun">=</span><span class="pln"> vtkTimerCallback</span><span class="pun">()</span><span class="pln">
    cb</span><span class="pun">.</span><span class="pln">sphereActor </span><span class="pun">=</span><span class="pln"> sphereActor
    iren</span><span class="pun">.</span><span class="typ">AddObserver</span><span class="pun">(</span><span class="str">'TimerEvent'</span><span class="pun">,</span><span class="pln"> cb</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">)</span><span class="pln">
    iren</span><span class="pun">.</span><span class="typ">CreateRepeatingTimer</span><span class="pun">(</span><span class="lit">200</span><span class="pun">)</span><span class="pln">   


    iren</span><span class="pun">.</span><span class="typ">Start</span><span class="pun">()</span><span class="pln">



</span><span class="kwd">if</span><span class="pln"> __name__ </span><span class="pun">==</span><span class="pln"> </span><span class="str">'__main__'</span><span class="pun">:</span><span class="pln">
    main</span><span class="pun">()</span></code></pre><div class="">This does the job in creating spheres for the number of <em class="">"seed points"</em> and moves the spheres in the correct manner. However, the movement of these spheres are so slow and the window freezes such that no interaction is possible or super slow (zoom in, rotation etc.). Instead of 6 seed points even if I try to iterate a single <em class="">seed</em> through the points, it is so memory hogging and terribly slow. I am not sure where I am going wrong as this should be a straight forward animation with vtk where a few spheres move through their respective positions over time. Something wrong with the way I am adding actors or iterating? Any pointers? I am happy to try any other method to do this as well (perhaps, with Qt?)</div></div><div class=""><br class=""></div><div class="">Thanks a lot.</div><div class=""><br class=""></div><div class="">regards</div><div class="">Thangam.</div></body></html>