qbhf2 commited on
Commit
658e8e1
·
verified ·
1 Parent(s): 6a548f9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -78
app.py CHANGED
@@ -1,111 +1,84 @@
1
  import gradio as gr
2
- import subprocess
3
- import os
4
 
5
- # Запуск setup.sh для настройки окружения и source ~/.bashrc
6
- def run_setup_script():
7
- setup_script_path = os.path.join(os.path.dirname(__file__), "startup.sh")
8
- try:
9
- print("Running setup script...")
10
- # Выполнить setup.sh и source ~/.bashrc в одной сессии bash
11
- subprocess.run(
12
- f"bash -c 'source ~/.bashrc && bash {setup_script_path}'",
13
- shell=True,
14
- check=True,
15
- )
16
- print("Setup script and environment initialization completed successfully!")
17
- except subprocess.CalledProcessError as e:
18
- print(f"Error while running setup script or sourcing .bashrc: {e}")
19
- exit(1)
20
-
21
- # Выполнить setup.sh перед запуском приложения
22
- run_setup_script()
23
-
24
-
25
- import gradio as gr
26
 
27
  with gr.Blocks(title="3D Garment Generator", theme=gr.themes.Default(text_size="sm")) as demo:
28
- # Верхний блок с загрузкой файлов
 
 
 
 
29
  with gr.Row():
30
  with gr.Column(scale=1):
31
  gr.Markdown("### Параметры генерации")
32
 
33
- # Ряд для загрузки файлов
34
  with gr.Row():
35
- with gr.Column(min_width=300,):
36
- pattern_upload = gr.File(
37
- label="1. Загрузите лекала (JSON/SVG)",
38
- file_types=[".json", ".svg"],
39
- elem_classes="upload-box"
40
- )
41
-
42
- with gr.Column(min_width=300):
43
- body_upload = gr.File(
44
- label="2. Загрузите 3D-модель тела (OBJ/USD/FBX)",
45
- file_types=[".obj", ".usd", ".fbx"],
46
- elem_classes="upload-box"
47
- )
48
 
49
- # Основной контент
50
  with gr.Row():
51
- # Левая панель параметров
52
  with gr.Column(scale=1):
53
  with gr.Accordion("3. Параметры генерации", open=False):
54
- gr.Dropdown(
55
- ["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf", "SquareNeckHalf",
56
- "TrapezoidNeckHalf", "CircleArcNeckHalf", "Bezier2NeckHalf"],
57
  label="Front Collar",
58
- info="Форма переднего воротника"
 
 
59
  )
60
- gr.Dropdown(
61
- ["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf", "SquareNeckHalf",
62
- "TrapezoidNeckHalf", "CircleArcNeckHalf", "Bezier2NeckHalf"],
63
  label="Back Collar",
64
- info="Форма заднего воротника"
 
 
65
  )
66
 
67
  with gr.Accordion("4. Render engine", open=False):
68
- gr.Radio(
69
- ["BPY", "Pyrender/Open3D", "Maya"],
70
- label="Выберите рендер движок",
71
  value="Pyrender/Open3D"
72
  )
73
 
74
- # Правая панель 3D просмотра
75
  with gr.Column(scale=3):
76
- # Основной 3D вьювер
77
- viewer = gr.Model3D(
78
- label="3D Просмотрщик",
79
- interactive=True,
80
- height=600
81
- )
82
-
83
- # Панель управления сохранением
84
  with gr.Row():
85
- with gr.Column(show_progress=True):
86
- with gr.Row():
87
- save_render_btn = gr.Button("Сохранить рендер", variant="primary")
88
- save_obj_btn = gr.Button("Сохранить OBJ", variant="secondary")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
- # Логика обновления
91
  body_upload.change(
92
- fn=lambda file: file.name if file else None,
93
  inputs=body_upload,
94
  outputs=viewer
95
  )
96
 
97
- # Стилизация
98
- demo.css = """
99
- .upload-box {
100
- margin: 1rem 0;
101
- padding: 1rem;
102
- border: 2px dashed #e0e0e0;
103
- border-radius: 8px;
104
- }
105
- """
106
-
107
-
108
- # Запуск приложения
109
  if __name__ == "__main__":
110
  run_setup_script()
111
  demo.launch()
 
 
 
1
  import gradio as gr
2
+ from custom_utils.setup_env import run_setup_script
 
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  with gr.Blocks(title="3D Garment Generator", theme=gr.themes.Default(text_size="sm")) as demo:
6
+ # Состояния для хранения выбранных значений
7
+ front_collar = gr.State()
8
+ back_collar = gr.State()
9
+ render_engine = gr.State()
10
+
11
  with gr.Row():
12
  with gr.Column(scale=1):
13
  gr.Markdown("### Параметры генерации")
14
 
 
15
  with gr.Row():
16
+ pattern_upload = gr.File(
17
+ label="1. Лекала (JSON/SVG)",
18
+ file_types=[".json", ".svg"]
19
+ )
20
+ body_upload = gr.File(
21
+ label="2. Тело (OBJ/USD/FBX)",
22
+ file_types=[".obj", ".usd", ".fbx"]
23
+ )
 
 
 
 
 
24
 
 
25
  with gr.Row():
 
26
  with gr.Column(scale=1):
27
  with gr.Accordion("3. Параметры генерации", open=False):
28
+ front_dropdown = gr.Dropdown(
 
 
29
  label="Front Collar",
30
+ choices=["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf", "SquareNeckHalf",
31
+ "TrapezoidNeckHalf", "CircleArcNeckHalf", "Bezier2NeckHalf"],
32
+ interactive=True
33
  )
34
+ back_dropdown = gr.Dropdown(
 
 
35
  label="Back Collar",
36
+ choices=["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf", "SquareNeckHalf",
37
+ "TrapezoidNeckHalf", "CircleArcNeckHalf", "Bezier2NeckHalf"],
38
+ interactive=True
39
  )
40
 
41
  with gr.Accordion("4. Render engine", open=False):
42
+ render_radio = gr.Radio(
43
+ label="Движок рендеринга",
44
+ choices=["BPY", "Pyrender/Open3D", "Maya"],
45
  value="Pyrender/Open3D"
46
  )
47
 
 
48
  with gr.Column(scale=3):
49
+ viewer = gr.Model3D(label="3D Просмотрщик", interactive=True)
50
+
 
 
 
 
 
 
51
  with gr.Row():
52
+ save_render_btn = gr.Button("Сохранить рендер")
53
+ save_obj_btn = gr.Button("Сохранить OBJ")
54
+
55
+ # Обработчики событий
56
+ front_dropdown.change(
57
+ lambda x: x,
58
+ inputs=front_dropdown,
59
+ outputs=front_collar
60
+ )
61
+
62
+ back_dropdown.change(
63
+ lambda x: x,
64
+ inputs=back_dropdown,
65
+ outputs=back_collar
66
+ )
67
+
68
+ render_radio.change(
69
+ lambda x: x,
70
+ inputs=render_radio,
71
+ outputs=render_engine
72
+ )
73
 
 
74
  body_upload.change(
75
+ lambda file: file.name if file else None,
76
  inputs=body_upload,
77
  outputs=viewer
78
  )
79
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  if __name__ == "__main__":
81
  run_setup_script()
82
  demo.launch()
83
+
84
+