代码之家  ›  专栏  ›  技术社区  ›  Elia

python vtkinterface0.9.3库示例不起作用

  •  1
  • Elia  · 技术社区  · 6 年前

    我发现了 vtkInterface 蟒蛇 vtk 有助于 可视化工具包 作图。

    尝试运行他们的第一个示例,在 Initialize from Numpy Arrays 在本页中: vtkInterface.PolyData ,只需按原样运行代码,它就会生成一个灰色呈现窗口,其中没有任何内容。
    其他一些例子确实有效,但这正是我目前需要的东西,我想知道是否有人尝试过,知道可能出了什么问题。

    示例代码:

    import numpy as np
    import vtkInterface
    
    # mesh points
    vertices = np.array([[0, 0, 0],
                         [1, 0, 0],
                         [1, 1, 0],
                         [0, 1, 0]])
    
    # mesh faces
    faces = np.hstack([[4, 0, 1, 2, 3],  # square
                       [3, 0, 1, 4],     # triangle
                       [3, 1, 2, 4]])    # triangle
    
    surf = vtkInterface.PolyData(vertices, faces)
    
    # plot each face with a different color
    surf.Plot(scalars=np.arange(3))
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   normanius    6 年前

    这个例子是错误的。它缺少第五点。例如,这是可行的。

    vertices = np.array([[0, 0, 0],
                        [1, 0, 0],
                        [1, 1, 0],
                        [0, 1, 0],
                        [0.5, 0.5, -1]])
    

    说明:在vtk中,面的编码方式如下:

    face_j = [ n, i_0, i_1, ..., i_n ]
    

    在这里, n 是每个面的点数,以及 i_k 是顶点数组中点的索引。面是通过连接点形成的。 vertices[i_k] 具有 k in range(0,n) 。只需连接单个面规格即可创建面列表:

    np.hstack([face_0, face_1, ..., face_j, ...])
    

    这种编码的优点是每个面使用的点数, n 可以变化。所以网格可以由线、三角形、四边形等组成。

    在示例中,ID为4的顶点用于第二个和第三个面。所以 vertices 必须包含至少五个条目。令人惊讶的是,样本并没有崩溃,因为如果某些面访问不存在的点,VTK几乎肯定会崩溃。