cavargas10 commited on
Commit
d100aeb
verified
1 Parent(s): 6d5ab90

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -44
app.py CHANGED
@@ -176,6 +176,7 @@ def extract_gaussian(state: dict, req: gr.Request) -> Tuple[str, str]:
176
  torch.cuda.empty_cache()
177
  return gaussian_path, gaussian_path
178
 
 
179
  # Gradio Interface
180
  with gr.Blocks() as demo:
181
  gr.Markdown("""
@@ -190,7 +191,6 @@ with gr.Blocks() as demo:
190
  with gr.Column():
191
  # Flux image generation inputs
192
  prompt = gr.Text(label="Prompt", placeholder="Enter your game asset description")
193
-
194
  with gr.Accordion("Generation Settings", open=False):
195
  seed = gr.Slider(0, MAX_SEED, label="Seed", value=42, step=1)
196
  randomize_seed = gr.Checkbox(label="Randomize Seed", value=True)
@@ -199,64 +199,54 @@ with gr.Blocks() as demo:
199
  height = gr.Slider(512, 1024, label="Height", value=1024, step=16)
200
  with gr.Row():
201
  guidance_scale = gr.Slider(0.0, 10.0, label="Guidance Scale", value=3.5, step=0.1)
202
- # num_inference_steps = gr.Slider(1, 50, label="Steps", value=8, step=1)
203
-
204
- with gr.Accordion("3D Generation Settings", open=False):
205
- gr.Markdown("Stage 1: Sparse Structure Generation")
206
- with gr.Row():
207
- ss_guidance_strength = gr.Slider(0.0, 10.0, label="Guidance Strength", value=7.5, step=0.1)
208
- ss_sampling_steps = gr.Slider(1, 50, label="Sampling Steps", value=12, step=1)
209
- gr.Markdown("Stage 2: Structured Latent Generation")
210
- with gr.Row():
211
- slat_guidance_strength = gr.Slider(0.0, 10.0, label="Guidance Strength", value=3.0, step=0.1)
212
- slat_sampling_steps = gr.Slider(1, 50, label="Sampling Steps", value=12, step=1)
213
-
214
- generate_btn = gr.Button("Generate")
215
-
216
- with gr.Accordion("GLB Extraction Settings", open=False):
217
- mesh_simplify = gr.Slider(0.9, 0.98, label="Simplify", value=0.95, step=0.01)
218
- texture_size = gr.Slider(512, 2048, label="Texture Size", value=1024, step=512)
219
 
220
- with gr.Row():
221
- extract_glb_btn = gr.Button("Extract GLB", interactive=False)
222
- extract_gs_btn = gr.Button("Extract Gaussian", interactive=False)
223
 
224
  with gr.Column():
225
  generated_image = gr.Image(label="Generated Asset", type="pil")
226
-
227
- with gr.Column():
228
-
229
  video_output = gr.Video(label="Generated 3D Asset", autoplay=True, loop=True)
230
- model_output = LitModel3D(label="Extracted GLB/Gaussian", exposure=8.0, height=400)
231
-
232
- with gr.Row():
233
- download_glb = gr.DownloadButton(label="Download GLB", interactive=False)
234
- download_gs = gr.DownloadButton(label="Download Gaussian", interactive=False)
235
-
 
 
 
 
 
 
 
236
  output_buf = gr.State()
237
 
238
  # Event handlers
239
  demo.load(start_session)
240
  demo.unload(end_session)
241
 
242
- generate_btn.click(
 
243
  generate_flux_image,
244
  inputs=[prompt, seed, randomize_seed, width, height, guidance_scale],
245
- outputs=[generated_image],
246
  ).then(
 
 
 
 
 
 
247
  image_to_3d,
248
- inputs=[generated_image, seed, ss_guidance_strength, ss_sampling_steps, slat_guidance_strength, slat_sampling_steps],
249
  outputs=[output_buf, video_output],
250
  ).then(
251
  lambda: tuple([gr.Button(interactive=True), gr.Button(interactive=True)]),
252
  outputs=[extract_glb_btn, extract_gs_btn],
253
  )
254
 
255
- video_output.clear(
256
- lambda: tuple([gr.Button(interactive=False), gr.Button(interactive=False)]),
257
- outputs=[extract_glb_btn, extract_gs_btn],
258
- )
259
-
260
  extract_glb_btn.click(
261
  extract_glb,
262
  inputs=[output_buf, mesh_simplify, texture_size],
@@ -265,7 +255,8 @@ with gr.Blocks() as demo:
265
  lambda: gr.Button(interactive=True),
266
  outputs=[download_glb],
267
  )
268
-
 
269
  extract_gs_btn.click(
270
  extract_gaussian,
271
  inputs=[output_buf],
@@ -275,11 +266,6 @@ with gr.Blocks() as demo:
275
  outputs=[download_gs],
276
  )
277
 
278
- model_output.clear(
279
- lambda: gr.Button(interactive=False),
280
- outputs=[download_glb],
281
- )
282
-
283
  # Initialize both pipelines
284
  if __name__ == "__main__":
285
  from diffusers import FluxTransformer2DModel, FluxPipeline, BitsAndBytesConfig, GGUFQuantizationConfig
 
176
  torch.cuda.empty_cache()
177
  return gaussian_path, gaussian_path
178
 
179
+ # Gradio Interface
180
  # Gradio Interface
181
  with gr.Blocks() as demo:
182
  gr.Markdown("""
 
191
  with gr.Column():
192
  # Flux image generation inputs
193
  prompt = gr.Text(label="Prompt", placeholder="Enter your game asset description")
 
194
  with gr.Accordion("Generation Settings", open=False):
195
  seed = gr.Slider(0, MAX_SEED, label="Seed", value=42, step=1)
196
  randomize_seed = gr.Checkbox(label="Randomize Seed", value=True)
 
199
  height = gr.Slider(512, 1024, label="Height", value=1024, step=16)
200
  with gr.Row():
201
  guidance_scale = gr.Slider(0.0, 10.0, label="Guidance Scale", value=3.5, step=0.1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
+ # Botones separados
204
+ generate_image_btn = gr.Button("Generar Imagen")
205
+ generate_video_btn = gr.Button("Generar Video", interactive=False)
206
 
207
  with gr.Column():
208
  generated_image = gr.Image(label="Generated Asset", type="pil")
 
 
 
209
  video_output = gr.Video(label="Generated 3D Asset", autoplay=True, loop=True)
210
+
211
+ model_output = LitModel3D(label="Extracted GLB/Gaussian", exposure=8.0, height=400)
212
+
213
+ with gr.Row():
214
+ extract_glb_btn = gr.Button("Extract GLB", interactive=False)
215
+ extract_gs_btn = gr.Button("Extract Gaussian", interactive=False)
216
+
217
+ with gr.Row():
218
+ download_glb = gr.DownloadButton(label="Download GLB", interactive=False)
219
+ download_gs = gr.DownloadButton(label="Download Gaussian", interactive=False)
220
+
221
+ # Estado para almacenar la imagen generada temporalmente
222
+ temp_image_state = gr.State()
223
  output_buf = gr.State()
224
 
225
  # Event handlers
226
  demo.load(start_session)
227
  demo.unload(end_session)
228
 
229
+ # Generar imagen
230
+ generate_image_btn.click(
231
  generate_flux_image,
232
  inputs=[prompt, seed, randomize_seed, width, height, guidance_scale],
233
+ outputs=[generated_image, temp_image_state], # Almacenar la imagen en el estado temporal
234
  ).then(
235
+ lambda: gr.Button(interactive=True), # Habilitar el bot贸n "Generar Video"
236
+ outputs=[generate_video_btn],
237
+ )
238
+
239
+ # Generar video
240
+ generate_video_btn.click(
241
  image_to_3d,
242
+ inputs=[temp_image_state, seed, ss_guidance_strength, ss_sampling_steps, slat_guidance_strength, slat_sampling_steps],
243
  outputs=[output_buf, video_output],
244
  ).then(
245
  lambda: tuple([gr.Button(interactive=True), gr.Button(interactive=True)]),
246
  outputs=[extract_glb_btn, extract_gs_btn],
247
  )
248
 
249
+ # Extraer GLB
 
 
 
 
250
  extract_glb_btn.click(
251
  extract_glb,
252
  inputs=[output_buf, mesh_simplify, texture_size],
 
255
  lambda: gr.Button(interactive=True),
256
  outputs=[download_glb],
257
  )
258
+
259
+ # Extraer Gaussian
260
  extract_gs_btn.click(
261
  extract_gaussian,
262
  inputs=[output_buf],
 
266
  outputs=[download_gs],
267
  )
268
 
 
 
 
 
 
269
  # Initialize both pipelines
270
  if __name__ == "__main__":
271
  from diffusers import FluxTransformer2DModel, FluxPipeline, BitsAndBytesConfig, GGUFQuantizationConfig