Rahatara commited on
Commit
9920d6e
·
verified ·
1 Parent(s): f2b3c31

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -10
app.py CHANGED
@@ -45,30 +45,41 @@ def visualize_dynamic_texture(predefined_section, x_min, x_max, y_min, y_max, z_
45
  train_model = trimesh.load('train.glb', force='mesh')
46
  train_bounds = train_model.bounds
47
 
48
- # Get bounds for slider ranges
49
  x_min_range, x_max_range = train_bounds[0][0], train_bounds[1][0]
50
  y_min_range, y_max_range = train_bounds[0][1], train_bounds[1][1]
51
  z_min_range, z_max_range = train_bounds[0][2], train_bounds[1][2]
52
 
53
- # Create Gradio UI with predefined and custom selection options
54
  with gr.Blocks() as app:
55
- gr.Markdown("### 3D Model Texture Application with Real-Time Visualization")
56
  original_model = gr.Model3D('train.glb', label="Original Model")
57
  modified_model = gr.Model3D(label="Textured Model")
58
 
59
  section_dropdown = gr.Dropdown(choices=['right compartments', 'left compartments', 'freight_body', 'custom'], label="Select Section", value='custom')
60
 
61
- # Add sliders for bounding box selection, visible only when 'custom' is selected
62
  with gr.Row(visible=True) as custom_controls:
63
- x_min_slider = gr.Slider(minimum=x_min_range, maximum=x_max_range, step=0.01, label="X Min", value=x_min_range)
64
- x_max_slider = gr.Slider(minimum=x_min_range, maximum=x_max_range, step=0.01, label="X Max", value=x_max_range)
65
 
66
- y_min_slider = gr.Slider(minimum=y_min_range, maximum=y_max_range, step=0.01, label="Y Min", value=y_min_range)
67
- y_max_slider = gr.Slider(minimum=y_min_range, maximum=y_max_range, step=0.01, label="Y Max", value=y_max_range)
68
 
69
- z_min_slider = gr.Slider(minimum=z_min_range, maximum z_max_range, step=0.01, label="Z Min", value=z_min_range)
70
- z_max_slider = gr.Slider(minimum=z_min_range, maximum z_max_range, step=0.01, label="Z Max", value z_max_range)
71
 
72
  # Toggle visibility of custom controls
73
  def toggle_custom_controls(predefined_section):
74
  return gr.update(visible=(predefined_section == 'custom'))
 
 
 
 
 
 
 
 
 
 
 
 
45
  train_model = trimesh.load('train.glb', force='mesh')
46
  train_bounds = train_model.bounds
47
 
48
+ # Get slider ranges based on train model bounds
49
  x_min_range, x_max_range = train_bounds[0][0], train_bounds[1][0]
50
  y_min_range, y_max_range = train_bounds[0][1], train_bounds[1][1]
51
  z_min_range, z_max_range = train_bounds[0][2], train_bounds[1][2]
52
 
53
+ # Gradio UI for selection and dynamic visualization with live mode
54
  with gr.Blocks() as app:
55
+ gr.Markdown("### 3D Model Texture Application with Live Selection")
56
  original_model = gr.Model3D('train.glb', label="Original Model")
57
  modified_model = gr.Model3D(label="Textured Model")
58
 
59
  section_dropdown = gr.Dropdown(choices=['right compartments', 'left compartments', 'freight_body', 'custom'], label="Select Section", value='custom')
60
 
61
+ # Custom sliders for the bounding box selection
62
  with gr.Row(visible=True) as custom_controls:
63
+ x_min_slider = gr.Slider(minimum=x_min_range, maximum=x_max_range, step=0.01, label="X Min", value=x_min_range, live=True)
64
+ x_max_slider = gr.Slider(minimum=x_min_range, maximum=x_max_range, step=0.01, label="X Max", value=x_max_range, live=True)
65
 
66
+ y_min_slider = gr.Slider(minimum=y_min_range, maximum=y_max_range, step=0.01, label="Y Min", value=y_min_range, live=True)
67
+ y_max_slider = gr.Slider(minimum=y_min_range, maximum=y_max_range, step=0.01, label="Y Max", value=y_max_range, live=True)
68
 
69
+ z_min_slider = gr.Slider(minimum=z_min_range, maximum=z_max_range, step=0.01, label="Z Min", value=z_min_range, live=True)
70
+ z_max_slider = gr.Slider(minimum=z_min_range, maximum=z_max_range, step=0.01, label="Z Max", value=z_max_range, live=True)
71
 
72
  # Toggle visibility of custom controls
73
  def toggle_custom_controls(predefined_section):
74
  return gr.update(visible=(predefined_section == 'custom'))
75
+
76
+ section_dropdown.change(fn=toggle_custom_controls, inputs=section_dropdown, outputs=custom_controls)
77
+
78
+ # Update the model dynamically
79
+ def update_model(predefined_section, x_min, x_max, y_min, y_max, z_min, z_max):
80
+ return visualize_dynamic_texture(predefined_section, x_min, x_max, y_min, y_max, z_min, z_max)
81
+
82
+ # Set live mode changes for each input
83
+ section_dropdown.change(fn=update_model, inputs=[section_dropdown, x_min_slider, x_max_slider, y_min_slider, y_max_slider, z_min_slider, z_max_slider], outputs=modified_model)
84
+
85
+ app.launch()