Python vtkInterface0.9.3 примеры библиотек не работают

1

Я узнал о vtkInterface, vtkInterface vtk wrapper, который облегчает построение 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))
Теги:
vtk

1 ответ

2
Лучший ответ

Пример неправильный. Ему не хватает пятого пункта. Например, это сработает.

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 почти наверняка будет, если некоторые лица будут обращаться к несуществующим точкам.

  • 0
    Сопровождающий vtkInterface здесь. Спасибо, что поймали это, и я обновил документацию. Обновление будет в следующей версии 0.11.1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню