move setup of paste fields into render(), revert infotext field names back to variable names
parent
e998e5f75c
commit
ea062abcbc
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
scp -r * ryzen3600.int.orangelight.org:stable-diffusion-webui/extensions/sd-webui-animatediff/
|
||||
|
|
@ -27,6 +27,8 @@ class AnimateDiffScript(scripts.Script):
|
|||
self.cn_hacker = None
|
||||
self.prompt_scheduler = None
|
||||
self.hacked = False
|
||||
self.infotext_fields: List[Tuple[gr.components.IOComponent, str]] = []
|
||||
self.paste_field_names: List[str] = []
|
||||
|
||||
|
||||
def title(self):
|
||||
|
|
@ -38,20 +40,12 @@ class AnimateDiffScript(scripts.Script):
|
|||
|
||||
|
||||
def ui(self, is_img2img):
|
||||
ui_group = AnimateDiffUiGroup()
|
||||
unit = ui_group.render(is_img2img, motion_module.get_model_dir())
|
||||
ui_controls = ui_group.params.get_list(is_img2img)
|
||||
|
||||
# Set up controls to be copy-pasted using infotext
|
||||
infotext_fields: List[Tuple[gr.components.IOComponent, str]] = []
|
||||
paste_field_names: List[str] = []
|
||||
for control in ui_controls:
|
||||
control_locator = f"AnimateDiff {control.label}"
|
||||
infotext_fields.append((control, control_locator))
|
||||
paste_field_names.append(control_locator)
|
||||
self.infotext_fields = infotext_fields
|
||||
self.paste_field_names = paste_field_names
|
||||
|
||||
unit = AnimateDiffUiGroup().render(
|
||||
is_img2img,
|
||||
motion_module.get_model_dir(),
|
||||
self.infotext_fields,
|
||||
self.paste_field_names
|
||||
)
|
||||
return (unit,)
|
||||
|
||||
def before_process(self, p: StableDiffusionProcessing, params: AnimateDiffProcess):
|
||||
|
|
|
|||
|
|
@ -80,17 +80,17 @@ class AnimateDiffProcess:
|
|||
|
||||
def get_dict(self, is_img2img: bool):
|
||||
infotext = {
|
||||
"Enable AnimateDiff": self.enable,
|
||||
"Motion module": self.model,
|
||||
"Number of frames": self.video_length,
|
||||
"FPS": self.fps,
|
||||
"Display loop number": self.loop_number,
|
||||
"Closed loop": self.closed_loop,
|
||||
"Context batch size": self.batch_size,
|
||||
"Stride": self.stride,
|
||||
"Overlap": self.overlap,
|
||||
"Frame Interpolation": self.interp,
|
||||
"Interp X": self.interp_x,
|
||||
"enable": self.enable,
|
||||
"model": self.model,
|
||||
"video_length": self.video_length,
|
||||
"fps": self.fps,
|
||||
"loop_number": self.loop_number,
|
||||
"closed_loop": self.closed_loop,
|
||||
"batch_size": self.batch_size,
|
||||
"stride": self.stride,
|
||||
"overlap": self.overlap,
|
||||
"interp": self.interp,
|
||||
"interp_x": self.interp_x,
|
||||
}
|
||||
if self.request_id:
|
||||
infotext['request_id'] = self.request_id
|
||||
|
|
@ -98,10 +98,10 @@ class AnimateDiffProcess:
|
|||
infotext['mm_hash'] = motion_module.mm.mm_hash[:8]
|
||||
if is_img2img:
|
||||
infotext.update({
|
||||
"Latent power": self.latent_power,
|
||||
"Latent scale": self.latent_scale,
|
||||
"Optional latent power for last frame": self.latent_power_last,
|
||||
"Optional latent scale for last frame": self.latent_scale_last,
|
||||
"latent_power": self.latent_power,
|
||||
"latent_scale": self.latent_scale,
|
||||
"latent_power_last": self.latent_power_last,
|
||||
"latent_scale_last": self.latent_scale_last,
|
||||
})
|
||||
infotext_str = ', '.join(f"{k}: {v}" for k, v in infotext.items())
|
||||
return infotext_str
|
||||
|
|
@ -141,7 +141,13 @@ class AnimateDiffUiGroup:
|
|||
self.params = AnimateDiffProcess()
|
||||
|
||||
|
||||
def render(self, is_img2img: bool, model_dir: str):
|
||||
def render(
|
||||
self,
|
||||
is_img2img: bool,
|
||||
model_dir: str,
|
||||
infotext_fields,
|
||||
paste_field_names
|
||||
):
|
||||
if not os.path.isdir(model_dir):
|
||||
os.mkdir(model_dir)
|
||||
elemid_prefix = "img2img-ad-" if is_img2img else "txt2img-ad-"
|
||||
|
|
@ -313,6 +319,19 @@ class AnimateDiffUiGroup:
|
|||
remove = gr.Button(value="Remove motion module from any memory")
|
||||
unload.click(fn=motion_module.unload)
|
||||
remove.click(fn=motion_module.remove)
|
||||
|
||||
# Set up controls to be copy-pasted using infotext
|
||||
remove = ["format", "request_id", "video_source", "video_path", "last_frame"]
|
||||
if not is_img2img:
|
||||
remove.extend(["latent_power", "latent_power_last", "latent_scale", "latent_scale_last"])
|
||||
fields = [
|
||||
field
|
||||
for field in dir(self.params)
|
||||
if field not in remove and not callable(getattr(self.params, field)) and not field.startswith("__")
|
||||
]
|
||||
infotext_fields.extend((getattr(self.params, field), f"AnimateDiff {field}") for field in fields)
|
||||
paste_field_names.extend(f"AnimateDiff {field}" for field in fields)
|
||||
|
||||
return self.register_unit(is_img2img)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue