如何在vtk中只显示纹理表面上的三角形边界?

2024-10-01 17:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想显示一个有纹理的表面。我希望三角形边界在曲面上以不同的颜色可见(比如说红色)。我从vtk代码示例中找到了以下代码,但它不显示三角形边界,而是显示填充的三角形。在

   import vtk

   # create a rendering window and renderer
   ren = vtk.vtkRenderer()
   renWin = vtk.vtkRenderWindow()
   renWin.AddRenderer(ren)

   # create a renderwindowinteractor
   iren = vtk.vtkRenderWindowInteractor()
   iren.SetRenderWindow(renWin)

   # create points
   points = vtk.vtkPoints()
   points.InsertNextPoint(1.0,0.0,0.0)
   points.InsertNextPoint(0.0,0.0,0.0)
   points.InsertNextPoint(0.0,1.0,0.0)

   triangle = vtk.vtkTriangle()
   triangle.GetPointIds().SetId(0,0)
   triangle.GetPointIds().SetId(1,1)
   triangle.GetPointIds().SetId(2,2)

   triangles = vtk.vtkCellArray()
   triangles.InsertNextCell(triangle)

   # polydata object
   trianglePolyData = vtk.vtkPolyData()
   trianglePolyData.SetPoints( points )
   trianglePolyData.SetPolys( triangles )

   # mapper
   mapper = vtk.vtkPolyDataMapper()
   mapper.SetInput(trianglePolyData)

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

   # assign actor to the renderer
   ren.AddActor(actor)

   # enable user interface interactor
   iren.Initialize()
   renWin.Render()
   iren.Start()

谁能告诉我,如何显示三角形的边界只有一个特定的颜色。在

理想情况下,我想在有纹理的曲面上显示三角形。我的数据由三角形组成。也有可能使给予vtk的三角形的顶点可见。在

我用python编写代码。在

非常感谢


Tags: 代码createpoints边界actormappertrianglevtk
1条回答
网友
1楼 · 发布于 2024-10-01 17:26:32

您需要从vtkPolyData对象提取边:

edges = vtk.vtkExtractEdges()
edges.SetInput(trianglePolyData)
edge_mapper = vtk.vtkPolyDataMapper()
edge_mapper.SetInput(edges.GetOutput())

edge_actor = vtk.vtkActor()
edge_actor.SetMapper(edge_mapper)
edge_actor.GetProperty().SetColor(1,0,0)

ren.AddActor(edge_actor)

vtk.vtkPolyDataMapper().SetResolveCoincidentTopologyToPolygonOffset()

首先必须通过vtkExtractEdges过滤器提取边缘。将该过滤器的结果映射到vtkPolyData对象,并为该数据构造一个actor。然后我们通过直接修改actor将网格的颜色设置为红色。在

调用vtk.vtkPolyDataMapper().SetResolveCoincidentTopologyToPolygonOffset()可防止边与曲面发生冲突(由于z缓冲区精度问题,两个几何对象重合,相互撕裂)。在

为了完整起见,下面是整个代码:

^{pr2}$

相关问题 更多 >

    热门问题