当前位置: 首页 > 网络知识

VTK 实例57:网格细化(多分辨率处理)

时间:2026-01-29 09:25:21
1 #include <vtkAutoInit.h> 2 VTK_MODULE_INIT(vtkRenderingOpenGL2); 3 VTK_MODULE_INIT(vtkRenderingFreeType); 4 VTK_MODULE_INIT(vtkInteractionStyle); 5 6 #include <vtkSmartPointer.h> 7 #include <vtkPolyDataReader.h> 8 #include <vtkPolyData.h> 9 #include <vtkLinearSubdivisionFilter.h> 10 #include <vtkLoopSubdivisionFilter.h> 11 #include <vtkButterflySubdivisionFilter.h> 12 #include <vtkPolyDataMapper.h> 13 #include <vtkActor.h> 14 #include <vtkRenderer.h> 15 #include <vtkRenderWindoh> 16 #include <vtkCamera.h> 17 #include <vtkRenderWindowInteractor.h> 18 19 int main() 20 ; 96 double rtView[4] = ; 97 double lbView[4] = ; 98 double rbView[4] = ; 99 100 vtkSmartPointer<vtkRenderer> origRender = 101 vtkSmartPointer<vtkRenderer>::New(); 102 origRender>SetViewport(ltView); 103 origRender>AddActor(origActor); 104 origRender>SetBackground(1, 0, 0); 105 106 vtkSmartPointer<vtkRenderer> linearRender = 107 vtkSmartPointer<vtkRenderer>::New(); 108 linearRender>SetViewport(rtView); 109 linearRender>AddActor(linearActor); 110 linearRender>SetBackground(0, 1, 0); 111 112 vtkSmartPointer<vtkRenderer> loopRender = 113 vtkSmartPointer<vtkRenderer>::New(); 114 loopRender>SetViewport(lbView); 115 loopRender>AddActor(loopActor); 116 loopRender>SetBackground(0, 0, 1); 117 118 vtkSmartPointer<vtkRenderer> butterflyRender = 119 vtkSmartPointer<vtkRenderer>::New(); 120 butterflyRender>SetViewport(rbView); 121 butterflyRender>AddActor(butterflyActor); 122 butterflyRender>SetBackground(0, 0, 0); 123 // 124 vtkSmartPointer<vtkRenderWindow> rw = 125 vtkSmartPointer<vtkRenderWindow>::New(); 126 rw>AddRenderer(origRender); 127 rw>AddRenderer(linearRender); 128 rw>AddRenderer(loopRender); 129 rw>AddRenderer(butterflyRender); 130 rw>SetSize(640, 640); 131 rw>SetWindowName("PolyData Subdivision"); 132 133 origRender>GetActiveCamera()>SetPosition(0, 1, 0); 134 origRender>GetActiveCamera()>SetFocalPoint(0, 0, 0); 135 origRender>GetActiveCamera()>SetViewUp(0, 0, 1); 136 origRender>GetActiveCamera()>Azimuth(30); 137 origRender>GetActiveCamera()>Elevation(30); 138 origRender>ResetCamera();//刷新照相机 139 linearRender>SetActiveCamera(origRender>GetActiveCamera()); 140 loopRender>SetActiveCamera(origRender>GetActiveCamera()); 141 butterflyRender>SetActiveCamera(origRender>GetActiveCamera()); 142 143 vtkSmartPointer<vtkRenderWindowInteractor> rwi = 144 vtkSmartPointer<vtkRenderWindowInteractor>::New(); 145 rwi>SetRenderWindow(rw); 146 rwi>Start(); 147 rw>Render(); 148 149 return 0; 150 }

放大细节

红色视窗为原始三角网格模型,绿色视窗采用了线性细分算法;蓝色视窗采用Loop细分算法;黑色视窗采用了Butterfly细分算法。可见Loop细分、Butterfly细分能够得到较为光滑的效果;效果优于线性细分算法。



上一篇:VTK 实例65:最大密度投影法体绘制
下一篇:VTK 实例66:GPU加速光线投影体绘制
VTK
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素