thinking um remove objects, select objects basically vtk provides for this stuff 0321 a vtkPolyData can convert a point to cells using GetPointCells(vtkIdType ptId, vtkIdList* cellIds) call BuildLinks() first GetPointCells(ptId, vtkIdType& ncells, vtkIdType*& cells) change poly data: - SetPolys(vtkCellArray*) / SetStrips - vtkCellArray* GetPolys() / GetStrips GetNumberOf...Verts Lines Polys Strips vtkIdType InsertNextCell(type, npts, pts[]) type:VTK_POLY_VERTEX, VTK_TRIANGLE, VTK_QUAD, VTK_POLYGON, VTK_TRIANGLE_STRIP likely depends on PolyData::Allocate() properties BuildCells() NeedToBuildCells returns whether BuildCells has been called DeleteCells() resets, call if you want a new BuildLinks() with new data BuildLinks() for topologically complex queries DeleteLinks() DeleteCell(cellId) DeletePoint(ptId) RemoveDeletedCells() to compact after RemoveGhostCells() removes cells with vtkDataSetAttributes::DUPLICATECELL or ::HIDDENCELL but not their points traversal (needs BuildLinks): GetCellEdgeNeighbors(vtkIdType cellId, vtkIdType p1, vtkIdType p2, vtkIdList* cellIds); other useful topological queries ok um can we hide something when it is clicked. - find the clicked triangle - remove it by hiding it, likely similar to mesh refinement vtk is big ... it's time to sleep. we did find 3dslicer. maybe take the existing viewer and let the user click on a surface and then isolate that surface. so step one would be adding the cell picker. then step two could be stepping neighbor cells and adding them to a list then step three could be deleting all other cells and updating the mesh. the interface could prompt the user what to do: 1. click on your head 2. click on your inion etc but it's time to sleep now. we also found https://github.com/Slicer/Slicer it's called '3D Slicer' and it's used in a reconstruction resource we found it's a mainstream imagery viewer supporting plugins