GarmentCode / app.py
qbhf2's picture
Update app.py
658e8e1 verified
raw
history blame
2.83 kB
import gradio as gr
from custom_utils.setup_env import run_setup_script
with gr.Blocks(title="3D Garment Generator", theme=gr.themes.Default(text_size="sm")) as demo:
# Состояния для хранения выбранных значений
front_collar = gr.State()
back_collar = gr.State()
render_engine = gr.State()
with gr.Row():
with gr.Column(scale=1):
gr.Markdown("### Параметры генерации")
with gr.Row():
pattern_upload = gr.File(
label="1. Лекала (JSON/SVG)",
file_types=[".json", ".svg"]
)
body_upload = gr.File(
label="2. Тело (OBJ/USD/FBX)",
file_types=[".obj", ".usd", ".fbx"]
)
with gr.Row():
with gr.Column(scale=1):
with gr.Accordion("3. Параметры генерации", open=False):
front_dropdown = gr.Dropdown(
label="Front Collar",
choices=["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf", "SquareNeckHalf",
"TrapezoidNeckHalf", "CircleArcNeckHalf", "Bezier2NeckHalf"],
interactive=True
)
back_dropdown = gr.Dropdown(
label="Back Collar",
choices=["CircleNeckHalf", "CurvyNeckHalf", "VNeckHalf", "SquareNeckHalf",
"TrapezoidNeckHalf", "CircleArcNeckHalf", "Bezier2NeckHalf"],
interactive=True
)
with gr.Accordion("4. Render engine", open=False):
render_radio = gr.Radio(
label="Движок рендеринга",
choices=["BPY", "Pyrender/Open3D", "Maya"],
value="Pyrender/Open3D"
)
with gr.Column(scale=3):
viewer = gr.Model3D(label="3D Просмотрщик", interactive=True)
with gr.Row():
save_render_btn = gr.Button("Сохранить рендер")
save_obj_btn = gr.Button("Сохранить OBJ")
# Обработчики событий
front_dropdown.change(
lambda x: x,
inputs=front_dropdown,
outputs=front_collar
)
back_dropdown.change(
lambda x: x,
inputs=back_dropdown,
outputs=back_collar
)
render_radio.change(
lambda x: x,
inputs=render_radio,
outputs=render_engine
)
body_upload.change(
lambda file: file.name if file else None,
inputs=body_upload,
outputs=viewer
)
if __name__ == "__main__":
run_setup_script()
demo.launch()