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

4 投票
2 回答
3617 浏览
提问于 2025-04-20 22:41

我在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的视图中才能看得见。

在这里输入图片描述

原点的位置离实际物体很远,所以如果我使用对象>>变换>>原点到几何体的选项,处理这个物体会更方便。

在这里输入图片描述

在添加了一些灯光和一个平面后,这个物体看起来不错!

在这里输入图片描述

撰写回答