qbhf2 commited on
Commit
edfaaf0
·
verified ·
1 Parent(s): 8d4f5ae

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -25
app.py CHANGED
@@ -22,42 +22,70 @@ def run_setup_script():
22
  run_setup_script()
23
 
24
 
 
 
25
  with gr.Blocks(title="3D Garment Generator", theme=gr.themes.Default(text_size="sm")) as demo:
 
26
  with gr.Row():
27
- # Левая колонка (ввод параметров)
28
  with gr.Column(scale=1):
29
  gr.Markdown("### Параметры генерации")
30
 
31
- pattern_upload = gr.File(label="1. Загрузите лекала (JSON/SVG)",
32
- file_types=[".json", ".svg"])
33
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  with gr.Accordion("3. Параметры генерации", open=False):
35
- gr.Radio(["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf",...],
36
- label="Front Collar",
37
- info="Front collar shape")
38
- gr.Radio(["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf",...],
39
- label="Back Collar",
40
- info="Back collar shape")
 
 
 
 
 
 
41
 
42
  with gr.Accordion("4. Render engine", open=False):
43
- gr.Dropdown(["BPY", "Pyrender/Open3D","Maya"],
44
- label="Выберите режим")
 
 
 
45
 
46
- with gr.Row():
47
- save_obj_btn = gr.Button("Сохранить OBJ")
 
 
 
 
 
 
48
 
49
- # Правая колонка (3D просмотрщик)
50
- with gr.Column(scale=2):
51
- gr.Markdown("### ")
52
- body_upload = gr.File(label="2. Загрузите 3D-модель тела (OBJ/USD/FBX)",
53
- file_types=[".obj", ".usd", ".fbx"])
54
-
55
- gr.Markdown("### 3D Просмотрщик")
56
- viewer = gr.Model3D(label="Результат генерации",
57
- interactive=True)
58
-
59
  with gr.Row():
60
- save_render_btn = gr.Button("Сохранить рендер")
 
 
 
61
 
62
  # Логика обновления
63
  body_upload.change(
@@ -66,7 +94,18 @@ with gr.Blocks(title="3D Garment Generator", theme=gr.themes.Default(text_size="
66
  outputs=viewer
67
  )
68
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  # Запуск приложения
71
  if __name__ == "__main__":
 
72
  demo.launch()
 
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.Radio(
55
+ ["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf", "SquareNeckHalf",
56
+ "TrapezoidNeckHalf", "CircleArcNeckHalf", "Bezier2NeckHalf"],
57
+ label="Front Collar",
58
+ info="Форма переднего воротника"
59
+ )
60
+ gr.Radio(
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.Dropdown(
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(align="center"):
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(
 
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()