我正在尝试使用vtk对象vtkVectorText呈现文本。它适用于单个3d位置。我需要的是在3d(vtkPoint)点以上放置一个3d文字。我试着用vtkTextActor3d来做,但每个文本对象都需要一个独立的演员,而我最终得到了10k个演员,当我尝试例如旋转场景时,这非常糟糕和迟缓。VTK - 如何使用单个演员呈现多个3d文本对象
我也尝试应用一些appendFilter来创建一个vtkVectorText数组,从appendFilter的对象中获取非结构化网格,然后将其转换为polydata以便使用我期望的点位置呈现非结构化网格。它没有显示出什么,因为我不知道什么是最好的方式来做到这一点。
有人可以帮助我吗?
这里是最后一部分我的代码:
vtkSmartPointer<vtkAppendFilter> appendFilter = vtkSmartPointer<vtkAppendFilter>::New();
//for each point
for (int i = 0; i < N;i++) {
vtkSmartPointer<vtkVectorText> vecText = vtkSmartPointer<vtkVectorText>::New();
vecText->SetText("My text, needs to appear multiple times");
vecText->Update();
appendFilter->AddInputData(vecText->GetOutput());
appendFilter->Update();
}
vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid = appendFilter->GetOutput();
unstructuredGrid->Allocate(N);
unstructuredGrid->SetPoints(points);
vtkSmartPointer<vtkGeometryFilter> geometryFilter = vtkSmartPointer<vtkGeometryFilter>::New();
geometryFilter->SetInputData(unstructuredGrid);
geometryFilter->Update();
vtkSmartPointer<vtkPolyDataMapper> textMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
textMapper->SetInputConnection(geometryFilter->GetOutputPort());
vtkSmartPointer<vtkActor> textActor = vtkSmartPointer<vtkActor>::New();
textActor->SetMapper(textMapper);
textActor->GetProperty()->SetColor(0, 1, 0);
renderer->AddActor(textActor);