VTK 实例57:网格细化(多分辨率处理)
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
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?