VTK知识学习(2)-环境搭建

news2024/11/8 10:21:19

1、c++方案

1.1下载源码编译

官网获取源码。

利用Cmake进行项目构建。

里面要根据实际使用的情况配置相关的模块哟,这个得你自行研究下了。

CMAKEINSTALLPREFIX--这个选项的值表示VTK的安装路径,默认的路径是C:/Program Files/VTK。该选项的值可不作更改,按默认值即可。在配置完 VTK 后生成的工程中会有一个INSTALL项目,编译该项目后即会在CMAKEINSTALL_PREFIX所指定的路径中生成 VTK 相应的头文件、lib 文件和动态链接库 dll 文件。

VTK USE QT-是否使用 Qt。

完成后,会生成一个解决方案,根据配置的情况项目数量是不同。

1.2引入库文件

创建c++项目。

配置相关文件。

VC++目录配置:

链接器,把所有lib名填入。

1.3 编写测试

void TestShow()
{

	vtkConeSource* cone = vtkConeSource::New();
	cone->SetHeight(3.0);
	cone->SetRadius(1.0);
	cone->SetResolution(10);
	vtkPolyDataMapper* coneMapper = vtkPolyDataMapper::New();
	coneMapper->SetInputConnection(cone->GetOutputPort());

	vtkActor* coneActor = vtkActor::New();
	coneActor->SetMapper(coneMapper);

	vtkRenderer* ren1 = vtkRenderer::New();
	ren1->AddActor(coneActor);
	ren1->SetBackground(0.1, 0.2, 0.4);

	vtkRenderWindow* renWin = vtkRenderWindow::New();
	renWin->AddRenderer(ren1);
	renWin->SetSize(300, 300);

	vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
	iren->SetRenderWindow(renWin);

	vtkInteractorStyleTrackballCamera* style =
		vtkInteractorStyleTrackballCamera::New();
	iren->SetInteractorStyle(style);

	vtkBoxWidget* boxWidget = vtkBoxWidget::New();
	boxWidget->SetInteractor(iren);
	boxWidget->SetPlaceFactor(1.25);
	boxWidget->SetProp3D(coneActor);
	boxWidget->PlaceWidget();
	vtkMyCallback* callback = vtkMyCallback::New();
	boxWidget->AddObserver(vtkCommand::InteractionEvent, callback);

	boxWidget->On();

	iren->Initialize();
	iren->Start();

	cone->Delete();
	coneMapper->Delete();
	coneActor->Delete();
	callback->Delete();
	boxWidget->Delete();
	ren1->Delete();
	renWin->Delete();
	iren->Delete();
	style->Delete();
}

2、C#方案

2.1 ActiViz.NET安装

ActiViz - 3D Visualization Library for .Net C# and Unity | Kitware

当然正常情况,你需要在密码上进行注册才能下载。

也可以从我的百度网盘中获取。

链接:https://pan.baidu.com/s/13pHLDSOyqtbWvPJn4mcaCg 
提取码:bkxa

下载成功后,直接运行这个exe到你目录下即可。

ActiViz.NET_9.3_Users_Guide.pdf这个文件你可以阅读下,按照指引你就可以编写一个vtk程序了。

2.2 导入包使用

需要在项目中引用如图所示的两个DLL,然后生成的目录下需要将相关DLL复制到,当然你可以配置环境变量来试试,因为操作系统默认会去环境变量里面找一下看看能不能找到。

2.3编写测试

界面

 <WindowsFormsHost x:Name="windowHost" Grid.Row="1"/>

控件生成

private RenderWindowControl renderWindowControl = new RenderWindowControl();

        public MainWindow()
        {
            InitializeComponent();
            windowHost.Child = renderWindowControl;
            // dd.Dock = DockStyle.Fill;
            // renderWindowControl.Load += renderWindowControl1_Load;
        }

