使用 vispy 绘制 3d 隐式方程

Pou*_*uya 2 python 3d mayavi vispy

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

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")
Run Code Online (Sandbox Code Playgroud)

以 3D 形式输出此形状

由 mayavi 渲染的 3d 方程

我的问题是,我怎样才能完成同样的事情vispy另一个 python 模块(如果存在)完成同样的事情

我们没有显卡VPS,我们在 Windows Server 2008 上使用 python 3.5.1 (anaconda)(不可能使用 linux),并且我们已替换opengl32.dll为 system32 中的 mesa(GL 版本 3.0 mesa 10.2.8)(VTK 抛出错误 GL 版本 2.1 及其gpu_shader4扩展不受支持...)

Pou*_*uya 5

这是我的问题的答案,这是使用 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)
Run Code Online (Sandbox Code Playgroud)

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