VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装的Qt例子中,想显示球体表面的网格线(线框/wireframe),设置actor的EdgeVisibilityOn属性。

sphereActor->GetProperty()->EdgeVisibilityOn();

全部代码

    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());

    vtkNew<vtkRenderer> renderer;
vtkNew<vtkNamedColors> colors; vtkNew<vtkSphereSource> sphereSource; vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort()); vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
sphereActor->GetProperty()->EdgeVisibilityOn(); renderer->AddActor(sphereActor); renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("RenderWindowNoUIFile");
ui.vtk_main->setRenderWindow(renderWindow);

还可以通过vtkExtractEdges来实现显示全部网格线:

    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());

    vtkNew<vtkRenderer> renderer;
vtkNew<vtkNamedColors> colors; vtkNew<vtkSphereSource> sphereSource; {
//球体
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort()); vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData()); renderer->AddActor(sphereActor);
} {
//网格线
vtkNew<vtkExtractEdges> extractEdges;
extractEdges->SetInputConnection(sphereSource->GetOutputPort()); vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(extractEdges->GetOutputPort());
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Black").GetData()); renderer->AddActor(sphereActor);
} renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("RenderWindowNoUIFile");
ui.vtk_main->setRenderWindow(renderWindow);

编译显示vtkExtractEdges未定义,引入vtkExtractEdges的头文件vtkExtractEdges.h,任何时候vtk类没有定义,头文件是vtk类.h

如下图所示:

还可以通过设置actor的SetRepresentationToWireframe属性来显示网格线:

sphereActor->GetProperty()->SetRepresentationToWireframe();

通过SetRepresentationToWireframe只能显示网格线,不能面和线同时显示。

最后,还可以通过vtkFeatureEdges来显示特定的网格线:

1.边界(boundary):只被一个多边形使用的边,或者直线单元;
2.非流行(non-manifold):被三个以上的多边形共用的边;
3.特征边(feature edges):被两个三角形使用,并且两个三角形之间的夹角大于特征角度(可自行设置此角度);
4.流行边(manifold edges):只被两个多边形使用的边。

VTK 显示3D模型的网格线(线框/wireframe)的更多相关文章

  1. Unity在UI界面上显示3D模型/物体,控制模型旋转

    Unity3D物体在UI界面的显示 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  2. Flash Stage3D 在2D UI 界面上显示3D模型问题完美解决

    一直以来很多Stage3D开发者都在为3D模型在2DUI上显示的问题头疼.Stage3D一直是在 Stage2D下面.为了做到3D模型在2DUI上显示通常大家有几种实现方式,下面来说说这几种实现方式吧 ...

  3. occ+vtk显示igs模型

    使用Opencascade读取igs文件内模型,使用vtk进行显示. 本案例环境:Opencascade6.6.0 +  vtk-5.10 + VS2005(win32) 使用CMake管理工程. C ...

  4. Unity3D 3D模型在GUI之上显示

    原来旧的办法是,在主相机上加一个Panel,把3D模型显示在Panel上面,感觉这个方法不怎么好,现在进行改进: 现在用了两个相机,一个相机显示3D模型,另外一个是主相机.还需要GUITexture来 ...

  5. 在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图

    在Jerry写这篇文章时,通过Google才知道,SAP其实是有自己的3D模型视图显示解决方案的. 故事要从Right Hemisphere说起,这是一家专业的企业级2D/3D模型浏览及转换的软件供应 ...

  6. WPF程序加入3D模型

    原文:WPF程序加入3D模型 版权声明:本文为博主原创文章,转载请附上链接地址. https://blog.csdn.net/ld15102891672/article/details/8006474 ...

  7. OpenGl读取导入3D模型并且添加鼠标移动旋转显示

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11543828.html 最近实习要用到opengl库就是跟opencv 有点像的那个,然后下了 ...

  8. XNA 中3D模型的显示

    XNA 中3D模型的显示: ModelMeshPart[] meshParts; Model start_model; Matrix[] dq_model_transforms; Matrix vie ...

  9. unity3d设置3D模型显示在2D背景之前(多个相机分层显示)(转)

    解决步骤: 1.添加一个摄像机,命名为BackgroundCamera,然后在Layer添加一个background层.并且将plane拖放到改相机节点下. 然后将BackgroundCamera和P ...

  10. WPF绘制深度不同颜色的3D模型填充图和线框图

    原文:WPF绘制深度不同颜色的3D模型填充图和线框图 在机械测量过程中,测量的数据需要进行软件处理.通常测量一个零件之后,需要重建零件的3D模型,便于观察测量结果是否与所测工件一致. 重建的3D模型需 ...

随机推荐

  1. SaaS架构:流程架构分析

    大家好,我是汤师爷~ 今天聊聊SaaS架构中的流程架构分析. 业务流程的概念 业务流程是企业为实现目标而制定的一套系统化的工作方法.它由一系列有序的业务活动组成,按照既定规则将资源(输入)转化为有价值 ...

  2. 暑假集训CSP提高模拟18

    \[暑假集训CSP提高模拟 \ 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1 \] Very good problem, this make my news rotate. ...

  3. Autodesk Maya无法打开 refrence file 解决办法

    删除预设 预设的位置在: 我的文档/maya/version/ prefs 备注: 我的文档/maya/version/ 无法确定是不是该路径下的所有文件夹都能删除,所以只剪切了 prefs 文件夹出 ...

  4. 【漏洞分析】20240507-SATURN:当闪电贷遇上有缺陷的通缩机制

    背景信息 2024 年 5 月 6 日,SATURN 代币遭受价格操控攻击,损失 15 BNB.攻击发生的原因是由于 SATURN 代币的代币通缩机制设计不合理,使得攻击者可以通过燃烧池子中的 SAT ...

  5. 将ASD光谱仪的.asd文件转为文本文件

      本文介绍基于ViewSpec Pro软件,将ASD地物光谱仪获取到的.asd格式文件,批量转换为通用的.txt文本格式文件的方法.   ASD光谱仪是英国Malvern Panalytical公司 ...

  6. js中数据的基本类型

    有5种基本数据类型分类 : 1. 数字型  number 2. 字符型 string 3. 布尔型 boolean 4. undefined 未定义  就是声明了但是没有赋值 5. null 空指针 ...

  7. 【Treatment-Rec 论文阅读】Data-driven Automatic Treatment Regimen Development and Recommendation

    Data-driven Automatic Treatment Regimen Development and Recommendation Authors: Leilei Sun, Chuanren ...

  8. 王树森Attention与Self-Attention学习笔记

    目录 Seq2Seq + Attention Attention的原理 方法一(Used in the original paper) 方法二(more popular,the same to Tra ...

  9. 「模拟赛」多校 A 层联训 5

    A.好数(number) 很签,打完之后"不是这题我能做一个小时??" 对于每个数,都把它与前面的所有数的加和求一遍存进桶里,再遇到一个新数 \(a_i\) 时,枚举前面的所有 \ ...

  10. rsa原理及其应用

    rsa算法 0x01 原理 1.1 相关概念 RSA(Rivest-Shamir-Adleman)加密算法是一种基于数论的非实时加密算法,广泛用于安全通信.RSA算法的核心依赖于大整数分解的困难性 1 ...