Exemple #1
0
    def doNonLinear(self, ghosts, ncells):
        pts = vtk.vtkPoints()
        pts.SetNumberOfPoints(10)
        pts.InsertPoint(0, (0, 0, 0))
        pts.InsertPoint(1, (1, 0, 0))
        pts.InsertPoint(2, (0.5, 1, 0))
        pts.InsertPoint(3, (0.5, 0.5, 1))
        pts.InsertPoint(4, (0.5, 0, 0))
        pts.InsertPoint(5, (0.25, 0.5, 0))
        pts.InsertPoint(6, (0.75, 0.5, 0))
        pts.InsertPoint(7, (0.25, 0.25, 0.5))
        pts.InsertPoint(8, (0.75, 0.25, 0.5))
        pts.InsertPoint(9, (0.5, 0.75, 0.5))

        te = vtk.vtkQuadraticTetra()
        ptIds = te.GetPointIds()
        for i in range(10):
            ptIds.SetId(i, i)

        grid = vtk.vtkUnstructuredGrid()
        grid.Allocate(1, 1)
        grid.InsertNextCell(te.GetCellType(), te.GetPointIds())
        grid.SetPoints(pts)
        grid.GetPointData().AddArray(ghosts)

        ugg = vtk.vtkUnstructuredGridGeometryFilter()
        ugg.SetInputData(grid)

        dss = vtk.vtkDataSetSurfaceFilter()
        dss.SetNonlinearSubdivisionLevel(2)
        dss.SetInputConnection(ugg.GetOutputPort())
        dss.Update()
        self.assertEqual(dss.GetOutput().GetNumberOfCells(), ncells)
Exemple #2
0
def create_node_labels(point_id_filter: vtk.vtkIdFilter,
                       grid: vtk.vtkUnstructuredGrid,
                       rend: vtk.vtkRenderer,
                       label_size: float = 10.0):
    """creates the node labels"""
    # filter inner points, so only surface points will be available
    geo = vtk.vtkUnstructuredGridGeometryFilter()
    geo.SetInputData(grid)

    # points
    vertex_filter = vtk.vtkVertexGlyphFilter()
    vertex_filter.SetInputConnection(geo.GetOutputPort())
    vertex_filter.Update()

    points_mapper = vtk.vtkPolyDataMapper()
    points_mapper.SetInputConnection(vertex_filter.GetOutputPort())
    points_mapper.ScalarVisibilityOn()
    points_actor = vtk.vtkActor()
    points_actor.SetMapper(points_mapper)
    points_actor.GetProperty().SetPointSize(label_size)

    # point labels
    label_mapper = vtk.vtkLabeledDataMapper()
    label_mapper.SetInputConnection(point_id_filter.GetOutputPort())
    label_mapper.SetLabelModeToLabelFieldData()
    label_actor = vtk.vtkActor2D()
    label_actor.SetMapper(label_mapper)
    return label_actor
 def ug_geometry(self):
     print('setting unstructured grid geometry')
     geometry = vtk.vtkUnstructuredGridGeometryFilter()
     print(geometry.GetDuplicateGhostCellClipping())
     geometry.SetInputConnection(self.mesh.GetOutputPort())
     geometry.Update()
     self.mesh = geometry
    def doNonLinear(self, ghosts, ncells):
        pts = vtk.vtkPoints()
        pts.SetNumberOfPoints(10)
        pts.InsertPoint(0, (0, 0, 0))
        pts.InsertPoint(1, (1, 0, 0))
        pts.InsertPoint(2, (0.5, 1, 0))
        pts.InsertPoint(3, (0.5, 0.5, 1))
        pts.InsertPoint(4, (0.5, 0, 0))
        pts.InsertPoint(5, (1.25, 0.5, 0))
        pts.InsertPoint(6, (0.25, 0.5, 0))
        pts.InsertPoint(7, (0.25, 0.25, 0.5))
        pts.InsertPoint(8, (0.75, 0.25, 0.5))
        pts.InsertPoint(9, (0.5, 0.75, 0.5))

        te = vtk.vtkQuadraticTetra()
        ptIds = te.GetPointIds()
        for i in range(10):
            ptIds.SetId(i, i)

        grid = vtk.vtkUnstructuredGrid()
        grid.Allocate(1, 1)
        grid.InsertNextCell(te.GetCellType(), te.GetPointIds())
        grid.SetPoints(pts)
        grid.GetPointData().AddArray(ghosts)

        ugg = vtk.vtkUnstructuredGridGeometryFilter()
        ugg.SetInputData(grid)

        dss = vtk.vtkDataSetSurfaceFilter()
        dss.SetNonlinearSubdivisionLevel(2)
        dss.SetInputConnection(ugg.GetOutputPort())
        dss.Update()
        self.assertEqual(dss.GetOutput().GetNumberOfCells(), ncells)
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(
         self, module_manager,
         vtk.vtkUnstructuredGridGeometryFilter(), 'Processing.',
         ('vtkUnstructuredGrid',), ('vtkUnstructuredGrid',),
         replaceDoc=True,
         inputFunctions=None, outputFunctions=None)
