Hello, I have this example to open .vtk file and visualize in Qt, but i need to open .vtu file too.
So what part of the code i need to change to be possible to read this type?
Thanks in advance!
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QIODevice>
#include <QFileDialog>
#include <QFile>
#include <vtkCamera.h>
#include <vtkActor.h>
#include <vtkDataSet.h>
#include <vtkDataSetMapper.h>
#include <vtkDataSetReader.h>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
ui(new Ui::MainWindow),
_renderWindow(vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New()),
_renderer(vtkSmartPointer<vtkRenderer>::New()),
_interactor(vtkSmartPointer<QVTKInteractor>::New()),
_interactorStyle(vtkSmartPointer<vtkInteractorStyle>::New())
{
ui->setupUi(this);
// Camera
vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();
camera->SetViewUp(0, 1, 0);
camera->SetPosition(0, 0, 10);
camera->SetFocalPoint(0, 0, 0);
_renderer->SetActiveCamera(camera);
_interactor->SetInteractorStyle(_interactorStyle);
_interactor->Initialize();
_renderer->SetBackground(0,0.5,0.5);
_renderWindow->SetInteractor(_interactor);
_renderWindow->AddRenderer(_renderer);
ui->openGL_VTKWidget->setRenderWindow(_renderWindow);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_openFile_btn_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open file"), "", "VTK Files (*.vtk)");
// Open file
QFile file(fileName);
file.open(QIODevice::ReadOnly);
ui->openGL_VTKWidget->activateWindow();
// Create reader
vtkSmartPointer<vtkDataSetReader> reader = vtkSmartPointer<vtkDataSetReader>::New();
reader->SetFileName(fileName.toStdString().c_str());
// Read the file
reader->Update();
// Add data set to 3D view
vtkSmartPointer<vtkDataSet> dataSet = reader->GetOutput();
// Actor
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
// Mapper
vtkSmartPointer<vtkDataSetMapper> mapper = vtkSmartPointer<vtkDataSetMapper>::New();
mapper->SetInputData(dataSet);
actor->SetMapper(mapper);
_renderer->AddActor(actor);
_renderer->ResetCamera(dataSet->GetBounds());
_renderWindow->Render();
}