首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VTK -创建3D模型

VTK -创建3D模型
EN

Stack Overflow用户
提问于 2018-11-13 22:46:29
回答 1查看 953关注 0票数 0

我正在尝试从存储在txt文件中的3D坐标点创建3D蒙版模型。我使用Marching cubes算法。它看起来不能连接单独的点,因此在模型中创建了孔。

步骤:(by https://lorensen.github.io/VTKExamples/site/Cxx/Modelling/MarchingCubes/)

首先,从文件中加载3D点作为vtkPolyData。

然后,使用vtkVoxelModeller

将voxelModeller输出转化为MC算法,最终实现可视化

visualization

有什么想法吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-11-13 23:31:00

该示例采用球面网格(也称为形成封闭的3D形状的一组三角形),将其转换为体素表示(网格外部的体素为黑色而内部的体素不是的3D图像),然后使用Marching Cubes算法将其转换回网格。在实践中,示例的输入和输出是非常相似的网格。

在您的示例中,加载这些点并尝试创建它们的体素表示。问题是你的点集不足以定义一个体积,它们不是一个封闭的网格,只是一个点的列表。

为了复制示例,您应该执行以下操作:

1)从你的点构建一个3D网格(你没有给出这些点是什么/代表什么的信息,所以我对这个任务没有太大的帮助)。换句话说,您需要告诉这些点是如何连接在一起的,然后形成一个3D形状(vtkPolyData)。VTK不能猜测你的点是如何连接的,你必须告诉它。

2)一旦你有了网格,如果你需要它的体素表示(vtkImageData),你可以使用vtkVoxelModeller或vtkImplicitModeller。此时,您可以使用需要vtkImageData作为输入的vtk过滤器。

3)最后,为了将体素转换回网格(vtkPolyData),您可以使用vtkMarchingCubes (或更好的vtkFlyingEdges3D,这是一个非常类似的算法,但速度更快)。

编辑:不清楚您想要的图形应该是什么,但您可以尝试使用vtkImageOpenClose3D,因此步骤如下:

首先,从文件中加载3D点作为vtkPolyData。

然后,使用vtkVoxelModeller

将voxelModeller输出转换为vtkImageOpenClose3D算法,然后将vtkImageOpenClose3D算法输出为MC (change to vtkFlyingEdges3D)算法,最后进行可视化

VtkImageOpenClose3D示例:https://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageOpenClose3D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53283555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档