[vtkusers] vtkAssembly =>point.set(x, y, z) => refresh normals automaticly ?

vtklearny msjean at gmx.de
Mon May 11 04:09:09 EDT 2009


Hi vtk know-it-alls,

I'm new to vtk and as the subject tells, 
im looking for a way to refresh normals of objects.
I have not found a former post that solved my problem.

Situation:
/////////////////////////////////////////////
I have got a  vtkAssembly
and I can access down to the mapper,

so that finaly by:
     vtkPolyData* data=mapper->GetInput();	
     vtkPointData* pdata=(vtkPointData*)(data->GetPointData());			
     data->GetPoints();
I reach the points of a triangulated mesh.

Then I manipulate certain points:
points->SetPoint(id,newPos);
/////////////////////////////////////////////
Now my QUESTION is , how to perform an update of the normals automaticly
(at best only those which need to be updated).

For now I only see the change of point data in wireframe mode properly.
The code I'm working on tries it like this:

On contruction:
----------------------------------------------------------
                        vtkPolyDataNormals* normalsFilter;
                       
normalsFilter->SetInput(vtkPolyDataReader->GetOutput());
                        normalsFilter->ComputeCellNormalsOn();
                        vtkPolyDataMapper* Mapper = ... ::New();
			Mapper->ScalarVisibilityOff();
			Mapper->SetInput( normalsFilter->GetOutput() );					
			//Mapper->SetInputConnection( normalsFilter->GetOutputPort() );			
			vtkActor* Actor = ... ::New();
			Actor->SetMapper( Mapper.GetPointer() );
-----------------------------------------------------------

in MyUpdateFunction():
----------------------------------------------------
        vtkPolyDataMapper* polyDataMapper=
getPolyDataMapperFromAssembly(assembly);
	vtkAlgorithm* algo= polyDataMapper->GetInputConnection(0,0)->GetProducer();
        //algo->Print(cout << "MapperCache::updatePolyDataMapper" << endl);
	vtkPolyDataNormals* normals=(vtkPolyDataNormals*)algo;
	//normals->Update();   //does not show any change
	//algo->Update();   // not even better
	//normals->Modified(); //Changes point data back to initial state
-----------------------------------------------------

I hope you can help me with all info I could give.
Thanks a lot for any help.

the vtkLearny




-------------------
Working on: win xp , visual studio, c++, vtk. 5.2.1

-- 
View this message in context: http://www.nabble.com/vtkAssembly-%3D%3Epoint.set%28x%2Cy%2Cz%29-%3D%3E-refresh-normals-automaticly---tp23445046p23445046.html
Sent from the VTK - Users mailing list archive at Nabble.com.




More information about the vtkusers mailing list