Exemple #6
0
def loadUnStructuredGrid(filename):  # not tested
    '''Load a vtkunStructuredGrid object from file and return a vtkActor.'''
    reader = vtk.vtkUnstructuredGridReader()
    reader.SetFileName(filename)
    reader.Update()
    gf = vtk.vtkUnstructuredGridGeometryFilter()
    gf.SetInputConnection(reader.GetOutputPort())
    gf.Update()
    return Actor(gf.GetOutput())
Exemple #7
0
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(
         self,
         module_manager,
         vtk.vtkUnstructuredGridGeometryFilter(),
         'Processing.', ('vtkUnstructuredGrid', ),
         ('vtkUnstructuredGrid', ),
         replaceDoc=True,
         inputFunctions=None,
         outputFunctions=None)
Exemple #8
0
reader = vtk.vtkUnstructuredGridReader()
reader.SetFileName("bg.vtk")
reader.Update()

root = Tkinter.Tk()

frame = Tkinter.Frame(root)
frame.pack(fill=Tkinter.BOTH, expand=1, side=Tkinter.TOP)

ren = vtk.vtkRenderer()

renwin = vtk.vtkRenderWindow()
renwin.AddRenderer(ren)

ugrid = reader.GetOutput()
geoFilter = vtk.vtkUnstructuredGridGeometryFilter()
geoFilter.SetInputConnection(reader.GetOutputPort())
geoFilter.Update()

mapper = vtk.vtkDataSetMapper()
mapper.SetInputConnection(geoFilter.GetOutputPort())

mapper.SetScalarVisibility(0)
#mapper.GetInput().GetCellData().SetActiveScalars("oga_cell_status")

actor = vtk.vtkActor()
actor.SetMapper(mapper)

actor.GetProperty().EdgeVisibilityOn()

ren.AddActor(actor)
Exemple #9
0
def main():
    inputFilename = '3_cells.vtk'
    assert os.path.exists(inputFilename)

    # read file.
    reader = vtk.vtkUnstructuredGridReader()
    reader.SetFileName(inputFilename)
    reader.ReadAllScalarsOn()
    reader.SetScalarsName(reader.GetScalarsNameInFile(0))
    reader.Update()

    ncell = reader.GetOutput().GetNumberOfCells()
    assert ncell > 0

    # get attributes.
    ugrid = reader.GetOutput()
    cellData = ugrid.GetCellData()
    data = cellData.GetScalars(reader.GetScalarsNameInFile(0))

    # validate that attributes are read correctly.
    #for (int i=0 i<ncell i++)
    #{
    #std::cout<< i << ": " << data.GetComponent(i,0)<< std::endl
    #}
    data = cellData.GetScalars(reader.GetScalarsNameInFile(1))
    #for (int i=0 i<ncell i++)
    #{
    #std::cout<< i << ": " << data.GetComponent(i,0)<< std::endl
    #}

    data = cellData.GetScalars(reader.GetScalarsNameInFile(0))

    # geometry filter.
    geometryFilter = vtk.vtkUnstructuredGridGeometryFilter()
    geometryFilter.SetInputConnection(reader.GetOutputPort())
    geometryFilter.Update()

    # Generate data arrays containing point and cell ids
    ids = vtk.vtkIdFilter()
    ids.SetInputConnection(geometryFilter.GetOutputPort())
    ids.PointIdsOff()
    ids.CellIdsOff()
    ids.FieldDataOn()

    # Create labels for cells
    cc = vtk.vtkCellCenters()
    cc.SetInputConnection(ids.GetOutputPort())

    # lut
    lut = vtk.vtkLookupTable()
    lut.SetNumberOfTableValues(ncell)
    lut.Build()
    lut.SetTableValue(0, 1, 0, 0, 1)  # red.
    lut.SetTableValue(1, 0, 1, 0, 1)  # green.
    lut.SetTableValue(2, 0, 0, 1, 1)  # blue.

    # mapper.
    mapper = vtk.vtkDataSetMapper()
    mapper.SetInputConnection(geometryFilter.GetOutputPort())
    mapper.SetLookupTable(lut)
    mapper.SetScalarVisibility(1)
    mapper.SetScalarModeToUseCellData()
    mapper.SetScalarRange(11, 13)
    mapper.GetInput().GetCellData().SetActiveScalars("cell_tag")

    # label mapper.
    label_mapper = vtk.vtkLabeledDataMapper()
    label_mapper.SetInputConnection(cc.GetOutputPort())
    label_mapper.SetLabelModeToLabelScalars()

    # actor.
    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().SetRepresentationToWireframe()

    # label actor.
    label_actor = vtk.vtkActor2D()
    label_actor.SetMapper(label_mapper)

    # renderer.
    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)
    renderer.AddActor(actor)
    renderer.AddActor(label_actor)
    renderWindow.Render()
    renderWindowInteractor.Start()
