<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><font face="Comic Sans MS">Hi All,</font><div><font face="Comic Sans MS">Instructions given for how to efficiently handle large dataset at the official</font></div><div><font face="Comic Sans MS"> wiki page doesn't contribute much to the speed improvement in my case, </font><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">that</span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">means that it's somehow boils down to the fact that I shouldn't create many actors. </span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;"><br></span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">Instead group the object which may fit into a specific actor( I shapes, S shapes, U shapes etc..),</span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">the best method that comes </span><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">in mind is that. But I don't know exactly how to insert each individual </span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">polydata </span><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">into the very same actor, all the examples use the seperate mapper, actors for this.</span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;"><br></span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">There is not an example for inserting many polydata into a single actor, </span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;"><br></span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">I'll appreciate your help,</span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;"><br></span></div><div><span style="font-family: 'Comic Sans MS'; font-size: 12pt;">Regards,</span></div><div><div><hr id="stopSpelling">From: sonyablade2010@hotmail.com<br>To: vtk@calculoandamios.com; dlrdave@aol.com; vtkusers@vtk.org<br>Date: Mon, 16 Jun 2014 13:01:52 +0100<br>Subject: Re: [vtkusers] Slow Performance with 2K actors (*.obj file)<br><br>

<style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}

--></style>
<div dir="ltr"><font size="3" face="Times New Roman">I can not guarantee that all the actors will have the same geometry, the loaded shape was just </font><div><font size="3" face="Times New Roman">for the testing purposes, in any case it'll completely depend on end-user input. AFAIK there are </font></div><div><font size="3" face="Times New Roman">even better techniques if geometry is identical such as impostor, proxy object in OpenGL. </font></div><div><font size="3" face="Times New Roman"><br></font></div><div><font size="3" face="Times New Roman">I'm trying to follow the instructions given here <a href="http://www.cmake.org/Wiki/index.php?title=VTK/FAQ&redirect=no#VTK_is_slow.2C_what_is_wrong.3F" target="_blank" style="background-color:rgb(255, 255, 255);line-height:19.049999237060547px;">http://www.cmake.org/Wiki/index.php?title=VTK/FAQ&redirect=no#VTK_is_slow.2C_what_is_wrong.3F</a> (FAQ/</font><span style="font-family:'Times New Roman';font-size:12pt;background-color:rgb(255, 255, 255);line-height:19.049999237060547px;">How to handle large data sets in VTK, )</span><div><span class="ecxmw-headline" style="font-weight:normal;"><font size="3" face="Times New Roman"><br></font></span></div><div><font size="3" face="Times New Roman"><span class="ecxmw-headline" style="font-weight:normal;">It mentions that "</span><span style="background-color:rgb(255, 255, 255);line-height:19.049999237060547px;"><u>By default VTK keeps a copy of all intermediate results between filters in </u></span></font></div><div><font face="Times New Roman"><font size="3"><span style="background-color:rgb(255, 255, 255);line-height:19.049999237060547px;"><u>a pipeline</u>" which is quite unnecessary for </span></font><span style="font-size:12pt;background-color:rgb(255, 255, 255);line-height:19.049999237060547px;">my case. In order to switch it off I should have </span></font></div><div><span style="font-size:12pt;"><font face="Times New Roman">vtkPolyDataReader so later on I can apply the following statement in order to </font></span><span style="font-family:'Times New Roman';font-size:12pt;">test the performance.</span></div><div><div><span style="font-family:'Times New Roman';font-size:12pt;"><br></span></div><div><span style="font-family:'Times New Roman';font-size:12pt;">// C++ </span></div><div><span style="font-family:'Times New Roman';font-size:12pt;">vtkPolyDataReader *reader = vtkPolyDataReader::New(); </span></div><div><span style="font-family:'Times New Roman';font-size:12pt;">reader->GetOutput()->ReleaseDataFlagOn();</span></div></div><div><span style="font-family:'Times New Roman';font-size:12pt;"><br></span></div><div><span style="font-family:'Times New Roman';font-size:12pt;">The glitch here is: I do have ObjReader instead of vtkPolyReader, vtkPOlyReader doesn't load the *.obj file,</span></div><div><span style="font-family:'Times New Roman';font-size:12pt;">in order to eliminate that do I have to load the obj file with ObjReader and copy it to the PolyReader ? </span></div><div><span style="font-family:'Times New Roman';font-size:12pt;">If so how can I do it?</span></div><div><span style="font-family:'Times New Roman';font-size:12pt;"><br></span></div><div><span style="font-family:'Times New Roman';font-size:12pt;">Regards,</span></div><br><div><hr id="ecxstopSpelling">From: VTK@calculoandamios.com<br>To: sonyablade2010@hotmail.com; dlrdave@aol.com; vtkusers@vtk.org<br>Subject: RE: [vtkusers] Slow Performance with 2K actors (*.obj file)<br>Date: Mon, 16 Jun 2014 13:25:02 +0200<br><br><style><!--
.ExternalClass p.ecxMsoNormal, .ExternalClass li.ecxMsoNormal, .ExternalClass div.ecxMsoNormal {
font-size:12.0pt;
font-family:"Times New Roman","serif";
}

.ExternalClass a:link, .ExternalClass span.ecxMsoHyperlink {
color:blue;
text-decoration:underline;
}

.ExternalClass span.ecxMsoHyperlinkFollowed {
color:purple;
text-decoration:underline;
}

