学习VTK绘制圆柱体
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
/*
* ModuleName: 模块名称
* Description:
* 参考代码:https://lorensen.github.io/VTKExamples/site/Cxx/GeometricObjects/CylinderExample/
* Author: hsw
* Date: 2020-03-15
*
*/
// QT
#include <QMainWindow>
#include <QDebug>
// VTK
#include <vtkSmartPointer.h>
#include <vtkCamera.h>
#include <vtkNamedColors.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkActor.h>
#include <vtkPolyDataMapper.h>
#include <vtkCylinderSource.h>
#include <vtkSmartPointer.h>
#include <vtkProperty.h>
#include <vtkObject.h>
#include <vtkAutoInit.h>
// C++
#include <array>
namespace Ui {
class MainWindow;
}
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingContextOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private:
vtkSmartPointer<vtkNamedColors> colors;
vtkSmartPointer<vtkCylinderSource> cylinder;
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper;
vtkSmartPointer<vtkActor> cylinderActor;
vtkSmartPointer<vtkRenderer> cylinderRenderer;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// vtkNamedColors
colors = vtkSmartPointer<vtkNamedColors>::New();
std::array<unsigned char, 4> bkg{{26, 51, 102, 255}};
colors->SetColor("BkgColor", bkg.data());
// vtkSource
cylinder = vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetResolution(8);
// vtkMapper
cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
// vtkActor
cylinderActor = vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
cylinderActor->RotateX( 30.0);
cylinderActor->RotateY(-45.0);
// vtkRenderer
cylinderRenderer = vtkSmartPointer<vtkRenderer>::New();
cylinderRenderer->AddActor(cylinderActor);
cylinderRenderer->SetBackground(colors->GetColor3d("BkgColor").GetData());
cylinderRenderer->ResetCamera();
cylinderRenderer->GetActiveCamera()->Zoom(1.5);
// vtkRenderWindow
ui->qvtkWidget->GetRenderWindow()->AddRenderer(cylinderRenderer);
}
MainWindow::~MainWindow()
{
delete ui;
}