| import gradio as gr |
| from gradio_rerun import Rerun |
| from data.loader import load_simulation_data |
| from visualization.visualizer import visualize_simulation |
|
|
|
|
| def update_simulation_dropdown(file): |
| simulations, descriptions = load_simulation_data(file) |
| return gr.Dropdown( |
| choices=descriptions if descriptions else [], |
| value=None, |
| allow_custom_value=False |
| ) |
|
|
|
|
| def create_app(): |
| with gr.Blocks() as demo: |
| gr.Markdown(""" |
| # Camera Simulation Visualizer |
| Upload a JSON file containing camera simulation data and select a simulation to visualize. |
| """) |
|
|
| with gr.Row(): |
| file_input = gr.File( |
| label="Upload Simulation JSON", |
| file_types=[".json"] |
| ) |
| simulation_dropdown = gr.Dropdown( |
| label="Select Simulation", |
| choices=[], |
| type="index", |
| scale=2 |
| ) |
|
|
| frame_input = gr.Textbox( |
| label="Frame Selection", |
| placeholder="E.g. 1-30, 35, 40-50 (leave empty for all frames)" |
| ) |
|
|
| with gr.Row(): |
| viewer = Rerun(streaming=False) |
|
|
| file_input.change( |
| update_simulation_dropdown, |
| inputs=[file_input], |
| outputs=[simulation_dropdown] |
| ) |
|
|
| simulation_dropdown.change( |
| visualize_simulation, |
| inputs=[file_input, simulation_dropdown, frame_input], |
| outputs=[viewer] |
| ) |
|
|
| frame_input.change( |
| visualize_simulation, |
| inputs=[file_input, simulation_dropdown, frame_input], |
| outputs=[viewer] |
| ) |
|
|
|
|
| return demo |
|
|
|
|
| if __name__ == "__main__": |
| demo = create_app() |
| demo.queue().launch(share=False) |
|
|