【问题标题】:remove part of iso_surface in mayavi在 mayavi 中删除部分 iso_surface
【发布时间】:2013-10-07 14:33:53
【问题描述】:

我试图在 mayavi 的文档中找到一些提示,但没有成功。

在复杂数据的可视化中,我想删除计算的 iso_surface 的一部分。 例如,我有一个类似

的代码
field =  mlab.pipeline.gaussian_splatter(data)
iso = mlab.pipeline.iso_surface(field, contours=[0.07])

我可以通过执行类似的操作明确解释我的数据沿 x、y 或 z 受到限制,从而删除此 iso_surface 的一部分

field.filter.model_bounds = array([-1.,  1., -1.,  1., -1., 1.])

但是对于任意有向平面,我找不到解释这一点的方法。例如,我想将我的数据限制在 (1,1,1) 方向。

有没有办法做到这一点?

【问题讨论】:

    标签: mayavi


    【解决方案1】:

    您可以使用data_set_clipper 剪辑数据。剪裁器是交互式的或非交互式的。我将演示它的非交互式版本:

    fld = mlab.pipeline.scalar_field(data)
    clip = mlab.pipeline.data_set_clipper(fld)
    clip.widget.widget_mode='ImplicitPlane'
    clip.widget.widget.enabled=0
    clip.widget.widget.normal=(1,1,1)
    clip.widget.widget.origin=(20,20,20) #(0,0,0) is not the centre but the corner
    iso = mlab.pipeline.iso_surface(clip, contours=[0.07])
    

    如果您想更频繁地剪辑,则必须将剪辑的数据放入另一个data_set_clippe

    clip2=mlab.pipeline.data_set_clipper(clip)
    

    但是,我对我的方法并不完全满意,因为它使用了大量资源。如果有人有更好的解决方案,我会很高兴看到它。

    【讨论】:

      【解决方案2】:

      如果您在显示您想要的表面时遇到问题,请尝试使用contours 的参数,如果您可以使它们在您想要显示的表面周围足够紧,您应该得到您想要的..

      如果您可以发布更多{non,}工作示例,我可能会提供帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 2017-07-04
        • 2012-07-22
        • 1970-01-01
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        相关资源
        最近更新 更多