VTK-helloworld官网案例使用(A hello world example)
配置环境:windows11、qt6、cmake3.26.3、vtk9.2.6、vs2019
进入vtk官网,找到案例
新建一个空文件夹,名称为CylinderExample(名称随意)
在CylinderExample文件夹下新建CMakeLists.txt文本文档
打开CMakeLists.txt,把下面代码复制进去(官方提供的代码)
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
project(CylinderExample)
find_package(VTK COMPONENTS
CommonColor
CommonCore
FiltersSources
InteractionStyle
RenderingContextOpenGL2
RenderingCore
RenderingFreeType
RenderingGL2PSOpenGL2
RenderingOpenGL2
)
if (NOT VTK_FOUND)
message(FATAL_ERROR "CylinderExample: Unable to find the VTK build folder.")
endif()
# Prevent a "command line is too long" failure in Windows.
set(CMAKE_NINJA_FORCE_RESPONSE_FILE "ON" CACHE BOOL "Force Ninja to use response files.")
add_executable(CylinderExample MACOSX_BUNDLE CylinderExample.cxx )
target_link_libraries(CylinderExample PRIVATE ${VTK_LIBRARIES}
)
# vtk_module_autoinit is needed
vtk_module_autoinit(
TARGETS CylinderExample
MODULES ${VTK_LIBRARIES}
)
在CylinderExample文件夹下新建CylinderExample.cxx文件
把下面代码复制到CylinderExample.cxx中(记事本打开)
#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>
#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;
}
接着在CylinderExample文件夹下新建bin文件夹,如下图
打开cmake,设置好源码和生成路径后点击Configure
报了个错,如下图,原因是VTK_DIR-NOTFOUND(没找到VTK所在目录)
手动指定一下VTK所在目录(就是VTK源码编译后生成文件所在的目录)
之后打开CylinderExample文件夹下的bin文件夹,里面生成了很多文件,如下图
用vs打开CylinderExample文件夹下的bin文件夹里的CylinderExample.sln文件,右键ALL BUILD,点击生成
直接运行vs会报无法启动程序错误,如下
在解决方案资源管理器中右键CylinderExample,点击设为启动项目
之后再运行,会报“由于找不到vtklnteractionStyle-9.2d.dll,无法继续执行代码。重新安装程序可能会解决此问题。”错误
在解决方案资源管理器中右键CylinderExample-->属性-->配置属性-->调试-->工作目录,把工作目录里的路径改成“vtklnteractionStyle-9.2d.dll”所在的路径(就是vtk源码编译后生成文件里bin下的Debug目录)
再次点击运行即可
如果遇到其他问题可以在网上寻找解决方案
迟懒chun胖: 你的教程真的,very高质量
2301_79943471: 博主您好 请问怎么开启VPN啊 小白不太会搞
大哥739: 编译完成 创建工程啊
打野的小盖伦zh: 博主您好,我在编译2023库的时候遇到了这个问题: 错误 LNK1104 无法打开文件“libcrypto.lib” [D:\MITK\build\ep\src\Poco-build\Crypto\Crypto.vcxproj] Poco 请问这个是因为什么呢
&沢渡雫: MSB6006基本上是在生成时需要的软件包没下载成功,先看看.patch文件的格式改了没,再解决C4819警告。或者看看是不是网络环境的问题。MSB6006解决了,MSB1009的错误也就没有了