Spaces:
Running
Running
import torch | |
from meshgpt_pytorch import ( | |
MeshTransformer, | |
mesh_render | |
) | |
import igl | |
import gradio as gr | |
import numpy as np | |
transformer = MeshTransformer.from_pretrained("MarcusLoren/MeshGPT-preview") | |
def save_as_obj(file_path): | |
v, f = igl.read_triangle_mesh(file_path) | |
v, f, _, _ = igl.remove_unreferenced(v, f) | |
c, _ = igl.orientable_patches(f) | |
f, _ = igl.orient_outward(v, f, c) | |
igl.write_triangle_mesh(file_path, v, f) | |
return file_path | |
def predict(text, num_input, num_temp): | |
transformer.eval() | |
labels = [label.strip() for label in text.split(',')] | |
output = [] | |
if num_input > 1: | |
for label in labels: | |
output.append((transformer.generate(texts = [label ] * num_input, temperature = num_temp))) | |
else: | |
output.append((transformer.generate(texts = [label ] * num_input, temperature = num_temp))) | |
mesh_render.save_rendering('./render.obj', output) | |
return save_as_obj('./render.obj') | |
gradio_app = gr.Interface( | |
predict, | |
inputs=[ | |
gr.Textbox(label="Enter labels, separated by commas"), | |
gr.Number(value=1, label="Number of examples per input"), | |
gr.Slider(minimum=0, maximum=1, value=0, label="Temperature (0 to 1)") | |
], | |
outputs=gr.Model3D(clear_color=[0.0, 0.0, 0.0, 0.0], label="3D Model"), | |
title="MeshGPT Inference - (Rendering doesn't work, please download for best result)", | |
) | |
if __name__ == "__main__": | |
gradio_app.launch(share=False) |