【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK

这篇具有很好参考价值的文章主要介绍了【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。

编号 内容
1 【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK
2 【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
3 【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
4 【VTK】官方示例,移植到自己的 Qt 工程,含代码

这一篇在 Windows 上完成了使用 Visual Studio 构建 VTK,还有一篇是结合 Qt 实现在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK。另一篇文章链接为:【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK。

1 版本环境

  • win11
  • visual studio 2022
  • VTK-9.2.6
  • CMake 3.26.3

2 构建步骤

建议全程打开 CMake 和 Visual Studio 时均使用管理员身份,防止不必要的麻烦。

1 准备文件夹结构

我是在 C 盘创建了一个 VTKFolders 来保存所有需要的文件。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

2 运行 CMake

使用 CMake 生成一个 visual studio 解决方案。首先以管理员身份打开 CMake-GUI。

配置好资源文件夹和 build 文件夹。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

然后点击 Configure。会弹出一个选择框,选择适合自己的配置,然后 Finish。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

我们现在有几个选项,可以根据需要打开或关闭。对于本指南所做的唯一更改是

  • Check the box after CMAKE_CXX_MP_FLAG. 这允许使用多核进行构建。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

再点击一次 Configure 应用刚才的更改。

单击 Generate。这将填充 build 子文件夹。

最后,单击 Open Project 在 Visual Studio 中打开生成的解决方案。
不过这时候建议退出一下 Visual Studio,因为默认打开不是以管理员身份的。可以退出重新以管理员身份打开,而且已打开过的工程也是有记录的,直接点击就行了。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

3 在 Visual Studio 中构建

选择 Release 和 Win32。

然后选择 生成 -> 生成 ALL_BUILD。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

根据电脑性能不同,花费时间也不同。我电脑用了 3 分钟,报告显示成功 263,有 2 个失败。我继续往下进行了,目前问题不大。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

另外,也可以再切换 Release 成 Debug 再生成一遍,这样之后在其他工程的 Debug 环境也可以使用 VTK。

4 安装 VTK

为了能够在其他项目中使用 VTK,它首先需要安装。
再次打开 CMake。
点击一下 Configure 看一下配置。
修改 PREFIX 的文件夹。
再次点击 Configure。
然后点击 Generate。
最后点击 Open Project。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

5 再次在 Visual Studio 中构建

这里与第 2 步在 Visual Studio 中构建操作完全一样,不再放过程图,仅放置一下结果图。

下边是 Release 的生成结果。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide
下边是 Debug 的生成结果。
【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

然后我们就可以在文件夹中看到很多 .dll 文件。
放一下我自己的文件夹路径仅供参考 C:\VTKFolders\VTK-build\bin\Release

6 添加环境变量

然后就是根据自己的文件夹路径,添加环境变量。
不知道怎么打开系统环境变量的可以根据以下提示:
[start -> Edit the system environment variables -> Advanced -> Environment Variables -> Path -> Edit -> New]

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

3 测试是否成功

如果一切顺利,那么现在应该可以编译并运行 C++ 示例之一了。
我用的例子是 HighlightPickedActor,直接下载解压到一个文件夹就行了。如果没办法下载也可以去文章末尾复制一下代码,保存为指定文件名也行。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

打开 CMake,并选择如下图所示的文件夹配置。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

点击 Configure,应该能自动找寻到 VTK_DIR 的路径,如果找不到,那就是环境变量没有配置好,重新配置一下就行了。
然后点击 Generate,Open Project。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

然后就是得到了一个可以打开的 Visual Studio 工程。右键 HighlightPickedActor 工程,选择 “设为启动项目”。【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

然后启动工程,如果得到如下程序运行结果,那么就证明已经安装成功了。之后在其他工程中调用即可。

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK,Visual Studio,windows,ide

文件结构

--- HighlightPickedActor
------ build <--empty
------ CMakeLists.txt
------ HighlightPickedActor.cxx文章来源地址https://www.toymoban.com/news/detail-575521.html

CMakeLists.txt 代码

cmake_minimum_required(VERSION 3.12 FATAL_ERROR)

project(HighlightPickedActor)

find_package(VTK COMPONENTS 
  CommonColor
  CommonCore
  FiltersSources
  InteractionStyle
  RenderingContextOpenGL2
  RenderingCore
  RenderingFreeType
  RenderingGL2PSOpenGL2
  RenderingOpenGL2
)

