Spaces:
Runtime error
Runtime error
File size: 2,369 Bytes
5d4bada c0e1d5b cd52499 5d4bada 458c769 5d4bada e9a1e2d 5d4bada 8787f4b 5d4bada e9a1e2d 458c769 e9a1e2d 5d4bada 487c04d e9a1e2d 487c04d e9a1e2d 30e7031 5d4bada ff52719 c68731a ff52719 5d4bada 6f8715e 5d4bada 487c04d ff52719 e9a1e2d ff52719 e9a1e2d 5d4bada ff52719 5d4bada 487c04d |
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import gradio as gr
from collections import defaultdict
import os
from huggingface_hub import HfApi, hf_hub_download
HUB_TOKEN = os.getenv("HUB_TOKEN")
REPO_ID = "simulate-explorer/shapenetcore-gltf"
def get_dataset_classes():
hf_api = HfApi()
info = hf_api.dataset_info(repo_id=REPO_ID, token=HUB_TOKEN)
dataset_classes = defaultdict(list)
for file in info.siblings:
if ".gltf" 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(asset_name):
split_model_path = asset_name.split("/")
asset_path = hf_hub_download(
repo_id=REPO_ID,
filename=split_model_path[1],
subfolder=split_model_path[0],
repo_type="dataset",
use_auth_token=HUB_TOKEN,
)
print(asset_name)
return asset_path
def update_models(class_name):
model_choices = dataset_dict[class_name]
return gr.Dropdown.update(choices=model_choices)
def update_model_list(class_name):
model_choices = dataset_dict[class_name]
return gr.Dropdown.update(choices=model_choices, value=model_choices[0])
def update_asset_path(model_name):
return REPO_ID + "/" + model_name
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])
out3 = gr.Textbox(value=REPO_ID + "/" + out1.value, label="Asset Path")
out2 = gr.Model3D(clear_color=[0.0, 0.0, 0.0, 0.0], label="3D Model")
# Update second dropdown
inp.change(fn=update_model_list, inputs=inp, outputs=out1)
# Update 3D model view
inp.change(fn=update, inputs=out1, outputs=out2)
out1.change(fn=update, inputs=out1, outputs=out2)
# Update path to asset
inp.change(fn=update_asset_path, inputs=out1, outputs=out3)
out1.change(fn=update_asset_path, inputs=out1, outputs=out3)
demo.launch()
|