Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
3.6 KiB

2 years ago
#!/usr/bin/env python
# Run this test like so:
# vtkpython TestTensorGlyph.py -D $VTK_DATA_ROOT \
# -B $VTK_DATA_ROOT/Baseline/Graphics/
import os
import vtk
from vtk.test import Testing
class SimpleGlyph:
"""A simple class used to test vtkTensorGlyph."""
def __init__(self, reader):
self.reader = reader
sg = self.src_glyph = vtk.vtkSphereSource()
sg.SetRadius(0.5)
sg.SetCenter(0.5, 0.0, 0.0)
g = self.glyph = vtk.vtkTensorGlyph()
g.SetInputConnection(self.reader.GetOutputPort())
g.SetSource(self.src_glyph.GetOutput())
g.SetScaleFactor(0.25)
# The normals are needed to generate the right colors and if
# not used some of the glyphs are black.
self.normals = vtk.vtkPolyDataNormals()
self.normals.SetInputConnection(g.GetOutputPort())
self.map = vtk.vtkPolyDataMapper()
self.map.SetInputConnection(self.normals.GetOutputPort())
self.act = vtk.vtkActor()
self.act.SetMapper(self.map)
# An outline.
self.of = vtk.vtkOutlineFilter()
self.of.SetInputConnection(self.reader.GetOutputPort())
self.out_map = vtk.vtkPolyDataMapper()
self.out_map.SetInputConnection(self.of.GetOutputPort())
self.out_act = vtk.vtkActor()
self.out_act.SetMapper(self.out_map)
def GetActors(self):
return self.act, self.out_act
def Update(self):
self.glyph.Update()
s = self.glyph.GetOutput().GetPointData().GetScalars()
if s:
self.map.SetScalarRange(s.GetRange())
def SetPosition(self, pos):
self.act.SetPosition(pos)
self.out_act.SetPosition(pos)
class TestTensorGlyph(Testing.vtkTest):
def testGlyphs(self):
"Test if the glyphs are created nicely."
reader = vtk.vtkDataSetReader()
data_file = os.path.join(Testing.VTK_DATA_ROOT, "Data",
"tensors.vtk")
reader.SetFileName(data_file)
g1 = SimpleGlyph(reader)
g1.glyph.ColorGlyphsOff()
g1.Update()
g2 = SimpleGlyph(reader)
g2.glyph.ExtractEigenvaluesOff()
g2.Update()
g2.SetPosition((2.0, 0.0, 0.0))
g3 = SimpleGlyph(reader)
g3.glyph.SetColorModeToEigenvalues()
g3.glyph.ThreeGlyphsOn()
g3.Update()
g3.SetPosition((0.0, 2.0, 0.0))
g4 = SimpleGlyph(reader)
g4.glyph.SetColorModeToEigenvalues()
g4.glyph.ThreeGlyphsOn()
g4.glyph.SymmetricOn()
g4.Update()
g4.SetPosition((2.0, 2.0, 0.0))
ren = vtk.vtkRenderer()
for i in (g1, g2, g3, g4):
for j in i.GetActors():
ren.AddActor(j)
ren.ResetCamera();
cam = ren.GetActiveCamera()
cam.Azimuth(-20)
cam.Elevation(20)
cam.Zoom(1.5)
ren.SetBackground(0.5, 0.5, 0.5)
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
renWin.Render()
img_file = "TestTensorGlyph.png"
Testing.compareImage(renWin, Testing.getAbsImagePath(img_file))
Testing.interact()
def testParse(self):
"Test if vtkTensorGlyph is parseable"
tg = vtk.vtkTensorGlyph()
self._testParse(tg)
def testGetSet(self):
"Testing Get/Set methods of vtkTensorGlyph"
tg = vtk.vtkTensorGlyph()
self._testGetSet(tg)
def testParse(self):
"Testing Boolean methods of vtkTensorGlyph"
tg = vtk.vtkTensorGlyph()
self._testBoolean(tg)
if __name__ == "__main__":
Testing.main([(TestTensorGlyph, 'test')])