显示一个球和文字

 RenderWindowControl renderWindow = sender as RenderWindowControl;
            if (renderWindow == null)
            {
                return;
            }
            // Create a simple sphere. A pipeline is created. 新建球体,创建“管道pipeline”
            vtkSphereSource sphere = vtkSphereSource.New();  // 新建球
            sphere.SetThetaResolution(8);                     // 设置球纬度参数
            sphere.SetPhiResolution(16);                     // 设置球经度参数
            sphere.SetRadius(0.5);                           // 设置球的半径

            //数据加工 -- "过滤器Filter" -- 收缩
            vtkShrinkPolyData shrink = vtkShrinkPolyData.New(); // 新建数据收缩操作器
            shrink.SetInputConnection(sphere.GetOutputPort());  // 连接管道
            shrink.SetShrinkFactor(0.9);                        // 收缩“面”操作

            //数据制图 -- "制图器Mapper"
            vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); // 新建制图器
            mapper.SetInputConnection(shrink.GetOutputPort());  // 连接管道

            // The actor links the data pipeline to the rendering subsystem
            //创建“角色Actor”,连接“管道pipeline”和“渲染系统rendering subsystem”
            vtkActor actor = vtkActor.New();    // 新建角色
            actor.SetMapper(mapper);          // 传递制图器
            actor.GetProperty().SetColor(1, 0, 0);    // 设置“角色”颜色[RGB]

            // The actor links the data pipeline to the rendering subsystem
            //创建“角色Actor”,连接“管道pipeline”和“渲染系统rendering subsystem”

            // Create components of the rendering subsystem
            //创建渲染--“渲染系统rendering subsystem”

            //(1)新建“渲染器Renderer”和“渲染窗口RenderWindow”   renderWindowControl1控件提供“渲染窗口”
            vtkRenderer ren1 = renderWindow.RenderWindow.GetRenderers().GetFirstRenderer();
            vtkRenderWindow renWin = renderWindow.RenderWindow;

            // Add the actors to the renderer, set the window size
            //将“角色Actor”添加到“渲染器Renderer”并渲染
            ren1.AddViewProp(actor);   // 渲染器添加角色
            renWin.SetSize(250, 250);

            renWin.Render();  // 渲染渲染窗口

总结,后面主要是在C#上编写,当然c++的API更加丰富,毕竟这个C#是在其基础之上进行封装的,如果考虑性能方面肯定有差异的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2235746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chrome(谷歌浏览器中文版)下载安装(Windows 11)

目录 Chrome_10_30工具下载安装 Chrome_10_30 工具 系统&#xff1a;Windows 11 下载 官网&#xff1a;https://chrome.google-zh.com/&#xff0c;点击立即下载 下载完成&#xff08;已经下过一遍所以点了取消&#xff09; 安装 解压&#xff0c;打开安装包 点击下一步…

如何在算家云搭建Aatrox-Bert-VITS2(音频生成)

一、模型介绍 ‌ Aatrox - Bert -VITS2 模型是一种基于深度学习的语音合成系统&#xff0c;结合了 BERT 的预训练能力和 VITS2 的微调技术&#xff0c;旨在实现高质量的个性化语音合成。 二、模型搭建流程 1. 创建容器实例 进入算家云的“应用社区”&#xff0c;点击搜索找到…

232转485模块测试

概述 常用的PLC一般会有两个左右的232口&#xff0c;以及两个左右的485口&#xff0c;CAN口等&#xff0c;但是PLC一般控制的设备可能会有很多&#xff0c;会超出通讯口的数量&#xff0c;此时我们一般会采用一个口接多个设备&#xff0c;这种情况下要注意干扰等因素&#xff0…

静态数组类型无法用“=“给整个静态数组赋值

基础知识&#xff1a; 什么是静态数组类型&#xff1f; 在 C 中&#xff0c;静态数组是一种在编译时大小固定的数组。这意味着一旦声明&#xff0c;静态数组的大小就不能改变。 ------ 你可以声明一个静态数组并选择性地初始化它&#xff1a; int arr[10]; // 声明一个包…

使用 Python 调用云 API 实现批量共享自定义镜像

本文介绍如何通过 Python SDK 调用 API 接口&#xff0c;通过子用户批量共享云服务器自定义镜像。若您具备类似需求&#xff0c;或想了解如何使用 SDK&#xff0c;可参考本文进行操作。 前提条件 已创建子用户&#xff0c;并已具备云服务器及云 API 所有权限。 创建子用户请…

【旷视科技-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

GISBox VS ArcGIS:分别适用于大型和小型项目的两款GIS软件

在现代地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;有许多大家耳熟能详的GIS软件。它们各自具有独特的优势&#xff0c;适用于不同的行业需求和使用场景。在众多企业和开发者面前&#xff0c;如何选择合适的 GIS 软件成为了一个值得深入思考的问题。今天&#xff…

