问题标签 [libigl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2884 浏览

c++ - 如何在Visual C++中构建libigl教程的102个例子?

我目前在 win7 32 位操作系统上使用 Visual C++ 10.0(2010)。

当我尝试构建libigl github教程的基本示例时: libigl tutorials

以下安装代码工作正常:

这表明根据教程基本上没有问题。

但是,我无法通过以下方式获得教程 102

在得到一系列缺少一些特殊头文件的构建错误消息后,然后将包含头文件的相应目录添加到VS的包含目录中,仍然有一些头文件丢失,在我的计算机中找不到。

除了本教程所需的包含目录:

我已经添加了其他如下:

错误信息仍然存在:

x:\Program\libigl-master\external\glfw\include\glfw\glfw3.h(163):致命错误 C1083:无法打开包含文件:'GL/glcorearb.h':没有这样的文件或目录 1>

所以我补充说:

并得到:

x:\program\libigl-master\external\glfw\include\glfw\glfw3.h(163): 致命错误 C1083: 无法打开包含文件: 'GL/glcorearb.h': 没有这样的文件或目录

这在我的电脑中不存在。

我应该怎么办?

0 投票
1 回答
1684 浏览

c++ - Igl 错误:架构 x86_64 的未定义符号

我开始在我的 Mac 上使用 C++ 中的 3d igl 库。当我按照教程进行操作时,出现了一个错误。第一个示例,基本上只是读取一个 OFF 文件,工作正常。但是第二个,使用 igl::viewer 没有。这是代码:

我只是在终端中输入:

其中 path_to_libraries 是我的库(igl、eigen、glfw)所在的个人文件夹。

终端返回数十个错误,例如:

我还下载了 Eigen 和 glfw。我所做的只是glfw源文件夹中的一个cmake。

最后,我应该补充一点,当我尝试使用 Xcode 时,在项目中添加框架 OpenGL(我在互联网上找到的东西)删除了一半的错误(关于 igl::viewer::OpenGL 的错误)但是一些 igl::viewer ::查看者仍然存在。

有没有人有任何线索?

0 投票
0 回答
396 浏览

c++ - 网格面上的 libIGL 奇怪的阴影

我正在使用 libIGL 生成一个 tet 网格,并想用颜色可视化这个网格。每个顶点都有不同的值(使用 Graph Laplacian 最小化二次能量的结果),这些值已使用igl::jet. 我想以不同的 z 值对我的 tet-mesh 进行“切片”,并按照示例 605进行操作。

当这被可视化时,颜色是正确的,但是阴影是错误的(如下图所示)。有没有(简单的)方法来修复阴影?我试过同时使用bfs_orientembree::reorient_faces_raycast无济于事。

带有奇怪阴影的tetmesh着色

要重现该问题,只需将示例 605 的第 52-54 行变为:

编辑:我可以通过添加关闭照明

生成的图像是: 约会关闭的图像 但是,这没有任何照明,我不禁觉得有更好的方法可以保留照明。也许是暴露了 OpenGL_Shader 的东西?

0 投票
3 回答
776 浏览

graphics - 如何使用 libigl 在薄表面上执行布尔运算?

我目前正在研究libigl,并试图抓住位于另一个体内的表面的一部分。然而,似乎 libigl 只适用于封闭的机构:

这是适用于封闭机构的代码。VA,VF是三棱柱,VB,FB是四面体:

A但是,如果我从或中删除了其中一个曲面B,例如如下所示:

结果网格C将是空的(我想要一个开放的薄表面而不是一个封闭的实体)。我想我使用了错误的功能。任何人都知道如何做到这一点?

0 投票
0 回答
1098 浏览

c++ - 使用 libigl 的基于坐标的网格操作/变形

我目前正在使用libigl通过操纵角来操纵/变形一个简单的(2D)正方形(参见下面的初始状态):

在此处输入图像描述

在将位移 u(1,1) 施加到左下角并使用双调和变形更新非角顶点位置后,我最终得到以下状态(受双调和变形教程的启发):

在此处输入图像描述

问题是:

  • 三角形不是均匀分布的
  • 变形改变了不再是直线的边

一个理想的解决方案将是接近下图的东西,而不必管理每个边界顶点:

在此处输入图像描述

问题是

  • 我应该使用哪种变形之王来达到这样的效果?
  • libigl 是此类操作的正确工具吗?

注意:完整的实现是:

0 投票
1 回答
246 浏览

c++ - 使用回调中的值更新 std::vector 的 GUI 滑块的动态数量

我正在尝试将动态数量的滑块添加到 GUI 窗口,并std::vector<float>根据每个滑块的变化方式更新值。GUI库使用回调,我可以成功地为一个滑块(或者复制和粘贴滑块代码20次,但这不是解决方案),但是我在将滑块创建分解为一个函数时遇到问题:变量生命周期存在问题如何告诉每个滑块它应该更新向量中的哪个元素。

我正在使用 nanogui(或特别是 libigl,它使用 nanogui),但我认为这个问题实际上是相当普遍的,也应该适用于其他 GUI 框架或情况。

这是如何添加一个滑块并更新的代码的简短版本my_values[0](注意我必须手动输入“0”):

现在如前所述,在 中viewer.callback_init,我现在想添加 50 个这样的滑块,但显然我不想复制和粘贴滑块及其回调代码 50 次。但不知何故,我需要通过my_values[i],即每个滑块将更新向量中的哪个元素。我尝试了类似这样的方法,但它不起作用,因为在实际调用函数/回调时,value_id未定义变量:

我尝试了各种方法,制作value_id了一个(const)引用,甚至是一个std::shared_ptr<int>(我知道,可怕的),但仍然value_id始终没有在线初始化my_values[value_id] = value;

我怎样才能做到这一点?我的猜测是它一定是 GUI/回调编程中众所周知的模式/解决方案,我只是还没有弄清楚。

0 投票
1 回答
1728 浏览

c++ - CLion、Windows 10 上的 libigl、GLEW、GLFW 和 Eigen。链接器错误

我确定我错过了一些微不足道的东西,但我无法确定是什么。

我正在使用 CLion 构建一个包含四个外部库的项目。我正在尝试链接 Eigen、GLEW、GLFW 和 libigl。我在 VS 2015 中使用 VC++ 编译器。

这是我的 cmake 文件的一个迭代:

我已将 glew 库(32 位和 64 位)添加到 VC++ 中它们各自的文件夹中。我还将 glew32.dll 文件(64 位和 32 位)添加到系统文件夹中各自的文件夹中。如果我定义在我的 Cmake 文件中查找它们的位置,我认为我不需要这样做,但我并不完全确定。

这是我在 CLion 中的文件夹结构: CLion 文件夹结构。

以下是 main.cpp 包含的内容,以防万一:

这些是我得到的链接器错误。

谢谢您的帮助。


编辑: Tsyvarev 帮我解决了明显的错误。也将所有内容更改为 32 位。减少到 47 个未解决的外部因素。工作后会更新。当前的 Cmake:

编辑解决一切正常!缺少一些库。决定在本地链接它们。这是遇到此问题的下一个倾倒灵魂的 cmake:

谢谢您的帮助!

0 投票
2 回答
464 浏览

ubuntu - Libigl 示例 102 测试错误

我尝试在 Ubuntu 16.4 上使用 libigl,但在构建示例 102 时遇到了一些错误。

首先,我将 Eigen 安装在 /usr/local/include/Eigen/ 中。

然后,我按照以下命令下载了 libigl 代码:

git clone --recursive https://github.com/libigl/libigl.git

接下来,我尝试构建示例 102。根据这个建议。

The examples can also be built independently using the CMakeLists.txt inside each example folder.

所以下载源代码后,我直接构建示例 102,而不是通过位于 /libigl/tutorial/ 的相应 CMakeLists.txt 构建整个教程。

我喜欢这样: (1) cd 到文件夹: ..../libigl/tutorial/102_DrawMesh

(2) mkdir 构建

(3) 光盘构建

(4) cmake ../

在 cmake ../ 之后,我收到以下错误,似乎找不到位于 ..../libigl/tutorial/102_DrawMesh 中的 CMakeLists.txt 中指定的所需链接库。


以下是错误:

-- C 编译器标识是 GNU 5.4.0 -- CXX 编译器标识是 GNU 5.4.0 -- 检查工作 C 编译器:/usr/bin/cc -- 检查工作 C 编译器:/usr/bin/cc -- 工作 -- 检测 C 编译器 ABI 信息 -- 检测 C 编译器 ABI 信息 - 完成 -- 检测 C 编译特性 -- 检测 C 编译特性 - 完成 -- 检查工作 CXX 编译器:/usr/bin/c++ -- 检查用于工作的 CXX 编译器:/usr/bin/c++ -- 工作 -- 检测 CXX 编译器 ABI 信息 -- 检测 CXX 编译器 ABI 信息 - 完成 -- 检测 CXX 编译功能 -- 检测 CXX 编译功能 - 完成 CMake 警告(开发) CMakeLists.txt:不存在 cmake_minimum_required 命令。一行代码如

应该添加到文件的顶部。如果您希望为此项目支持较旧的 CMake 版本,则指定的版本可能会更低。有关更多信息,请运行“cmake --help-policy CMP0000”。此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

-- 在 CMakeLists.txt:4 (add_executable) 处配置完成的 CMake 警告 (dev):未设置策略 CMP0028:目标名称中的双冒号表示 ALIAS 或 IMPORTED 目标。运行“cmake --help-policy CMP0028”以获取策略详细信息。使用 cmake_policy 命令设置策略并禁止显示此警告。

目标“102_DrawMesh_bin”链接到目标“igl::core”,但未找到目标。也许 IMPORTED 目标缺少 find_package() 调用,或者缺少 ALIAS 目标?此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

CMakeLists.txt:4 (add_executable) 处的 CMake 警告 (dev):未设置策略 CMP0028:目标名称中的双冒号表示 ALIAS 或
IMPORTED 目标。运行“cmake --help-policy CMP0028”以获取策略详细信息。使用 cmake_policy 命令设置策略并禁止显示此警告。

目标“102_DrawMesh_bin”链接到目标“igl::opengl”,但未找到目标。也许 IMPORTED 目标缺少 find_package() 调用,或者缺少 ALIAS 目标?此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

CMakeLists.txt:4 (add_executable) 处的 CMake 警告 (dev):未设置策略 CMP0028:目标名称中的双冒号表示 ALIAS 或
IMPORTED 目标。运行“cmake --help-policy CMP0028”以获取策略详细信息。使用 cmake_policy 命令设置策略并禁止显示此警告。

目标“102_DrawMesh_bin”链接到目标“igl::opengl_glfw”,但未找到目标。也许 IMPORTED 目标缺少 find_package() 调用,或者缺少 ALIAS 目标?此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

-- 生成完成 -- 构建文件已写入:/home/chayfung/Workspace/Mesh/libigl/tutorial/102_DrawMesh/build


有人可以给我一些建议吗?

谢谢。

0 投票
1 回答
688 浏览

c++ - 将 libigl 网格结果加载到 PCL PolygonMesh

我使用 libigl 做了一些网格处理,结果存储如下:

我可以使用以下命令将这些数据保存为 PLY 文件:

但我想使用 PCL 查看器将其可视化。类似于下面的代码:

您知道如何将顶点和面值转换/加载为 pcl 网格格式吗?也许是一个for循环?

0 投票
0 回答
241 浏览

matlab - 如何在 Matlab 上使用 libigl 库

我正在尝试将 libigl 库用于 Windows 10 上的 Matlab R2016 中的程序,但我不明白如何设置它,而且我还没有找到教程。也许是微不足道的,但我需要帮助。你有一些可以帮助我的提示/教程吗?谢谢!