一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

操作系统:win 10
QT: 5.15.2
VTK : 9.1

一、VTK库编译

1、从官网下载vtk 库现在已经更新到9.2.2 了

2、下载Cmake

3、使用Cmake 编译vtk源码

     注意点 :

1、有三个路径,source  build  install 

2、对应Qt的安装位置

 4、使用vs 生产要bulid 两次,一次是debug  还有一次是release  

二、VTK 库引入

如何先键的项目是这种情况,那么就说明我们确实vtk 相关的库,我们要在pro 文件中加载库

  1 # VTK
  2 win32:CONFIG(release, debug|release):LIBS += -LD:/pcl_lib/VTK/lib\
  3                                                 -lvtkChartsCore-9.1\
  4                                                 -lvtkCommonColor-9.1\
  5                                                 -lvtkCommonComputationalGeometry-9.1\
  6                                                 -lvtkCommonCore-9.1\
  7                                                 -lvtkCommonDataModel-9.1\
  8                                                 -lvtkCommonExecutionModel-9.1\
  9                                                 -lvtkCommonMath-9.1\
 10                                                 -lvtkCommonMisc-9.1\
 11                                                 -lvtkCommonSystem-9.1\
 12                                                 -lvtkCommonTransforms-9.1\
 13                                                 -lvtkDICOMParser-9.1\
 14                                                 -lvtkDomainsChemistry-9.1\
 15                                                 -lvtkDomainsChemistryOpenGL2-9.1\
 16                                                 -lvtkdoubleconversion-9.1\
 17                                                 -lvtkexodusII-9.1\
 18                                                 -lvtkexpat-9.1\
 19                                                 -lvtkFiltersAMR-9.1\
 20                                                 -lvtkFiltersCore-9.1\
 21                                                 -lvtkFiltersExtraction-9.1\
 22                                                 -lvtkFiltersFlowPaths-9.1\
 23                                                 -lvtkFiltersGeneral-9.1\
 24                                                 -lvtkFiltersGeneric-9.1\
 25                                                 -lvtkFiltersGeometry-9.1\
 26                                                 -lvtkFiltersHybrid-9.1\
 27                                                 -lvtkFiltersHyperTree-9.1\
 28                                                 -lvtkFiltersImaging-9.1\
 29                                                 -lvtkFiltersModeling-9.1\
 30                                                 -lvtkFiltersParallel-9.1\
 31                                                 -lvtkFiltersParallelImaging-9.1\
 32                                                 -lvtkFiltersPoints-9.1\
 33                                                 -lvtkFiltersProgrammable-9.1\
 34                                                 -lvtkFiltersSelection-9.1\
 35                                                 -lvtkFiltersSMP-9.1\
 36                                                 -lvtkFiltersSources-9.1\
 37                                                 -lvtkFiltersStatistics-9.1\
 38                                                 -lvtkFiltersTexture-9.1\
 39                                                 -lvtkFiltersTopology-9.1\
 40                                                 -lvtkFiltersVerdict-9.1\
 41                                                 -lvtkfmt-9.1\
 42                                                 -lvtkfreetype-9.1\
 43                                                 -lvtkGeovisCore-9.1\
 44                                                 -lvtkgl2ps-9.1\
 45                                                 -lvtkglew-9.1\
 46                                                 -lvtkGUISupportQt-9.1\
 47                                                 -lvtkGUISupportQtQuick-9.1\
 48                                                 -lvtkGUISupportQtSQL-9.1\
 49                                                 -lvtkhdf5-9.1\
 50                                                 -lvtkhdf5_hl-9.1\
 51                                                 -lvtkImagingColor-9.1\
 52                                                 -lvtkImagingCore-9.1\
 53                                                 -lvtkImagingFourier-9.1\
 54                                                 -lvtkImagingGeneral-9.1\
 55                                                 -lvtkImagingHybrid-9.1\
 56                                                 -lvtkImagingMath-9.1\
 57                                                 -lvtkImagingMorphological-9.1\
 58                                                 -lvtkImagingSources-9.1\
 59                                                 -lvtkImagingStatistics-9.1\
 60                                                 -lvtkImagingStencil-9.1\
 61                                                 -lvtkInfovisCore-9.1\
 62                                                 -lvtkInfovisLayout-9.1\
 63                                                 -lvtkInteractionImage-9.1\
 64                                                 -lvtkInteractionStyle-9.1\
 65                                                 -lvtkInteractionWidgets-9.1\
 66                                                 -lvtkIOAMR-9.1\
 67                                                 -lvtkIOAsynchronous-9.1\
 68                                                 -lvtkIOCGNSReader-9.1\
 69                                                 -lvtkIOChemistry-9.1\
 70                                                 -lvtkIOCityGML-9.1\
 71                                                 -lvtkIOCONVERGECFD-9.1\
 72                                                 -lvtkIOCore-9.1\
 73                                                 -lvtkIOEnSight-9.1\
 74                                                 -lvtkIOExodus-9.1\
 75                                                 -lvtkIOExport-9.1\
 76                                                 -lvtkIOExportGL2PS-9.1\
 77                                                 -lvtkIOExportPDF-9.1\
 78                                                 -lvtkIOGeometry-9.1\
 79                                                 -lvtkIOHDF-9.1\
 80                                                 -lvtkIOImage-9.1\
 81                                                 -lvtkIOImport-9.1\
 82                                                 -lvtkIOInfovis-9.1\
 83                                                 -lvtkIOIOSS-9.1\
 84                                                 -lvtkIOLegacy-9.1\
 85                                                 -lvtkIOLSDyna-9.1\
 86                                                 -lvtkIOMINC-9.1\
 87                                                 -lvtkIOMotionFX-9.1\
 88                                                 -lvtkIOMovie-9.1\
 89                                                 -lvtkIONetCDF-9.1\
 90                                                 -lvtkIOOggTheora-9.1\
 91                                                 -lvtkIOParallel-9.1\
 92                                                 -lvtkIOParallelXML-9.1\
 93                                                 -lvtkIOPLY-9.1\
 94                                                 -lvtkIOSegY-9.1\
 95                                                 -lvtkIOSQL-9.1\
 96                                                 -lvtkioss-9.1\
 97                                                 -lvtkIOTecplotTable-9.1\
 98                                                 -lvtkIOVeraOut-9.1\
 99                                                 -lvtkIOVideo-9.1\
