温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

VTK中常用控件介绍及如何实现圆锥体绘制

发布时间:2021-11-15 15:18:03 来源:亿速云 阅读:166 作者:柒染 栏目:大数据

VTK中常用控件介绍及如何实现圆锥体绘制,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。


利用 VTK 进行绘制物体时,常用到的组件有下面几种,为了加深理解,VTK 把一个物体的渲染过程比喻成了一场演出(真的很形象):

  • vtkRenderWindow : 绘制窗口,相当于用于表演的舞台场地;

  • vtkRenderer — 涉及灯光,相机,actor 的绘制过程;相当于舞台上的整体表演效果;

  • vtkLight — 灯源用于照明场景;

  • vtkCamera — 定义视角,焦距,及场景的视觉属性,相当于观众的视野范围;

  • vtkActor — 场景中渲染的对象,属性以及它在场景中的位置,绘制中展示的道具;相当于演出的演员和道具;

  • vtkProperty 修饰 vtkActor 的属性,包括颜色、透明度及灯光的属性(反射、折射效果),演出用到的灯光

  • vtkMappervtkActor 的几何映射,绘制时需要把 vtkAcor 转化为几何属性才能进行绘制;多个 vtkActor 可以设置相同的 mapper

下图是对 VTK 在绘制效果中对各组件的标注:

VTK中常用控件介绍及如何实现圆锥体绘制  

进行物体绘制时,需要先提供源数据,对数据进行一系列操作(读取、格式转换、Filter图像处理),再转化为vtkMappervtkActor 进行设置`vtkMapper 后,传入vtkRendener (绘制器)中。

在进行代码实现时,如果没有定义vtkLight、vtkCamera 两个组件时,程序会自动创建这两个组件。

整体来说,VTK 的数据管道流向如下:

VTK中常用控件介绍及如何实现圆锥体绘制  

下面就利用代码来实现一个圆锥体的绘制,借助于 VTK 提供的一个类 vtkConeSource.h

#include<vtkActor.h>
#include<vtkSmartPointer.h>
#include<vtkPolyDataMapper.h>
#include<vtkConeSource.h>
#include<vtkRenderer.h>
#include<vtkRenderWindow.h>
#include<vtkCamera.h>
#include<vtkNamedColors.h>

#include "vtkAutoInit.h" 
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);


int main()
{
    vtkSmartPointer<vtkConeSource> Cone = vtkSmartPointer<vtkConeSource>::New();
    vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();

    Cone->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中常用控件介绍及如何实现圆锥体绘制  

代码中对圆锥设置了几个参数:高度,底部半径,及包含面的个数(圆锥涉及的面的总个数);

VTK 除了头文件 vtkConeSource.h 提供圆锥数据以外,还有椭圆,正方体,圆环等数据对象。

VTK中常用控件介绍及如何实现圆锥体绘制  

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vtk
AI