在Python中如何将3D等值面导出到Blender
我在Python中有一些3D数据(x, y, z, value),我可以在Mayavi中可视化等值面。请问我该如何将这个等值面导出成一个文件,以便我可以在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 个回答
1
我自己没试过,但我注意到mlab的savefig功能也说可以保存为Wavefront的“.obj”格式,这是一种3D几何格式。确实,我见过从obj导入到Blender的工具。
7
根据@timday的建议,我添加了以下代码来保存等值面为wavefront (.obj)格式:
mlab.savefig('surface.obj')
然后,我可以在Blender中通过文件菜单选择文件>>导入>>Wavefront (.obj)来打开它。
我需要把图像缩小很多(大约缩小100倍),这样在Blender的视图中才能看得见。
原点的位置离实际物体很远,所以如果我使用对象>>变换>>原点到几何体的选项,处理这个物体会更方便。
在添加了一些灯光和一个平面后,这个物体看起来不错!