agrobot_base/Python/mesh_simplify/obj_simplifier.py

37 lines
1.2 KiB
Python

import open3d as o3d
def load_obj(file_path):
"""Carrega um arquivo OBJ usando open3d."""
mesh = o3d.io.read_triangle_mesh(file_path)
return mesh
def simplify_mesh(mesh, reduction_factor=0.5):
"""Reduz o número de triângulos da malha."""
target_number_of_triangles = int(len(mesh.triangles) * reduction_factor)
simplified_mesh = mesh.simplify_quadric_decimation(target_number_of_triangles)
return simplified_mesh
def save_obj(mesh, file_path):
"""Salva a malha em formato OBJ."""
o3d.io.write_triangle_mesh(file_path, mesh)
def simplify_obj_mesh(input_obj_path, output_obj_path, reduction_factor=0.5):
"""Simplifica a malha de um arquivo OBJ."""
# Carregar a malha do arquivo OBJ
mesh = load_obj(input_obj_path)
# Simplificar a malha
simplified_mesh = simplify_mesh(mesh, reduction_factor)
# Salvar a malha simplificada em formato OBJ
save_obj(simplified_mesh, output_obj_path)
# Caminhos dos arquivos
input_obj_file = 'Mont.obj'
output_obj_file = 'Mont_simplified.obj'
# Fator de redução (0.5 para reduzir pela metade)
reduction_factor = 0.05
# Simplificar a malha
simplify_obj_mesh(input_obj_file, output_obj_file, reduction_factor)