VS+QT+VTK三维曲面网格点选切割

这篇具有很好参考价值的文章主要介绍了VS+QT+VTK三维曲面网格点选切割。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序示例精选

VS+QT+VTK三维曲面网格点选切割

如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对<<VS+QT+VTK三维曲面网格点选切割>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。

功能:读取三维网格数据,通过单击网格表面点选需要切除的部分


文章目录

一、所需工具软件

二、使用步骤

        1. 引入库

        2. 代码实现

        3. 运行结果

三、在线协助

一、所需工具软件

1. VS, Qt

2. VTK

二、使用步骤

1.引入库

#include <iostream>
#include <fstream>
#include <vtkSelectPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkDataSetMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRendererCollection.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkIdTypeArray.h>
#include <vtkPolyData.h>
#include <vtkCellArray.h>
#include <vtkSphereSource.h>
#include <vtkCellPicker.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkProperty.h>
#include <vtkSelectionNode.h>
#include <vtkSelection.h>
#include <vtkExtractSelection.h>
#include <vtkObjectFactory.h>
#include <vtkPointData.h>
#include <iostream>
#include <vector>

2. 代码实现

代码如下:

class CellPickerInteractorStyle : public vtkInteractorStyleTrackballCamera
{
public:
	static CellPickerInteractorStyle* New();

	CellPickerInteractorStyle()
	{
		selectedMapper = vtkSmartPointer<vtkDataSetMapper>::New();
		selectedActor = vtkSmartPointer<vtkActor>::New();
		polyData = vtkPolyData::New();

		//xvec.resize(5);
		//yvec.resize(5);
		//zvec.resize(5);
		last_picked_actor = NULL;
	}

	virtual void OnLeftButtonDown()
	{
		//打印鼠标左键像素位置
		if (this->Interactor->GetControlKey())
		{
			std::cout << "Picking pixel: " << this->Interactor->GetEventPosition()[0]
				<< " " << this->Interactor->GetEventPosition()[1] << std::endl;
			//注册拾取点函数
			this->Interactor->GetPicker()->Pick(
				this->Interactor->GetEventPosition()[0],
				this->Interactor->GetEventPosition()[1], 0,  // always zero.
				this->Interactor->GetRenderWindow()->GetRenderers()->GetFirstRenderer()
			);
			//打印拾取点空间位置
			this->Interactor->GetPicker()->GetPickPosition(picked);
			cout << "Picked value: " << picked[0] << " " << picked[1] << " " << picked[2] << endl;

			//获取此次的标记点。
			this->last_picked_actor = GetActor();
			markPoint.push_back(last_picked_actor);
			if (this->last_picked_actor)
			{
				//标记出来
				this->last_picked_actor->SetScale(0.02);
				this->last_picked_actor->GetProperty()->SetColor(1.0, 0.0, 0.0);
				this->Interactor->GetRenderWindow()->GetRenderers()->GetFirstRenderer()->AddActor(this->last_picked_actor);
			}

		}
		vtkInteractorStyleTrackballCamera::OnLeftButtonDown();
	}


};

int main(int, char* [])
{

	// Read a stl file.
	reader1->SetFileName("bunny.stl");
	reader1->Update();
	TheStlPoly->DeepCopy(reader1->GetOutput());

	// Create a mapper and actor
	vtkSmartPointer<vtkPolyDataMapper> mapper =
		vtkSmartPointer<vtkPolyDataMapper>::New();
	mapper->SetInputData(TheStlPoly);

	actor->SetMapper(mapper);
	actor->GetProperty()->SetOpacity(1);

	// Create a renderer, render window, and interactor
	vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
	vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();

	renderWindow->Render();
	renderWindow->SetWindowName("PointPicker");
	renderWindow->AddRenderer(renderer);
	vtkNew<vtkNamedColors> colors;
	renderer->SetBackground(colors->GetColor3d("CadetBlue").GetData());
	vtkSmartPointer<CellPickerInteractorStyle> pointPicker = vtkSmartPointer<CellPickerInteractorStyle>::New();
	vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	renderWindowInteractor->SetInteractorStyle(pointPicker);
	renderWindowInteractor->SetRenderWindow(renderWindow);


	// Add the actor to the scene
	renderer->AddActor(actor);
	//renderer->SetBackground(0, 0, 0);

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

	return EXIT_SUCCESS;
}

3. 运行结果

VS+QT+VTK三维曲面网格点选切割

 VS+QT+VTK三维曲面网格点选切割

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!
1)远程安装运行环境,代码调试
2)Qt, C++, Python入门指导
3)界面美化
4)软件制作

当前文章连接:Python+Qt桌面端与网页端人工客服沟通工具_alicema1111的博客-CSDN博客

