Рендеринг 2D изображений из файла STL в Python

Я хотел бы загрузить файл STL и создать набор 2D-изображений в различных поворотах.

Я получил основы работы с Numpy-STL на основе этого примера, в конечном итоге с этим кодом -

from stl import mesh
from mpl_toolkits import mplot3d
from matplotlib import pyplot

filename = '3001.stl'

# Create a new plot
figure = pyplot.figure()
axes = figure.gca(projection='3d')

# Load the STL files and add the vectors to the plot
mesh = mesh.Mesh.from_file(filename)

axes.add_collection3d(mplot3d.art3d.Poly3DCollection(mesh.vectors, color='lightgrey'))
#axes.plot_surface(mesh.x,mesh.y,mesh.z)
# Auto scale to the mesh size
scale = mesh.points.flatten()
axes.auto_scale_xyz(scale, scale, scale)

#turn off grid and axis from display      
pyplot.axis('off')

#set viewing angle
axes.view_init(azim=120)

# Show the plot to the screen
pyplot.show()

Это хорошо работает только в том случае, если я получаю силуэт компонента, мне не хватает деталей. На картинке ниже лего кирпич... Лего кирпич

Я пытался выделить края. но это зависит от того, как была создана модель, что не очень хорошо для меня.

Лего кирпич с краями

Я надеялся, что, добавив освещение, тени могут помочь добавить недостающие детали, но я не могу найти способ сделать это.

Любая идея, как добавить источник света в код ниже, чтобы создать тени?

0 ответов

После того, как я устал от сбоев установки Mayavi, я в конечном итоге написал для этого свою собственную библиотеку. https://github.com/bwoodsend/vtkplotlib

Ваш код будет примерно таким

import vtkplotlib as vpl
from stl.mesh import Mesh

path = "your path here.stl"

# Read the STL using numpy-stl
mesh = Mesh.from_file(path)

# Plot the mesh
vpl.mesh_plot(mesh)

# Show the figure
vpl.show()

Если вы хотите, чтобы кирпич был синим, вы можете заменить mesh_plot на

vpl.mesh_plot(mesh, color="blue")

Если вы не находите Mayavi полезным, вы можете попробовать Panda3D, который предназначен для приложений графического /3D-рендеринга. Я считаю, что делать такие простые вещи довольно просто.

Другие вопросы по тегам