在VTK常见控件的介绍以及如何实现圆锥体的绘制,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。
使用VTK绘制对象时,通常使用以下组件。为了加深理解,VTK把一个物体的渲染过程比作一场表演(真的很生动):
vtkRenderWindow :绘图窗口相当于演出的舞台场地;
VTK渲染器——涉及灯光、摄像机和演员的绘制过程;相当于舞台上的整体表演效果;
VtkLight—光源用于照亮场景;
VTK相机——定义场景的视角、焦距和视觉属性,相当于观众的视野;
VTKACTOR-场景中渲染的对象,其属性及其在场景中的位置,以及在绘图中显示的道具;相当于表演的演员和道具;
VtkProperty修改vtkActor的属性,包括颜色、透明度和灯光(反射和折射效果)的属性,以及性能中使用的灯光。
VTKMapper——VTKATOR的几何映射,只能通过将vtkAcor转化为几何属性来绘制;多个vtkActor可以设置同一个映射器。
下图是VTK对绘图效果中每个组件的注释:
绘制对象时,需要提供源数据,对数据进行一系列操作(读取、格式转换、Filter图像处理),然后将数据转换为vtkMapper。vtkActor设置vtkMapper后,传输到vtkRendener(绘图仪)。
代码实现时,如果没有定义vtkLight和vtkCamera,程序会自动创建这两个组件。
总体而言,VTK的数据管道流程如下:
下面,在VTK提供的vtkConeSource.h类的帮助下,我们使用代码绘制一个圆锥体。
#includevtkActor.h
#includevtkSmartPointer.h
# includevtkPolyDataMapper.h
#includevtkConeSource.h
#includevtkRenderer.h
#includevtkRenderWindow.h
#includevtkCamera.h
#includevtkNamedColors.h
#包含“vtkAutoInit.h”
VTK _模块_初始化(vtkrenderingpeng L2);//vtkwasubillwithvtkrendingpeng 2
VTK _模块_初始化(vtkInteractionStyle);
intmain()
{
vtksmarttorvtkconesourcene=vtksmarttorvtkconesource : new();
vtksmarttorvtknamedcorks=vtksmarttorvtknamedcorks 3360: new();
锥形
SetHeight(3.0);//Cone Height
Cone->SetRadius(1.0);//Cone Radius
Cone->SetResolution(9);//Cone faces
vtkSmartPointer<vtkPolyDataMapper> coneMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
coneMapper->SetInputConnection(Cone->GetOutputPort());//Mapper data
vtkSmartPointer<vtkActor> coneActor = vtkSmartPointer<vtkActor>::New();
coneActor->SetMapper(coneMapper);
vtkSmartPointer<vtkRenderer> coneRender = vtkSmartPointer<vtkRenderer>::New();
coneRender->AddActor(coneActor);
coneRender->SetBackground(colors->GetColor3d("MidnightBlue").GetData());//Bachground color
vtkSmartPointer<vtkRenderWindow> renWindow = vtkSmartPointer<vtkRenderWindow>::New();
renWindow->AddRenderer(coneRender);
renWindow->SetSize(300, 300);//Size of Window;
for (auto i = 0; i < 360; ++i)
{
//render the image;
renWindow->Render();
//rotate the active camera by one degree
coneRender->GetActiveCamera()->Azimuth(1);
}
getchar();
return EXIT_SUCCESS;
}
最终的效果如下:
代码中对圆锥设置了几个参数:高度,底部半径,及包含面的个数(圆锥涉及的面的总个数);
VTK 除了头文件 vtkConeSource.h
提供圆锥数据以外,还有椭圆,正方体,圆环等数据对象。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/93994.html