#!/usr/bin/env python from __future__ import annotations import os import gradio as gr from model import Model DESCRIPTION = '''# [TEXTure](https://github.com/TEXTurePaper/TEXTurePaper) - This demo only accepts as input `.obj` files with less than 100,000 faces. - Inference takes about 10 minutes on a T4 GPU. ''' if (SPACE_ID := os.getenv('SPACE_ID')) is not None: DESCRIPTION += f'\n

For faster inference without waiting in queue, you may duplicate the space and upgrade to GPU in settings. Duplicate Space

' model = Model() with gr.Blocks(css='style.css') as demo: gr.Markdown(DESCRIPTION) with gr.Row(): with gr.Column(): input_shape = gr.Model3D(label='Input 3D mesh') text = gr.Text(label='Text') seed = gr.Slider(label='Seed', minimum=0, maximum=100000, value=3, step=1) guidance_scale = gr.Slider(label='Guidance scale', minimum=0, maximum=50, value=7.5, step=0.1) run_button = gr.Button('Run') with gr.Column(): progress_text = gr.Text(label='Progress') with gr.Tabs(): with gr.TabItem(label='Images from each viewpoint'): viewpoint_images = gr.Gallery(show_label=False).style( columns=4, height='auto') with gr.TabItem(label='Result 3D model'): result_3d_model = gr.Model3D(show_label=False) with gr.TabItem(label='Output mesh file'): output_file = gr.File(show_label=False) with gr.Row(): examples = [ ['shapes/dragon1.obj', 'a photo of a dragon', 0, 7.5], ['shapes/dragon2.obj', 'a photo of a dragon', 0, 7.5], ['shapes/eagle.obj', 'a photo of an eagle', 0, 7.5], ['shapes/napoleon.obj', 'a photo of Napoleon Bonaparte', 3, 7.5], ['shapes/nascar.obj', 'A next gen nascar', 2, 10], ] gr.Examples(examples=examples, inputs=[ input_shape, text, seed, guidance_scale, ], outputs=[ result_3d_model, output_file, ], cache_examples=False) run_button.click(fn=model.run, inputs=[ input_shape, text, seed, guidance_scale, ], outputs=[ viewpoint_images, result_3d_model, output_file, progress_text, ]) demo.queue(max_size=5).launch(debug=True)