Exemple #10
0
def main():
    inputFilename = 'element_labels_input.vtk'

    # read file
    reader = vtk.vtkUnstructuredGridReader()
    reader.SetFileName(inputFilename)
    reader.ReadAllScalarsOn()
    reader.SetScalarsName(reader.GetScalarsNameInFile(0))
    reader.Update()

    ncells = reader.GetOutput().GetNumberOfCells()
    npoints = reader.GetOutput().GetNumberOfPoints()

    # get attributes
    ugrid = reader.GetOutput()
    cell_data = ugrid.GetCellData()
    point_data = ugrid.GetPointData()
    cell_scalars = cell_data.GetScalars(reader.GetScalarsNameInFile(0))

    # validate that attributes are read correctly
    print('name0:')
    for i in range(ncells):
        print(i, ": ", cell_scalars.GetComponent(i, 0))

    cell_scalars = cell_data.GetScalars(reader.GetScalarsNameInFile(1))
    print('\nname1:')
    for i in range(ncells):
        print(i, ": ", cell_scalars.GetComponent(i, 0))

    point_scalars = point_data.GetScalars(reader.GetScalarsNameInFile(0))
    print(point_scalars)
    print('\nname2:')
    for i in range(npoints):
        print(i, ": ", point_scalars.GetComponent(i, 0))
    #point_scalars = cell_data.GetScalars(reader.GetScalarsNameInFile(2))
    #print(point_scalars)

    # geometry filter
    geometry_filter = vtk.vtkUnstructuredGridGeometryFilter()
    geometry_filter.SetInputConnection(reader.GetOutputPort())
    geometry_filter.Update()

    # Generate data arrays containing point and cell ids
    ids = vtk.vtkIdFilter()
    ids.SetInputConnection(geometry_filter.GetOutputPort())
    ids.PointIdsOff()
    ids.CellIdsOff()
    ids.FieldDataOn()

    # Create labels for cells
    cell_centers = vtk.vtkCellCenters()
    cell_centers.SetInputConnection(ids.GetOutputPort())

    node_points = vtk.vtkVertexGlyphFilter()
    node_points.SetInputConnection(ids.GetOutputPort())
    node_points.Update()
    #node_points = vtk.vtkPointCentered()
    #node_points.SetInputConnection(ids.GetOutputPort())

    # lut
    lut = vtk.vtkLookupTable()
    lut.SetNumberOfTableValues(ncells)
    lut.Build()
    lut.SetTableValue(0, 1, 0, 0, 1) # red.
    lut.SetTableValue(1, 0, 1, 0, 1) # green.
    lut.SetTableValue(2, 0, 0, 1, 1) # blue.

    # mapper
    mapper = vtk.vtkDataSetMapper()
    mapper.SetInputConnection(geometry_filter.GetOutputPort())
    mapper.SetScalarVisibility(1)
    if apply_colors:
        mapper.SetLookupTable(lut)
        mapper.SetScalarModeToUseCellData()
        mapper.SetScalarRange(11, 13)
    mapper.GetInput().GetCellData().SetActiveScalars("cell_tag")

    # label mapper
    cell_label_mapper = vtk.vtkLabeledDataMapper()
    cell_label_mapper.SetInputConnection(cell_centers.GetOutputPort())
    cell_label_mapper.SetLabelModeToLabelScalars()

    #point_label_mapper = vtk.vtkLabeledDataMapper()
    #point_label_mapper.SetInputConnection(node_points.GetOutputPort())
    #point_label_mapper.SetLabelModeToLabelScalars()

    # actor
    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().SetRepresentationToWireframe()

    # label actor
    cell_label_actor = vtk.vtkActor2D()
    cell_label_actor.SetMapper(cell_label_mapper)

    #point_label_actor = vtk.vtkActor2D()
    #point_label_actor.SetMapper(point_label_mapper)

    # renderer
    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)
    renderer.AddActor(actor)
    renderer.AddActor(cell_label_actor)
    #renderer.AddActor(point_label_actor)
    renderWindow.Render()
    renderWindowInteractor.Start()
