我计划使用 OpenVDB 来分析 3D 对象/网格。目标是:
- 用一定的标准检测物体表面区域,比如斜率
- 然后操纵那些区域
- 例如,操作可能会将其他 3D 对象添加到这些区域
OpenVDB 有一些可用的工具:
- 转换工具
- 过滤器
- 拓扑运算
- 水平集工具
- 形态学运算
- 几何变换
- 合成工具
- ...
这是一大套令人困惑的工具可供选择。有 OpenVDB 经验的人知道吗:
- OpenVDB 是实现我目标的合适库吗
- 如果是这样,哪个 OpenVDB 工具最适合我的需求
OpenVDB 社区提供的答案:
一个重要的问题是您所说的“3D 对象/网格”是什么意思。
OpenVDB 非常擅长通过将表面表示为带符号的距离场来执行这些区域。但是“网格”这个词引起了一些你可能想要维护拓扑的警钟。在这种情况下,另一个库可能更有效。
听起来您也有一个正在尝试探索的问题域。为此,我不会直接编写代码,而是先探索使用 3d 应用程序的解决方案。我自己有偏见的首选是 Houdini,你可以免费获得他的学徒版本。这将大部分 VDB 代码提供为单独的节点。因此,例如,您可以使用 File SOP 从磁盘加载网格,使用 VDB From Polygons 将其转换为有符号距离字段,然后使用 VDB 分析来计算梯度。我认为梯度与您正在寻找的坡度相匹配,但也有可能您正在寻找曲率......
要返回网格区域,您可以使用 VDB Convert。最后,ROP Geometry 可以保存它。
附件是一个文件,该文件显示了一个将近似 Y 斜率计算为体积的网络,将其应用回网格,然后保存到磁盘。