MFC单文档中进行plc点云显示

时间:2021-07-12
本文章向大家介绍MFC单文档中进行plc点云显示,主要包括MFC单文档中进行plc点云显示使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
 1     m_viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));//初始化pcl::viewer对象    
 2         m_viewer->addCoordinateSystem(); //设置对应的坐标系
 3         m_viewer->setBackgroundColor(0.0, 0.0, 0.0);//设置背景颜色
 4         m_viewer->initCameraParameters();//初始化相机的参数
 5         m_win = m_viewer->getRenderWindow();//将view中的渲染窗口的句柄传递给vtk window
 6         m_iren = vtkRenderWindowInteractor::New(); //初始化vtkwindow交互的对象 
 7         m_viewer->resetCamera();//使点云显示在屏幕中间,并绕中心操
 8 
 9 
10         CRect rect;
11         GetClientRect(&rect);//实时获取MFC窗口大小
12         m_win->SetSize(rect.right - rect.left, rect.bottom - rect.top);//根据当前窗口的大小设置vtk 窗口的大小
13         //m_viewer->addCoordinateSystem(1);
14         m_win->SetPosition(0, 0);
15         m_win->SetParentId(this->m_hWnd);//设置vtk窗口的句柄
16         //m_iren->SetRenderWindow(m_win);//将vtk交互对象与vtk window绑定 
17         //m_viewer->createInteractor();
18         //m_viewer->setCameraPosition(0, 20, 0, 0, 1, 0);
19 
20 
21 
22 
23 
24 
25         //1.创建vtkRenderer对象,用于渲染
26         vtkSmartPointer<vtkRenderer > aRenderer = vtkSmartPointer<vtkRenderer >::New();
27         //2.将vtkRender绑定到vtkRenderWindow
28         m_win->AddRenderer(aRenderer);
29         //3.将vtkRenderWindow绑定到vtkRenderWindowInteractor
30         m_iren->SetRenderWindow(m_win);
31         //4 vtkpolydata 读取 
32         vtkSmartPointer<vtkPolyDataReader> vtkReader = vtkSmartPointer<vtkPolyDataReader >::New();
33         vtkReader->SetFileName("G://001_project_code//LmsAnGangGanMeiPeng//test_data//pit_reconstruct.vtk");
34         //5.声明vtkPolyDataMapper
35         vtkSmartPointer<vtkPolyDataMapper > skinMapper = vtkSmartPointer<vtkPolyDataMapper >::New();
36         //6.将vtkpolydata绑定到vtkPolyDataMapper
37         skinMapper->SetInputConnection(vtkReader->GetOutputPort());
38         skinMapper->ScalarVisibilityOn();//打开颜色渐变色显示
39         //7.声明actor
40         vtkSmartPointer<vtkActor > skin = vtkSmartPointer<vtkActor >::New();
41         //8.将vtkPolyDataMapper绑定actor
42         skin->SetMapper(skinMapper);
43 
44         vtkSmartPointer<vtkCamera > aCamera = vtkSmartPointer<vtkCamera >::New();
45         //aCamera->SetViewUp(0, 0, -1);
46         //aCamera->SetPosition(0, 1, 0);
47         aCamera->SetViewUp(0, 0, -1); //视角设置
48         aCamera->SetPosition(3328, 5466, 20066);
49         aCamera->SetFocalPoint(3328, 5466, 10066);
50         //aCamera->SetFocalPoint(0, 0, 0);
51         aCamera->ComputeViewPlaneNormal();
52         //aCamera->Azimuth(30.0);
53         //aCamera->Elevation(30.0);
54         //aCamera->Dolly(1.5);
55 
56         //9.将actor绑定到Render
57         aRenderer->AddActor(skin);
58         aRenderer->SetActiveCamera(aCamera);
59         aRenderer->ResetCamera();
60         //aRenderer->SetBackground(.2, .3, .4);
61 
62 
63         aRenderer->SetBackground(.1, .3, .1);
64         aRenderer->ResetCameraClippingRange();
View Code

原文地址:https://www.cnblogs.com/codeAndlearn/p/15001197.html