在 mayavi 中沿流线检索值

  • 本文关键字:线检索 mayavi mayavi
  • 更新时间 :
  • 英文 :


我有一个速度场和一个密度分布,由vxvyvz和巢穴定义。所有这些变量都是 3D 数组,例如

vx.shape
(256,256,256)

vyvzdens也是如此。

流命令工作正常,例如

fl = flow(vx,vy,vz, seedtype='point', integration_direction='both', scalars=dens)

我可以可视化场线。现在,要沿线检索位置 x,y,z 处的vx,vy,vzdens的值,我过去所做的(我想几年前使用以前版本的 mayavi(是

dataset = fl.outputs[0]

然后

x, y, z = dataset.points.to_array().T
densstream = np.array(dataset.point_data.get_array(0))
vstream = np.array(dataset.point_data.get_array(1))

但是跑步

x, y, z = dataset.points.to_array().T

我收到以下错误:

属性

错误:"算法输出"对象没有属性"点"。

打字

dataset

我得到

<tvtk.tvtk_classes.algorithm_output.AlgorithmOutput at 0x1132917d0>

我使用的是mac OS 10.12.6,Python 2.7.15和IPython 5.5.0。 你能帮帮我吗?

干杯

较新版本的mayavi修改了某些tvtk对象的输出端口,从旧版本的tvtk.obj.outputtvtk_obj.output_port。后者是 tvtk 的algorithm_output子类,不包含点数据,这是错误消息的原因。

在mayavi/modules/streamline.py中,方法_streamline_type_changed(self,value(: 通过configure_outputs(self, st)更新流线型对象的输出端口,这是一种 TVTK/common.py 的方法,但连接被定向到self.stream_tracer.output_port而不是self.stream_tracer.output。后者是正确的poly_data子类,并且确实包含沿流线的点数据。 所以治疗方法很简单:

dataset = fl.stream_tracer.output

顺便说一下,我也尝试将函数调用修改为configure_outputs(self, st.output),尽管fl.outputs[0]已正确连接到poly_data输出,但流线不再显示在 mayavi 场景中。

相关内容

  • 没有找到相关文章

最新更新