C++3D绘图技术调研常⽤库介绍
C++ 3D 绘图技术调研
⽂章⽬录
0. C++ 3D绘图开源库介绍
1. Qt 三维绘图
官⽅API
2. Qt + OpenGL
OpenGL只处理与3D图形的绘制,基本上不提供创建⽤户界⾯的功能,所以为OpenGL应⽤程序创建⽤户界⾯必须使⽤其它的图形⼯其包(如Motif、MFC等)。⽽Qt的OpenGL模块很好的解决了这个问题,它提供了⼀个继承⾃Qwidget的OpenGL部件类QGLWidget,使得该部件类能够像Qt其它部件那样使⽤,还可以在绘制窗⼝部件时直接使⽤OpenGL的API接⼝。在Qt中为OpenGL提供⽀持的类主要有以下⼏个:
QGLWidget:⽤于渲染OpenGL场景的易于使⽤的Qt部件。
QGLColormap:⽤于在QGLWidget中安装⽤户⾃定义的颜⾊图。
QGLContext:封装了⽤于OpenGL渲染的场景。
QGLFormat:指定OpenGL演染场景的显⽰模式。
QGLFrameBufferObject和QGLPixelBuffer分别提供了对GL帧缓冲对象和GL像素缓冲的⽀持。
QGLPaintEngine:QPaintEngine的派⽣类,为QPainter提供了OpenGL绘图引擎。
基本中⽂教程⽂献
⽬录下:Qt Opengl 教程
3. C++ 3D 绘图库 —— PCL 点云库
简介:
点云数据的处理可以采⽤获得⼴泛应⽤的Point Cloud Library (点云库,PCL库)。PCL库是⼀个最初发布于2013年的开源C++库,⽬前最新的版本是2020年3⽉19⽇发布的1.10.1。它实现了⼤量点云相关的通⽤算法和⾼效的数据管理。⽀持多种操作系统平台,可在Windows、Linux、Android、Mac OS X
、部分嵌⼊式实时系统上运⾏。如果说OpenCV是2D信息获取与处理的技术结晶,那么PCL在3D信息获取与处理上,就与OpenCV具有同等地位,PCL是BSD授权⽅式,可以免费进⾏商业和学术应⽤。
PCL包含多个模块,如滤波(filter)、特征提取(features)、关键点(keypoint)、配准(registration)、k-d树(k-d tree)、⼋叉树(octree)、分割(segmentation)、抽样⼀致(Random sample consensus)、表⾯重建(surface)、识别(recognition)、输⼊输出
(io),**visualization(可视化)**等模块。
PCL库的在线⽂档链接及demo教程:
4. C++ Open3D
Open3D是⼀个开放源代码库,⽀持快速开发处理3D数据的软件。Open3D前端在C ++和Python中公开了⼀组精⼼选择的数据结构和算法。后端经过⾼度优化,并设置为并⾏化。Open3D是从⼀开始就开发出来的,带有很少的,经过仔细考虑的依赖项。它可以在不同的平台上设置,并且可以从源代码进⾏最⼩的编译。代码⼲净,样式⼀致,并通过清晰的代码审查机制进⾏维护。Open3D已⽤于许多已发布的研究项⽬中,并已积极部署在云中。我们欢迎开源社区的贡献。
核⼼功能
基本的3D数据结构
基本的3D数据处理算法
基本的点云数据处理
场景重建
表⾯对齐
3D可视化
源代码下载开源社区⽀持PyTorch和TensorFlow的3D机器学习
GPU加速的核⼼3D操作
⽀持C ++和Python
基本例程:
官⽅ API:
5. QT之qwtplot3d
简介
qwtplot3d是qt解决三维图形绘制的库,核⼼通过调⽤openGL库完成,可以实现三维曲⾯绘制,三维状态下折线,散点等图形的绘制。但是其在⼗多年前推出后⼀直没有太⼤的更新,⽽且⾃带的类并不够丰富,所以在使⽤时还是有⼀些问题的。主要参考了引⽤1中的博
客,qwtplot3d库的代码在该博主的博客中可以下载到,另外在github中搜索qwtplot3d,到标星最多的⼀个,但是该库有改动,另外可以在引⽤2中下载到官⽅库⽂件。
可能更擅长于绘制三维曲线、曲⾯、动态曲线等相关的图形
官⽅⽹站:
⼏个⼩例程:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论