资料

  1. OpenCASCADE(OCC)_使用 VTK 显示(视频):https://www.bilibili.com/video/BV1BL411Y7Ee
  2. 编译 vtk 与配置(视频):https://www.youtube.com/watch?v=kZpr4ocnavA
  3. 编译 vtk(文本): https://mp.weixin.qq.com/s/RaQLRVKoAQKY2gf4lHmejw

编译 VTK

  1. 进入https://gitlab.kitware.com/vtk/vtk,下载 9.2.0 版本源代码,解压,得到vtk-v9.2.0文件夹
  2. 进入https://cmake.org/download/,找到 Windows x64 Installer 进行下载,然后安装
  3. 打开 cmake, 源代码目录选择 vtk-v9.2.0 文件夹,再新建一个 vtk-v9.2.0-bulid 目录存放编译内容,点击 Configure,弹出一个框,选择 VS2019 和 x64,点击 Finish,开始编译
  4. 弹出一个框,新建 vtk-v9.2.0-install 目录配置给 cmake_install_prefix,然后依次点击 Configure—Generate—Open Project,进入 VS2019

  1. 在解决方案中找到 INSTALL—右键—生成,时间较长需等待
  2. 编译完成后在 vtk-v9.2.0-install 文件夹下有 bin/include/lib 三个文件夹

编译 OCCT

  1. 下载 occt 7.7.0 源码 opencascade-7.7.0.tgzhttps://dev.opencascade.org/release,解压得到opencascade-7.7.0文件夹
  2. 进入https://dev.opencascade.org/resources/download/3rd-party-components,
    • 下载 Freeimage, vc14, x64
    • 下载 Freetype, vc14, x64
    • 下载 tcltk,vc12, x64
  3. 新建一个 OCCT-7.7.0 的文件夹,把 occt 的源码文件夹opencascade-7.7.0拷贝进去
  4. 在 OCCT-7.7.0 文件夹下面新建opencascade-7.7.0-build, opencascade-7.7.0-installproducts三个文件夹,将解压后的 Freeimage,Freetype,tcltk 文件夹拷贝到products文件夹内
1
2
3
4
5
6
7
8
D:\OCCT-7.7.0
|____opencascade-7.7.0
|____opencascade-7.7.0-build
|____opencascade-7.7.0-install
|____products
|____freeimage-3.17.0-vc14-64
|____freetype-2.5.5-vc14-64
|____tcltk-86-64
  1. 打开 cmake 软件,配置好 OCCT 源码目录与 build 目录,点击 Generate
  2. 出现一堆红色的内容,开始配置环境,按照之前放置的路径进行配置即可

  1. 点击 Configure 会弹出错误,再配置 VTK 的目录,再点击 Configure

  1. 弹出下面错误,解决方法是取消勾选 BUILD_MODULE_Draw,再点击 Configure
1
2
3
4
VTK version (9.2.0)
CMake Error at CMakeLists.txt:858 (message):
Could not find headers of used third-party products:
3RDPARTY_TCL_INCLUDE_DIR 3RDPARTY_TK_INCLUDE_DIR
  1. 点击 Generate—Open Project,进入 VS2019
  2. 在解决方案右键—生成解决方案—耐心等待【注意要 debug 还是 release】
  3. 在解决方案中找到 INSTALL—右键—生成
  4. 编译完成后,在 opencascade-7.7.0-install 文件夹就会有 occt 的 inc, bind, libd 文件夹。d 是因为 debug 模式

在 OCCT 项目中使用 VTK

  1. 打开 VS2019,新建一个 c++项目
  2. 右键—属性,开始配置 occ 与 vtk
    • 改成 Dedug x64 平台
    • 调试—环境—增加 occ 的 bin 目录,vtk 的 bin 目录和 freetype 的 bin 目录: PATH=%PATH%;D:\OCCT-7.7.0\opencascade-7.7.0-install\win64\vc14\bind;D:\vtk-v9.2.0-install\bin;D:\OCCT-7.7.0\products\freetype-2.5.5-vc14-64\bin;
    • C/C++—常规—附加包含目录—增加 occ, vtk 头文件目录:D:\OCCT-7.7.0\opencascade-7.7.0-install\inc;D:\vtk-v9.2.0-install\include\vtk-9.2;
    • 链接器—常规—增加 occ, vtk 的 lib 所在目录:D:\OCCT-7.7.0\opencascade-7.7.0-install\win64\vc14\libd;D:\vtk-v9.2.0-install\lib;
    • 链接器—输入—附加依赖项目,增加 occ, vtk 的 lib 文件名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
