agrobot_base/Python/mesh_simplify/obj_simplifier_mtl_2.py

32 lines
973 B
Python

import trimesh
import numpy as np
def load_obj_with_materials(obj_filename):
scene = trimesh.load(obj_filename, file_type='obj')
return scene
def simplify_mesh(mesh, target_faces):
simplified_mesh = mesh.simplify_quadratic_decimation(target_faces)
return simplified_mesh
def save_obj_with_materials(scene, output_filename):
scene.export(output_filename, file_type='obj')
def main():
input_obj = 'Mont.obj'
output_obj = 'Mont_6.obj'
target_faces = 5000 # Número desejado de faces após simplificação
# Carregar a cena do arquivo OBJ
scene = load_obj_with_materials(input_obj)
# Simplificar cada malha na cena
for name, mesh in scene.geometry.items():
simplified_mesh = simplify_mesh(mesh, target_faces)
scene.geometry[name] = simplified_mesh
# Salvar a cena simplificada mantendo as referências aos materiais
save_obj_with_materials(scene, output_obj)
if __name__ == "__main__":
main()