if (NOT VTK_FOUND)
  message(FATAL_ERROR "HighlightPickedActor: 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(HighlightPickedActor MACOSX_BUNDLE HighlightPickedActor.cxx )
  target_link_libraries(HighlightPickedActor PRIVATE ${VTK_LIBRARIES}
)
# vtk_module_autoinit is needed
vtk_module_autoinit(
  TARGETS HighlightPickedActor
  MODULES ${VTK_LIBRARIES}
)

HighlightPickedActor.cxx 代码

#include <vtkActor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkMinimalStandardRandomSequence.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkObjectFactory.h>
#include <vtkPolyDataMapper.h>
#include <vtkPropPicker.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSphereSource.h>

namespace {
// Handle mouse events
class MouseInteractorHighLightActor : public vtkInteractorStyleTrackballCamera
{
public:
  static MouseInteractorHighLightActor* New();
  vtkTypeMacro(MouseInteractorHighLightActor,
               vtkInteractorStyleTrackballCamera);

  MouseInteractorHighLightActor()
  {
    LastPickedActor = NULL;
    LastPickedProperty = vtkProperty::New();
  }
  virtual ~MouseInteractorHighLightActor()
  {
    LastPickedProperty->Delete();
  }
  virtual void OnLeftButtonDown() override
  {
    vtkNew<vtkNamedColors> colors;

    int* clickPos = this->GetInteractor()->GetEventPosition();

    // Pick from this location.
    vtkNew<vtkPropPicker> picker;
    picker->Pick(clickPos[0], clickPos[1], 0, this->GetDefaultRenderer());

    // If we picked something before, reset its property
    if (this->LastPickedActor)
    {
      this->LastPickedActor->GetProperty()->DeepCopy(this->LastPickedProperty);
    }
    this->LastPickedActor = picker->GetActor();
    if (this->LastPickedActor)
    {
      // Save the property of the picked actor so that we can
      // restore it next time
      this->LastPickedProperty->DeepCopy(this->LastPickedActor->GetProperty());
      // Highlight the picked actor by changing its properties
      this->LastPickedActor->GetProperty()->SetColor(
          colors->GetColor3d("Red").GetData());
      this->LastPickedActor->GetProperty()->SetDiffuse(1.0);
      this->LastPickedActor->GetProperty()->SetSpecular(0.0);
      this->LastPickedActor->GetProperty()->EdgeVisibilityOn();
    }

    // Forward events
    vtkInteractorStyleTrackballCamera::OnLeftButtonDown();
  }

private:
  vtkActor* LastPickedActor;
  vtkProperty* LastPickedProperty;
};

vtkStandardNewMacro(MouseInteractorHighLightActor);
} // namespace

// Execute application.
int main(int argc, char* argv[])
{
  vtkNew<vtkNamedColors> colors;

  int numberOfSpheres = 10;
  if (argc > 1)
  {
    numberOfSpheres = atoi(argv[1]);
  }
  // A renderer and render window
  vtkNew<vtkRenderer> renderer;
  vtkNew<vtkRenderWindow> renderWindow;
  renderWindow->SetSize(640, 480);
  renderWindow->AddRenderer(renderer);
  renderWindow->SetWindowName("HighlightPickedActor");

  // An interactor
  vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
  renderWindowInteractor->SetRenderWindow(renderWindow);

  // Set the custom type to use for interaction.
  vtkNew<MouseInteractorHighLightActor> style;
  style->SetDefaultRenderer(renderer);

  renderWindowInteractor->SetInteractorStyle(style);

  vtkNew<vtkMinimalStandardRandomSequence> randomSequence;
  randomSequence->SetSeed(8775070);
  for (int i = 0; i < numberOfSpheres; ++i)
  {
    vtkNew<vtkSphereSource> source;
    double x, y, z, radius;
    // random position and radius
    x = randomSequence->GetRangeValue(-5.0, 5.0);
    randomSequence->Next();
    y = randomSequence->GetRangeValue(-5.0, 5.0);
    randomSequence->Next();
    z = randomSequence->GetRangeValue(-5.0, 5.0);
    randomSequence->Next();
    radius = randomSequence->GetRangeValue(0.5, 1.0);
    randomSequence->Next();
    source->SetRadius(radius);
    source->SetCenter(x, y, z);
    source->SetPhiResolution(11);
    source->SetThetaResolution(21);
    vtkNew<vtkPolyDataMapper> mapper;
    mapper->SetInputConnection(source->GetOutputPort());
    vtkNew<vtkActor> actor;
    actor->SetMapper(mapper);
    double r, g, b;
    r = randomSequence->GetRangeValue(0.4, 1.0);
    randomSequence->Next();
    g = randomSequence->GetRangeValue(0.4, 1.0);
    randomSequence->Next();
    b = randomSequence->GetRangeValue(0.4, 1.0);
    randomSequence->Next();
    actor->GetProperty()->SetDiffuseColor(r, g, b);
    actor->GetProperty()->SetDiffuse(0.8);
    actor->GetProperty()->SetSpecular(0.5);
    actor->GetProperty()->SetSpecularColor(
        colors->GetColor3d("White").GetData());
    actor->GetProperty()->SetSpecularPower(30.0);
    renderer->AddActor(actor);
  }

  renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());

  // Render and interact
  renderWindow->Render();
  renderWindowInteractor->Initialize();
  renderWindowInteractor->Start();

  return EXIT_SUCCESS;
}

