[vtkusers] Assigning colors to scalars

Jens jens-devel at gmx.de
Mon Nov 7 12:46:33 EST 2005


Hi Bruno
Thanks for your help.
I have written a reader-class inherited from vtkUnstructuredGridAlgorithmn 
where I add all cell-attributes to the unstructured grid. The reader returnes 
that ugrid including all cell-attributes through "GetOutputPort()".
I add velocity for x,y,z in the reader class like this:
	vtkDoubleArray* velocityX = vtkDoubleArray::New();
	velocityX->SetName("Velocity X");
	velocityX->SetNumberOfComponents(1);
	velocityX->SetArray(ptrToAnDoubleArray, numOfCells, 0);
	ugrid->GetCellData()->AddArray(velocityX);
If I use that reader class I already have all cell-attributes assigned to my 
ugrid and I only want to change the activation status.

	Shouldn´t that be possible using 
reader->GetOutput()->GetCellData()->SetActiveScalars("Velocity X");

(It works as long as I call SetActiveScalars() before the first "Render()")

Do you know an example, where the user can switch between different attributes 
which are loaded before?

	Greetings 
		Jens

Am Montag, 7. November 2005 15:36 schrieben Sie:
> You can't assign the scalars by hand; in the next update of the
> pipeline, you will lose this modification. Try to use a
> vtkAssignAttribute filter.
>
> HTH,
>
> Jens wrote:
> >Hi Lise
> >You seem to have the same problem that I have.
> >I can make a cell-attribute visible as long as I call
> >SetActiveScalars(attName) before I use Render() the first time.
> >After I have called Render() once I can change the active scalars but get
> > no visible change after a Render()-call.
> >
> >Try to use pointers for vtk-instance.
> >
> >Am Montag, 7. November 2005 11:42 schrieb Lise Angell:
> >>..........
> >>With:
> >>	# allocate VTK structures
> >>	vtk_field = vtk.vtkUnstructuredGrid()
> >>	pts = vtk.vtkPoints()					# coordinates
> >>	pts.SetNumberOfPoints(nno)
> >>	data = vtk.vtkDoubleArray()				# data
> >>	data.SetNumberOfValues(nno)
> >>	data.SetName('Values')
> >>
> >>       [...]  # read node and coordinate info
> >
> >You add a attribute array using
> >	myAttArray->SetArray(...);
> >	vtk_field->AddArray(myAttArray);
> >
> >>	vtk_field.SetPoints(pts)
> >>	vtk_field.GetPointData().SetActiveScalars('Values')
> >>
> >>       [...]  # mount graphics stuff
> >>
> >>	lut = vtk.vtkLookupTable()
> >>	lut.SetNumberOfColors(10)
> >>	#lut.SetTableRange(scalar_range[0], scalar_range[1])
> >>	lut.SetHueRange(0.0, 0.3)
> >>	#lut.SetSaturationRange(0, 0)
> >>	#lut.SetValueRange(0.2, 1.0)
> >>	lut.Build()
> >>
> >>	mapper = visualize(renderer, vtk_field, nsd)
> >
> >That should work... perhaps your scalar-field is wrong ?
> >
> >>	#mapper.SetScalarRange(vtk_field.GetScalarRange())    # gives [0,1],
> >> wrong mapper.SetScalarRange(scalar_range) # contains min,max of the
> >> scalar fields mapper.SetLookupTable(lut)
> >>
> >>       for each scalar field:
> >>              [read field from file into vtk_field]
> >>              vtk_field.Update()
> >>		mapper.Update()
> >>		renWin.Render()
> >
> >	Greetings
> >		Jens
> >_______________________________________________
> >This is the private VTK discussion list.
> >Please keep messages on-topic. Check the 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