65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
# 🧪Inject I2V into AnimateDiff Model 🎭🅐🅓②
|
||
## Documentation
|
||
- Class name: ADE_InjectI2VIntoAnimateDiffModel
|
||
- Category: Animate Diff 🎭🅐🅓/② Gen2 nodes ②/AnimateLCM-I2V/🧪experimental
|
||
- Output node: False
|
||
- Repo Ref: https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git
|
||
|
||
此节点旨在将I2V(Image to Video)模型集成到AnimateDiff框架中,通过引入运动模型增强其功能。它作为桥梁,丰富AnimateDiff的动画过程,增加更多的运动动态,从而实现更复杂和细致的动画输出。
|
||
|
||
## Input types
|
||
### Required
|
||
- model_name
|
||
- 指定要加载的运动模型的名称,在确定动画的运动动态方面起着至关重要的作用。
|
||
- Comfy dtype: COMBO[STRING]
|
||
- Python dtype: str
|
||
- motion_model
|
||
- 表示要注入到AnimateDiff模型中的运动模型对象,对于在动画过程中应用特定的运动动态至关重要。
|
||
- Comfy dtype: MOTION_MODEL_ADE
|
||
- Python dtype: MotionModelPatcher
|
||
|
||
### Optional
|
||
- ad_settings
|
||
- AnimateDiff过程的可选设置,允许自定义动画的外观和行为。
|
||
- Comfy dtype: AD_SETTINGS
|
||
- Python dtype: AnimateDiffSettings
|
||
|
||
## Output types
|
||
- MOTION_MODEL
|
||
- Comfy dtype: MOTION_MODEL_ADE
|
||
- 注入了I2V功能的增强版AnimateDiff模型,准备好用于动画任务。
|
||
- Python dtype: MotionModelPatcher
|
||
|
||
## Usage tips
|
||
- Infra type: CPU
|
||
- Common nodes: unknown
|
||
|
||
## Source code
|
||
```python
|
||
class LoadAnimateDiffAndInjectI2VNode:
|
||
@classmethod
|
||
def INPUT_TYPES(s):
|
||
return {
|
||
"required": {
|
||
"model_name": (get_available_motion_models(),),
|
||
"motion_model": ("MOTION_MODEL_ADE",),
|
||
},
|
||
"optional": {
|
||
"ad_settings": ("AD_SETTINGS",),
|
||
}
|
||
}
|
||
|
||
RETURN_TYPES = ("MOTION_MODEL_ADE",)
|
||
RETURN_NAMES = ("MOTION_MODEL",)
|
||
|
||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/AnimateLCM-I2V/🧪experimental"
|
||
FUNCTION = "load_motion_model"
|
||
|
||
def load_motion_model(self, model_name: str, motion_model: MotionModelPatcher, ad_settings: AnimateDiffSettings=None):
|
||
# make sure model w/ encoder actually has encoder
|
||
if motion_model.model.img_encoder is None:
|
||
raise Exception("Passed-in motion model was expected to have an img_encoder, but did not.")
|
||
# load motion module and motion settings, if included
|
||
loaded_motion_model = load_motion_module_gen2(model_name=model_name, motion_model_settings=ad_settings)
|
||
inject_img_encoder_into_model(motion_model=loaded_motion_model, w_encoder=motion_model)
|
||
return (loaded_motion_model,) |