Я совершенно новичок в работе с vtk(/vtr/vtu/..) вне paraview, но я хочу немного упростить свой рабочий процесс, поэтому я хочу выполнить некоторое преобразование данных вне paraview. В основном у меня есть две симуляции, но начало координат и ось разные. Разница в происхождении меняется каждый временной шаг, поэтому я хочу преобразовать свои файлы таким образом, чтобы они были выровнены перед открытием их в паравью, чтобы мне не приходилось постоянно менять значения в фильтре преобразования, когда я хочу посмотреть другой временной шаг. Сначала я пытался добиться этого, просто вращая и преобразовывая один файл.
Мой подход таков (основан на многих других веб-страницах, поэтому, к сожалению, я больше не могу отслеживать, что и откуда пришло):
import vtk
reader = vtk.vtkXMLRectilinearGridReader()
reader.SetFileName(file_name)
reader.Update()
data = reader.GetOutput()
transform = vtk.vtkTransform()
transform.RotateZ(90)
transform.Translate(2.34375, 4.6875, 2.34375)
transformFilter=vtk.vtkTransformFilter()
transformFilter.SetTransform(transform)
transformFilter.SetInputData(data)
transformFilter.Update()
writer = vtk.vtkXMLRectilinearGridWriter()
writer.SetInputData(transformFilter.GetOutput())
writer.SetFileName("Output.vtr")
writer.Update()
Теперь я не получаю никаких ошибок, но также нет созданного файла, и я не знаю, где я ошибаюсь. Любая помощь высоко ценится. (кстати, я попробовал этот ответ, и это действительно создает файл)
РЕДАКТИРОВАТЬ; Может быть, я нашел, почему это идет не так, но все же я не знаю, как это исправить. Если я печатаю data
, отображается vtkRectilinearGrid
, а если я печатаю transformFilter.GetOutput()
, отображается vtkStructuredGrid
. Я думал, что фильтр преобразования сохранит тот же тип сетки, но, по-видимому, это не так. У кого-нибудь есть идея оставить тот же тип сетки?