Aduc-sdr commited on
Commit
e06f2f9
·
verified ·
1 Parent(s): 238793e

Update engineers/deformes3D.py

Browse files
Files changed (1) hide show
  1. engineers/deformes3D.py +18 -22
engineers/deformes3D.py CHANGED
@@ -29,7 +29,6 @@ logger = logging.getLogger(__name__)
29
  class Deformes3DEngine:
30
  """
31
  ADUC Specialist for static image (keyframe) generation.
32
- Primary engine is FLUX, with an experimental LTX enrichment step.
33
  """
34
  def __init__(self, workspace_dir):
35
  self.workspace_dir = workspace_dir
@@ -38,7 +37,7 @@ class Deformes3DEngine:
38
 
39
  def _generate_single_keyframe(self, prompt: str, reference_images: list[Image.Image], output_filename: str, width: int, height: int, callback: callable = None) -> str:
40
  """
41
- Low-level function that generates a single image using the FLUX helper.
42
  """
43
  logger.info(f"Generating keyframe '{output_filename}' with prompt: '{prompt}'")
44
  generated_image = self.image_generation_helper.generate_image(
@@ -52,9 +51,7 @@ class Deformes3DEngine:
52
 
53
  def generate_keyframes_from_storyboard(self, storyboard: list, initial_ref_path: str, global_prompt: str, keyframe_resolution: int, general_ref_paths: list, progress_callback_factory: callable = None):
54
  """
55
- Orchestrates the generation of all keyframes. For each keyframe, first
56
- generates a version with FLUX, and then an "enriched" version with LTX
57
- for direct comparison.
58
  """
59
  current_base_image_path = initial_ref_path
60
  previous_prompt = "N/A (initial reference image)"
@@ -63,7 +60,7 @@ class Deformes3DEngine:
63
  target_resolution_tuple = (width, height)
64
 
65
  num_keyframes_to_generate = len(storyboard) - 1
66
- logger.info(f"IMAGE SPECIALIST: Received order to generate {num_keyframes_to_generate} keyframes (FLUX + LTX versions).")
67
 
68
  for i in range(num_keyframes_to_generate):
69
  scene_index = i + 1
@@ -74,26 +71,26 @@ class Deformes3DEngine:
74
  logger.info(f"--> Generating Keyframe {scene_index}/{num_keyframes_to_generate}...")
75
 
76
  # --- STEP A: Generate with FLUX (Primary Method) ---
77
- logger.info(f" - Step A: Generating with FLUX...")
78
 
79
- flux_prompt = deformes2d_thinker_singleton.get_anticipatory_keyframe_prompt(
80
  global_prompt=global_prompt, scene_history=previous_prompt,
81
  current_scene_desc=current_scene, future_scene_desc=future_scene,
82
  last_image_path=current_base_image_path, fixed_ref_paths=general_ref_paths
83
  )
84
 
85
- flux_ref_paths = list(set([current_base_image_path] + general_ref_paths))
86
- flux_ref_images = [Image.open(p) for p in flux_ref_paths]
87
 
88
- flux_keyframe_path = self._generate_single_keyframe(
89
- prompt=flux_prompt, reference_images=flux_ref_images,
90
- output_filename=f"keyframe_{scene_index}_flux.png", width=width, height=height,
91
- callback=progress_callback_flux
92
- )
93
- final_keyframes_gallery.append(flux_keyframe_path)
94
 
95
  # --- STEP B: LTX Enrichment Experiment ---
96
- logger.info(f" - Step B: Generating enrichment with LTX...")
97
 
98
  ltx_context_paths = []
99
  context_paths = []
@@ -102,7 +99,6 @@ class Deformes3DEngine:
102
  ltx_context_paths = list(reversed(context_paths))
103
  logger.info(f" - LTX Context Order (Reversed): {[os.path.basename(p) for p in ltx_context_paths]}")
104
 
105
-
106
  ltx_conditioning_items = []
107
 
108
  weight = 0.6
@@ -121,7 +117,7 @@ class Deformes3DEngine:
121
  generated_latents, _ = ltx_manager_singleton.generate_latent_fragment(
122
  height=height, width=width,
123
  conditioning_items_data=ltx_conditioning_items,
124
- motion_prompt=flux_prompt,
125
  video_total_frames=48,
126
  video_fps=24,
127
  **ltx_base_params
@@ -136,10 +132,10 @@ class Deformes3DEngine:
136
  final_keyframes_gallery.append(ltx_keyframe_path)
137
 
138
  # Use the FLUX keyframe as the base for the next iteration to maintain the primary narrative path
139
- current_base_image_path = flux_keyframe_path
140
- previous_prompt = flux_prompt
141
 
142
- logger.info(f"IMAGE SPECIALIST: Generation of all keyframe versions (FLUX + LTX) complete.")
143
  return final_keyframes_gallery
144
 
145
  # --- HELPER FUNCTIONS ---
 
29
  class Deformes3DEngine:
30
  """
31
  ADUC Specialist for static image (keyframe) generation.
 
32
  """
33
  def __init__(self, workspace_dir):
34
  self.workspace_dir = workspace_dir
 
37
 
38
  def _generate_single_keyframe(self, prompt: str, reference_images: list[Image.Image], output_filename: str, width: int, height: int, callback: callable = None) -> str:
39
  """
40
+ Low-level function that generates a single image using the LTX helper.
41
  """
42
  logger.info(f"Generating keyframe '{output_filename}' with prompt: '{prompt}'")
43
  generated_image = self.image_generation_helper.generate_image(
 
51
 
52
  def generate_keyframes_from_storyboard(self, storyboard: list, initial_ref_path: str, global_prompt: str, keyframe_resolution: int, general_ref_paths: list, progress_callback_factory: callable = None):
53
  """
54
+ Orchestrates the generation of all keyframes.
 
 
55
  """
56
  current_base_image_path = initial_ref_path
57
  previous_prompt = "N/A (initial reference image)"
 
60
  target_resolution_tuple = (width, height)
61
 
62
  num_keyframes_to_generate = len(storyboard) - 1
63
+ logger.info(f"IMAGE SPECIALIST: Received order to generate {num_keyframes_to_generate} keyframes (LTX versions).")
64
 
65
  for i in range(num_keyframes_to_generate):
66
  scene_index = i + 1
 
71
  logger.info(f"--> Generating Keyframe {scene_index}/{num_keyframes_to_generate}...")
72
 
73
  # --- STEP A: Generate with FLUX (Primary Method) ---
74
+ logger.info(f" - Step A: Generating with keyframe...")
75
 
76
+ img_prompt = deformes2d_thinker_singleton.get_anticipatory_keyframe_prompt(
77
  global_prompt=global_prompt, scene_history=previous_prompt,
78
  current_scene_desc=current_scene, future_scene_desc=future_scene,
79
  last_image_path=current_base_image_path, fixed_ref_paths=general_ref_paths
80
  )
81
 
82
+ #flux_ref_paths = list(set([current_base_image_path] + general_ref_paths))
83
+ #flux_ref_images = [Image.open(p) for p in flux_ref_paths]
84
 
85
+ #flux_keyframe_path = self._generate_single_keyframe(
86
+ # prompt=img_prompt, reference_images=flux_ref_images,
87
+ # output_filename=f"keyframe_{scene_index}_flux.png", width=width, height=height,
88
+ # callback=progress_callback_flux
89
+ #)
90
+ #final_keyframes_gallery.append(flux_keyframe_path)
91
 
92
  # --- STEP B: LTX Enrichment Experiment ---
93
+ #logger.info(f" - Step B: Generating enrichment with LTX...")
94
 
95
  ltx_context_paths = []
96
  context_paths = []
 
99
  ltx_context_paths = list(reversed(context_paths))
100
  logger.info(f" - LTX Context Order (Reversed): {[os.path.basename(p) for p in ltx_context_paths]}")
101
 
 
102
  ltx_conditioning_items = []
103
 
104
  weight = 0.6
 
117
  generated_latents, _ = ltx_manager_singleton.generate_latent_fragment(
118
  height=height, width=width,
119
  conditioning_items_data=ltx_conditioning_items,
120
+ motion_prompt=img_prompt,
121
  video_total_frames=48,
122
  video_fps=24,
123
  **ltx_base_params
 
132
  final_keyframes_gallery.append(ltx_keyframe_path)
133
 
134
  # Use the FLUX keyframe as the base for the next iteration to maintain the primary narrative path
135
+ current_base_image_path = ltx_keyframe_path #flux_keyframe_path
136
+ previous_prompt = img_prompt
137
 
138
+ logger.info(f"IMAGE SPECIALIST: Generation of all keyframe versions (LTX) complete.")
139
  return final_keyframes_gallery
140
 
141
  # --- HELPER FUNCTIONS ---