【OCC学习3】OCC与VTK整合

OCC只是几何内核,显示的话还需整合其他组件。今天介绍与VTK整合。本人是OCC、VTK初学者,代码部分也没整明白,主要介绍Visual Studio配置。

1. 本文采用的工具版本:

  1. OCC 7.6.0
  2. VisualStudio 2022
  3. Vtk-6.1.0

2. 全部代码。

今天主要介绍如何让这段代码跑起来。

#include <BRepPrimAPI_MakeBox.hxx>
#include <vtkRenderWindow.h>
#include <vtkNew.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkAutoInit.h>
#include <vtkRenderer.h>
#include <vtkPolyDataMapper.h>

#include <IVtkTools_ShapeDataSource.hxx>

VTK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkInteractionStyle)

int main()
{
	BRepPrimAPI_MakeBox mkBox(1., 2., 3.);
	const TopoDS_Shape& shape = mkBox.Shape(); 

	vtkNew<vtkRenderWindow>  renwin;
	vtkNew<vtkRenderer> ren;
	renwin->AddRenderer(ren.Get());

	vtkNew<vtkInteractorStyleTrackballCamera> istyle;
	vtkNew<vtkRenderWindowInteractor> iren;

	iren->SetRenderWindow(renwin.Get());
	iren->SetInteractorStyle(istyle.Get());

	vtkNew<IVtkTools_ShapeDataSource> occsource;
	occsource->SetShape(new IVtkOCC_Shape( shape));

	vtkNew<vtkPolyDataMapper> mapper;

	mapper->SetInputConnection(occsource->GetOutputPort());

	vtkNew<vtkActor> actor;
	actor->SetMapper(mapper.Get());
	ren->AddActor(actor.Get());

	renwin->Render();
	iren->Start();

	return 0;
}

3. Visual Studio配置

  1. 在Visual Studio中配置OCC的头文件、VTK的头文件;
  2. 配置附加库目录,包括OCC、VTK的库目录;
  3. 配置附加依赖项,如果不知道怎么根据链接错误找lib库,可使用Far Manager查找; TKTopAlgo.lib TKPrim.lib vtkRenderingCore-6.1.lib vtkInteractionStyle-6.1.lib vtkCommonCore-6.1.lib vtkRenderingOpenGL-6.1.lib vtkCommonExecutionModel-6.1.lib TKV3d.lib TKIVtk.lib 4. 配置调试PATH环境变量。PATH变量中需增加OCC、VTK、TBB、Openvr、freeimage、ffmpeg库的dll目录。官网编译好的包包含这些库的,可直接下载。配置好运行应该可以看到一个立方体。

参考资料:

经验分享 程序员 微信小程序 职场和发展