因此,我不想将我们拥有的每个数据存储在另一种格式中以使其可由ParaView显示,而是希望使用ParaView提供的python接口直接从我们当前的文件格式加载数据并显示它。
为了测试这个,我想创建一个简单的ProgrammableSource
过滤器,输出一个vtkImageData并用一些数据填充它。
我遇到了三个问题:
这是我到目前为止所拥有的。没有来自ParaView的投诉,也没有任何回报。
import numpy as np
import vtk
import vtk.util.numpy_support as ns
img = self.GetImageDataOutput()
img.SetDimensions(3,4,5)
img.AllocateScalars(vtk.VTK_DOUBLE, 1)
dims = img.GetDimensions()
img.SetOrigin(0,0,0)
img.SetSpacing(0.55, 0.55, 0.55)
for z in range(dims[2]):
for y in range(dims[1]):
for x in range(dims[0]):
img.SetScalarComponentFromDouble(x,y,z,0, 1.0*x*y*z)
注意:如果直接使用ParaView的python shell而不是ProgrammableSource更容易,这也没关系。
答案 0 :(得分:4)
为了使用可编程源定义vtkImageData
输出,还必须在流水线执行的RequestInformation
阶段设置一些信息。将以下内容插入Script (RequestInformation)
属性:
from paraview import util
op = self.GetOutput()
util.SetOutputWholeExtent(self, [0, 2, 0, 3, 0, 4])
此信息改编自http://www.paraview.org/Wiki/Python_Programmable_Filter提供的信息。