Easy3D:一个轻量级易用高效的C++库,用于处理和渲染3D数据
Posted Being_young
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Easy3D:一个轻量级易用高效的C++库,用于处理和渲染3D数据相关的知识,希望对你有一定的参考价值。
作者:Liangliang Nan
作者介绍:来自荷兰代尔夫特理工大学三维地理信息研究小组
代码:https://github.com/LiangliangNan/Easy3D
简介
Easy3D是一个用于三维建模、几何处理和渲染的开源库,它使用C++中实现的,并着重强调简单易用性性(即,处理和可视化3D数据可以通过API调用的几行来实现),Easy3D的贡献有三个方面:
(1)可以表示常见3D数据(即点云、曲面网格、多面体网格和图形)的高效数据结构;
(2)处理3D数据的常用算法;
(3)3D数据可视化的标准技术。
Easy3D旨在用于研究和教育目的,但它也是开发复杂3D应用程序的良好基础,其数据结构、几何处理算法和渲染技术可以无缝、轻松地集成,以快速开发研究原型或3D应用程序。图1和图2分别显示了Easy3D提供的数据结构和渲染功能的概述。
图1:Easy3D提供的数据结构。从左到右:点云、曲面网格、多面体网格和图形
功能概述
Easy3D的核心功能包括:
•用于表示和管理3D模型(即点云、曲面网格、多面体网格和图形)的高效数据结构,便于添加/访问任意类型的每元素属性,从文件加载模型时,会自动解决非Manifolds问题。
•一系列广泛使用的算法,例如,点云法线估计/重新定向、泊松曲面重建、RANSAC、网格简化、细分、平滑、参数化和重划分。
•一系列渲染技术,例如点/线视点替用、环境光遮挡(SSAO)、硬阴影(阴影贴图)、软阴影(PCSS)、眼罩照明(用于渲染没有法线信息的点云)和透明度(平均颜色混合、双深度剥离)。
•OpenGL和GLSL的高级封装,方便高效地进行渲染(基于现代且更快的可编程着色器样式渲染,即无需固定函数调用)。用户代码不需要接触OpenGL的低级API。
•演示API各种用途的分步教程,以熟悉3D建模和几何处理的数据结构、渲染技术和算法。
•可直接用于以各种格式可视化3D场景的查看器,也可轻松扩展。从Easy3D库中创建的一个方便的工具Mapple,用于渲染和处理3D数据。
图2:Easy3D渲染功能概述
Easy3D代码架构
代码库包含一个CMakeLists.txt文件,用作配置和构建程序,以及一组子文件夹:
3rd_party-第三方库的源代码
applications-基于Easy3D构建的应用程序
cmake-与cmake相关的配置文件
docs -文档配置文件(Doxygen)
easy3d-easy3d的源代码
resources -测试数据、图像、着色器和纹理等。
tests-测试用例的集合
tutorials-示例集(带有详细的代码解释)
Easy3D应用实例
尺度着色
点云网格化
点云标注
资源
三维点云论文及相关应用分享
【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法
3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)
PCL中outofcore模块---基于核外八叉树的大规模点云的显示
更多文章可查看:点云学习历史文章大汇总
SLAM及AR相关分享
新年新姿势
欢迎各位伙伴,一起经营知识星球,加入我们新的收费知识星球,一起分享!有兴趣运营者可直接评论加群主微信!
如果你对本文感兴趣,请后台发送“知识星球”获取二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,免费下载pdf文档,和更多热爱分享的小伙伴一起交流吧!
以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除
扫描二维码
关注我们
让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。
分享及合作方式:微信“920177957”(需要按要求备注) 联系邮箱:dianyunpcl@163.com,欢迎企业来联系公众号展开合作。
点一下“在看”你会更好看耶
以上是关于Easy3D:一个轻量级易用高效的C++库,用于处理和渲染3D数据的主要内容,如果未能解决你的问题,请参考以下文章
C++通过jsoncpp类库读写JSON文件-json用法详解