(34)VTK C++开发示例 ---将图片映射到平面

时间:2025-05-06 08:29:39
/******************************************************************************** * 文件名: 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; }