Ref.

  1. 在 Windows 上使用 Visual Studio 构建 VTK
  2. 八、VTK安装并运行一个例子
  3. Qt VTK ITK安装与测试(二)VTK的安装与测试
  4. 【转】二、VTK用于QT的安装

到了这里,关于【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ONNX】使用 C++ 调用 ONNX 格式的 PyTorch 深度学习模型进行预测(Windows, C++, PyTorch, ONNX, Visual Studio, OpenCV)

    要使用 ONNX 模型进行预测,就需要使用 onnx runtime 首先到 ONNX 官网查询所需的版本 这里使用的 Windows,同时装了 CUDA 下面的链接可以进入到安装网址 https://www.nuget.org/packages/Microsoft.ML.OnnxRuntime.Gpu 安装命令为: 首先打开 Visual Studio 2019 新建一个用于测试的项目 右键点击项目,可

    2024年02月09日
    浏览(43)
  • Windows搭建C++开发环境(visual studio 2022)

    开发环境的搭建 开发工具:vscode、visual studio 2022、visual studio 2019、2015、2010 .. 安装步骤(以Windows下visual studio2022为例): 打开官网地址  Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 下载社区版2022   下载完成后打开 步骤如下 安装完成后会自动打开出现

    2024年02月06日
    浏览(41)
  • Windows系统下Visual studio 2022MPI 环境配置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 操作系统:win10 工具:Visual Studio 2022 首先前往MPI下载地址:https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi?redirectedfrom=MSDN 进入地址后,点击下方链接进行下载 分别选中以下两个选项,分别下载

    2024年02月06日
    浏览(35)
  • windows下安装openssl,配置VS(visual studio)

    百度网盘连接: 链接:https://pan.baidu.com/s/1sZapr2mKmuvzG76Ra7yiTg  提取码:2l4l  注意: vs项目为win32项目则安装win32的 vs项目为x64项目则安装win64的 根据安装向导选择路径进行安装 ①同意  ②自行选择安装路径 ③ 选择动态库路径在安装目录下 ④选择安装即可 创建桌面向导空项目

    2024年02月03日
    浏览(33)
  • 为 Microsoft C++ 配置 VS Code在本教程中,您将配置 Visual Studio Code 以在 Windows 上使用 Microsoft Visual C++ 编译器和调试器

    在本教程中,您将配置 Visual Studio Code 以在 Windows 上使用 Microsoft Visual C++ 编译器和调试器。 配置完 VS Code 后,你将在 VS Code 中编译和调试一个简单的 Hello World 程序。本教程不教您有关 Microsoft C++ 工具集或 C++ 语言的详细信息。对于这些主题,网上有很多很好的资源。 如果您

    2024年02月10日
    浏览(57)
  • 【Blender】使用 Microsoft Visual Studio Code 作为外部 IDE 来编写 Blender 脚本/附加组件

    Blender 有自己的内置文本编辑器,用于编写脚本和附加组件,但在外部 IDE 中开发它们非常方便,为用户提供更多功能,例如自动完成、语法高亮、与版本控制系统和其他工具的集成使开发更快更容易。 这些 IDE 之一是 Microsoft 的 Visual Studio Code。这是一个免费的通用环境 ,支

    2024年02月04日
    浏览(44)
  • Visual Studio打包windows服务并实现自动注册与开启

    已经创建并编写好了windows服务程序,且下载了Microsoft Visual Studio Installer Project插件。 创建windows服务程序的参考链接:https://blog.csdn.net/xiketangAndy/article/details/126851864 右键windows服务项目所在的解决方案,搜索setup并创建Setup Project项目。 右键Application Folder,选择Add-项目输出。选

    2024年02月08日
    浏览(38)
  • Qt6 for Windows 环境搭建(Visual Studio)

    作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 在 Windows 中,如果想要开发 Qt 应用程序,可以选择多种方式: Qt Creator + MinGW 编译器 Qt Creator + MSVC 编译器 Visual Studio(自带 MSVC 编译器) 前两种方式之前我们已经介绍过了,主要利用 Qt Creator 作为 IDE,并配

    2024年02月10日
    浏览(40)
  • 最新保姆级教程:Windows 上安装 Visual Studio(超级详细)

    欢迎来到我的分享!今天我将向大家介绍如何在 Windows 系统上安装 Visual Studio,这是一款强大的集成开发环境(IDE),用于 C/C++ 开发以及其他许多语言。 1、首先,访问 Visual Studio 官方网站,在主页上找到并点击“下载 Visual Studio”按钮。供个人学习,下载免费的 在下载页面

    2024年03月21日
    浏览(51)
  • Microsoft Visual Studio C++2017+Windows 11 SDK环境

    Microsoft Visual Studio C++2017在Windows 11环境下并没有携带SDK环境包,所以需要单独的安装一下SDK。 单独安装SDK对强迫症时比较友好的,因为在Microsoft Visual Studio C++2022安装包里面可以选择安装Windows 11 SDK,但是,默认安装在Microsoft Visual Studio安装目录的平级目录下面,并且安装路径

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包