示例vtkLight的简单用法
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackball.h>
#include <vtkInteractorStyle.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkTexture.h>
#include <vtkProperty.h>
#include <vtkLight.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void textureSlot();
void lightPositionSlot();
void lightFocusSlot();
void lightIntensitySlot();
void lightColorSlot();
void lightSwitchSlot();
private:
vtkSmartPointer<vtkRenderer> pRenderer;
vtkSmartPointer<vtkProperty> pProperty;
vtkSmartPointer<vtkPolyDataMapper> pPolyDataMapper;
vtkSmartPointer<vtkActor> pCylinderActor;
vtkSmartPointer<vtkTexture> pTexture;
vtkSmartPointer<vtkLight> pLight;
vtkSmartPointer<vtkCylinderSource> pCylinderSource;
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QColorDialog>
#include <QFileDialog>
#include <vtkJPEGReader.h>
#include <vtkPNGReader.h>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 渲染的场景
pRenderer = vtkSmartPointer<vtkRenderer>::New();
// 圆柱数据
pCylinderSource = vtkSmartPointer<vtkCylinderSource>::New();
pCylinderSource->SetCenter(0, 0, 0);
pCylinderSource->SetResolution(25);
pCylinderSource->SetHeight(2);
pCylinderSource->SetRadius(2);
// 圆柱的Mapper
pPolyDataMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
pPolyDataMapper->SetInputConnection(pCylinderSource->GetOutputPort());
// 圆柱的Property
pProperty = vtkSmartPointer<vtkProperty>::New();
pProperty->SetColor(1, 0, 0);
pProperty->SetOpacity(0.5);
pProperty->SetAmbient(0.3);
pProperty->SetDiffuse(0.4);
pProperty->SetSpecular(0.8);
pProperty->SetShading