File size: 1,107 Bytes
e2969d6
 
e7bae15
 
e2969d6
5b3b1fb
b02879d
 
e7bae15
 
 
 
 
 
 
e2969d6
5b3b1fb
e2969d6
 
b02879d
 
 
 
d39abff
b02879d
 
 
 
 
e2969d6
5b3b1fb
 
e2969d6
 
b02879d
e2969d6
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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()