当前位置: 首页 > news >正文

站长收录查询微网站建设教程视频教程

站长收录查询,微网站建设教程视频教程,网站建设 百度贴吧,在线设计平台用户分析背景 上一篇绘制点云的博文中#xff0c;使用的vtkCameraOrientationWidget来绘制的坐标轴#xff0c;最近又学习到两种新的坐标轴绘制形式。 vtkOrientationMarkerWidget vtkAxesActor 单独使用vtkAxesActor能够绘制出坐标轴#xff0c;但是会随着鼠标操作旋转和平移时…背景 上一篇绘制点云的博文中使用的vtkCameraOrientationWidget来绘制的坐标轴最近又学习到两种新的坐标轴绘制形式。 vtkOrientationMarkerWidget vtkAxesActor 单独使用vtkAxesActor能够绘制出坐标轴但是会随着鼠标操作旋转和平移时在三维窗口中移动。搭配vtkOrientationMarkerWidget 的话能够在三维窗口的widget中再放置一个小的widget专门放置vtkAxesActor可以达到停留在窗口左下角只随着鼠标旋转的目的。 在头文件中定义vtkOrientationMarkerWidget 的对象 vtkSmartPointervtkOrientationMarkerWidget markerOrientationWidget;void QVtkDemo2::testVtk3D() {//创建着色器对象vtkSmartPointervtkRenderer g_vtkRenderer vtkSmartPointervtkRenderer::New();//设置背景颜色g_vtkRenderer-SetBackground(.1, .2, .4);//创建point对象vtkSmartPointervtkPoints g_vtkPoints vtkSmartPointervtkPoints::New();g_vtkPoints-SetNumberOfPoints(200);//创建cell对象vtkSmartPointervtkCellArray g_vtkVertices vtkSmartPointervtkCellArray::New();vtkIdType id[1];//随机生成200个点float minz VTK_FLOAT_MAX, maxz VTK_FLOAT_MIN;for (int i 0; i 200; i){float x rand() % 10;float y rand() % 10;float z rand() % 10;//提前申请了points的数量使用set比insert速度更快g_vtkPoints-SetPoint(i, x, y, z);id[0] i;g_vtkVertices-InsertNextCell(1, id);if (z maxz){maxz z;}if (z minz){minz z;}}//创建poly对象vtkSmartPointervtkPolyData g_vtkpolyData vtkSmartPointervtkPolyData::New();g_vtkpolyData-SetPoints(g_vtkPoints);g_vtkpolyData-SetVerts(g_vtkVertices);vtkSmartPointervtkVertexGlyphFilter g_glyphFilter vtkSmartPointervtkVertexGlyphFilter::New();g_glyphFilter-SetInputData(g_vtkpolyData);g_glyphFilter-Update();vtkSmartPointervtkElevationFilter g_elevationFilter vtkSmartPointervtkElevationFilter::New();g_elevationFilter-SetInputConnection(g_glyphFilter-GetOutputPort());g_elevationFilter-SetLowPoint(0, 0, minz);g_elevationFilter-SetHighPoint(0, 0, maxz);//创建polyMappervtkSmartPointervtkPolyDataMapper g_vtkpointsMapper vtkSmartPointervtkPolyDataMapper::New();g_vtkpointsMapper-SetInputConnection(g_elevationFilter-GetOutputPort());//创建ActorvtkSmartPointervtkActor g_vtkpointsActor vtkSmartPointervtkActor::New();g_vtkpointsActor-SetMapper(g_vtkpointsMapper);g_vtkpointsActor-GetProperty()-SetPointSize(3);//设置点的大小g_vtkRenderer-AddActor(g_vtkpointsActor);vtkNewvtkLookupTable lut vtkNewvtkLookupTable::vtkNew();lut-SetNumberOfTableValues(7);lut-SetHueRange(0.0, 0.67);lut-SetTableRange(minz, maxz);lut-Build();vtkNewvtkScalarBarActor colorBar vtkNewvtkScalarBarActor::vtkNew();colorBar-SetLookupTable(lut);colorBar-SetNumberOfLabels(7);colorBar-SetBarRatio(0.10);colorBar-SetUnconstrainedFontSize(0.05);colorBar-SetMaximumHeightInPixels(100);colorBar-SetDisplayPosition(500, 80);g_vtkRenderer-AddActor2D(colorBar);//根据点云的包围盒寻找最佳的显示视点位置g_vtkRenderer-ResetCamera();//ui中的绘制窗口添加定义的着色器ui.openGLWidget-renderWindow()-AddRenderer(g_vtkRenderer);//开始三维渲染ui.openGLWidget-renderWindow()-Render();//绘制坐标轴vtkSmartPointervtkAxesActor axes_actor vtkSmartPointervtkAxesActor::New();axes_actor-SetPosition(0, 0, 0);axes_actor-SetTotalLength(50, 50, 50);//axes_actor-SetScale(5.0);//axes_actor-SetShaftType(0);//axes_actor-SetCylinderRadius(0.1);//axes_actor-SetConeRadius(0.3);//axes_actor-SetAxisLabels(1);//axes_actor-SetTipType(0); //坐标轴顶部为圆锥体axes_actor-GetXAxisShaftProperty()-SetColor(1, 0, 1);axes_actor-GetXAxisTipProperty()-SetColor(1, 0, 1);axes_actor-GetZAxisShaftProperty()-SetColor(1, 1, 0);axes_actor-GetZAxisTipProperty()-SetColor(1, 1, 0);markerOrientationWidget vtkSmartPointervtkOrientationMarkerWidget::New();markerOrientationWidget-SetOrientationMarker(axes_actor);markerOrientationWidget-SetInteractor(ui.openGLWidget-interactor());markerOrientationWidget-SetCurrentRenderer(g_vtkRenderer);markerOrientationWidget-SetDefaultRenderer(g_vtkRenderer);markerOrientationWidget-SetViewport(0.0, 0.0, 0.2, 0.2);markerOrientationWidget-SetEnabled(1);markerOrientationWidget-SetZoom(1.2);markerOrientationWidget-SetInteractive(false);return; }可以为三维空间添加一个网格底面如图所示 只需要在上述代码中创建一个新的Actor以及对应的Mapper和PlaneSource然后向renderer中添加一个额外的Actor并通过vtkCamera来设定我们当前的视角提升观感 void QVtkDemo2::testVtk3D() {//创建着色器对象vtkSmartPointervtkRenderer g_vtkRenderer vtkSmartPointervtkRenderer::New();//设置背景颜色g_vtkRenderer-SetBackground(.1, .2, .4);//创建point对象vtkSmartPointervtkPoints g_vtkPoints vtkSmartPointervtkPoints::New();g_vtkPoints-SetNumberOfPoints(200);//创建cell对象vtkSmartPointervtkCellArray g_vtkVertices vtkSmartPointervtkCellArray::New();vtkIdType id[1];//随机生成200个点float minz VTK_FLOAT_MAX, maxz VTK_FLOAT_MIN;for (int i 0; i 200; i){float x rand() % 10;float y rand() % 10;float z rand() % 10;//提前申请了points的数量使用set比insert速度更快g_vtkPoints-SetPoint(i, x, y, z);id[0] i;g_vtkVertices-InsertNextCell(1, id);if (z maxz){maxz z;}if (z minz){minz z;}}//创建poly对象vtkSmartPointervtkPolyData g_vtkpolyData vtkSmartPointervtkPolyData::New();g_vtkpolyData-SetPoints(g_vtkPoints);g_vtkpolyData-SetVerts(g_vtkVertices);vtkSmartPointervtkVertexGlyphFilter g_glyphFilter vtkSmartPointervtkVertexGlyphFilter::New();g_glyphFilter-SetInputData(g_vtkpolyData);g_glyphFilter-Update();vtkSmartPointervtkElevationFilter g_elevationFilter vtkSmartPointervtkElevationFilter::New();g_elevationFilter-SetInputConnection(g_glyphFilter-GetOutputPort());g_elevationFilter-SetLowPoint(0, 0, minz);g_elevationFilter-SetHighPoint(0, 0, maxz);//创建polyMappervtkSmartPointervtkPolyDataMapper g_vtkpointsMapper vtkSmartPointervtkPolyDataMapper::New();g_vtkpointsMapper-SetInputConnection(g_elevationFilter-GetOutputPort());//创建ActorvtkSmartPointervtkActor g_vtkpointsActor vtkSmartPointervtkActor::New();g_vtkpointsActor-SetMapper(g_vtkpointsMapper);g_vtkpointsActor-GetProperty()-SetPointSize(3);//设置点的大小g_vtkRenderer-AddActor(g_vtkpointsActor);vtkNewvtkLookupTable lut vtkNewvtkLookupTable::vtkNew();lut-SetNumberOfTableValues(7);lut-SetHueRange(0.0, 0.67);lut-SetTableRange(minz, maxz);lut-Build();vtkNewvtkScalarBarActor colorBar vtkNewvtkScalarBarActor::vtkNew();colorBar-SetLookupTable(lut);colorBar-SetNumberOfLabels(7);colorBar-SetBarRatio(0.10);colorBar-SetUnconstrainedFontSize(0.05);colorBar-SetMaximumHeightInPixels(100);colorBar-SetDisplayPosition(500, 80);g_vtkRenderer-AddActor2D(colorBar);//定义一个平面vtkSmartPointervtkPlaneSource mReferencePlaneSource;vtkSmartPointervtkPolyDataMapper mReferencePlaneMapper;vtkSmartPointervtkActor mReferencePlaneActor;//添加平面mReferencePlaneSource vtkSmartPointervtkPlaneSource::New();mReferencePlaneMapper vtkSmartPointervtkPolyDataMapper::New();mReferencePlaneActor vtkSmartPointervtkActor::New();mReferencePlaneSource-SetXResolution(20);mReferencePlaneSource-SetYResolution(20);mReferencePlaneSource-SetOrigin(-10.0, -10.0, -6.0); //根据视野范围来调整mReferencePlaneSource-SetPoint1(10.0, -10.0, -6.0);mReferencePlaneSource-SetPoint2(-10.0, 10.0, -6.0);mReferencePlaneMapper-SetInputConnection(mReferencePlaneSource-GetOutputPort());mReferencePlaneActor-SetMapper(mReferencePlaneMapper);mReferencePlaneActor-GetProperty()-SetRepresentationToWireframe();mReferencePlaneActor-GetProperty()-SetColor(0.5, 1.0, 1.0);mReferencePlaneActor-SetVisibility(true);g_vtkRenderer-AddActor(mReferencePlaneActor);vtkSmartPointervtkCamera _vtk_icamera vtkSmartPointervtkCamera::New();_vtk_icamera-SetPosition(50.0, 50.0, 30.0);_vtk_icamera-SetFocalPoint(0.0, 0.0, 0.0);_vtk_icamera-SetViewUp(0.0, 0.0, 1.0);_vtk_icamera-ComputeViewPlaneNormal();if (_vtk_icamera){g_vtkRenderer-SetActiveCamera(_vtk_icamera);g_vtkRenderer-ResetCamera();}//根据点云的包围盒寻找最佳的显示视点位置//g_vtkRenderer-ResetCamera();//ui中的绘制窗口添加定义的着色器ui.openGLWidget-renderWindow()-AddRenderer(g_vtkRenderer);//开始三维渲染ui.openGLWidget-renderWindow()-Render();//绘制坐标轴vtkSmartPointervtkAxesActor axes_actor vtkSmartPointervtkAxesActor::New();axes_actor-SetPosition(0, 0, 0);axes_actor-SetTotalLength(50, 50, 50);//axes_actor-SetScale(5.0);//axes_actor-SetShaftType(0);//axes_actor-SetCylinderRadius(0.1);//axes_actor-SetConeRadius(0.3);//axes_actor-SetAxisLabels(1);//axes_actor-SetTipType(0); //坐标轴顶部为圆锥体axes_actor-GetXAxisShaftProperty()-SetColor(1, 0, 1);axes_actor-GetXAxisTipProperty()-SetColor(1, 0, 1);axes_actor-GetZAxisShaftProperty()-SetColor(1, 1, 0);axes_actor-GetZAxisTipProperty()-SetColor(1, 1, 0);markerOrientationWidget vtkSmartPointervtkOrientationMarkerWidget::New();markerOrientationWidget-SetOrientationMarker(axes_actor);markerOrientationWidget-SetInteractor(ui.openGLWidget-interactor());markerOrientationWidget-SetCurrentRenderer(g_vtkRenderer);markerOrientationWidget-SetDefaultRenderer(g_vtkRenderer);markerOrientationWidget-SetViewport(0.0, 0.0, 0.2, 0.2);markerOrientationWidget-SetEnabled(1);markerOrientationWidget-SetZoom(1.2);markerOrientationWidget-SetInteractive(false);return; }vtkCubeAxesActor 下图是matlab的三维显示想要绘制网格状的坐标轴并标注坐标VTK提供了vtkCubeAxesActor vtkCubeAxesActor作为一类Actor, 因此我们只需要定义好vtkCubeAxesActor的参数然后添加到Renderer中即可 void QVtkDemo2::testVtk3D() {//创建着色器对象vtkSmartPointervtkRenderer g_vtkRenderer vtkSmartPointervtkRenderer::New();//设置背景颜色g_vtkRenderer-SetBackground(.1, .2, .4);//创建point对象vtkSmartPointervtkPoints g_vtkPoints vtkSmartPointervtkPoints::New();g_vtkPoints-SetNumberOfPoints(200);//创建cell对象vtkSmartPointervtkCellArray g_vtkVertices vtkSmartPointervtkCellArray::New();vtkIdType id[1];//随机生成200个点float minz VTK_FLOAT_MAX, maxz VTK_FLOAT_MIN;for (int i 0; i 200; i){float x rand() % 10;float y rand() % 10;float z rand() % 10;//提前申请了points的数量使用set比insert速度更快g_vtkPoints-SetPoint(i, x, y, z);id[0] i;g_vtkVertices-InsertNextCell(1, id);if (z maxz){maxz z;}if (z minz){minz z;}}//创建poly对象vtkSmartPointervtkPolyData g_vtkpolyData vtkSmartPointervtkPolyData::New();g_vtkpolyData-SetPoints(g_vtkPoints);g_vtkpolyData-SetVerts(g_vtkVertices);vtkSmartPointervtkVertexGlyphFilter g_glyphFilter vtkSmartPointervtkVertexGlyphFilter::New();g_glyphFilter-SetInputData(g_vtkpolyData);g_glyphFilter-Update();vtkSmartPointervtkElevationFilter g_elevationFilter vtkSmartPointervtkElevationFilter::New();g_elevationFilter-SetInputConnection(g_glyphFilter-GetOutputPort());g_elevationFilter-SetLowPoint(0, 0, minz);g_elevationFilter-SetHighPoint(0, 0, maxz);//创建polyMappervtkSmartPointervtkPolyDataMapper g_vtkpointsMapper vtkSmartPointervtkPolyDataMapper::New();g_vtkpointsMapper-SetInputConnection(g_elevationFilter-GetOutputPort());//创建ActorvtkSmartPointervtkActor g_vtkpointsActor vtkSmartPointervtkActor::New();g_vtkpointsActor-SetMapper(g_vtkpointsMapper);g_vtkpointsActor-GetProperty()-SetPointSize(3);//设置点的大小g_vtkRenderer-AddActor(g_vtkpointsActor);vtkNewvtkLookupTable lut vtkNewvtkLookupTable::vtkNew();lut-SetNumberOfTableValues(7);lut-SetHueRange(0.0, 0.67);lut-SetTableRange(minz, maxz);lut-Build();vtkNewvtkScalarBarActor colorBar vtkNewvtkScalarBarActor::vtkNew();colorBar-SetLookupTable(lut);colorBar-SetNumberOfLabels(7);colorBar-SetBarRatio(0.10);colorBar-SetUnconstrainedFontSize(0.05);colorBar-SetMaximumHeightInPixels(100);colorBar-SetDisplayPosition(500, 80);g_vtkRenderer-AddActor2D(colorBar);//vtkCubeAxesvtkSmartPointervtkCubeAxesActor cubeAxes vtkSmartPointervtkCubeAxesActor::New();auto activeCamera g_vtkRenderer-GetActiveCamera();cubeAxes-SetCamera(activeCamera);double bounds[6] { 0.0, 10.0, 0.0, 10.0, 0.0, 10.0 };cubeAxes-SetBounds(bounds);cubeAxes-SetXTitle(X-Axis);cubeAxes-SetYTitle(Y-Axis);cubeAxes-SetZTitle(Z-Axis);cubeAxes-GetTitleTextProperty(0)-SetColor(1.0, 0.0, 1.0);cubeAxes-GetLabelTextProperty(0)-SetColor(1.0, 0.0, 1.0);cubeAxes-GetTitleTextProperty(1)-SetColor(0.0, 1.0, 0.0);cubeAxes-GetLabelTextProperty(1)-SetColor(0.0, 1.0, 0.0);cubeAxes-GetTitleTextProperty(2)-SetColor(1.0, 1.0, 0.0);cubeAxes-GetLabelTextProperty(2)-SetColor(1.0, 1.0, 0.0);cubeAxes-SetVisibility(1);cubeAxes-SetXAxisRange(0, 10.0);cubeAxes-SetYAxisRange(0.0, 10.0);cubeAxes-SetZAxisRange(0.0, 10.0);cubeAxes-DrawXGridlinesOn();cubeAxes-DrawYGridlinesOn();cubeAxes-DrawZGridlinesOn();cubeAxes-SetDrawXInnerGridlines(0);cubeAxes-SetDrawYInnerGridlines(0);cubeAxes-SetDrawZInnerGridlines(0);cubeAxes-XAxisMinorTickVisibilityOff();cubeAxes-YAxisMinorTickVisibilityOff();cubeAxes-ZAxisMinorTickVisibilityOff();cubeAxes-SetScreenSize(30.0);cubeAxes-SetLabelOffset(20.0);cubeAxes-SetGridLineLocation(2);cubeAxes-SetTickLocation(1);cubeAxes-SetFlyMode(0);g_vtkRenderer-AddActor(cubeAxes);vtkSmartPointervtkCamera _vtk_icamera vtkSmartPointervtkCamera::New();_vtk_icamera-SetPosition(50.0, 50.0, 30.0);_vtk_icamera-SetFocalPoint(0.0, 0.0, 0.0);_vtk_icamera-SetViewUp(0.0, 0.0, 1.0);_vtk_icamera-ComputeViewPlaneNormal();if (_vtk_icamera){g_vtkRenderer-SetActiveCamera(_vtk_icamera);g_vtkRenderer-ResetCamera();}//根据点云的包围盒寻找最佳的显示视点位置//g_vtkRenderer-ResetCamera();//ui中的绘制窗口添加定义的着色器ui.openGLWidget-renderWindow()-AddRenderer(g_vtkRenderer);//开始三维渲染ui.openGLWidget-renderWindow()-Render();//绘制坐标轴vtkSmartPointervtkAxesActor axes_actor vtkSmartPointervtkAxesActor::New();axes_actor-SetPosition(0, 0, 0);axes_actor-SetTotalLength(50, 50, 50);//axes_actor-SetScale(5.0);//axes_actor-SetShaftType(0);//axes_actor-SetCylinderRadius(0.1);//axes_actor-SetConeRadius(0.3);//axes_actor-SetAxisLabels(1);//axes_actor-SetTipType(0); //坐标轴顶部为圆锥体axes_actor-GetXAxisShaftProperty()-SetColor(1, 0, 1);axes_actor-GetXAxisTipProperty()-SetColor(1, 0, 1);axes_actor-GetZAxisShaftProperty()-SetColor(1, 1, 0);axes_actor-GetZAxisTipProperty()-SetColor(1, 1, 0);markerOrientationWidget vtkSmartPointervtkOrientationMarkerWidget::New();markerOrientationWidget-SetOrientationMarker(axes_actor);markerOrientationWidget-SetInteractor(ui.openGLWidget-interactor());markerOrientationWidget-SetCurrentRenderer(g_vtkRenderer);markerOrientationWidget-SetDefaultRenderer(g_vtkRenderer);markerOrientationWidget-SetViewport(0.0, 0.0, 0.2, 0.2);markerOrientationWidget-SetEnabled(1);markerOrientationWidget-SetZoom(1.2);markerOrientationWidget-SetInteractive(false);return; }带灰度纹理点云的三维显示
http://www.w-s-a.com/news/809914/

