<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Clinton,<div><br></div><div>I've been reading about the <b>vtkMultiBlockDataset</b> but I am not quite sure about how it could improve the performance.</div><div><br></div><div>From my understanding, it would store/order the polydatas in a tree structure.</div><div>But the main issue are the actors and mappers... (not the polydata itself...)</div><div>After storing my polydatas within <b>vtkMultiBlockDataset</b>, I still have to generate N actors from my N polydatas which belong to my block of interest...</div><div><br></div><div>I tried to create 1 block per polydata.</div><div><br></div><div><u>1-add polydatas in the multi block dataset using</u></div><div><b>vtkMultiBlockDataset</b>::AddBlock()</div><div><u>2-extract/append polydatas</u></div><div><b>vtkCompositeDataGeometryFilter</b> or <b>vtkMultiBlockDataset</b> ::GetBlock()</div><div><u>3-map it and visualize it through 1 actor and one mapper.</u></div><div><br></div><div><b>vtkCompositeDataGeometryFilter</b> generates 1 polydata from all polydatas, which makes picking impossible...</div><div><b>vtkMultiBlockDataset</b> ::GetBlock() will return 1 polydata, which will not improve the performance since we have to create 1 mapper and 1 actor for each polydata present in this block.</div><div><br></div><div>Is there a better practice to render all polydatas which belong to a block through multiple actors.</div><div>Am I missing something?</div><div><br></div><div>Thanks</div><div><br><div><div>On Jun 8, 2011, at 3:11 PM, Clinton Stimpson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On Wednesday, June 08, 2011 01:00:48 pm Nicolas Rannou wrote:<br><blockquote type="cite">Hi all,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Our application requires to render up to 5000x1000 PolyDatas.<br></blockquote><blockquote type="cite">Each polydata is made of 500 triangles.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">It looks like it is impossible to store all the related actors in memory<br></blockquote><blockquote type="cite">(on a machine with 48Gb RAM).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">We have been playing around with things such as "vtkStripper",<br></blockquote><blockquote type="cite">"ImmediateRendering", "ReleaseDataFlag", "BackFaceCulling", etc.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">For 1000 PolyDatas:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The best option in term of memory looks like turning "ImmediateRendering"<br></blockquote><blockquote type="cite">ON. -> 1000 actors<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">        </span>-> 60 Mb of memory usage<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">        </span>-> slow interaction<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The best option in term of interaction seems to be using the following<br></blockquote><blockquote type="cite">pipeline: vtkPolyData->vtkStripper->vtkAppend->vtkMapper->vtkActor<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">        </span>->1 actor<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">        </span>-> 90mo in memory<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">        </span>-> good interaction<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Using only one actor is not an option for us since we want to be able to<br></blockquote><blockquote type="cite">pick and change properties of each object (individually).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Would somebody have any advise?<br></blockquote><br>In this situation, I think you can get both interaction speed and memory <br>savings by putting your many vtkPolyData objects into a vtkMultiBlockDataSet <br>and rendering that with an actor or a few actors.<br><br>You could put some properties, such as colors, in the vtkPolyData instead of <br>the vtkActor. And for other properties, you could use the same actor/mapper <br>for those objects that share the properties. Or perhaps use vtkPainter to <br>customize rendering of these objects.<br><br>-- <br>Clinton Stimpson<br>Elemental Technologies, Inc<br>Computational Simulation Software, LLC<br><a href="http://www.csimsoft.com">www.csimsoft.com</a><br></div></blockquote></div><br></div></body></html>