用于表示和管理 3D 模型的高效数据结构,例如点云、多边形曲面(例如三角形网格)、多面体体积(例如四面体网格)和图形。易于添加/访问任意类型的每个元素属性。从文件加载模型时会自动解决非流形问题...
一组广泛使用的算法,例如,点云法线估计/重新定向、泊松曲面重建、RANSAC、网格简化、细分、平滑、参数化、重新划分网格等(几种曲面网格处理算法的实现取自PMP ).
一堆渲染技术,例如,点/线冒名顶替者、环境光遮蔽(SSAO)、硬阴影(阴影贴图)、软阴影(PCSS)、eye-dome lighting(用于渲染没有法线信息的点云)、透明度(平均颜色混合、双深度去角质)等。
对 OpenGL 和 GLSL 进行高级封装,以实现方便高效的渲染(基于现代且更快的可编程着色器式渲染,即没有固定的函数调用)。客户端代码不需要接触 OpenGL 的低级 API。
分步教程演示了 API 的各种用途,以熟悉 3D 建模和几何处理的数据结构、渲染技术和算法。
作为可调用库非常容易使用(通常只有几行代码)。
可直接用于可视化各种格式的 3D 场景的查看器,也可轻松扩展。对于窗口/GUI 创建,Easy3D 目前支持GLFW(例如,默认查看器)、 Qt(参见Qt 查看器)和wxWidgets(参见wxWidgets 查看器)。
一个方便的工具Mapple,由 Easy3D 库创建,用于渲染和处理 3D 数据。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
任何类型的 3D 可绘制对象(例如,点、线、三角形,以及点云、网格表面、标量场和矢量场)都可以通过使用 Easy3D 编写几行代码来渲染。例如,以下代码将点云渲染为一组球体
// assume your point cloud has been loaded to the viewer
PointsDrawable* drawable = cloud->renderer()->get_points_drawable("vertices");
drawable->set_impostor_type(PointsDrawable::SPHERE); // draw points as spheres.
drawable->set_point_size(3.0f); // set point size
或作为一组面元(即 3D 光盘)
drawable->set_impostor_type(PointsDrawable::SURFEL);
通过将几何元素抽象为上述可绘制对象之一,可以非常方便地完成更一般的可视化(例如,向量场、标量场)。
存储库包含一个CMakeLists.txt
文件(在存储库的根目录中),用作配置和构建程序的锚点,以及一组子文件夹:
3rd_party
- 第三方库的源代码applications
- 建立在 Easy3D 之上的应用程序cmake
- CMake相关的配置文件docs
- 文档配置文件(Doxygen)easy3d
- Easy3D 源代码,实现 Easy3D 模块:
resources
- 测试数据、图像、着色器、纹理等。tests
- 测试用例的集合tutorials
- 示例集合(代码中有详细解释)与大多数软件一样,Easy3D 依赖于一些第三方库。Easy3D 通过包含大多数第三方库的源代码(用于核心功能和基本查看器)使用户更容易做到这一点,并且它留下了很少的可选功能(用于大多数用户通常不需要的一些附加功能) .
可选的第三方库是:
CGAL(可选):Easy3D 已经实现了一些用于高级表面网格处理的算法,例如表面重新定向、检测/解决重复顶点/面和自相交,以及剪裁/分割/切片表面网格。默认情况下禁用这些功能(因为大多数用户不需要它们)。要启用这些功能,您可以打开 CMake 选项Easy3D_ENABLE_CGAL
并确保已安装CGAL( v5.1 或更高版本)并且对 CMake 可见。如果您的平台上有多个版本的 CGAL,只需将合适版本的路径提供给 CMake 变量即可CGAL_DIR
。
Qt5(可选):Easy3D 支持用于 UI 创建的 Qt( v5.6 或更高版本),这有助于开发用于 3D 数据处理和可视化的复杂应用程序。默认情况下禁用 Qt 支持(因为大多数用户不需要它)。您可以打开 CMake 选项Easy3D_ENABLE_QT
以包括依赖于 Qt 的示例和应用程序(例如, Tutorial_204_Viewer_Qt
和 Mapple
)。
要构建 Easy3D,您需要CMake ( >= 3.12
),当然还需要一个支持>= C++11
.
Easy3D 已经在 macOS(Xcode >= 8)、Windows(MSVC >=2015 x64
)和 Linux(GCC >= 4.8,Clang >= 3.3)上进行了测试。现在的机器通常提供更高的支持,因此您应该能够在几乎所有平台上构建 Easy3D。
构建 Easy3D 有很多选项。选择以下选项之一(并非详尽列表):
选项 1(纯粹在命令行上):使用 CMake 生成 Makefile,然后make
(在 Linux/macOS 上)或nmake
(在带有 Microsoft Visual Studio 的 Windows 上)。
$ cd path-to-root-dir-of-Easy3D
$ mkdir Release
$ cd Release
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
x64 Native Tools Command Prompt for VS XXXX
(不要使用 x86 的),然后
$ cd path-to-root-dir-of-Easy3D
$ mkdir Release
$ cd Release
$ cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
$ nmake
CMakeLists.txt
方案二:使用任何可以直接处理CMakeLists文件的IDE在Easy3D的根目录下打开。那么你应该已经获得了一个可用的项目并构建它。我建议使用 CLion或QtCreator。对于 Windows 用户:您的 IDE 必须设置为x64
.
选项 3:使用 CMake-Gui 为您的 IDE 生成项目文件。然后将项目加载到您的 IDE 并构建它。对于 Windows 用户:您的 IDE 必须设置为x64
.
没有任何 C/C++ 编程经验?查看如何逐步构建 Easy3D。
子文件夹中提供了一个测试套件tests
,其中包含一组自动化测试用例(用于数据结构、IO、算法、可视化等)和一些半自动化测试用例(用于需要交互式用户输入的 GUI 相关功能) . 所有案例都集成到单个目标中tests
。
要构建和运行测试套件,请下载整个源代码,使用CMakeLists.txt
存储库根目录中的 CMake 选项Easy3D_BUILD_TESTS
(默认情况下禁用),然后运行 CMake。在 CMake 之后,您可以构建 ALL 或仅构建tests
目标。最后,运行tests
可执行文件(即YOUR_BUILD_DIRECTORY/bin/tests
)进行测试。
这很容易,就像许多其他开源库一样:-) 在构建 Easy3D 之后,您只需在执行 cmake 时指向Easy3D_DIR
Easy3Dbuild
的(或安装)目录。然后请求的 Easy3D 库,包括目录和 Easy3D 的相关编译定义,对您的项目是可见的和可访问的。下面是使用默认 Easy3D 查看器的示例。看起来CMakeLists.txt
像:
set(CMAKE_CXX_STANDARD 11) # specify C++ standard
find_package(Easy3D COMPONENTS viewer REQUIRED) # request Easy3D (recommended to request only needed components)
add_executable(Test main.cpp) # create an executable target
target_link_libraries(Test easy3d::viewer) # link to necessary Easy3D modules (add more if needed, e.g., algo)
和main.cpp
最少的代码:
#include <easy3d/viewer/viewer.h>
#include <easy3d/util/initializer.h>
int main(int argc, char** argv) {
easy3d::initialize();
easy3d::Viewer viewer("Test");
return viewer.run();
}
[/hidecontent]