agrobot_base/Python/mesh_simplify/ply_to_obj_2.py

27 lines
1.3 KiB
Python

import pymeshlab
def convert_simplify_and_scale_ply_to_obj(input_file, output_file, target_faces, scale_factor):
# Carrega o arquivo PLY usando pymeshlab
ms = pymeshlab.MeshSet()
ms.load_new_mesh(input_file)
# Simplificação de malha com um número alvo de faces
ms.meshing_decimation_quadric_edge_collapse(targetfacenum=target_faces)
# Reduz a escala do objeto
# Usando uma transformação manual com multiplicação de coordenadas
ms.apply_filter('transform_scale', xscale=scale_factor, yscale=scale_factor, zscale=scale_factor)
# Salva como arquivo OBJ, garantindo que as cores sejam mantidas
ms.save_current_mesh(output_file, save_vertex_color=True)
print(f"Conversão, simplificação e escalamento concluídos. Arquivo OBJ salvo em: {output_file}")
if __name__ == "__main__":
input_file = 'montagem_pulverizador.ply' # Substitua pelo caminho do seu arquivo PLY de entrada
output_file = 'montagem_pulverizador_2.obj' # Substitua pelo caminho do seu arquivo OBJ de saída
target_faces = 50000 # Número desejado de faces após a simplificação
scale_factor = 0.5 # Fator de escala (0.5 reduz pela metade, 2.0 dobra o tamanho, etc.)
convert_simplify_and_scale_ply_to_obj(input_file, output_file, target_faces, scale_factor)