2016-05-01 8 views
2

Благодаря серверу GPU ограничений мы не можем использовать K для отображения неявных уравнений на VPS, вот пример кода, который мы используем для производства 3D-моделей из уравнений в mayavi:Plotting 3d неявного уравнения с vispy

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

3d equation rendered by mayavi

Мой вопрос, как я могу сделать то же самое с vispy или другой питон модуль (Если существует)

Мы не имеем видеокарту на VPS, мы используем Python 3.5.1 (анаконды) на Windows Server 2008 (не представляется возможным использовать Linux), и мы заменили opengl32.dll с Меса в system32 (GL версии 3.0 Меса 10.2.8) (ВТК кидает ошибки GL версии 2.1 с gpu_shader4 расширением не поддерживается ...)

ответ

3

Вот ответ на мой вопрос, это то, как это делается с 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 wavefront точно так же, как и выше. Это намного быстрее, чем использование майави.