32 lines
973 B
Python
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() |