Hi all!
I have a question about loading the CSV file.
I’m using the ‘vtkDelimitedTextReader’ class to read the CSV model file.
The code is as below:
vtkNew<vtkDelimitedTextReader> m_vtkCSVReader;
m_vtkCSVReader->SetFileName(path);
m_vtkCSVReader->DetectNumericColumnsOn();
m_vtkCSVReader->SetFieldDelimiterCharacters(",");
m_vtkCSVReader->Update();
vtkSmartPointer<vtkTable> table = m_vtkCSVReader->GetOutput();
vtkNew<vtkPoints> points;
int row = table->GetNumberOfRows();
int col = table->GetNumberOfColumns();
for (vtkIdType i = 0; i < table->GetNumberOfRows(); i++)
{
points->InsertNextPoint((table->GetValue(i, 0)).ToDouble(),
(table->GetValue(i, 1)).ToDouble(),
(table->GetValue(i, 2)).ToDouble());
}
vtkNew<vtkPolyData> polydata;
polydata->SetPoints(points);
vtkNew<vtkVertexGlyphFilter> glyphFilter;
glyphFilter->SetInputData(polydata);
glyphFilter->Update();
vtkNew<vtkLookupTable> lut;
double minz = 0.0f, maxz = 0.0f;
GetDataBounds(polydata, &minz, &maxz);
int numPoints = points->GetNumberOfPoints();
CreateLookupTable(minz, maxz, numPoints, &lut);
vtkNew<vtkUnsignedCharArray> colors;
CreateScalars(points, lut, &colors);
polydata->GetPointData()->SetScalars(colors);
vtkNew<vtkPointGaussianMapper> mapper;
mapper->SetInputConnection(glyphFilter->GetOutputPort());
mapper->EmissiveOff();
mapper->SetScaleFactor(0);
vtkNew<vtkActor> actor;
actor->SetMapper(mapper);
actor->GetProperty()->SetOpacity(1.0);
vtkNew<vtkRenderer> renderer;
renderer->AddActor(actor);
renderer->SetBackground(.1, .2, .3);
renderer->ResetCamera();
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor->SetRenderWindow(m_vtkRenderWindow);
renderWindowInteractor->Initialize();
vtkNew<CCustomMouseInteractorStyle> style;
style->SetDefaultRenderer(renderer);
style->SetParent(this);
renderWindowInteractor->SetInteractorStyle(style);
renderWindowInteractor->Initialize();
m_vtkRenderWindow->AddRenderer(renderer);
m_vtkRenderWindow->Render();
It works well but the speed is very slow.
Is there any fast way of reading the CSV model file?
Could you please advise me?
Thank you