[vtkusers] update scalars of vtkPoints

Hagen Mölle h.moelle at googlemail.com
Thu Jul 1 09:47:41 EDT 2010


Hi Seb,

I did it exactly as you described.

scalars = vtkDataSet->GetPointData()->GetScalars()

for (i in nbScalars) {
      scalars.SetTuple1( i , newValue )
}

But for updating the visualization (vtkUnstructuredGrid used as data 
representation) one need to call scalars->Modified(). 
vtkDataSet->Modified() did not do anything. But still the time to update 
the visualization is unacceptable. I mentioned before updating of 7000 
points (vtkUnstructuredGrid) takes 40 seconds in vtk.

I do not have any clue how to bring down the update time.

Hagen

> Hi Hagen,
>
> You are correct, this is exactly how you should get access to the data
> without creating new ones.
>
> scalars = vtkDataSet->GetPointData()->GetScalars()
>
> But how did you changed the value inside ? Like that ?
>
> for (i in nbScalars) {
>       scalars.SetTuple1( i , newValue )
> }
>
> Normaly a Modified call on the Dataset should do the trick, but you
> can also try to do it on "scalars" too.
>
> Seb
>
>
> 2010/7/1 Barth, Sebastian<sebastian.barth at iosb.fraunhofer.de>:
>    
>> Hi Hagen,
>>
>> did you also try scalars->Modified() instead?
>>
>> With Modified() you tell the pipeline that the data object has to be updated (also everything coming after this object in pipeline). You might forgot to run Update() on your mapper the vtkUnstructedGrid is attached to (or any other object that has Update() and is connected after the grid in pipeline row). You might also forgot to call the Render() method to update the renderer?
>>
>> Hope this helps!
>>
>> Sebastian Barth
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Hagen Mölle [mailto:h.moelle at googlemail.com]
>> Gesendet: Donnerstag, 1. Juli 2010 14:16
>> An: Barth, Sebastian
>> Cc: John Drescher; vtkusers at vtk.org; sebastien.jourdain at kitware.com
>> Betreff: Re: AW: [vtkusers] update scalars of vtkPoints
>>
>> Hi Sebastian,
>>
>> Thanks for your help. I got it working with vtkPolyData in my 2D
>> visualization.
>>
>> In my 3D visualization of measured points I still have the problem that
>> the scalars do not change. There I use vtkUnstructuredGrid instead of
>> vtkPolyData. Right now the update routine of the scalars looks like this
>> (pseudo code):
>>
>> scalars = vtkDataSet->GetPointData()->GetScalars()
>> for(number of scalars)
>> {
>>      update each scalar
>> }
>> vtkDataSet->Modified()
>>
>> The code is compiling for vtkUnstructuredGrid and vtkPolyData. But it
>> seems I have to do something additional to update the scalars of the
>> vtkUnstructuredGrid.
>>
>> Any idea?
>>
>> Hagen
>>
>>
>>      
>>> Hello Hagen,
>>>
>>> did you forget to call Modified() of the vtkPolyData after altering the points? Otherwise the vtkPolyData does not know that their points, scalars or cells were changed.
>>>
>>> Sebastian Barth
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: vtkusers-bounces at vtk.org [mailto:vtkusers-bounces at vtk.org] Im Auftrag von Hagen Mölle
>>> Gesendet: Donnerstag, 1. Juli 2010 08:26
>>> An: John Drescher; vtkusers at vtk.org; sebastien.jourdain at kitware.com
>>> Betreff: Re: [vtkusers] update scalars of vtkPoints
>>>
>>> On 06/30/2010 06:14 PM, John Drescher wrote:
>>>
>>>        
>>>> 2010/6/30 Sebastien Jourdain<sebastien.jourdain at kitware.com>:
>>>>
>>>>
>>>>          
>>>>> Hi Hagen,
>>>>>
>>>>> As you said, you can start by simply change the data on the fly and
>>>>> call Render() once the change has been done. By change I mean point
>>>>> location, scalar data and even point number.
>>>>> But be aware that only one thread should be used in VTK otherwise they
>>>>> have to be synchronized.
>>>>>
>>>>>
>>>>>
>>>>>            
>>>> I think vtkPolyData->GetPointData->GetScalars()
>>>>
>>>> is where to start
>>>>
>>>> John
>>>>
>>>>
>>>>          
>>> Hi Sebastien and John,
>>>
>>> Thanks for pointing out how to change the scalars of the points on the
>>> fly. So I need to alter the vtkDataArray which I get by
>>> vtkPolyData->GetPointData->GetScalars(). Hopefully this will work.
>>>
>>> Yesterday I tried to set new scalars by using the following method:
>>> vtkPolyData->GetPointData->SetScalars(vtkDoubleArray). So I did not
>>> generate a new dataset. But the visualization did not change during
>>> update. It seemed the old scalars where used during update.
>>>
>>> Hagen
>>> _______________________________________________
>>> 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://www.vtk.org/mailman/listinfo/vtkusers
>>>
>>>        
>>
>>      




More information about the vtkusers mailing list