我正在尝试转换png
图像转 3Dstls
。我终于找到了一种方法来做到这一点。但有一个问题。现在导出的图像没有 z 值,也没有厚度。我这样做的方式是针对图像上的白色像素,将三角形绘制到表面上。
def define_faces(numpy_array, column_number, row_number, z_value):
print("Vertices Initializing.")
vertices = np.zeros((row_number , column_number , 3))
for x in range(0, column_number):
for y in range(0, row_number):
z = z_value
vertices[y][x] = (x,y,z)
print("Vertices Initialized")
faces = []
print("Initializing Faces.")
for x in range(0, column_number - 1):
for y in range(0, row_number - 1):
if numpy_array[y][x] >= PIXEL_COLOR_FILTER:
vertice1 = vertices[y][x]
vertice2 = vertices[y+1][x]
vertice3 = vertices[y+1][x+1]
face1 = np.array([vertice1, vertice2, vertice3])
vertice1 = vertices[y][x]
vertice2 = vertices[y][x+1]
vertice3 = vertices[y+1][x+1]
face2 = np.array([vertice1,vertice2,vertice3])
faces.append(face1)
faces.append(face2)
print("Faces Initialized")
return np.array(faces) , faces
and
def create_mesh(faces_numpy, faces, output_name):
print("Creating Mesh.")
surface = mesh.Mesh(np.zeros(faces_numpy.shape[0], dtype = mesh.Mesh.dtype))
for i ,f in enumerate(faces):
for j in range(3):
surface.vectors[i][j] = faces_numpy[i][j]
surface.save(output_name)
print("Mesh created succesfully.")
这些是这段代码的核心功能。代码最初是为了Lithophane
一代。我有一个想法,而不是给出三角形并将它们变成stl
,直接在预期像素上生成立方体。所以它变成了3d。但在此之前关于如何挤出最终的任何想法stl
?
这是PNG:
这是STL: