| import trimesh | |
| import tempfile | |
| import atexit | |
| import shutil | |
| import pathlib | |
| import gradio as gr | |
| def cleanup_temp_directories(): | |
| print("Deleting temporary files") | |
| for temp_dir in temp_directories: | |
| try: | |
| shutil.rmtree(temp_dir) | |
| except FileNotFoundError: | |
| print(f"Could not delete directory {temp_dir}") | |
| def stl2glb(glb_file): | |
| temp_dir = pathlib.Path(tempfile.mkdtemp()) | |
| temp_directories.append(temp_dir) | |
| mesh = trimesh.load(glb_file) | |
| glb = trimesh.exchange.gltf.export_glb(mesh) | |
| output_file = (temp_dir / glb_file).with_suffix(".glb") | |
| with open(output_file, "wb") as f: | |
| f.write(glb) | |
| return str(output_file) | |
| if __name__ == "__main__": | |
| temp_directories = [] | |
| atexit.register(cleanup_temp_directories) | |
| demo = gr.Interface( | |
| fn=stl2glb, | |
| inputs=gr.Model3D(label="STL File"), | |
| outputs=gr.Model3D(label="GLB File"), | |
| examples=["space_shuttle.stl"], | |
| title="STL2GLB Converter", | |
| description="Convert a .stl file to a .glb file", | |
| analytics_enabled=False, | |
| ) | |
| demo.launch(share=False) | |