100                                                 -lvtkIOXML-9.1\
101                                                 -lvtkIOXMLParser-9.1\
102                                                 -lvtkjpeg-9.1\
103                                                 -lvtkjsoncpp-9.1\
104                                                 -lvtkkissfft-9.1\
105                                                 -lvtklibharu-9.1\
106                                                 -lvtklibproj-9.1\
107                                                 -lvtklibxml2-9.1\
108                                                 -lvtkloguru-9.1\
109                                                 -lvtklz4-9.1\
110                                                 -lvtklzma-9.1\
111                                                 -lvtkmetaio-9.1\
112                                                 -lvtknetcdf-9.1\
113                                                 -lvtkogg-9.1\
114                                                 -lvtkParallelCore-9.1\
115                                                 -lvtkParallelDIY-9.1\
116                                                 -lvtkpng-9.1\
117                                                 -lvtkpugixml-9.1\
118                                                 -lvtkRenderingAnnotation-9.1\
119                                                 -lvtkRenderingContext2D-9.1\
120                                                 -lvtkRenderingContextOpenGL2-9.1\
121                                                 -lvtkRenderingCore-9.1\
122                                                 -lvtkRenderingFreeType-9.1\
123                                                 -lvtkRenderingGL2PSOpenGL2-9.1\
124                                                 -lvtkRenderingImage-9.1\
125                                                 -lvtkRenderingLabel-9.1\
126                                                 -lvtkRenderingLOD-9.1\
127                                                 -lvtkRenderingOpenGL2-9.1\
128                                                 -lvtkRenderingQt-9.1\
129                                                 -lvtkRenderingSceneGraph-9.1\
130                                                 -lvtkRenderingUI-9.1\
131                                                 -lvtkRenderingVolume-9.1\
132                                                 -lvtkRenderingVolumeOpenGL2-9.1\
133                                                 -lvtkRenderingVtkJS-9.1\
134                                                 -lvtksqlite-9.1\
135                                                 -lvtksys-9.1\
136                                                 -lvtkTestingRendering-9.1\
137                                                 -lvtktheora-9.1\
138                                                 -lvtktiff-9.1\
139                                                 -lvtkverdict-9.1\
140                                                 -lvtkViewsContext2D-9.1\
141                                                 -lvtkViewsCore-9.1\
142                                                 -lvtkViewsInfovis-9.1\
143                                                 -lvtkViewsQt-9.1\
144                                                 -lvtkWrappingTools-9.1\
145                                                 -lvtkzlib-9.1

