Добавить пользовательское свойство в vtkXMLUnstructuredGrid с помощью python

У меня есть файл .vtu, представляющий сетку, которую я читаю через vtkXMLUnstructuredGridReader. Затем я создаю массив numpy (nbOfPoints x 3), в котором я храню координаты вершин сетки, которые я назову meshArray. У меня также есть массив столбцов (nOfPoints x 1), который я назову яркостным массивом, представляющим определенное свойство, которое я хочу присвоить вершинам meshArray; поэтому каждой вершине соответствует скалярное значение. Например: элементу meshArray[0] будет соответствовать яркостьArray[0] и так далее. Как я могу это сделать?

Затем можно интерполировать значение в вершинах сетки, чтобы получить плавное изменение свойства, которое я установил, чтобы визуализировать его в паравью?

Спасибо. Саймон


person semions    schedule 04.09.2017    source источник
comment
Ваш вопрос не ясен. Можете ли вы уточнить, каковы ваши входы и какой результат требуется.   -  person Mathieu Westphal    schedule 20.09.2017
comment
Моими входами являются сетка vtu и массив. Сетка имеет определенное количество узлов (nbOfPoints), и массив такой же длины. Сетка представляет собой XMLUnstructuredGrid. Каждый узел может содержать информацию об определенном свойстве. Например, поле скорости может быть представлено скалярными значениями, назначенными узлам сетки. Желаемый результат — новая сетка с теми же точками исходной, которым были назначены значения массива. Другими словами, я хочу произвольно назначить сетке новое скалярное поле. Это сложно объяснить, извините. Надеюсь, на этот раз я выразился более ясно. Спасибо.   -  person semions    schedule 29.09.2017
comment
намного яснее. Это должно быть выполнимо с помощью программируемого фильтра Python. Где хранится массив?   -  person Mathieu Westphal    schedule 29.09.2017
comment
Я не уверен, что вы подразумеваете под «где хранится массив». Это пустой массив, который я создаю из файла на основе написанного мной кода. Затем я сохраняю его как файл .npy.   -  person semions    schedule 01.10.2017
comment
Можете ли вы прочитать этот массив в ParaView, если да, то с помощью какой программы чтения? Если вы не хотите читать его напрямую с помощью numpy?   -  person Mathieu Westphal    schedule 02.10.2017
comment
Я читаю это с numpy.   -  person semions    schedule 02.10.2017


Ответы (1)


Вот что вам нужно сделать:

  1. Напишите программируемый источник Python для чтения ваших данных numpy в виде vtkUnstructuredGrid. Вот несколько примеров программируемых источников: https://www.paraview.org/Wiki/ParaView/Simple_ParaView_3_Python_Filters https://www.paraview.org/Wiki/Python_Programmable_Filter

  2. Прочитайте свой набор данных .vtu

  3. Используйте фильтр «Повторная выборка с набором данных» на выходе программируемого источника Python и выберите свой набор данных в качестве «источника».

И вы сделали.

Самое сложное — написать программируемый исходный код.

person Mathieu Westphal    schedule 03.10.2017