Установить свойства конвейера mayaVI в скрипте Python - PullRequest
1 голос
/ 09 июня 2019

Я использую MayaVI для построения поверхности и векторного поля в 3D, с функциями mayavi.mlab.surf и mayavi.mlab.quiver3D. Эти функции не имеют много ключевых аргументов, которые позволяют мне изменять внешний вид поверхности и колчанов, по сравнению с конвейером Mayavi, где я могу редактировать вещи до мельчайших деталей (например, радиус головки стрелки колчана - см. Пример на рисунке ниже). ). Проблема заключается в том, что после внесения этих изменений в конвейер mayaVI, кажется, нет возможности сохранить эти настройки до следующего раза, когда я захочу перерисовать рисунок.

Меня особенно интересует редактирование свойств контура поверхности и свойств источника глифов векторов (радиус вала, радиус наконечника, длина наконечника).

Вопрос: Есть ли простой способ сохранить настройки конвейера Mayavi до следующего раза или отредактировать их непосредственно в моем скрипте Python (т.е. без использования пользовательского интерфейса)?

Пример: enter image description here

Код:

#!/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()

1 Ответ

2 голосов
/ 09 июня 2019

Например, чтобы изменить длину наконечника стрелок,

obj = mlab.quiver3d(..., mode='arrow')
obj.glyph.glyph_source.glyph_source.tip_length = 0.9

Кажется, что нет полной документации по конвейеру Mayavi, но из интерфейса GUI можно догадаться о параметрах:

enter image description here

...