然后执行qmake,并进行编译和运行

 三、、控件提升(将一个widget 提升为QVTKOpenGLNativeWidget)

首先在UI界面个widget ,布局成水平布局

  运行看一下,没有问题。

  QOpenGLWidget允许在平台支持时使用不同的OpenGL版本和配置文件。只需通过setFormat()设置请求的格式。但在同一窗口中有多个QOpenGLWidget,要求它们都使用相同的格式,或者至少不是环境共享的格式。要解决此问题,使用QSurfaceFormat :: setDefaultFormat(),而不是setFormat()。

  注意:在请求OpenGL核心配置文件上下文时,在构造QApplication实例之前调用QSurfaceFormat :: setDefaultFormat()在某些平台(例如,macOS)上是必需的。这是为了确保上下文之间的资源共享保持功能,因为所有内部上下文都是使用正确的版本和配置文件创建的

vtkActor:

  表示渲染场景中的对象(几何和属性)。

  vtkActor用于表示呈现场景中的实体。它继承了vtkProp中与角色位置和方向相关的函数。actor还具有缩放功能,并维护对定义几何的引用(即、呈现属性,可能还有纹理映射。vtkActor将这些实例变量组合成一个4x4转换矩阵

VKT宏初始化:

   在使用vtk 之前一定要在前面加上初始化的相关代码,不然程序当中是无法new 出对象的

1 #include "vtkAutoInit.h"   // vtk初始化的方式
2 VTK_MODULE_INIT(vtkRenderingOpenGL2);   // 渲染
3 VTK_MODULE_INIT(vtkInteractionStyle);   // 相互做用方式
4 VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);  //
5 VTK_MODULE_INIT(vtkRenderingFreeType);
 1 // 获得默认的opengl的配置
 2    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat(true));
 3    vtkNew<vtkNamedColors> colors;
 4    vtkNew<vtkSphereSource> shereSource;
 5  
 6    vtkNew<vtkPolyDataMapper> shereMapper;
 7    shereMapper->SetInputConnection(shereSource->GetOutputPort());
 8    // 声明一个actor 类,然后使用这个类来显示球体
 9    vtkNew<vtkActor> shereActor;
10    shereActor->SetMapper(shereMapper);
11    // 设置颜色
12    shereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
13    // 渲染
14    vtkNew<vtkRenderer> renderer;
15    renderer->AddActor(shereActor);
16    renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
17    // 显示renderer 的窗口
18    vtkNew<vtkGenericOpenGLRenderWindow> renderwindow;
19  
20   renderwindow->AddRenderer(renderer);
21   renderwindow->SetWindowName("RenderWindowNoUIFile");
22  
23  
24   // 最后开始调用
25   QHBoxLayout * hl=new QHBoxLayout(this);
26   hl->addWidget(ui->qvtkWidget);
27   ui->qvtkWidget->setRenderWindow(renderwindow);
28   setLayout(hl);

 

posted on 2023-06-20 16:12  一杯清酒邀明月  阅读(2329)  评论(0编辑  收藏  举报