win10+vs2022编译vtk9.1

建议先把环境变量里其他编译器的东西删了,例如mingw,msys,qt

编译

https://vtk.org/download/
下载那个source
建立4个文件夹
build用来放cmake生成的东西
src是下载下来的压缩包,解压,改了个名字
debug是最后生成的debug文件
release是生成的的release文件
在这里插入图片描述
在这里插入图片描述
如果是vtk9.3.0
进入Common/Core/vtkConstantImplicitBackend.h

struct VTKCOMMONCORE_EXPORT vtkConstantImplicitBackend final

改成

struct vtkConstantImplicitBackend final

打开cmake
选择source code(就是刚刚的src)
选择build(就是刚刚的build)
在这里插入图片描述
点击configure
会弹窗,默认就行
在这里插入图片描述
经过一通漫长的等待,就configure好了,但是有很多红的
搜索CMAKE_INSTALL_PREFIX
把右边改成之前的install-debug
在这里插入图片描述
搜索BUILD_SHARED_LIBS
勾上
在这里插入图片描述
勾上search旁边的Grouped和Advanced
搜索VTK_LEGACY_REMOVE
勾上
在这里插入图片描述
勾上search旁边的Grouped和Advanced
搜索qt
全部改成want
在这里插入图片描述
再次点击configure
可能会报错,但是没有关系,点击ok
在这里插入图片描述
修改Qt5_DIR
路径选择 qt安装的路径/Qt5.12.12/5.12.12/msvc2017_64/lib/cmake/Qt5
再次Configure
在这里插入图片描述
可以看到还有红色
再次configure
在这里插入图片描述
这次终于好了(注意下面的是warning,警告==没有)

顺便检查一下,是否出现了msvc以外的编译器,例如mingw,msys,qt
比如下面这个
在这里插入图片描述
如果出现了,就把选项全部清空,像这样
在这里插入图片描述

点击generate
在这里插入图片描述
在刚刚的build里面
打开VTK.sln
在这里插入图片描述
点击生成->批生成

在这里插入图片描述
勾上ALL_BUILD的Release,点击生成
在这里插入图片描述
然后经过漫长的等待,就生成完了
在这里插入图片描述
点击生成->批生成

去掉ALL_BUILD前面的勾
在这里插入图片描述
勾上INSTALL的release的勾
然后点击生成
在这里插入图片描述
这回应该比较快
在这里插入图片描述
把install-debug中的文件裁剪到install-release中
在这里插入图片描述
变成这样
在这里插入图片描述
接着我们生成debug的
点击生成->批生成

