问题标签 [openmesh]

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 投票
1 回答
302 浏览

c++ - OpenMesh 递归迭代

我最近开始使用 OpenMesh,我需要进行递归迭代,在其中我访问一个顶点,然后是它的相邻顶点,然后是这些顶点的邻居。我还需要保留一个我已经使用过的顶点列表。我的主要问题是我不知道如何获取顶点的 ID,以便我可以访问特定的顶点。

0 投票
1 回答
276 浏览

c++ - OpenMesh 多线程网格导入

我找不到有关 OpenMesh 操作的线程安全的任何信息,特别是我正在寻找多线程网格导入。目前我正在通过以下方式填充我的网格:

在单线程中。但如果可能的话 - 我不想在多个线程中执行此操作,而不会阻塞:

但它比我想象的要慢一点(它消耗了下一次操作的一半以上时间 - 抽取相同网格的时间)。

0 投票
1 回答
989 浏览

c++ - 将边添加到 Openmesh 网格

刚开始使用 OpenMesh,到目前为止,我已经能够添加顶点和制作面。我现在在理解如何向网格中添加边缘时遇到问题。

我知道openMesh使用的半边数据结构,但我真的不明白我应该如何添加边缘..

代码:

定义:

在 cpp 中:

已经搜索了文档,但不能说我找到了答案..

0 投票
1 回答
684 浏览

c++ - OpenMesh Decimater 不会减少顶点数

我正在尝试使用 OpenMesh 抽取网格。我遵循了文档中所述的示例:

decimate_to 方法正确终止并返回 56,000,这是应该折叠的顶点数。

但是,我可以通过日志得知网格上的顶点编号没有改变。这怎么可能?

0 投票
2 回答
363 浏览

openmesh - 有没有办法用 OpenMesh 重新投影/插入顶点颜色?

我正在使用 OpenMesh 重新划分/管理一些网格对象。使用 OpenFlipper 的 subdivide/decimate/smooth 和其他工具,我可以更改网格拓扑。

然而,这会导致顶点颜色失去其意义,因为新顶点都将具有黑色,并且当网格拓扑发生变化时没有插值,从而导致视觉伪影。

有没有办法告诉 OpenMesh 将顶点颜色重新投影回旧网格以插入顶点颜色?如果没有,手动执行此操作的好方法是什么?顶点反投影是否有最先进的技术?

0 投票
1 回答
851 浏览

opengl - 计算切线空间时“顶点texcoord”应该具有什么属性

    我正在使用 OpenMesh 来处理三角形网格。
    我已经完成了网格参数化来设置顶点 texcoord,我对顶点 texcoord 的全部理解就是从那里得到的。如果我没有弄错,它应该是顶点的可变值。
    但现在我想计算每个顶点的切线空间,所有教程都在谈论“顶点 texcoord”,就像它是顶点的固定属性一样。
    这是我读过的一个教程,上面写着

如果我们正在处理的网格没有 texcoord,我们将跳过 Tangent Space 阶段,因为无法在代码中创建任意 UV 贴图,UV 贴图是设计相关的,并且会随着纹理的制作方式而改变。

    那么,计算切线空间时“texcoord”应该具有什么属性
    谢谢!

0 投票
1 回答
188 浏览

c++ - 重新打开修改后的网格后的 OpenMesh 边缘索引

我修改了一个网格,并添加了一些边缘。

然后我将修改后的网格保存到 .obj 文件中。当我使用 OpenMesh 读取功能打开这个 .obj 文件时,边的索引与保存网格时边的索引不同,因为 .obj 文件只有关于顶点和面的信息。

保存修改后的网格时,我需要以边缘索引顺序保存一个额外的边缘信息文件。但是按照我上面说的顺序是不一样的,所以重新打开修改过的mesh后边信息是错误的。

我有一个解决方案。我保存修改后的网格(旧网格),然后将保存的文件读取为新网格。按索引顺序检查新网格的每条边,并在旧网格中找到相同的边。然后我可以按照新网格的边缘索引顺序输出边缘信息。

有没有不重新打开的简单解决方案?例如,重新计算边缘索引的 OpenMesh 函数?

谢谢

0 投票
1 回答
1536 浏览

algorithm - 使用 Assimp 和 OpenMesh 简化网格

几天前,我问了一个关于如何使用Assimp 的边缘崩溃的问题。平滑 obj 并删除软件中的重复顶点解决了可能使边缘塌陷工作的基本问题,我的意思是它可以工作,因为它可以通过 MeshLab 进行简化,如下所示: 简化网格

它在 MeshLab 中看起来不错,但我随后在使用 Assimp 和 OpenMesh 的引擎中执行此操作。问题是Assimp 导入了指定的 vertices 和 Indices,这可能会让半边错过另一对(这称为非流形吗?)。结果快照使用 OpenMesh 的 Quadric Decimation:

OpenMesh 抽取

为了明确找到问题,我没有抽取并直接解析 OpenMesh 数据结构。一切都按预期工作正常(我的意思是没有抽取的结果)。

没有抽取

我用来抽取网格的代码:

还提供了我测试的树obj ,以及Assimp生成的人脸数据,我从Visual Studio调试器中取出,显示了一些索引找不到索引对的问题。

0 投票
2 回答
1265 浏览

c++ - OpenMesh 面分割

我最近开始在一个必须细化网格的项目中使用 OpenMesh。我需要使用面split(FaceHandle _fh, Point _p)操作在三角形的质心处插入一个顶点。但是当我使用这种方法并尝试使用 VertexFaceIterator 抓取新创建的顶点的面时,我总是会得到具有顶点索引的无效面,例如 (87, 87, -1) 或 (12, 12, -1)。似乎 OpenMesh 在拆分后没有更新网格拓扑。

我的代码看起来像这样。faceStartIt是什么给了我这些奇怪的索引。

0 投票
1 回答
311 浏览

openmesh - 替换顶点以连接网格

我试图通过用另一个网格的顶点替换一个网格的边界顶点来连接两个网格。我目前通过在半边上循环并让它们指向另一个顶点来做到这一点。由于我沿途反复添加边,因此无法插入面。是否有一种 openmesh 方法来替换顶点并确保所有参考(输入/输出半边、面等)保持正确?