【问题标题】:adding new vertex inside 3D structure在 3D 结构中添加新顶点
【发布时间】:2017-03-15 18:18:28
【问题描述】:

我有一个 3D 结构的 DICOM 文件,为了在我的结构中做一些更改,我使用 ImageJ 将 3D 结构转换为 stl 文件,然后使用 vtkreadstl 将其存储在 vtkpolydata 中,使用抽取算法我可以减少我的结构通过删除一些顶点和三角形,现在我想通过添加额外的顶点来做相反的事情,我可以使用哪个算法来做到这一点? 谢谢

【问题讨论】:

    标签: java c++ algorithm 3d vtk


    【解决方案1】:

    与抽取相反的是镶嵌或细分。 Tessellation 只是根据您决定使用的算法添加更多几何体,而细分点是使表面更平滑。

    您想要使用哪一个取决于您添加额外顶点的具体目标。

    查看 vtk,我看到有一个 vtkTessellatorFilter 和一个 vtkSimpleCellTessellator 如果您想对模型进行镶嵌,您可能会发现它们很有帮助。否则,如果您的目标是通过添加额外的几何图形来获得更平滑的表面,那么有很多不同的细分算法。看起来vtk有: vtkLinearSubdivisionFilter, vtkButterflySubdivisionFilter, vtkLoopSubdivisionFilter, vtkDataSetSurfaceFilter

    【讨论】:

    • 我尝试了这段代码,但输出中有 0 个三角形,我找不到如何使用 Tessellator 的示例:vtkTessellatorFilter tesla= new vtkTessellatorFilter(); tesla.SetInputData(input); tesla.Update(); 我的输入是 vtkpolydata跨度>
    • @Ouznour 添加更多几何图形的目标是什么?只是为了让表面更光滑吗?还是您想做一些事情,例如在表面上添加更多纹理?细分是为了使表面更光滑,通过镶嵌,目标是实现你自己的算法,这意味着你必须知道你到底要添加更多几何图形是为了什么,你必须知道如何实现一个算法给你你想要的表面
    • 我的目标不仅仅是在表面上添加更多的几何图形,而且在我的 3D 结构中,vtkTessellatorFilter 的文档对我来说不是很清楚
    • 3d 结构是由三角形组成的吧?三角形代表表面。您拥有的三角形越小越多,表面就越详细。那么为什么要在 3d 结构中添加更多几何图形呢?
    • 3d 结构是椎骨结构,所以内部对我来说更重要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多