VTK实现纹理贴图

您所在的位置:网站首页 三维纹理映射体绘制原理 VTK实现纹理贴图

VTK实现纹理贴图

2023-10-29 00:56| 来源: 网络整理| 查看: 265

(1)VTK主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建。VTK是基于OpenGL实现的,是一个比较上层的图形库; (2)OpenGL是跨平台的图形程序接口,它用于二维,三维图像的处理,调用方便的底层图形库。但是OpenGL读入二维图片作为纹理图比较繁琐,没有提供直接的接口;

VTK实现纹理贴图,比OpenGL实现纹理贴图要方便,快速。

具体代码实现如下,可以选择渲染圆柱体或者球体: 注明:该代码参考东灵工作室博文,http://blog.csdn.net/www_doling_net/article/list/2 。

#include "vtkSmartPointer.h" #include "vtkRenderWindow.h" #include "vtkRenderer.h" #include "vtkRenderWindowInteractor.h" #include "vtkInteractorStyleTrackballCamera.h" #include "vtkCylinderSource.h" #include "vtkSphereSource.h" #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkBMPReader.h" #include "vtkJPEGReader.h" #include "vtkTexture.h" int main(int argc, char* argv[]) { //对圆柱体渲染 vtkSmartPointer cylinder = vtkSmartPointer::New(); cylinder->SetHeight( 3.0 ); cylinder->SetRadius( 1.0 ); cylinder->SetResolution( 10 ); //对球体渲染 /* vtkSmartPointer sphere = vtkSmartPointer::New(); sphere->SetRadius(2.0); sphere->SetThetaResolution(20); sphere->SetPhiResolution(20);*/ vtkSmartPointerbmpReader = vtkSmartPointer::New(); bmpReader->SetFileName("F:/qt/project_try/imageProcess_3/data/2D/MICCAI2015.jpg");//读入纹理图 vtkSmartPointertexture = vtkSmartPointer::New(); texture->SetInputConnection(bmpReader->GetOutputPort()); texture->InterpolateOn(); vtkSmartPointer cylinderMapper = vtkSmartPointer::New(); cylinderMapper->SetInputConnection( cylinder->GetOutputPort() ); //cylinderMapper->SetInputConnection( sphere->GetOutputPort() );//对球体渲染 vtkSmartPointer cylinderActor = vtkSmartPointer::New(); cylinderActor->SetMapper( cylinderMapper ); cylinderActor->SetTexture(texture);//纹理为actor的一种属性 vtkSmartPointer renderer = vtkSmartPointer::New(); renderer->AddActor( cylinderActor ); renderer->SetBackground( 0.1, 0.2, 0.4 ); vtkSmartPointer renWin = vtkSmartPointer::New(); renWin->AddRenderer( renderer ); renWin->SetSize( 300, 300 ); vtkSmartPointer iren = vtkSmartPointer::New(); iren->SetRenderWindow(renWin); vtkSmartPointer style = vtkSmartPointer::New(); iren->SetInteractorStyle(style); iren->Initialize(); iren->Start(); return 0; }

程序效果图如下:

这里写图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3