博主推荐文章:python人脸识别统计人数qt窗体-CSDN博客

博主推荐文章:Python Yolov5火焰烟雾识别源码分享-CSDN博客

                         Python OpenCV识别行人入口进出人数统计_python识别人数-CSDN博客

个人博客主页:alicema1111的博客_CSDN博客-Python,C++,网页领域博主

博主所有文章点这里alicema1111的博客_CSDN博客-Python,C++,网页领域博主文章来源地址https://www.toymoban.com/news/detail-512774.html

到了这里,关于VS+QT+VTK三维曲面网格点选切割的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • VS+QT+VTK treeView树型结构模型加载隐藏实例

    程序示例精选 VS+QT+VTK treeView树型结构模型加载隐藏实例 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对VS+QT+VTK treeView树型结构模型加载隐藏实例编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件

    2024年02月14日
    浏览(35)
  • QT5.14.2 + VS2019 + VTK8.2.0配置环境

    1.1.1 软件下载地址:Index of /archive/qt 1.1.2 安装的时候需要注意: 安装时候至少把MSVC2017 64bit选择上。 用VS2019时候,打开Qt Creator,点击工具-选项,构建套件中可能会显示黄色或者红色感叹号,这个时候就需要额外的配置。  打开VS2019,点击顶部工具 - 获取工具和功能 - 在跳出的

    2024年02月06日
    浏览(69)
  • VTK——使用包围盒切割医学图像

    vtkDICOMImageReader :专门用于读取医学图像格式 DICOM 的类。DICOM(Digital Imaging and Communications in Medicine)是医学图像和信息的标准。 vtkImageGaussianSmooth :用于图像的高斯平滑处理,主要用于去噪和边缘模糊。 vtkMarchingCubes :Marching Cubes 算法用于从 3D 体积数据生成表面。这在医学成

    2024年02月10日
    浏览(46)
  • Qt开发技术:Q3D图表开发笔记(三):Q3DSurface三维曲面图介绍、Demo以及代码详解

      qt提供了q3d进行三维开发,虽然这个框架没有得到大量运用也不是那么成功,性能上也有很大的欠缺,但是普通的点到为止的应用展示还是可以的。   其中就包括华丽绚烂的三维图表,数据量不大的时候是可以使用的。   前面介绍了基础的q3d散点图、柱状图,本篇介

    2023年04月20日
    浏览(77)
  • VS+QT+PCL点云显示转网格表面体窗体实现

     程序示例精选 VS+QT+PCL点云显示转网格表面体窗体实现 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对VS+QT+PCL点云显示转网格表面体窗体实现编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件 二

    2024年02月15日
    浏览(39)
  • matlab 显示曲面网格

      显示曲面网格

    2024年02月04日
    浏览(35)
  • MATLAB三维绘图---三维曲面图

    matlab绘制三维图中,最常见的是 三维曲线图 和 三维曲面图 三维曲线图比较简单函数命令为plot3,已经详细介绍过,具体请见Matlab三维绘图------三维曲线图 三维曲面图又分为三维网面和三维网格面图,其原理相似只是调用格式不同而已。总结如下: 上面:[X,Y]=meshgrid(x,y)在绘

    2024年02月08日
    浏览(41)
  • python VTK PyQt5 VTK环境搭建 创建 渲染窗口及三维模型,包含 三维模型交互;

      目录 Part1. VTK 介绍 Part2. PyQt5 VTK环境搭建 安装Anaconda 自带Python Anaconda下载 安装PyQt5 安装 VTK Part3 :PyQt VTK 结合样例: Part1. VTK 介绍 VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk 是在面向对象原理的基础上设计和实现的

    2024年02月11日
    浏览(49)
  • VTK-三维交互窗口-QVTKOpenGLNativeWidget

    前言:本博文主要介绍VTK中常用的三维交互窗口QVTKOpenGLNativeWidget在Qt中的应用方式,以及如何自定义三维交互窗口。 自定义的三位交互窗口     描述:QVTKOpenGLNativeWidget是对QOpenGLWidget窗口的扩展,用于实现vtkGenericOpenGLRenderWindow。 实现方式:添加QOpenGLWidget窗体,提升为QVTKO

    2024年02月13日
    浏览(34)
  • MATLAB 之 绘制三维图形的基本函数、三维曲面和其他三维图形

    三维图形具有更强的数据表现能力,为此 MATLAB 提供了丰富的函数来绘制三维图形。绘制三维图形与绘制二维图形的方法十分类似,很多都是在二维绘图的基础上扩展而来。 基本的三维图形函数为 plot3 ,它是将二维绘图函数 plot 的有关功能扩展到三维空间,用来绘制三维曲线

    2024年02月06日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包