勾上ALL_BUILD的DEBUG
勾上INSTALL的Debug
点击生成
在这里插入图片描述
在这里插入图片描述
经过漫长的等待,debug的也好了
在这里插入图片描述
把debug的bin和release的bin加入环境变量(应该有顺序要求
然后重启
在这里插入图片描述

用cmake

https://kitware.github.io/vtk-examples/site/Cxx/GeometricObjects/CylinderExample/
下载一下,解压
source code和build调一下
configure
在这里插入图片描述
这个install_prefix好像没啥子卵用
注意这个VTK_DIR,因为环境变量中debug在前面,所以先debug了
再点configure
在这里插入图片描述
然后点Generate
在这里插入图片描述
然后build中应该生成了
双击sln
在这里插入图片描述
把中间那个设置为启动项
确认上面是debug x64
运行
在这里插入图片描述
就可以了
在这里插入图片描述

vs直接写

点开项目属性

VC++目录->包含目录
上面注意一下是Debug和x64
然后加入debug的include的路径
在这里插入图片描述
接着是lib
在这里插入图片描述
接着打开cmd
cd到刚刚的lib路径
输入

dir /a-d /b *.lib>src.txt

在这里插入图片描述
打开lib目录下的src.txt
复制
在这里插入图片描述
打开vs
链接器->输入->附加依赖项
把刚刚复制的全部粘贴进去
在这里插入图片描述
把上面的debug x64 换成release x64
然后类似地配置release的
在这里插入图片描述
在这里插入图片描述
然后测试一下

#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCylinderSource.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#ifndef INITIAL_OPENGL
#define INITIAL_OPENGL

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
#endif
#include <array>

int main(int, char* [])
{
    vtkNew<vtkNamedColors> colors;

    // Set the background color.
    std::array<unsigned char, 4> bkg{ {26, 51, 102, 255} };
    colors->SetColor("BkgColor", bkg.data());

    // This creates a polygonal cylinder model with eight circumferential facets
    // (i.e, in practice an octagonal prism).
    vtkNew<vtkCylinderSource> cylinder;
    cylinder->SetResolution(8);

    // The mapper is responsible for pushing the geometry into the graphics
    // library. It may also do color mapping, if scalars or other attributes are
    // defined.
    vtkNew<vtkPolyDataMapper> cylinderMapper;
    cylinderMapper->SetInputConnection(cylinder->GetOutputPort());

    // The actor is a grouping mechanism: besides the geometry (mapper), it
    // also has a property, transformation matrix, and/or texture map.
    // Here we set its color and rotate it around the X and Y axes.
    vtkNew<vtkActor> cylinderActor;
    cylinderActor->SetMapper(cylinderMapper);
    cylinderActor->GetProperty()->SetColor(
        colors->GetColor4d("Tomato").GetData());
    cylinderActor->RotateX(30.0);
    cylinderActor->RotateY(-45.0);

    // The renderer generates the image
    // which is then displayed on the render window.
    // It can be thought of as a scene to which the actor is added
    vtkNew<vtkRenderer> renderer;
    renderer->AddActor(cylinderActor);
    renderer->SetBackground(colors->GetColor3d("BkgColor").GetData());
    // Zoom in a little by accessing the camera and invoking its "Zoom" method.
    renderer->ResetCamera();
    renderer->GetActiveCamera()->Zoom(1.5);

    // The render window is the actual GUI window
    // that appears on the computer screen
    vtkNew<vtkRenderWindow> renderWindow;
    renderWindow->SetSize(300, 300);
    renderWindow->AddRenderer(renderer);
    renderWindow->SetWindowName("Cylinder");

    // The render window interactor captures mouse events
    // and will perform appropriate camera or actor manipulation
    // depending on the nature of the events.
    vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
    renderWindowInteractor->SetRenderWindow(renderWindow);

    // This starts the event loop and as a side effect causes an initial render.
    renderWindow->Render();
    renderWindowInteractor->Start();

    return EXIT_SUCCESS;
}

注意下面代码与官方的例子差了这几句

#ifndef INITIAL_OPENGL
#define INITIAL_OPENGL

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
#endif

运行

debug
在这里插入图片描述
release
在这里插入图片描述

QT

注意vtk9以后是没有QVTKWidget

Qt Creator

先在qt creator里配置msvc2017 64位
https://blog.csdn.net/qq_39942341/article/details/123357894?spm=1001.2014.3001.5501

这里就配置debug的(release类似)
把下面的base_dir改成你的debug的lib的路径
然后会输出一个src.txt

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import os
import glob

base_dir = r'D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib'

if __name__ == "__main__":
    with open('src.txt', 'w') as f:
        for path in glob.glob(os.path.join(os.path.abspath(base_dir), '*.lib')):
            f.write('LIBS += "{}"\n'.format(path))

在这里插入图片描述
打开qt,建立一个msvc2017 64位的项目
打开.pro文件
在这里插入图片描述
添加
第一行改成debug的include/vtk
后面的就是刚刚src.txt里的

#For Debug
INCLUDEPATH += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\include\vtk-9.1"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkcgns-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkChartsCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonColor-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonComputationalGeometry-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonDataModel-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonExecutionModel-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonMath-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonMisc-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonSystem-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkCommonTransforms-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkDICOMParser-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkDomainsChemistry-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkDomainsChemistryOpenGL2-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkdoubleconversion-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkexodusII-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkexpat-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersAMR-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersExtraction-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersFlowPaths-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersGeneral-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersGeneric-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersGeometry-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersHybrid-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersHyperTree-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersImaging-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersModeling-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersParallel-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersParallelImaging-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersPoints-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersProgrammable-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersSelection-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersSMP-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersSources-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersStatistics-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersTexture-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersTopology-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkFiltersVerdict-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkfmt-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkfreetype-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkGeovisCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkgl2ps-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkglew-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkGUISupportQt-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkGUISupportQtQuick-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkGUISupportQtSQL-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkhdf5-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkhdf5_hl-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingColor-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingFourier-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingGeneral-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingHybrid-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingMath-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingMorphological-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingSources-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingStatistics-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkImagingStencil-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkInfovisCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkInfovisLayout-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkInteractionImage-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkInteractionStyle-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkInteractionWidgets-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOAMR-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOAsynchronous-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOCGNSReader-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOChemistry-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOCityGML-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOCONVERGECFD-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOEnSight-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOExodus-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOExport-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOExportGL2PS-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOExportPDF-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOGeometry-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOHDF-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOImage-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOImport-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOInfovis-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOIOSS-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOLegacy-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOLSDyna-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOMINC-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOMotionFX-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOMovie-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIONetCDF-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOOggTheora-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOParallel-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOParallelXML-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOPLY-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOSegY-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOSQL-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkioss-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOTecplotTable-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOVeraOut-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOVideo-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOXML-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkIOXMLParser-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkjpeg-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkjsoncpp-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkkissfft-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtklibharu-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtklibproj-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtklibxml2-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkloguru-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtklz4-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtklzma-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkmetaio-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtknetcdf-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkogg-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkParallelCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkParallelDIY-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkpng-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkpugixml-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingAnnotation-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingContext2D-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingContextOpenGL2-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingFreeType-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingGL2PSOpenGL2-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingImage-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingLabel-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingLOD-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingOpenGL2-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingQt-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingSceneGraph-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingUI-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingVolume-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingVolumeOpenGL2-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkRenderingVtkJS-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtksqlite-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtksys-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkTestingRendering-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtktheora-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtktiff-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkverdict-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkViewsContext2D-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkViewsCore-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkViewsInfovis-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkViewsQt-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkWrappingTools-9.1d.lib"
LIBS += "D:\VTK-9.1.0\VTK-9.1.0-install-debug\lib\vtkzlib-9.1d.lib"

在这里插入图片描述
在ui文件里加一个OpenGL Widget

在这里插入图片描述
右键提升为
在这里插入图片描述
在提升的类名称里填QVTKOpenGLNativeWidget
点添加
还在研究
然后点一下全局包含
提升
在这里插入图片描述
可以看到就添加好了
在这里插入图片描述
在mainwindow.cpp里

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSurfaceFormat>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>
 
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
 
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
    vtkNew<vtkNamedColors> colors;
    vtkNew<vtkSphereSource> sphereSource;
    vtkNew<vtkPolyDataMapper> sphereMapper;
    sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
    vtkNew<vtkActor> sphereActor;
    sphereActor->SetMapper(sphereMapper);
    sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
    vtkNew<vtkRenderer> renderer;
    renderer->AddActor(sphereActor);
    renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
    vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
    renderWindow->AddRenderer(renderer);
    renderWindow->SetWindowName("RenderWindowNoUIFile");
    setCentralWidget(ui->openGLWidget);
    ui->openGLWidget->setRenderWindow(renderWindow);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述
启动
在这里插入图片描述

vs

方法1

延续刚刚的

先在vs里装qt插件
https://blog.csdn.net/qq_39942341/article/details/123304225?spm=1001.2014.3001.5501

打开自己的visual studio installer
点开单个组件
搜索msvc
确保这几个都装了
在这里插入图片描述

这里选择继续但无需代码
在这里插入图片描述
扩展->Qt VS tools->Open Qt Project File(.pro)…
在这里插入图片描述
这里我们选择在pro里配置了vtk的那个文件
在这里插入图片描述
在这里插入图片描述
启动
在这里插入图片描述

方法2

应该是可以直接创建的,回头看看

参考:
https://gitlab.kitware.com/vtk/vtk/-/issues/19166
https://blog.csdn.net/A112459/article/details/134659851

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
VTK用户指南 版本4.0 William J. Schroeder 1998-2000 第一部分 VTK 介绍 第1章 欢迎 机构-----------------------------------------------------------------------------------------------8 怎样使用VTK----------------------------------------------------------------------------------8 附加资源-----------------------------------------------------------------------------------------8 第2章 安装 2.1 概述-----------------------------------------------------------------------------------------------9 2.2 安装VTK到Windows9x/NT/ME/2000/XP------------------------------------------------9 二进制安装-------------------------------------------------------------------------------------9 源代码安装-------------------------------------------------------------------------------------9 2.3 安装VTK到Unix操作系统 源代码安装------------------------------------------------------------------------------------10 运行CMake------------------------------------------------------------------------------------11 编译源代码 建立VTK多平台 安装VTK 第3章 系统概述 3.1 系统设计---------------------------------------------------------------------------------------12 图形模型--------------------------------------------------------------------------------------13 可视化模型-----------------------------------------------------------------------------------15 3.2 创建一个应用---------------------------------------------------------------------------------19 用户方法、对象和命令--------------------------------------------------------------------19 Tcl----------------------------------------------------------------------------------------------19 C++---------------------------------------------------------------------------------------------20 Java Phthon Visual Basic/COM/ActiveX 3.3 在两种语言间转换 第二部分 通过例子学习VTK 第4章 基础 4.1 创建1个简单的模型-------------------------------------------------------------------------24 程序化源对象---------------------------------------------------------------------------------24 读取源对象------------------------------------------------------------------------------------26 4.2 使用VTK交互器-----------------------------------------------------------------------------27 vtk绘制窗口交互器 交互风格 4.3 滤波数据---------------------------------------------------------------------------------------29 4.4 控制相机---------------------------------------------------------------------------------------30 安装相机 简单操作方法 控制视角方向 透视与正交视 保存与恢复相机状态 4.5 控制光线---------------------------------------------------------------------------------------32 位置光 4.6 控制3D道具-----------------------------------------------------------------------------------32 指定vtk道具3D位置 演员 演员的详细级 装配 体 vtk装载3D道具 4.7 作用纹理---------------------------------------------------------------------------------------37 4.8 拾取---------------------------------------------------------------------------------------------38 vtk装配路线 例子 4.9 vtk坐标和坐标系---------------------------------------------------------------------------40 4.10 控制vtk演员2D----------------------------------------------------------------------------41 4.11 注释--------------------------------------------------------------------------------------------41 2D注释 3D注释和vtk跟踪 4.12 特殊绘图类-----------------------------------------------------------------------------------44 尺度棒 X-Y绘制 边界盒轴 标记数据 4.13 变换数据--------------------------------------------------------------------------------------48 高级变换 第5章 可视化技术 5.1 可视化VTK数据集vtkDataSet(和子类) -------------------------------------------------50 使用数据属性进行工作 颜色映射 轮廓化 浮雕化 流线图 流线表面 剪裁 融合数据 附加数据 用另外一个尺度给等值面赋颜色 抽取单元格子集 抽取单元格作为多边形数据 5.2 可视化多边形数据---------------------------------------------------------------------------67 手工产生多边形数据 产生表面当量 十比一抽取 平滑网格 粘贴数据 产生纹理坐标 5.3 可视化结构网格-----------------------------------------------------------------------------74 手工产生结构化网格 抽取计算平面 结构网格子样化 5.4 可视化直线网格-----------------------------------------------------------------------------76 手工产生VTK直线网格 抽取计算平面 5.5 可视化非结构网格--------------------------------------------------------------------------77 手工产生VTK非结构网格 抽取部分网格 非结构网格轮廓化 第6章 可视化图像和体数据 6.1 VTK结构化点的历史表示-----------------------------------------------------------------80 6.2 手工产生VTK图像数据-------------------------------------------------------------------80 6.3 抽取图像数据子样--------------------------------------------------------------------------81 6.4 基于尺度值的弯曲--------------------------------------------------------------------------83 6.5 图像显示--------------------------------------------------------------------------------------83 图像观察者 图像演员 6.6 图像源-----------------------------------------------------------------------------------------85 2D帆布图像源 3D椭圆体图像源 高斯图像源 网格图像源 噪声图像源 正弦曲线源 6.7 图像处理--------------------------------------------------------------------------------------88 梯度化 高斯平滑 直方图 图像逻辑 重新切片 6.8 体绘制-----------------------------------------------------------------------------------------92 一个简单的例子 为什么会有多种体绘制技术? 产生一个VTK体 使用片层化函数 使用颜色变换函数 在一个体属性中控制颜色和透明度 在一个体属性中控制阴影 产生一个体映射 裁剪一个体 粘贴一个体 对一个体应用3D纹理 控制标准编码 体素光线计算 2D纹理映射 VolumePro绘制硬件 速度和精确度交替使用 使用vtkLODProp3D改善性能 可行性/局限性技术 第7章 建立模型 7.1 隐模型----------------------------------------------------------------------------------------114 定义隐函数 对隐函数进行抽样 7.2 挤压-------------------------------------------------------------------------------------------117 7.3 构建表面-------------------------------------------------------------------------------------119 Delaunay三角形化 高斯油彩 无组织点产生表面 第三部分 VTK研发者指南 第8章 数据接口和其他 8.1 读入器----------------------------------------------------------------------------------------130 多边形数据读入器 图像和体素读入器 数据集读入器 结构化网格读入器 线性网格读入器 非结构化网格读入器 8.2 写入器----------------------------------------------------------------------------------------131 多边形数据读入器 图像和体素读入器 结构化网格读入器 线性网格读入器 非结构化网格读入器 8.3 输入者----------------------------------------------------------------------------------------132 8.4 输出者----------------------------------------------------------------------------------------132 8.5 创建硬拷贝----------------------------------------------------------------------------------132 保存图像 保存大(高分辨率)图像 8.6 产生动画(使用样条) -----------------------------------------------------------------------134 8.7 使用现场数据工作--------------------------------------------------------------------------136 第9章 贡献编码 9.1 编码补偿--------------------------------------------------------------------------------------141 为VTK贡献编码的条件 编码风格 如何贡献编码 9.2 标准方法: 创建和消除对象---------------------------------------------------------------142 9.3 拷贝对象和受保护的方法------------------------------------------------------------------143 9.4 写一个VTK类: 综述-----------------------------------------------------------------------144 找到一个相似类 识别一个超类 单个类Per.h 文件 必需的方法 文档编码 使用SetGet宏 向VTK中添加类 9.5 对象工厂--------------------------------------------------------------------------------------145 综述 如何写一个工厂 如何安装一个工厂 例子工厂 第10章 流水线执行管理 10.1 执行过程--------------------------------------------------------------------------------------151 概述和术语 更新信息通道 传播更新扩展通道 触发异步更新通道 更新数据通道 10.2 使用流---------------------------------------------------------------------------------------162 第11章 VTK数据对象接口 11.1 数据组---------------------------------------------------------------------------------------166 方法 11.2 数据集---------------------------------------------------------------------------------------169 11.3 VTK数据集接口---------------------------------------------------------------------------170 方法 例子 11.4 VTK图像数据接口-----------------------------------------------------------------------174 方法 例子 11.5 VTK点集接口-----------------------------------------------------------------------------176 方法 例子 11.6 VTK结构化网格接口---------------------------------------------------------------------178 方法 例子 11.7 VTK线性网格接口-----------------------------------------------------------------------178 方法 例子 11.8 VTK多边形数据接口---------------------------------------------------------------------179 方法 例子 11.9 VTK非结构化网格接口-----------------------------------------------------------------184 方法 例子 11.10 单元格接口(VTK单元格子类) ------------------------------------------------------185 11.11 其他接口----------------------------------------------------------------------------------187 点 单元格数组 单元格类型 单元格连接 11.12 现场和属性数据接口------------------------------------------------------------------193 现场数据方法 数据集属性方法 第12章 如何写一个过程方法 12.1 概述----------------------------------------------------------------------------------------196 永远不要修改输入数据 参考计数数据 使用Debug宏 回收/删除截入的内在 修改时间 过程事件和异常终止执行 12.2 如何写一个绘图过滤器---------------------------------------------------------------199 概述 简单过滤器 复杂过滤器和流水线执行 抽取绘图过滤器 程序过滤器 重载流水执行方法 12.3 如何写一个图像过滤器---------------------------------------------------------------210 实现一个图像过滤器 第13章 用窗口系统集成 13.1 绘制窗口交互风格--------------------------------------------------------------------------216 13.2 GUI交互的总指导线------------------------------------------------------------------------217 13.3 X Window, Xt, and Motif--------------------------------------------------------------------221 13.4 MS Windows/Microsoft Foundation Classes---------------------------------------------226 13.5 Tcl/Tk-------------------------------------------------------------------------------------------227 13.6 Java 第14章 编码资源 14.1 对象图表--------------------------------------------------------------------------------------230 基础 单元格 数据集 流水线 源 过滤器 映射器 图形 体绘制 成像 OpenGL绘制器 拾取 变换塔形结构 14.2 过滤器总结-----------------------------------------------------------------------------------237 可视化过滤器 映射者对象 演员对象 14.3 VTK文件格式--------------------------------------------------------------------------------244 二进制文件 数据集属性格式 例子 第15章 光盘 15.1 源代码 15.2 例子代码 15.3 Window 9x/NT/ME/2000/XP 预编译二进制 15.4 数据 15.5 文档 15.6 退化测试图像 15.7 Kitware 应用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nightmare004

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值