相关文章:

  • 网站建设公司 深圳镇江建设质量监督站网站
  • 网站底部版权怎么做软广告经典案例
  • 网站收录突然全部没有了东莞网站建设公司电话
  • 境外企业网站推广免费ppt元素
  • 2018网站建设行业广东网站seo
  • 网站后台加密云服务器2008做网站
  • dw制作一个环保网站模板下载吉安网站建设收费
  • 深圳珠宝网站设计北京高端网站建设优势
  • 合肥企业制作网站wordpress创建网站
  • 织梦网站开发兼职wordpress 中间截取缩略图
  • 南通制作网站旅游搭建网站
  • 专业做商铺的网站个人网页html模板完整代码
  • 什么网站做美食最好最专业关键词推广是什么意思
  • 自助建设网站软件网站导航网站可以做吗
  • 网站模板放哪长沙网站优化分析
  • 泉州网站建设价钱网站模板素材
  • 南通网站托管js建设网站外网
  • 成都企业网站公司wordpress内页模板
  • 58同城建网站怎么做wordpress评论显示数字ip
  • 免费制作论坛网站模板免费下载北京网站制作长沙
  • 旅游网网站建设网站如何自己做seo
  • 如何验证网站所有权做二手家具回收哪个网站好
  • 做哪种网站赚钱项目开发流程
  • 网站建设和网站网络推广网站建设软件定制
  • 站长工具网址查询全球云邮登陆网站
  • 宁波 住房和建设局网站网上发帖推广
  • 平面设计在线网站工业设计公司有哪些
  • 福州网站设计外包公司网站做的比较好
  • 如何设计网站首页网站开发综合技能实训心得体会
  • 用织梦做的网站好用吗w网站链接如何做脚注