[vtkusers] Large number of actors

Nicolas Rannou Nicolas_Rannou at hms.harvard.edu
Wed Jun 8 17:48:38 EDT 2011


Hi Clinton,

I've been reading about the vtkMultiBlockDataset but I am not quite sure about how it could improve the performance.

From my understanding, it would store/order the polydatas in a tree structure.
But the main issue are the actors and mappers... (not the polydata itself...)
After storing my polydatas within vtkMultiBlockDataset, I still have to generate N actors from my N polydatas which belong to my block of interest...

I tried to create 1 block per polydata.

1-add polydatas in the multi block dataset using
vtkMultiBlockDataset::AddBlock()
2-extract/append polydatas
vtkCompositeDataGeometryFilter or vtkMultiBlockDataset ::GetBlock()
3-map it and visualize it through 1 actor and one mapper.

vtkCompositeDataGeometryFilter generates 1 polydata from all polydatas, which makes picking impossible...
vtkMultiBlockDataset ::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.

Is there a better practice to render all polydatas which belong to a block through multiple actors.
Am I missing something?

Thanks

On Jun 8, 2011, at 3:11 PM, Clinton Stimpson wrote:

> On Wednesday, June 08, 2011 01:00:48 pm Nicolas Rannou wrote:
>> Hi all,
>> 
>> Our application requires to render up to 5000x1000 PolyDatas.
>> Each polydata is made of 500 triangles.
>> 
>> It looks like it is impossible to store all the related actors in memory
>> (on a machine with 48Gb RAM).
>> 
>> We have been playing around with things such as "vtkStripper",
>> "ImmediateRendering", "ReleaseDataFlag", "BackFaceCulling", etc.
>> 
>> For 1000 PolyDatas:
>> 
>> The best option in term of memory looks like turning "ImmediateRendering"
>> ON. -> 1000 actors
>> 	-> 60 Mb of memory usage
>> 	-> slow interaction
>> 
>> The best option in term of interaction seems to be using the following
>> pipeline: vtkPolyData->vtkStripper->vtkAppend->vtkMapper->vtkActor
>> 	->1 actor
>> 	-> 90mo in memory
>> 	-> good interaction
>> 
>> Using only one actor is not an option for us since we want to be able to
>> pick and change properties of each object (individually).
>> 
>> Would somebody have any advise?
> 
> In this situation, I think you can get both interaction speed and memory 
> savings by putting your many vtkPolyData objects into a vtkMultiBlockDataSet 
> and rendering that with an actor or a few actors.
> 
> You could put some properties, such as colors, in the vtkPolyData instead of 
> the vtkActor.  And for other properties, you could use the same actor/mapper 
> for those objects that share the properties.  Or perhaps use vtkPainter to 
> customize rendering of these objects.
> 
> -- 
> Clinton Stimpson
> Elemental Technologies, Inc
> Computational Simulation Software, LLC
> www.csimsoft.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110608/6b101486/attachment.htm>


More information about the vtkusers mailing list