【Spring】Spring Web MVC基础入门~(含大量例子)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;什么是Spring Web MVC 1&#xff1a;Servlet 2&#xff1a;总结 二&#xff1a;MVC …

数组类算法【leetcode】

704. 二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 二分查找 用于有序数组中&#xff0c;没有重复的数组。…

24/11/7 算法笔记 PCA主成分分析

假如我们的数据集是n维的&#xff0c;共有m个数据(x,x,...,x)。我们希望将这m个数据的维度从n维降到k维&#xff0c;希望这m个k维的数据集尽可能的代表原始数据集。我们知道数据从n维降到k维肯定会有损失&#xff0c;但是我们希望损失尽可能的小。那么如何让这k维的数据尽可能表…

wxWidgets布局管理及XRC界面使用解惑

wxWidgets布局&#xff0c;通常就是wxBoxSizer&#xff0c;当然还有别的Sizer&#xff0c;就像Qt中的Layout一样&#xff0c;各种布局管理类。只是如今的wxWidgets尚未发展起来&#xff0c;一般其他的你用的比较少&#xff0c;因为这个最简单&#xff0c;最容易布局&#xff0c…

【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 062 &#xff0c;文末自助获取源码 \color{red}{T062&#xff0c;文末自助获取源码} T062&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

【循环引用及格式化输出】

垃圾回收机制 当一个值在内存中直接引用跟间接引用的量为0时&#xff0c;&#xff08;即这个值没有任何入口可以找到它&#xff09;那么这个值就会被清空回收♻️&#xff0c;释放内存空间&#xff1b; 列表在内存中的存储方式 1&#xff09;引用计数的两种方式 x "ea…

31.7K+ Star!AgentGPT:一个在浏览器中运行的Agent

AgentGPT 简介 AgentGPT[1] 是一个可以让你在浏览器中组装、配置和部署自主AI代理的项目。你可以为你的自定义AI命名,并让它去实现任何你想象中目标。它将尝试通过思考要执行的任务、执行它们并从结果中学习来达成目标。 项目特点 主要特点 自主AI代理:用户可以自定义AI并赋…

【大模型】通过Crew AI 公司的崛起之路学习 AI Agents 的用法

AI 技术的迅猛发展正以前所未有的速度重塑商业格局&#xff0c;而 AI Agents&#xff0c;作为新一代的智能自动化工具&#xff0c;正逐步成为创新型公司的核心力量。在本文中&#xff0c;我们将探讨如何利用 AI Agents 构建一家 AI 驱动的公司&#xff0c;并详细了解 Crew AI 创…

【Uniapp】Uniapp Android原生插件开发指北

前言 在uniapp开发中当HBuilderX中提供的能力无法满足App功能需求&#xff0c;需要通过使用Andorid/iOS原生开发实现时&#xff0c;或者是第三方公司提供的是Android的库&#xff0c;这时候可使用App离线SDK开发原生插件来扩展原生能力。 插件类型有两种&#xff0c;Module模…

网页版五子棋——用户模块(服务器开发)

前一篇文章&#xff1a;网页版五子棋—— WebSocket 协议-CSDN博客 目录 前言 一、编写数据库代码 1.数据库设计 2.配置 MyBatis 3.创建实体类 4.创建 UserMapper 二、前后端交互接口 1.登录接口 2.注册接口 3.获取用户信息 三、服务器开发 1.代码编写 2.测试后端…

Jenkins声明式Pipeline流水线语法示例

系列文章目录 docker搭建Jenkins2.346.3版本及常用工具集成配置(ldap、maven、ansible、npm等) docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法 文章目录 系列文章目录jenkins流水线基础1、pipeline1.1、什么是pipeline&#xff1f;1.2、为什么使用pi…

【NLP】使用 SpaCy、ollama 创建用于命名实体识别的合成数据集

命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务&#xff0c;用于自动识别和分类文本中的实体&#xff0c;例如人物、位置、组织等。尽管它很重要&#xff0c;但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-s…

【数据集】【YOLO】【目标检测】道路裂缝数据集 5466 张,YOLO/VOC格式标注!

数据集介绍 【数据集】道路裂缝数据集 5466 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含一种分类&#xff0c;检测范围城市道路裂缝、高速道路裂缝、乡村道路裂缝。 戳我头像获取数据&#xff0c;或者主页私聊博主哈~ 一、数据概述 道路裂缝检测…