BestMPRBaseVtk-007-给测试程序增加3D体渲染

简介: BestMPRBaseVtk-007-给测试程序增加3D体渲染

image.png

BestMPRBaseVtk 给测试程序增加3D体渲染

上一篇不是把图像的

显示方向问题解决了吗,后面博士让我搞一下鼠标事件,最近有点神烦的,不想搞,正好我的测试程序准备完善一点,把原来vtkImageViewer2的位置给他换了,换成一个3D的。


文章目录


BestMPRBaseVtk 给测试程序增加3D体渲染

增加3D体渲染

演示效果

☞ 源码

关键字: vtkContourFilter、vtkPolyDataNormals、vtkPolyDataMapper、vtkActor、vtkRenderer


增加3D体渲染


其实3D渲染整体还是vtk的标准流水线原则数据->过滤器->映射器->Actor ->渲染器->Window+交互器,理解起来简答,搞起来难。


那么久直接上代码


 //读取Dicom文件
    vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New();
    reader->SetDirectoryName(url);
    reader->SetDataSpacing(3.2, 1.5, 1.5);
    reader->Update();
    //这是一个过滤器,官方翻译如下
    //vtkContourFilter是一个过滤器,它将任何数据集作为输入,并在输出等值面和/或等值线上生成。
    //输出的确切形式取决于输入数据的维数。 由3D单元格组成的数据将生成等值面,由2D单元格组成的数据将生成等值线,
    //由1D或0D单元格组成的数据将生成等点。 如果输入维度是混合的,输出类型的组合是可能的。
    //若要使用此筛选器,必须指定一个或多个轮廓值。 您可以使用SetValue()方法来指定每个轮廓值,也可以使用GenerateValues()来生成一系列均匀间隔的轮廓。
    //还可以通过使用vtkScalarTree来加速这个过滤器的操作(以额外的内存为代价)。 标量树用于快速定位包含轮廓曲面的单元。 这是特别有效的,如果多个轮廓被提取。
    //如果您想要使用标量树,请调用方法UseScalarTreeOn()。
    vtkSmartPointer<vtkContourFilter> skinExtractor = vtkSmartPointer<vtkContourFilter>::New();
    skinExtractor->SetInputConnection(reader->GetOutputPort());
    skinExtractor->SetValue(0, 500);
    //vtkPolyDataNormals是一个为多边形网格计算点和/或单元法线的过滤器。
    //用户通过设置ComputeCellNormals和ComputePointNormals标志来指定他们是否希望计算点和/或单元格法线。
    vtkSmartPointer<vtkPolyDataNormals> skinNormals = vtkSmartPointer<vtkPolyDataNormals>::New();
    skinNormals->SetInputConnection(skinExtractor->GetOutputPort());
    skinNormals->SetFeatureAngle(60.0);
    vtkSmartPointer<vtkPolyDataMapper> skinMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    skinMapper->SetInputConnection(skinNormals->GetOutputPort());
    skinMapper->ScalarVisibilityOff();
    vtkSmartPointer<vtkActor> skin = vtkSmartPointer<vtkActor>::New();
    skin->SetMapper(skinMapper);
    vtkSmartPointer<vtkRenderer> aRenderer = vtkSmartPointer<vtkRenderer>::New();
    aRenderer->SetBackground(0, 0, 0);
    aRenderer->ResetCameraClippingRange();
    ui->openGLWidget->renderWindow()->AddRenderer(aRenderer);
    aRenderer->AddActor(skin);
    ui->openGLWidget->renderWindow()->Render();

image.pngimage.png

目录
相关文章
|
SQL 安全 测试技术
Web应用程序安全测试
Web应用程序安全测试
346 0
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
305 0
|
4月前
|
监控 安全 测试技术
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
121 14
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
|
5月前
|
安全 测试技术 Linux
Acunetix v25.4 发布 - Web 应用程序安全测试
Acunetix v25.4 (Linux, Windows) - Web 应用程序安全测试
163 3
Acunetix v25.4 发布 - Web 应用程序安全测试
|
4月前
|
安全 Devops 测试技术
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
74 0
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
|
7月前
|
安全 JavaScript Java
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
87 12
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
|
6月前
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
304 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
|
9月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
383 13
|
10月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
234 1
|
11月前
|
安全 Linux 网络安全
Kali渗透测试:远程控制程序基础
Kali渗透测试:远程控制程序基础
186 0
Kali渗透测试:远程控制程序基础