import gradio as gr def load_data(query_params, model_3d, image_slider): # set default values or pull from querystring model_url = query_params.get("3d", None) if query_params else None hm_url = query_params.get("hm", None) if query_params else None img_url = query_params.get("image", None) if query_params else None slider_images = [] if hm_url: slider_images.append(hm_url) if img_url: slider_images.append(img_url) if not slider_images: slider_images = ["images/beeuty_545jlbh1_v12_alpha96_300dpi.png", "images/beeuty_545jlbh1_v12_alpha96_300dpi_depth.png"] if not model_url: model_url = "models/beeuty_545jlbh1_300dpi.glb" return model_url, slider_images gr.set_static_paths(paths=["images/", "models/", "assets/"]) with gr.Blocks(css_paths="style_20250314.css", title="3D viewer", theme='Surn/Beeuty',delete_cache=(21600,86400)) as viewer3d: gr.Markdown("# 3D Model Viewer") with gr.Row(): model_3d = gr.Model3D( label="3D Model", value=None, height=400 ) image_slider = gr.ImageSlider( label="Images", value=None, height=400 ) with gr.Row(): upload_btn = gr.UploadButton( "Upload", file_types=[".glb", ".gltf", ".obj", ".png", ".jpg", ".ply"] ) # Use JavaScript to pass the query parameters to your callback. viewer3d.load( load_data, inputs=[gr.JSON(), model_3d, image_slider], outputs=[model_3d, image_slider], js="""() => { const params = Object.fromEntries(new URLSearchParams(window.location.search)); return params; }""" ) if __name__ == "__main__": viewer3d.launch( allowed_paths=["assets", "assets/", "./assets", "images/", "./images", 'e:/TMP', 'models/'], favicon_path="./assets/favicon.ico" )