VTK纹理
2023-12-20 22:34:48
#include "vtkSmartPointer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkBMPReader.h"
#include "vtkTexture.h"
#include <vtkAutoInit.h>
#include <vtkLight.h>
#include <vtkCamera.h>
#include <vtkJPEGReader.h>
#include <vtkTexture.h>
#include <vtkPlaneSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
int main()
{
vtkSmartPointer<vtkCylinderSource> cylinder =
vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetHeight(3.0);//设置高度
cylinder->SetRadius(1.0);//设置半径
cylinder->SetResolution(6);//设置柱体横截面的边数
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();//将输入的数据转换为(点、线、多边形)进行渲染
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());//VTK可视化管线的输入数据接口
//纹理
vtkSmartPointer< vtkJPEGReader> vjpegreader = vtkSmartPointer< vtkJPEGReader>::New();
const char* str= "C:\\Users\\Administrator\\Desktop\\IMAGEICON\\1.png";
vjpegreader->SetFileName(str);
vtkSmartPointer<vtkTexture> vtexture = vtkSmartPointer<vtkTexture>::New();
vtexture->SetInputConnection(vjpegreader->GetOutputPort());
vtexture->InterpolateOn();
//vtkActor,派生自vtkProp类,渲染场景中数据的可视化表达是通过vtkProp的子类负责的
//vtkProp子类负责确定渲染场景中对象的位置、大小和方向信息
vtkSmartPointer<vtkActor> cylinderActor =
vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);//Mapper(vtkMapper)对象,负责存放数据和渲染信息
cylinderActor->SetTexture(vtexture);
//负责管理场景的渲染过程
//组成场景的所有对象包括Prop,照相机(Camera)和光照(Light)都被集中在一个vtkRenderer对象中
//一个vtkRenderWindow中可以有多个vtkRenderer对象,而这些vtkRenderer可以渲染在窗口中不同的矩形区域中
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(cylinderActor);//添加vtkProp类型的对象到渲染场景中
//用于设置渲染场景的背景颜色,用R、G、B的格式设置,三个分量的取值为0.0~ 1.0
//(0.0,0.0, 0.0)为黑色,(1.0,1.0, 1.0)为白色
renderer->SetBackground(0.2, 0.1, 0.4);
//将操作系统与VTK渲染引擎连接到一起。
//不同平台下的vtkRenderWindow子类负责本地计算机系统中窗口创建和渲染过程管理
vtkSmartPointer<vtkRenderWindow> renWin =
vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);//加入vtkRenderer对象
renWin->SetSize(1300, 700);//设置窗口的大小,以像素为单位
//提供平台独立的响应鼠标、键盘和时钟事件的交互机制
//通过VTK的Command/Observer设计模式将监听到的特定平台的鼠标
//键盘和时钟事件交由vtkInteractorObserver或其子类
vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);//设置渲染窗口,消息是通过渲染窗口捕获到的,所以必须要给交互器对象设置渲染窗口
//交互器样式的一种,该样式下,用户是通过控制相机对物体作旋转、放大、缩小等操作
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style =
vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
iren->SetInteractorStyle(style);//定义交互器样式,默认的交互样式为vtkInteractorStyleSwitch
iren->Initialize();
iren->Start();
return 0;
}
文章来源:https://blog.csdn.net/weixin_48657573/article/details/135101355
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!