用 vispy 绘制 3d 隐式方程

Plotting 3d Implicit equation with vispy

由于服务器 GPU 的限制,我们不能使用 K 在 VPS 上渲染隐式方程,下面是我们用来从 mayavi 中的方程生成 3D 模型的示例代码:

import numpy as np
from mayavi import mlab

mlab.clf()
x, y, z = np.mgrid[-2.5:2.5:.125, -2.5:2.5:.125, -2.5:2.5:.125]
a,b,c = 0.0,-5.0,11.8
values = x**4+y**4+z**4+a*(x**2+y**2+z**2)**2+b*(x**2+y**2+z**2)+c
mlab.contour3d(x, y, z, values, contours=[0], color=(.1,1,.5))

mlab.savefig("shape.obj")

这将以 3D 形式输出此形状

我的问题是,如何使用 vispy 或另一个 python 模块(如果存在)

完成同样的事情

我们 VPS 上没有显卡,我们在 windows 服务器 2008 上使用 python 3.5.1 (anaconda)(无法使用 linux) 并且我们在 system32 中用 mesa 替换了 opengl32.dll (GL version 3.0 mesa 10.2.8)(VTK 抛出错误 GL Version 2.1 with the gpu_shader4 extension is not supported...)

这是我的问题的答案,这是用 vispy 完成的:

import numpy as np

from vispy import io
from vispy.geometry.isosurface import isosurface

x, y, z = np.mgrid[-2.5:2.5:.125, -2.5:2.5:.125, -2.5:2.5:.125]
a,b,c = 0.0,-5.0,11.8
data = x**4+y**4+z**4+a*(x**2+y**2+z**2)**2+b*(x**2+y**2+z**2)+c
vertices, faces = isosurface(data, level=1/10000000.)
io.write_mesh('shape.obj', vertices, faces , None, None, overwrite=True)

导出与上述形状完全相同的波前 obj 文件。这比使用 mayavi 快得多。