在 Python 脚本中设置 mayaVI 管线属性
Set mayaVI pipeline properties in Python script
我正在使用 mayaVI 绘制 3D 表面和矢量场,函数为 mayavi.mlab.surf 和 mayavi.mlab.quiver3D。与 Mayavi 管道相比,这些函数没有太多关键字参数可以让我修改表面和箭袋的外观,在 Mayavi 管道中,我可以将内容编辑到最微小的细节(例如箭袋箭头半径 - 参见下面的示例图).问题是,一旦我在 mayaVI 管道中进行了这些更改,似乎就无法保存这些设置,直到下次我想重新绘制图形时。
我对编辑表面的轮廓属性和矢量的字形源属性(轴半径、尖端半径、尖端长度)特别感兴趣。
问题:有没有一种简单的方法可以将 Mayavi 管道设置保存到下一次,或者直接在我的 Python 脚本中编辑它们(即不使用 UI)?
示例:
代码:
#!/usr/bin/env python
import numpy as np
from mayavi import mlab
xmax = 2.0*np.pi
x, y, z = np.mgrid[-xmax:xmax:25j, -xmax:xmax:25j, -xmax:xmax:1j]
v_x = np.sin(x)*np.cos(y)
v_y = np.cos(x)*np.sin(y)
v_z = np.zeros_like(z)
v_abs = np.sqrt(v_x**2 + v_y**2) # scalar field
surf = mlab.surf( x[:,:,0], y[:,:,0], v_abs[:,:,0], colormap='magma' )
obj_j = mlab.quiver3d( x[:,:,0], y[:,:,0], z[:,:,-1], v_x[:,:,0], v_y[:,:,0], v_z[:,:,0], mode='arrow')
mlab.show()
例如,要更改箭头的尖端长度,
obj = mlab.quiver3d(..., mode='arrow')
obj.glyph.glyph_source.glyph_source.tip_length = 0.9
mayavi流水线好像没有完整的文档,不过从GUI界面可以猜到参数:
我正在使用 mayaVI 绘制 3D 表面和矢量场,函数为 mayavi.mlab.surf 和 mayavi.mlab.quiver3D。与 Mayavi 管道相比,这些函数没有太多关键字参数可以让我修改表面和箭袋的外观,在 Mayavi 管道中,我可以将内容编辑到最微小的细节(例如箭袋箭头半径 - 参见下面的示例图).问题是,一旦我在 mayaVI 管道中进行了这些更改,似乎就无法保存这些设置,直到下次我想重新绘制图形时。
我对编辑表面的轮廓属性和矢量的字形源属性(轴半径、尖端半径、尖端长度)特别感兴趣。
问题:有没有一种简单的方法可以将 Mayavi 管道设置保存到下一次,或者直接在我的 Python 脚本中编辑它们(即不使用 UI)?
示例:
代码:
#!/usr/bin/env python
import numpy as np
from mayavi import mlab
xmax = 2.0*np.pi
x, y, z = np.mgrid[-xmax:xmax:25j, -xmax:xmax:25j, -xmax:xmax:1j]
v_x = np.sin(x)*np.cos(y)
v_y = np.cos(x)*np.sin(y)
v_z = np.zeros_like(z)
v_abs = np.sqrt(v_x**2 + v_y**2) # scalar field
surf = mlab.surf( x[:,:,0], y[:,:,0], v_abs[:,:,0], colormap='magma' )
obj_j = mlab.quiver3d( x[:,:,0], y[:,:,0], z[:,:,-1], v_x[:,:,0], v_y[:,:,0], v_z[:,:,0], mode='arrow')
mlab.show()
例如,要更改箭头的尖端长度,
obj = mlab.quiver3d(..., mode='arrow')
obj.glyph.glyph_source.glyph_source.tip_length = 0.9
mayavi流水线好像没有完整的文档,不过从GUI界面可以猜到参数: