按体素分析 3D 对象
Analyze 3D objects by Voxels
我打算使用 OpenVDB 来分析 3D objects/meshes。 objective 是:
- 以一定的标准检测物体表面区域,如斜率
- 然后操纵那些区域
- 操作可能会向这些区域添加其他 3D 对象,例如
OpenVDB 有一些 tools 可用:
- 转换工具
- 过滤器
- 拓扑运算
- 关卡设置工具
- 形态学运算
- 几何变换
- 合成工具
- ...
这是一大堆令人困惑的工具可供选择。有OpenVDB经验的人知道吗:
- OpenVDB 是实现我的 objective
的正确库吗
- 如果是,哪个 OpenVDB 工具最适合我的需求
OpenVDB社区提供的答案:
An important question is what you mean by "3D objects/meshes."
OpenVDB is very good at performing those regions with surfaces by
representing them as signed distance fields. But the word "mesh"
raises some alarm bells that you may want to maintain topology. In
this case another library may be more effective.
It also sounds like you have a problem domain you are trying to
explore. For that, I would not go straight to code but instead
explore solutions using 3d applications first. My own biased first
choice would be Houdini, whose apprentice version you can get for
free. This provides most of the VDB code as separate nodes. So, for
example, you can use a File SOP to load a mesh from disk, a VDB From
Polygons to convert it to a Signed Distance FIeld, and then VDB
Analysis to compute the Gradient. The gradient I think matches what
you are looking for as slope, but it is also possible you are looking
for curvature...
To return to mesh land, you can use a VDB Convert. Finally a ROP
Geometry can save it out.
Attached is a file showing a network to compute an approximate Y-slope
as a volume, apply it back to a mesh, and save to disk.
我打算使用 OpenVDB 来分析 3D objects/meshes。 objective 是:
- 以一定的标准检测物体表面区域,如斜率
- 然后操纵那些区域
- 操作可能会向这些区域添加其他 3D 对象,例如
OpenVDB 有一些 tools 可用:
- 转换工具
- 过滤器
- 拓扑运算
- 关卡设置工具
- 形态学运算
- 几何变换
- 合成工具
- ...
这是一大堆令人困惑的工具可供选择。有OpenVDB经验的人知道吗:
- OpenVDB 是实现我的 objective 的正确库吗
- 如果是,哪个 OpenVDB 工具最适合我的需求
OpenVDB社区提供的答案:
An important question is what you mean by "3D objects/meshes."
OpenVDB is very good at performing those regions with surfaces by representing them as signed distance fields. But the word "mesh" raises some alarm bells that you may want to maintain topology. In this case another library may be more effective.
It also sounds like you have a problem domain you are trying to explore. For that, I would not go straight to code but instead explore solutions using 3d applications first. My own biased first choice would be Houdini, whose apprentice version you can get for free. This provides most of the VDB code as separate nodes. So, for example, you can use a File SOP to load a mesh from disk, a VDB From Polygons to convert it to a Signed Distance FIeld, and then VDB Analysis to compute the Gradient. The gradient I think matches what you are looking for as slope, but it is also possible you are looking for curvature...
To return to mesh land, you can use a VDB Convert. Finally a ROP Geometry can save it out.
Attached is a file showing a network to compute an approximate Y-slope as a volume, apply it back to a mesh, and save to disk.