(34)VTK C++开发示例 ---将图片映射到平面
/********************************************************************************
* 文件名: main.cpp
* 创建时间: 2025-03-22 20:31:57
* 开发者: MHF
* 邮箱: 1603291350@qq.com
* 功能:
*********************************************************************************/
#include<iostream>
#include <vtkImageData.h>
#include <vtkJPEGReader.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPlaneSource.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkTexture.h>
#include <vtkTextureMapToPlane.h>
using namespace std;
int main()
{
vtkNew<vtkNamedColors> colors;
string filename = "e:/lib/VTK/vtk-data/Data/wintersun.jpg";
vtkNew<vtkJPEGReader> jpegReader; //读取jpg文件
jpegReader->SetFileName(filename.c_str());
vtkNew<vtkPlaneSource> planeSource; //创建一个平面
planeSource->SetCenter(0.0, 0.0, 0.0); //设置中心点
planeSource->SetNormal(0.0, 0.0, 1.0); //设置法线
vtkNew<vtkTexture> texture; //创建纹理
texture->SetInputConnection(jpegReader->GetOutputPort()); //设置纹理的输入
vtkNew<vtkTextureMapToPlane> textureMapToPlane; //纹理映射到平面
textureMapToPlane->SetInputConnection(planeSource->GetOutputPort()); //设置输入
/******************** 开始绘制********************/
vtkNew<vtkPolyDataMapper> mapper; //创建映射器
mapper->SetInputConnection(textureMapToPlane->GetOutputPort()); //设置输入
vtkNew<vtkActor> actor; //创建演员
actor->SetMapper(mapper); //设置映射器
actor->SetTexture(texture); //设置纹理
actor->GetProperty()->SetColor(colors->GetColor3d("White").GetData()); //设置颜色
vtkNew<vtkRenderer> renderer; //创建渲染器
renderer->AddActor(actor); //添加演员
renderer->SetBackground(colors->GetColor3d("SlateGray").GetData()); //设置背景颜色
renderer->ResetCamera(); //重置相机
vtkNew<vtkRenderWindow> renderWindow; //创建渲染窗口
renderWindow->AddRenderer(renderer); //添加渲染器
renderWindow->SetSize(600, 600); //设置窗口大小
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor; //创建交互器
renderWindowInteractor->SetRenderWindow(renderWindow); //设置渲染窗口
renderWindow->Render(); //渲染
renderWindowInteractor->Start(); //开始交互
return 0;
}