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

利用百度搜索自己的网站全国城建中心官网查询证书

利用百度搜索自己的网站,全国城建中心官网查询证书,用自己的电脑做视频网站,重庆有哪些互联网大厂若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/150765433 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…

若该文为原创文章,转载请注明出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/150765433

长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

OSG、VTK、OSGEARTH三维开发专栏(点击传送门)

上一篇:《VTK开发笔记(三):熟悉VTK开发流程,编写球体,多半透明球体Demo》
下一篇:敬请期待…


前言

  vtk的了解学习途径跟随代码中的示例,循序渐进。
  本篇详细解析Cone.exe,后在Qt中复现一样的。


Demo

  请添加图片描述


自带示例:Cone.exe

  显示效果
  在这里插入图片描述

  在这里插入图片描述

示例所在位置

  在这里插入图片描述

示例代码深度解析

int main()
{// 步骤一:创建圆锥体数据源vtkConeSource *cone = vtkConeSource::New();cone->SetHeight( 3.0 );cone->SetRadius( 1.0 );
cone->SetResolution( 10 );// 步骤二:创建多边形数据映射器(注意:可以在数据源和映射器之间插入中间过滤器)vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();
coneMapper->SetInputConnection(cone->GetOutputPort() );// 步骤三:创建一个演员来代表圆锥体。演员协调映射器图形图元的渲染。actor还通过vtkProperty实例引用属性,并包含一个内部转换矩阵。我们将此actor的映射器设置为上面创建的coneMapper。 vtkActor *coneActor = vtkActor::New();
coneActor->SetMapper( coneMapper );// 步骤四:创建渲染器并为其分配演员。渲染器就像一个视口。它是屏幕上窗口的一部分或全部,负责绘制它所拥有的演员。我们还在此处设置了背景颜色。  
vtkRenderer *ren1= vtkRenderer::New();
ren1->AddActor( coneActor );
ren1->SetBackground( 0.1, 0.2, 0.4 );// 步骤五:创建渲染窗口,它将显示在屏幕上。使用AddRenderer将渲染器放入渲染窗口。将渲染器大小设置为300像素乘300像素。  
vtkRenderWindow *renWin = vtkRenderWindow::New();renWin->AddRenderer( ren1 );renWin->SetSize( 300, 300 );// 步骤六:现在我们循环360度,每次渲染圆锥体。int i;for (i = 0; i < 360; ++i){// render the imagerenWin->Render();// rotate the active camera by one degreeren1->GetActiveCamera()->Azimuth( 1 );}// 释放对象cone->Delete();coneMapper->Delete();coneActor->Delete();ren1->Delete();renWin->Delete();return 0;
}

复现Demo

  有一个很重要的点,这个示例代码是阻塞时的循环刷新,与Qt的基于消息的编程处理方式不一样,这是过程式的编程,我们复刻示例,保持一块Demo就一个函数,否则的话,可以使用Qt定时器来实现更新位置就可以了。

步骤一:创建圆锥体数据源

  在这里插入图片描述

步骤二:创建多边形映射器

  在这里插入图片描述

  在这里插入图片描述

步骤三:创建演员类(类似osg模型结点)

  在这里插入图片描述

  在这里插入图片描述

步骤四:创建渲染器

  在这里插入图片描述

  在这里插入图片描述

步骤五:设置渲染器到渲染窗口

  在这里插入图片描述

步骤六:用Qt的方式实现不阻塞又是过程化旋转

  在这里插入图片描述

  在这里插入图片描述

  


Demo源码

VTKWidget.cpp

void VTKWidget::test_demo3_createCone()
{// 步骤一:创建圆锥体数据源vtkSmartPointer<vtkConeSource> pConeSource =VTKManager::createConeSource(0, 0, 0, 10, 30, 10);// 步骤二:创建多边形映射器
#if 0vtkSmartPointer<vtkPolyDataMapper> pPolyDataMapper =VTKManager::createPolyDataMapper(pConeSource);
#elsevtkSmartPointer<vtkPolyDataMapper> pPolyDataMapper =VTKManager::createPolyDataMapper(pConeSource->GetOutputPort());
#endif// 步骤三:创建演员vtkSmartPointer<vtkActor> pActor =VTKManager::createActor(pPolyDataMapper);// 步骤四:创建渲染器vtkSmartPointer<vtkRenderer> pRenderer =VTKManager::createRenderer(pActor, 0.1, 0.2, 0.4);// 步骤五:渲染器添加到QVTKWidget渲染_pQVTKWidget->GetRenderWindow()->AddRenderer(pRenderer);// 步骤六:过程循环的方式实现旋转QElapsedTimer elapsedTimer;for(int index = 0; index < 360; index++){LOG << index;// render the image_pQVTKWidget->GetRenderWindow()->Render();elapsedTimer.start();while(elapsedTimer.elapsed() < 10){qApp->processEvents();}// 渲染器相机绕焦点旋转VTKManager::rotateAzimuth(pRenderer, 1);}
}

