Spaces:
Build error
Build error
Add a Download button to help users to understand they can retrieve the 3D model
#12
by
Fabrice-TIERCELIN
- opened
- gradio_app/gradio_3dgen.py +15 -14
gradio_app/gradio_3dgen.py
CHANGED
|
@@ -39,7 +39,7 @@ def generate3dv2(preview_img, input_processing, seed, render_video=True, do_refi
|
|
| 39 |
new_meshes = Meshes(verts=[vertices], faces=new_meshes.faces_list(), textures=new_meshes.textures)
|
| 40 |
|
| 41 |
ret_mesh, video = save_glb_and_video("/tmp/gradio/generated", new_meshes, with_timestamp=True, dist=3.5, fov_in_degrees=2 / 1.35, cam_type="ortho", export_video=render_video)
|
| 42 |
-
return ret_mesh, video
|
| 43 |
|
| 44 |
#######################################
|
| 45 |
def create_ui(concurrency_id="wkl"):
|
|
@@ -47,6 +47,18 @@ def create_ui(concurrency_id="wkl"):
|
|
| 47 |
with gr.Column(scale=1):
|
| 48 |
input_image = gr.Image(type='pil', image_mode='RGBA', label='Frontview')
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
example_folder = os.path.join(os.path.dirname(__file__), "./examples")
|
| 51 |
example_fns = sorted([os.path.join(example_folder, example) for example in os.listdir(example_folder)])
|
| 52 |
gr.Examples(
|
|
@@ -61,24 +73,13 @@ def create_ui(concurrency_id="wkl"):
|
|
| 61 |
with gr.Column(scale=1):
|
| 62 |
# export mesh display
|
| 63 |
output_mesh = gr.Model3D(value=None, label="Mesh Model", show_label=True, height=320, camera_position=(90, 90, 2))
|
|
|
|
| 64 |
output_video = gr.Video(label="Preview", show_label=True, show_share_button=True, height=320, visible=False)
|
| 65 |
|
| 66 |
-
input_processing = gr.Checkbox(
|
| 67 |
-
value=True,
|
| 68 |
-
label='Remove Background',
|
| 69 |
-
visible=True,
|
| 70 |
-
)
|
| 71 |
-
do_refine = gr.Checkbox(value=True, label="Refine Multiview Details", visible=False)
|
| 72 |
-
expansion_weight = gr.Slider(minimum=-1., maximum=1.0, value=0.1, step=0.1, label="Expansion Weight", visible=False)
|
| 73 |
-
init_type = gr.Dropdown(choices=["std", "thin"], label="Mesh Initialization", value="std", visible=False)
|
| 74 |
-
setable_seed = gr.Slider(-1, 1000000000, -1, step=1, visible=True, label="Seed")
|
| 75 |
-
render_video = gr.Checkbox(value=False, visible=False, label="generate video")
|
| 76 |
-
fullrunv2_btn = gr.Button('Generate 3D', variant = "primary", interactive=True)
|
| 77 |
-
|
| 78 |
fullrunv2_btn.click(
|
| 79 |
fn = generate3dv2,
|
| 80 |
inputs=[input_image, input_processing, setable_seed, render_video, do_refine, expansion_weight, init_type],
|
| 81 |
-
outputs=[output_mesh, output_video],
|
| 82 |
concurrency_id=concurrency_id,
|
| 83 |
api_name="generate3dv2",
|
| 84 |
).success(clean_up, api_name=False)
|
|
|
|
| 39 |
new_meshes = Meshes(verts=[vertices], faces=new_meshes.faces_list(), textures=new_meshes.textures)
|
| 40 |
|
| 41 |
ret_mesh, video = save_glb_and_video("/tmp/gradio/generated", new_meshes, with_timestamp=True, dist=3.5, fov_in_degrees=2 / 1.35, cam_type="ortho", export_video=render_video)
|
| 42 |
+
return ret_mesh, video, gr.update(value=ret_mesh, visible=True)
|
| 43 |
|
| 44 |
#######################################
|
| 45 |
def create_ui(concurrency_id="wkl"):
|
|
|
|
| 47 |
with gr.Column(scale=1):
|
| 48 |
input_image = gr.Image(type='pil', image_mode='RGBA', label='Frontview')
|
| 49 |
|
| 50 |
+
input_processing = gr.Checkbox(
|
| 51 |
+
value=True,
|
| 52 |
+
label='Remove Background',
|
| 53 |
+
visible=True,
|
| 54 |
+
)
|
| 55 |
+
do_refine = gr.Checkbox(value=True, label="Refine Multiview Details", visible=False)
|
| 56 |
+
expansion_weight = gr.Slider(minimum=-1., maximum=1.0, value=0.1, step=0.1, label="Expansion Weight", visible=False)
|
| 57 |
+
init_type = gr.Dropdown(choices=["std", "thin"], label="Mesh Initialization", value="std", visible=False)
|
| 58 |
+
setable_seed = gr.Slider(-1, 1000000000, -1, step=1, visible=True, label="Seed")
|
| 59 |
+
render_video = gr.Checkbox(value=False, visible=False, label="generate video")
|
| 60 |
+
fullrunv2_btn = gr.Button('Generate 3D', variant = "primary", interactive=True)
|
| 61 |
+
|
| 62 |
example_folder = os.path.join(os.path.dirname(__file__), "./examples")
|
| 63 |
example_fns = sorted([os.path.join(example_folder, example) for example in os.listdir(example_folder)])
|
| 64 |
gr.Examples(
|
|
|
|
| 73 |
with gr.Column(scale=1):
|
| 74 |
# export mesh display
|
| 75 |
output_mesh = gr.Model3D(value=None, label="Mesh Model", show_label=True, height=320, camera_position=(90, 90, 2))
|
| 76 |
+
download_button = gr.DownloadButton(label="Download 3D", visible=False)
|
| 77 |
output_video = gr.Video(label="Preview", show_label=True, show_share_button=True, height=320, visible=False)
|
| 78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
fullrunv2_btn.click(
|
| 80 |
fn = generate3dv2,
|
| 81 |
inputs=[input_image, input_processing, setable_seed, render_video, do_refine, expansion_weight, init_type],
|
| 82 |
+
outputs=[output_mesh, output_video, download_button],
|
| 83 |
concurrency_id=concurrency_id,
|
| 84 |
api_name="generate3dv2",
|
| 85 |
).success(clean_up, api_name=False)
|