#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkCamera.h>
#include <vtkLight.h>
namespace Ui {
class MainWindow;
}
//
// 环境光系数(Ambient): 光线照射到物体材质上,经过多次反射后最终遗留在环境中的光线强度,越大时,物体偏亮
// 漫反射系数(Diffuse): 光线照射到物体材质上,经过漫反射后形成的光线强度, 越大时,物体偏亮
// 镜面反射系数(Specular): 光线照射到物体材质上,经过镜面反射后形成的光线强度
// 镜面指数(Specular Power): 取值范围是0---128,该值越小,表示材质越是粗糙,当点光源发射的光线照射到上面时,可以产生较大的亮点,
// 该值越大,表示材质越是类似于镜面,光源照射到上面后会产生较小的亮点;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
void addAmbientSpheres();
void addLight();
void addCamera();
private:
vtkSmartPointer<vtkRenderer> pRenderer;
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
pRenderer = vtkSmartPointer<vtkRenderer>::New();
addAmbientSpheres();
addLight();
addCamera();
ui->qvtkWidget->GetRenderWindow()->AddRenderer(pRenderer);
}
MainWindow::~MainWindow()
{
delete u