Spaces:
Sleeping
Sleeping
import gradio as gr | |
from sdf_export import mesh_to_sdf_glsl | |
import tempfile | |
import os | |
def generate_sdf_glsl(file_obj, resolution): | |
glsl_code = mesh_to_sdf_glsl(file_obj.name, resolution) | |
# Create a temporary file for the GLSL code | |
with tempfile.NamedTemporaryFile(mode="w", suffix=".glsl", delete=False) as f: | |
f.write(glsl_code) | |
temp_path = f.name | |
return glsl_code, temp_path | |
iface = gr.Interface( | |
fn=generate_sdf_glsl, | |
inputs=[ | |
gr.File(label="Upload 3D Mesh (.obj, .stl, .ply, .glb, etc.)"), | |
gr.Slider( | |
minimum=16, | |
maximum=1024, | |
step=16, | |
value=32, | |
label="Resolution (16=low, 32=medium, 64=high)", | |
), | |
], | |
outputs=[ | |
gr.Textbox(label="GLSL Output"), | |
gr.File(label="Download GLSL File"), | |
], | |
title="Mesh to Embedded GLSL SDF Generator", | |
description="Upload a 3D mesh file to generate a fully embedded GLSL function with float[] SDF data. Lower resolution = smaller file size and faster loading.", | |
) | |
if __name__ == "__main__": | |
iface.launch() | |