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 点云库
参考文献:https://zhuanlan.zhihu.com/p/268524083
简介:
点云数据的处理可以采用获得广泛应用的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教程:
PCL库中文社区:
4. C++ Open3D
参考文献:https://blog..net/ZhangRelay/article/details/103226687
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中下载到官方库文件。
可能更擅长于绘制三维曲线、曲面、动态曲线等相关的图形
官方网站:
几个小例程: