Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import subprocess | |
| import os | |
| # Запуск setup.sh для настройки окружения и source ~/.bashrc | |
| def run_setup_script(): | |
| setup_script_path = os.path.join(os.path.dirname(__file__), "startup.sh") | |
| try: | |
| print("Running setup script...") | |
| # Выполнить setup.sh и source ~/.bashrc в одной сессии bash | |
| subprocess.run( | |
| f"bash -c 'source ~/.bashrc && bash {setup_script_path}'", | |
| shell=True, | |
| check=True, | |
| ) | |
| print("Setup script and environment initialization completed successfully!") | |
| except subprocess.CalledProcessError as e: | |
| print(f"Error while running setup script or sourcing .bashrc: {e}") | |
| exit(1) | |
| # Выполнить setup.sh перед запуском приложения | |
| run_setup_script() | |
| with gr.Blocks(title="3D Garment Generator", theme=gr.themes.Default(text_size="sm")) as demo: | |
| with gr.Row(): | |
| # Левая колонка (ввод параметров) | |
| with gr.Column(scale=1): | |
| gr.Markdown("### Параметры генерации") | |
| pattern_upload = gr.File(label="1. Загрузите лекала (JSON/SVG)", | |
| file_types=[".json", ".svg"]) | |
| with gr.Accordion("3. Параметры генерации", open=False): | |
| gr.Radio(["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf",...], | |
| label="Front Collar", | |
| info="Front collar shape") | |
| gr.Radio(["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf",...], | |
| label="Back Collar", | |
| info="Back collar shape") | |
| with gr.Accordion("4. Render engine", open=False): | |
| gr.Dropdown(["BPY", "Pyrender/Open3D","Maya"], | |
| label="Выберите режим") | |
| # Правая колонка (3D просмотрщик) | |
| with gr.Column(scale=2): | |
| gr.Markdown("### ") | |
| body_upload = gr.File(label="2. Загрузите 3D-модель тела (OBJ/USD/FBX)", | |
| file_types=[".obj", ".usd", ".fbx"]) | |
| gr.Markdown("### 3D Просмотрщик") | |
| viewer = gr.Model3D(label="Результат генерации", | |
| interactive=True) | |
| with gr.Row(): | |
| save_obj_btn = gr.Button("Сохранить OBJ") | |
| save_render_btn = gr.Button("Сохранить рендер") | |
| # Логика обновления | |
| body_upload.change( | |
| fn=lambda file: file.name if file else None, | |
| inputs=body_upload, | |
| outputs=viewer | |
| ) | |
| # Запуск приложения | |
| if __name__ == "__main__": | |
| demo.launch() | |