.ExternalClass p {
font-size:12.0pt;
font-family:"Times New Roman","serif";
}

.ExternalClass span.ecxEstiloCorreo18 {
font-family:"Calibri","sans-serif";
color:#1F497D;
}

.ExternalClass .ecxMsoChpDefault {
font-size:10.0pt;
}

.ExternalClass div.ecxWordSection1 {
}


--></style><div class="ecxWordSection1"><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;">If all the actors have the same geometry, then you can use Shallowcopies (actor.ShallowCopy ) in a way similar to:</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;"> </span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">  <span style="color:green;">// Visualize</span></span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">  vtkSmartPointer<vtkPolyDataMapper> mapper =</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">    vtkSmartPointer<vtkPolyDataMapper>::New();</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">  mapper->SetInputConnection(reader->GetOutputPort());</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;"> </span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">  vtkSmartPointer<vtkActor> actor =</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">    vtkSmartPointer<vtkActor>::New();</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">  actor->SetMapper(mapper);</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">   renderer->AddActor(actor);</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;"> </span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;color:blue;">for</span><span style="font-size:9.5pt;font-family:Consolas;"> (<span style="color:blue;">int</span> i=0;i<2000;i++)</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">{</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">  vtkSmartPointer<vtkActor> actor2 =</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">    vtkSmartPointer<vtkActor>::New();</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;"> </span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">  actor2->ShallowCopy(actor);</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">   renderer->AddActor(actor2);</span></p><p class="ecxMsoNormal" style="text-autospace:none;"><span style="font-size:9.5pt;font-family:Consolas;">}</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;"> </span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;"> </span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;">This will reduce both the time of loading as the polydata and the mapper are created only once and also it will improve the interaction experience.</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;">There are only some parameters that can be change, like position or orientation but not the geometry in the new actors. </span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;"> </span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;"> </span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;">Regards,</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;"> </span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;">Carlos</span></p><p class="ecxMsoNormal"><a name="_MailEndCompose" target="_blank"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;"> </span></a></p><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm;"><p class="ecxMsoNormal"><b><span lang="ES" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";">De:</span></b><span lang="ES" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";"> vtkusers [mailto:vtkusers-bounces@vtk.org] <b>En nombre de </b>Sonya Blade<br><b>Enviado el:</b> lunes, 16 de junio de 2014 8:09<br><b>Para:</b> David Cole; vtkusers@vtk.org<br><b>Asunto:</b> Re: [vtkusers] Slow Performance with 2K actors (*.obj file)</span></p></div></div><p class="ecxMsoNormal"> </p><div><p class="ecxMsoNormal"><span style="font-family:"Comic Sans MS";">Ok thanks David for entry point,</span><span style="font-family:"Calibri","sans-serif";"></span></p><div><p class="ecxMsoNormal"><span style="font-family:"Calibri","sans-serif";"> </span></p></div><div><p class="ecxMsoNormal"><span style="font-family:"Comic Sans MS";">Probably construing the scene from many actors was not a good idea if you look at it from VTK side,</span><span style="font-family:"Calibri","sans-serif";"></span></p></div><div><p class="ecxMsoNormal"><span style="font-family:"Comic Sans MS";">but due to the design architecture I should have each object as a seperate entity which might have the </span><span style="font-family:"Calibri","sans-serif";"></span></p></div><div><p class="ecxMsoNormal"><span style="font-family:"Comic Sans MS";">the supplied *.obj shape or any other arbitrary shape provided by end-user and those shapes should be </span><span style="font-family:"Calibri","sans-serif";"></span></p></div><div><p class="ecxMsoNormal"><span style="font-family:"Comic Sans MS";">interactable, modifiable, etc </span><span style="font-family:"Calibri","sans-serif";"></span></p></div><div><p class="ecxMsoNormal"><span style="font-family:"Calibri","sans-serif";"> </span></p></div><div><p class="ecxMsoNormal"><span style="font-family:"Comic Sans MS";">If it wasn't AddActor() proc then what other methods I can use for that ?</span><span style="font-family:"Calibri","sans-serif";"></span></p></div><div><p class="ecxMsoNormal"><span style="font-family:"Calibri","sans-serif";"> </span></p></div><div><p class="ecxMsoNormal" style=""><span style="font-family:"Comic Sans MS";">Regards,<br id="ecxFontBreak"><br></span><span style="font-family:"Calibri","sans-serif";"></span></p><div><p class="ecxMsoNormal"><span style="font-family:"Calibri","sans-serif";">> To: <a href="mailto:sonyablade2010@hotmail.com">sonyablade2010@hotmail.com</a>; <a href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a><br>> Subject: Re: [vtkusers] Slow Performance with 2K actors (*.obj file)<br>> From: <a href="mailto:dlrdave@aol.com">dlrdave@aol.com</a><br>> Date: Sun, 15 Jun 2014 08:01:59 -0400<br>> <br>> You should probably only have 10s or 100s of actors in any given <br>> renderer. 1000s or more *actor* objects are known to be slow.<br>> <br>> Unless somebody else chimes in and contradicts me, with a speed up <br>> hint, it's probably best to restructure your code to use fewer actors.<br>> <br>> <br>> HTH,<br>> David C.<br>> </span></p></div></div></div></div></div></div>                                           </div>
<br>_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers</div></div>                                       </div></body>
</html>