VTKManager.cpp

vtkSmartPointer<vtkConeSource> VTKManager::createConeSource(double x, double y, double z, double r, int h, int n)
{// 步骤一:智能指针定义vtkSmartPointer<vtkConeSource> pConeSource;// 步骤二:智能指针实例化pConeSource = vtkSmartPointer<vtkConeSource>::New();// 步骤三:设置中心坐标pConeSource->SetCenter(x, y, z);// 步骤三:设置半径pConeSource->SetRadius(r);// 步骤四:设置圆锥的高度pConeSource->SetHeight(h);// 步骤五:设置圆锥球体的经度分辨率,即横向的切片数量(横向/水平精细度)pConeSource->SetResolution(n);return pConeSource;
}vtkSmartPointer<vtkPolyDataMapper> VTKManager::createPolyDataMapper(vtkConeSource *pConeSource)
{// 步骤一:智能指针定义vtkSmartPointer<vtkPolyDataMapper> pPolyDataMapper;// 步骤二:智能指针实例化pPolyDataMapper = vtkSmartPointer<vtkPolyDataMapper>::New();// 步骤三:设置pPolyDataMapper->SetInputConnection(pConeSource->GetOutputPort());return pPolyDataMapper;
}vtkSmartPointer<vtkPolyDataMapper> VTKManager::createPolyDataMapper(vtkAlgorithmOutput *pAlgorithmOutput)
{// 步骤一:智能指针定义vtkSmartPointer<vtkPolyDataMapper> pPolyDataMapper;// 步骤二:智能指针实例化pPolyDataMapper = vtkSmartPointer<vtkPolyDataMapper>::New();// 步骤三:设置pPolyDataMapper->SetInputConnection(pAlgorithmOutput);return pPolyDataMapper;
}
vtkSmartPointer<vtkActor> VTKManager::createActor(vtkPolyDataMapper *pPolyDataMapper)
{// 步骤一:智能指针定义vtkSmartPointer<vtkActor> pActor;// 步骤二:智能指针实例化pActor = vtkSmartPointer<vtkActor>::New();// 步骤三:设置映射器pActor->SetMapper(pPolyDataMapper);return pActor;
}
vtkSmartPointer<vtkRenderer> VTKManager::createRenderer(vtkActor *pActor, double r, double g, double b)
{// 步骤一:智能指针定义vtkSmartPointer<vtkRenderer> pRenderer;// 步骤二:智能指针实例化pRenderer = vtkSmartPointer<vtkRenderer>::New();// 步骤三:设置映射器pRenderer->AddActor(pActor);// 步骤四:设置背景色pRenderer->SetBackground(r, g, b);return pRenderer;
}void VTKManager::rotateAzimuth(vtkRenderer *pRenderer, double angle)
{pRenderer->GetActiveCamera()->Azimuth(angle);
}

工程模板v1.2.0

  在这里插入图片描述


上一篇:《VTK开发笔记(三):熟悉VTK开发流程,编写球体,多半透明球体Demo》
下一篇:敬请期待…


本文章博客地址:https://hpzwl.blog.csdn.net/article/details/150765433

http://www.dtcms.com/a/453943.html

相关文章:

  • 华为OD机试C卷 - 园区参观路径 - 动态规划 - (Java C++ JavaScript Python)
  • 【完整源码+数据集+部署教程】 病毒病害图像分割系统: yolov8-seg-GFPN
  • NCCL协议LL、LL128、simple出现原因?集合通信源码解读介绍
  • C语言指针与参数传递详解 —— 从底层存储到高效编程
  • 建网站需要费用重庆网站建设首选承越
  • 定制型网站制作公司免费建网站域名
  • starrocks有哪些operator
  • vps服务器怎么创建多个网站天津建设银行东丽网站
  • 诚信网站建设的意义怎么样推销自己网站
  • 政务类信息化项目验收流程指南
  • 优秀设计赏析网站网页设计与网站的关系
  • 做网站公司促销海报从什么网站建网站好
  • MySQL Docker 容器化部署全指南
  • 建立网站用英语站长号
  • 网站建设需要学编程吗化妆品网站模版免费下载
  • 罗庄网站建设类似wordpress的建站
  • python做网站教程alexa排名什么意思
  • 单调栈知识点
  • 专业的肿瘤电场疗法厂家
  • 【02】VM二次开发——VisionMaster(VM)开发环境配置、工程搭建
  • 全面解析浏览器事件系统
  • 中国空间站模型网络工程专业是干什么的
  • 大型网站都怎么做推广wap网站建设案例
  • Windows文件资源管理器快速查看文件夹内所有视频总时长
  • 聊城网站营销信息一般的网站都是用什么系统做的
  • 网站搭建传媒公司网站模板
  • 关于我的cifar-10的模型跑取
  • linux进程详解
  • 【无约束优化】多维搜索——梯度方法
  • AI作为操作系统已经不能阻挡了,尽管它还没来