DRAWEXE.lib
ExpToCasExe.lib
TKBin.lib
TKBinL.lib
TKBinTObj.lib
TKBinXCAF.lib
TKBO.lib
TKBool.lib
TKBRep.lib
TKCAF.lib
TKCDF.lib
TKD3DHost.lib
TKD3DHostTest.lib
TKDCAF.lib
TKDFBrowser.lib
TKDraw.lib
TKernel.lib
TKExpress.lib
TKFeat.lib
TKFillet.lib
TKG2d.lib
TKG3d.lib
TKGeomAlgo.lib
TKGeomBase.lib
TKHLR.lib
TKIGES.lib
TKIVtk.lib
TKIVtkDraw.lib
TKLCAF.lib
TKMath.lib
TKMesh.lib
TKMeshVS.lib
TKMessageModel.lib
TKMessageView.lib
TKOffset.lib
TKOpenGl.lib
TKOpenGles.lib
TKOpenGlesTest.lib
TKOpenGlTest.lib
TKPrim.lib
TKQADraw.lib
TKRWMesh.lib
TKService.lib
TKShapeView.lib
TKShHealing.lib
TKStd.lib
TKStdL.lib
TKSTEP.lib
TKSTEP209.lib
TKSTEPAttr.lib
TKSTEPBase.lib
TKSTL.lib
TKTInspector.lib
TKTInspectorAPI.lib
TKTObj.lib
TKTObjDRAW.lib
TKToolsDraw.lib
TKTopAlgo.lib
TKTopTest.lib
TKTreeModel.lib
TKV3d.lib
TKVCAF.lib
TKView.lib
TKViewerTest.lib
TKVInspector.lib
TKVRML.lib
TKXCAF.lib
TKXDE.lib
TKXDECascade.lib
TKXDEDRAW.lib
TKXDEIGES.lib
TKXDESTEP.lib
TKXMesh.lib
TKXml.lib
TKXmlL.lib
TKXmlTObj.lib
TKXmlXCAF.lib
TKXSBase.lib
TKXSDRAW.lib

vtkInteractionStyle-9.2d.lib
vtkRenderingOpenGL2-9.2d.lib
vtkCommonCore-9.2d.lib
vtkRenderingCore-9.2d.lib
vtkCommonExecutionModel-9.2d.lib
vtksys-9.2d.lib
TKMath.lib
TKV3d.lib
TKIVtk.lib
TKernel.lib
TKTopAlgo.lib
TKPrim.lib

  1. 测试代码main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <BRepPrimAPI_MakeBox.hxx>

#include <IVtkTools_ShapeDataSource.hxx>
#include <vtkAutoInit.h>
#include <vtkRenderer.h>
#include <VtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkPolyDataMapper.h>

VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)

int main() {
BRepPrimAPI_MakeBox box(2, 2, 2);
const TopoDS_Shape& ashape = box.Shape();

//==============================================================================================
// Source->mapper->actor->render
vtkNew<IVtkTools_ShapeDataSource> occSource; //创建一个可以被VTK使用的OCC数据源
occSource->SetShape(new IVtkOCC_Shape(ashape)); //将ashape添加到数据源中

vtkNew<vtkPolyDataMapper> mapper; //创建一个VTK数据类型
mapper->SetInputConnection(occSource->GetOutputPort()); //创建管道,将occ数据导入到VTK

vtkNew<vtkActor> actor; //创建 actor
actor->SetMapper(mapper); //将vtk数据交给actor

vtkNew<vtkRenderWindow> renderWindow; //创建窗口
vtkNew<vtkRenderer> render; //创建渲染器
renderWindow->AddRenderer(render); //在窗口中加入渲染器
render->AddActor(actor); //在渲染器中加入actor
render->SetBackground(0.302, 0.302, 0.302);//设置窗口背景颜色

vtkNew<vtkRenderWindowInteractor> iren; //创建一个vtk交互器
vtkNew<vtkInteractorStyleTrackballCamera> istyle; //创建vtk相机交互器样式
iren->SetRenderWindow(renderWindow); //设置渲染窗口
iren->SetInteractorStyle(istyle); //设置交互器样式

iren->Initialize(); //初始化交互器
iren->Start(); //开始运行交互器
//==============================================================================================

return 0;
}

vtk 资料

书籍

VTK User's Guide》搜 VTK_Users_Guide_v11.pdf

《VTK 用户手册–中文翻译版》搜 VTK用户手册--中文翻译版.pdf

《VTK 图形图像开发进阶》搜 VTK图形图像开发进阶

《数据可视化技术》林勇 暂无 PDF