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

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

在VTK常见控件的介绍以及如何实现圆锥体的绘制,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。

使用VTK绘制对象时,通常使用以下组件。为了加深理解,VTK把一个物体的渲染过程比作一场表演(真的很生动):

vtkRenderWindow :绘图窗口相当于演出的舞台场地;

VTK渲染器——涉及灯光、摄像机和演员的绘制过程;相当于舞台上的整体表演效果;

VtkLight—光源用于照亮场景;

VTK相机——定义场景的视角、焦距和视觉属性,相当于观众的视野;

VTKACTOR-场景中渲染的对象,其属性及其在场景中的位置,以及在绘图中显示的道具;相当于表演的演员和道具;

VtkProperty修改vtkActor的属性,包括颜色、透明度和灯光(反射和折射效果)的属性,以及性能中使用的灯光。

VTKMapper——VTKATOR的几何映射,只能通过将vtkAcor转化为几何属性来绘制;多个vtkActor可以设置同一个映射器。

下图是VTK对绘图效果中每个组件的注释:

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

绘制对象时,需要提供源数据,对数据进行一系列操作(读取、格式转换、Filter图像处理),然后将数据转换为vtkMapper。vtkActor设置vtkMapper后,传输到vtkRendener(绘图仪)。

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

总体而言,VTK的数据管道流程如下:

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

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

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

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

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

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/93994.html

(0)

相关推荐

  • JScript对象是什么意思

    技术JScript对象是什么意思这篇文章给大家分享的是有关JScript对象是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Jscript 对象是属性和方法的集合。一个方法就是一个函数

    攻略 2021年11月30日
  • 如何解决Hibernate批量更新问题

    技术如何解决Hibernate批量更新问题这篇文章主要介绍了如何解决Hibernate批量更新问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对于Hib

    攻略 2021年12月8日
  • 分享CSS3边框

    技术分享CSS3边框本篇内容主要讲解“分享CSS3边框”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分享CSS3边框”吧!浏览器支持实例使用图片创建围绕 div 元素的边框:

    攻略 2021年11月6日
  • SQL如何实现增删改查

    技术SQL如何实现增删改查这篇文章给大家分享的是有关SQL如何实现增删改查的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SQL 是用于访问和处理数据库的标准的计算机语言。注意哟,SQL是一门语

    攻略 2021年12月1日
  • AcWing 91 最短Hamilton路径

    技术AcWing 91 最短Hamilton路径 AcWing 91 最短Hamilton路径AcWing 91 最短Hamilton路径
    题目描述
    给定一张 n个点的带权无向图,
    点从 0~n?1 标

    礼包 2021年11月19日
  • Flex Cairngorm组成的示例分析

    技术Flex Cairngorm组成的示例分析这篇文章主要介绍了Flex Cairngorm组成的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。F

    攻略 2021年12月4日