8
我正在使用mayavi(3.3.2)顯示體積等值面。如何在mayavi中正確顯示包含非立方體素的體積
通常,我的體積沒有立方體素;例如,採樣網格在X和Y方向上可能爲1mm x 1mm,但在Z方向上爲1.4mm。
如何使用mayavi的mlab.contour3d
或mlab.pipeline.iso_surface
以正確的空間比例顯示這樣的體積?我真的不想將這些卷重新採樣到立方格。
陳述問題的另一種方式:我可以做些什麼來獲得下面的代碼來顯示一個球體而不是展平的elipsoid(將volume
與其預期的1:1:2縱橫比體素作爲給定值,並且無需重新生成或重新採樣該卷)。
import numpy as np
from enthought.mayavi import mlab
def sqr(x): return x*x
s=64
x,y,z = np.ogrid[0:s,0:s,0:s/2]
volume = np.sqrt(sqr(x-s/2)+sqr(y-s/2)+sqr(2*z-s/2))
isos = mlab.contour3d(volume,contours=[5,15,25],transparent=True)
mlab.show()
我猜,就必須有在底層VTK圖形管道獲得的某種方式(其變換等),並插入相應的各向異性縮放(如果更直接地通過沒有這樣做的一些方法mlab API)。
感謝,這正是我一直在尋找。我真的需要付出一些努力來學習mlab API的方式。 – timday 2011-05-24 16:42:08
@timday - 這是一個開始學習事物的「管道」方面的好地方:http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/mlab_pipeline.html#controlling-the- pipeline-with-mlab-scripts另外,如果你熟悉VTK,並且有一個過濾器不是由'mlab'直接包裝的,你可以用'mlab.pipeline.user_defined'來調用它,這可以很方便如果你能在VTK中找到你所需要的,但不能直接在mayavi/mlab中找到。 – 2011-05-24 16:53:39
另外,看看不同的VTK數據結構:http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/data.html#data-structures-used-by-mayavi – 2011-05-24 16:54:38