File size: 1,514 Bytes
5d4bada
 
 
 
 
 
 
 
 
 
 
 
 
 
64080a6
5d4bada
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import time
import gradio as gr
import os

import numpy as np
from PIL import Image
import math
from collections import defaultdict
import os
from huggingface_hub import HfApi


def get_dataset_classes():
    hf_api = HfApi()
    info = hf_api.dataset_info(repo_id="simenv-explorer/shapenetcore-glb")
    dataset_classes = defaultdict(list)

    for file in info.siblings:
        if ".glb" in file.rfilename:
            class_name = file.rfilename.split("/")[0]
            dataset_classes[class_name].append(file.rfilename)

    print(dataset_classes)
    return dataset_classes


dataset_dict = get_dataset_classes()
dataset_classes = list(dataset_dict.keys())
default_models = dataset_dict[dataset_classes[0]]


def load_mesh(mesh_file_name):
    return mesh_file_name, mesh_file_name


def update(model_name):
    # wget the glb file from the datasets repo
    print(model_name)
    return f"{model_name}/0.glb"


def update_model_list(choice_class):
    print(f"inp1 changed {choice_class}")
    return {"choices": dataset_dict[choice_class]}


with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            inp = gr.Dropdown(choices=dataset_classes, interactive=True, label="3D Model Class", value=dataset_classes[0])
            out1 = gr.Dropdown(choices=default_models, interactive=True, label="3D Model", value=default_models[0])
        out2 = gr.Model3D(clear_color=[0.0, 0.0, 0.0, 0.0],  label="3D Model")
    
    inp.change(fn=update, inputs=inp, outputs=out2)


demo.launch()