[vtkusers] vtk guru needed (vtkGlyph3D + vtkImageData)

Berk Geveci berklist at nycap.rr.com
Wed Feb 12 11:57:02 EST 2003


Just do

grad.GetOutput().GetPointData().SetVectors(
     grad.GetOutput().GetPointData().GetScalars())

However, this will only work if you are using VTK 4.0 or newer.

-Berk


On Wed, 2003-02-12 at 11:34, Mathieu Malaterre wrote:
> Hi vtk guru,
>   Here is a small python script which I would like to improve. As I want 
> to display a vector field I would like to use vtkGlyph3D but for that I 
> need to have all my vectors in PointData.Vectors (or PointData.Normals). 
> The problem is that I use vtkImageGradient which puts stuff in 
> PointData.Scalars.
> 
>   So what I would like is to move (instead of copying) all the tuples 
> from Scalars to Vectors.
> 
> Thanks for any help,
> mathieu
> 
> 
> #beginning of script
> 
> from vtk import *
> 
> reader = vtkStructuredPointsReader()
> reader.SetFileName('gvf.vtk')
> 
> grad = vtkImageGradient()
> grad.SetInput(reader.GetOutput())
> grad.SetDimensionality(2)
> 
> grad.UpdateWholeExtent()  #important
> 
> size = grad.GetOutput().GetPointData().GetScalars().GetNumberOfTuples()
> 
> vec = vtkDoubleArray()
> vec.SetNumberOfComponents(3)
> vec.Allocate(3*size, 0)
> 
> for i in range(size):
>    x = grad.GetOutput().GetPointData().GetScalars().GetTuple2(i) 
>    vec.InsertNextTuple3(x[0],x[1],0.)  #this is so bad !
> 
> grad.GetOutput().GetPointData().SetVectors(vec)
> 
> 
> gs = vtkGlyphSource2D ()
> gs .SetGlyphTypeToArrow()
> gs .SetScale (0.2)
> gs .FilledOff()
> 
> # Create a table of glyphs
> glypher = vtkGlyph3D()
> glypher .SetInput (reader.GetOutput())
> glypher .SetSource (gs.GetOutput())
> glypher.ScalingOff();
> glypher.OrientOn();
> glypher.SetVectorModeToUseVector();
> glypher.SetColorModeToColorByVector();
> 
> mapper = vtkPolyDataMapper ()
> mapper .SetInput (glypher .GetOutput())
> 
> actor = vtkActor()
> actor.SetMapper(mapper)
> 
> ren = vtkRenderer()
> ren.AddActor(actor)
> 
> renWin = vtkRenderWindow()
> renWin.AddRenderer(ren)
> 
> iren = vtkRenderWindowInteractor()
> iren.SetRenderWindow(renWin)
> 
> iren.Initialize()
> renWin.Render()
> iren.Start()
> 
> 
> _______________________________________________
> This is the private VTK discussion list. 
> Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers








More information about the vtkusers mailing list