因此,我不想使用另一种格式存储我们拥有的所有数据以使其可以通过ParaView显示,而是希望使用python接口,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更容易,则也可以。

最佳答案

为了用可编程源定义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上可用的信息。

关于python - 如何编写一个ProgrammableSource过滤器以在ParaView中将numpy数组显示为vtkImageData?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42858026/

10-10 19:32