用vispy绘制三维隐式方程

2024-05-16 04:11:44 发布

您现在位置:Python中文网/ 问答频道 /正文

由于服务器GPU的限制,我们不能使用K来呈现VPS上的隐式方程,下面是一个示例代码,我们使用它从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")

这将以三维形式输出此形状

3d equation rendered by mayavi

我的问题是,如何使用vispy或另一个python模块(如果存在的话)来完成相同的任务

我们在VPS上没有显卡,我们使用的是WindowsServer2008上的Python3.5.1(anaconda)(不可能使用linux),并且在system32中用mesa替换了opengl32.dll(GL版本3.0 mesa 10.2.8)(不支持带有gpu_shader4扩展名的VTK抛出错误GL version 2.1…)


Tags: 代码模型importnumpy服务器示例gpuvps
1条回答
网友
1楼 · 发布于 2024-05-16 04:11:44

下面是我的问题的答案,这是如何使用Vissy:

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)

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

相关问题 更多 >