Plot3d на Питоне

У меня есть файл OBJ, сгенерированный Meshlab, с данными вершин и граней. В MATLAB я использовал функцию ''patch'' с данными Vertices в 1 массиве (5937x3) и данными Faces (11870x3) в другом, и результат таков:

Simplified version of the code

[V,F] = read_vertices_and_faces_from_obj_file(filename);

patch('Vertices',V,'Faces',F,'FaceColor','r','LineStyle','-')

axis equal

Результат

Вопрос в том, как я могу сделать это в Python? Есть простой способ, как в Matlab ??

Я буду очень признателен за любую помощь.


person Mateus Emmerick    schedule 26.05.2016    source источник


Ответы (1)


Лучше всего использовать mplot3d набор инструментов из библиотеки matplotlib.

Аналогичный вопрос был задан здесь. Возможно, вам поможет этот слегка отредактированный фрагмент кода из этого вопроса.

Код:

from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt

fig = plt.figure()
ax = Axes3D(fig)
# Specify 4 vertices
x = [0,1,1,0] # Specify x-coordinates of vertices
y = [0,0,1,1] # Specify y-coordinates of vertices
z = [0,1,0,1] # Specify z-coordinates of vertices
verts = [zip(x, y, z)] # [(0,0,0), (1,0,1), (1,1,0), (0,1,1)]
tri = Poly3DCollection(verts) # Create polygons by connecting all of the vertices you have specified
tri.set_color(colors.rgb2hex(sp.rand(3))) # Give the faces random colors
tri.set_edgecolor('k') # Color the edges of every polygon black
ax.add_collection3d(tri) # Connect polygon collection to the 3D axis
plt.show()
person Vladislav Martin    schedule 26.05.2016
comment
Спасибо!! Я попробую это. - person Mateus Emmerick; 29.05.2016