如何根据txt文件中的信息构建vtkPolyData

时间:2010-11-13 14:07:43

标签: tcl vtk

我有一个txt文件,其中包含一组3维数据点,我想基于这些点创建一个vtkPolyData。

在文件中,我在第一行有点数,在我的例子中它们是6 x 6.然后是每个点的实际坐标。文件的内容是这样的。

6 6 
1 1 3
2 1 3.4
3 1 3.6
4 1 3.6
5 1 3.4
6 1 3
1 2 3
2 2 3.8
3 2 4.2
4 2 4.2
5 2 3.8
6 2 3
1 3 3
2 3 3
3 3 3
4 3 3
5 3 3
6 3 3
1 4 3
2 4 3
3 4 3
4 4 3
5 4 3
6 4 3
1 5 3
2 5 3.8
3 5 4.2
4 5 4.2
5 5 3.8
6 5 3
1 6 3
2 6 3.4
3 6 3.6
4 6 3.6
5 6 3.4
6 6 3

如何使用包含此数据的txt文件构建vtkPolyData结构?

2 个答案:

答案 0 :(得分:3)

在我看来,你有一系列定期网格,对吧?如果是这样,vtkImageData可能是更好的选择。如果您真的需要,可以随后使用几何过滤器转换为polydata。

  1. 创建vtkImageData实例。
  2. 将其尺寸设置为(6,6,1)(忽略第三个尺寸)。
  3. 将其数据类型设置为适当的类型(我想是浮点数或双精度数。)
  4. 调用AllocateScalars();
  5. 如果是在C ++中,

    1. 调用GetScalarPointer()并将其强制转换为3中设置的数据类型。
    2. 此指针将指向大小为36的数组。您可以像平常一样填充每个点。
  6. 如果是另一种语言(TCL / Python / Java),请在图像数据上调用SetScalarComponentFromFloat,并使用参数(x,y,0,0,value)。第一个0是第三个维度,第二个是第一个组件。

  7. 这将为您提供一个网格,它将比聚数据更有效。

    如果要仅显示点,请使用vtkDataSetMapper,并使用SetRepresentationToPoints()设置actor的属性,并设置适当的磅值。这将做一个简单的可视化工作。

答案 1 :(得分:0)

these examples有用吗?特别是,this生成点和多边形,因此应该可以适应。核心似乎是( lot 遗漏):

# ...
vtkPolyData shell
vtkFloatPoints points
vtkCellArray strips

# Generate points...
loop {
   ...
   points InsertPoint $k $x0 $x1 $x2
}
shell SetPoints points
points Delete

# Generate triangles/polygons...
loop {
   strips InsertNextCell $NP2
   # ...
   strips InsertCellPoint [expr $kb +$ke ]
   # ...
   strips InsertCellPoint [expr $kb +$ke ]
}
shell SetStrips strips
strips Delete

# ...