Tôi đang cố gắng hiển thị văn bản bằng vtk đối tượng vtkVectorText. Nó hoạt động tốt cho một vị trí 3d duy nhất. Những gì tôi cần là đặt một văn bản 3d ở trên một số điểm (vtkPoint) 3d. Tôi đã thử làm nó với vtkTextActor3d nhưng mỗi đối tượng văn bản yêu cầu một diễn viên riêng biệt và tôi đã kết thúc với 10k diễn viên, đó là khá xấu và laggy khi tôi cố gắng ví dụ để xoay cảnh. Tôi cũng đã thử áp dụng một số appendFilter để tạo mảng vtkVectorText, lấy lưới không có cấu trúc từ đối tượng appendFilter và sau đó chuyển đổi nó thành polydata để hiển thị lưới không có cấu trúc với các vị trí điểm mong muốn của tôi. Nó cho thấy không có gì là tôi không thể tìm ra cách tốt nhất để làm điều này là gì.VTK - Cách hiển thị nhiều đối tượng văn bản 3D với một diễn viên
Ai đó có thể giúp tôi với điều này không?
Đây là mã của tôi từ phần cuối cùng:
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);