在Python中,如何将3D等值面导出到Blender中

时间:2014-09-10 18:12:33

标签: python scipy blender mayavi

我在python中有一些3D(x,y,z,value)数据,我可以在Mayavi中可视化isosurfaces。如何将此isosurface导出到我可以读入Blender的文件中?

以下是一些示例代码:

import numpy
from mayavi import mlab

x, y, z = numpy.ogrid[-5:5:64j, -5:5:64j, -5:5:64j]
values = x * x * 0.5 + y * y + z * z * 2.0
mlab.contour3d(values, contours=[.5])
mlab.show()

2 个答案:

答案 0 :(得分:7)

使用@ timday的建议,我添加了以下代码以wavefront(.obj)格式保存isosurface:

mlab.savefig( 'surface.obj')

然后,我可以在Blender中使用File>> Import>> Wavefront(.obj)

打开它

我不得不大幅缩小图像(~100x),使其在Blender视口中可见。

enter image description here

将原点设置为实际对象的一侧,因此如果我使用对象>>转换>>原点到几何

,则对象更容易处理

enter image description here

添加一些灯光和一架飞机后,物体看起来很不错!

enter image description here

答案 1 :(得分:1)

我自己从未尝试过,但我注意到mlab的savefig也声称支持保存为Wavefront“.obj”格式(也称为wavefront format),这是一种3D几何格式。当然,我见过importers from obj to Blender