37 lines
1.2 KiB
Python
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) |