Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from pygltflib import GLTF2, Texture, Image | |
| import base64 | |
| import io | |
| import tempfile | |
| def modify_texture(): | |
| # Load the GLB file | |
| glb = GLTF2().load("train.glb") | |
| # Load the default texture image | |
| with open("defect.jpg", "rb") as f: | |
| default_texture = Image(uri=f"data:image/jpeg;base64,{base64.b64encode(f.read()).decode()}") | |
| # Assuming there's at least one image in the original GLB | |
| if glb.images: | |
| # Replace the first image with the default texture | |
| glb.images[0] = default_texture | |
| else: | |
| # Add default image if none exists | |
| glb.images.append(default_texture) | |
| # Update texture to point to the default image | |
| default_texture = Texture(source=len(glb.images)-1) | |
| glb.textures.append(default_texture) | |
| # Save the modified GLB to a temporary file | |
| with tempfile.NamedTemporaryFile(suffix=".glb", delete=False) as tmp_file: | |
| tmp_filename = tmp_file.name | |
| glb.save(tmp_filename) | |
| # Read the temporary file back into memory as BytesIO | |
| with open(tmp_filename, "rb") as tmp_file: | |
| output_file = io.BytesIO(tmp_file.read()) | |
| return output_file | |
| gr.Interface( | |
| fn=modify_texture, | |
| inputs=[], | |
| outputs=gr.Model3D(label="Modified 3D Model"), | |
| title="GLB Texture Modifier" | |
| ).launch() | |