Spaces:
Runtime error
Runtime error
import gradio as gr | |
import trimesh | |
from PIL import Image | |
import base64 | |
import io | |
def modify_texture(): | |
# Load the GLB file | |
scene = trimesh.load_mesh("train.glb") | |
geometries = list(scene.geometry.values()) | |
geometry = geometries[0] | |
adjacency_matrix = geometry.edges_sparse | |
# Open the texture image | |
im = Image.open("defect.jpg") | |
# Create a material with the texture image | |
material = trimesh.visual.texture.SimpleMaterial(image=im) | |
# Get the uv coordinates from the mesh | |
uv = adjacency_matrix.visual.uv | |
# Create TextureVisuals with the uv coordinates and the texture image | |
color_visuals = trimesh.visual.TextureVisuals(uv=uv, image=im, material=material) | |
# Apply the visuals to the mesh | |
mesh.visual = color_visuals | |
# Export the mesh to a .glb file | |
mesh.export(file_obj='modified_train.glb') | |
# Convert the GLB file to base64 for Gradio Model3D output | |
with open('modified_train.glb', 'rb') as f: | |
glb_base64 = base64.b64encode(f.read()).decode() | |
return glb_base64 | |
gr.Interface( | |
fn=modify_texture, | |
inputs=[], | |
outputs=gr.Model3D(label="Download Modified GLB File"), | |
title="GLB Texture Modifier" | |
).launch() | |