[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