Exemple #11
0
def smoothUnstructuredGridSurface(vtkGrid):
    assert isinstance(vtkGrid, vtk.vtkUnstructuredGrid)
    ugGeometryFilter = vtk.vtkUnstructuredGridGeometryFilter()
    ugGeometryFilter.PassThroughPointIdsOn()
    ugGeometryFilter.MergingOff()
    try:
        ugGeometryFilter.SetInputData(vtkGrid)
    except AttributeError:
        ugGeometryFilter.SetInput(vtkGrid)
    ugGeometryFilter.Update()
    surfaceUnstructuredGrid = ugGeometryFilter.GetOutput()
    assert isinstance(surfaceUnstructuredGrid, vtk.vtkUnstructuredGrid)
    originalPointsIdsName = ugGeometryFilter.GetOriginalPointIdsName()

    cellData = surfaceUnstructuredGrid.GetCellData()
    numCellArrays = cellData.GetNumberOfArrays()
    for i in range(0, numCellArrays):
        cellArrayName = cellData.GetArrayName(i)
        print("CellArray(" + str(i) + ") '" + cellArrayName + "')")
    pointData = surfaceUnstructuredGrid.GetPointData()
    assert isinstance(pointData, vtk.vtkPointData)
    numPointArrays = pointData.GetNumberOfArrays()
    for i in range(0, numPointArrays):
        pointArrayName = pointData.GetArrayName(i)
        print("PointArray(" + str(i) + ") '" + pointArrayName + "'")

    geometryFilter = vtk.vtkGeometryFilter()
    assert isinstance(geometryFilter, vtk.vtkGeometryFilter)
    try:
        geometryFilter.SetInputData(surfaceUnstructuredGrid)
    except AttributeError:
        geometryFilter.SetInput(surfaceUnstructuredGrid)
    geometryFilter.Update()
    polyData = geometryFilter.GetOutput()
    assert isinstance(polyData, vtk.vtkPolyData)

    filter = vtk.vtkWindowedSincPolyDataFilter()
    try:
        filter.SetInputData(polyData)
    except AttributeError:
        filter.SetInput(polyData)
    filter.SetNumberOfIterations(15)
    filter.BoundarySmoothingOff()
    filter.FeatureEdgeSmoothingOff()
    filter.SetFeatureAngle(120.0)
    filter.SetPassBand(0.001)
    filter.NonManifoldSmoothingOff()
    filter.NormalizeCoordinatesOn()
    filter.Update()

    smoothedPolydata = filter.GetOutput()

    smoothedPoints = smoothedPolydata.GetPoints()
    assert isinstance(smoothedPoints, vtk.vtkPoints)

    smoothedPointData = smoothedPolydata.GetPointData()
    assert isinstance(smoothedPointData, vtk.vtkPointData)
    pointIdsArray = smoothedPointData.GetArray(originalPointsIdsName)
    assert isinstance(pointIdsArray, vtk.vtkIdTypeArray)
    pointsIdsArraySize = pointIdsArray.GetSize()
    origPoints = vtkGrid.GetPoints()
    for i in range(0, pointsIdsArraySize):
        pointId = pointIdsArray.GetValue(i)
        smoothedPoint = smoothedPoints.GetPoint(i)
        origPoints.SetPoint(pointId, smoothedPoint)

    return vtkGrid