MCPcopy Create free account
hub / github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait / ExpressionEditor

Class ExpressionEditor

nodes.py:833–964  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

831 return (out_imgs,)
832
833class ExpressionEditor:
834 def __init__(self):
835 self.sample_image = None
836 self.src_image = None
837 self.crop_factor = None
838
839 @classmethod
840 def INPUT_TYPES(s):
841 display = "number"
842 #display = "slider"
843 return {
844 "required": {
845
846 "rotate_pitch": ("FLOAT", {"default": 0, "min": -20, "max": 20, "step": 0.5, "display": display}),
847 "rotate_yaw": ("FLOAT", {"default": 0, "min": -20, "max": 20, "step": 0.5, "display": display}),
848 "rotate_roll": ("FLOAT", {"default": 0, "min": -20, "max": 20, "step": 0.5, "display": display}),
849
850 "blink": ("FLOAT", {"default": 0, "min": -20, "max": 5, "step": 0.5, "display": display}),
851 "eyebrow": ("FLOAT", {"default": 0, "min": -10, "max": 15, "step": 0.5, "display": display}),
852 "wink": ("FLOAT", {"default": 0, "min": 0, "max": 25, "step": 0.5, "display": display}),
853 "pupil_x": ("FLOAT", {"default": 0, "min": -15, "max": 15, "step": 0.5, "display": display}),
854 "pupil_y": ("FLOAT", {"default": 0, "min": -15, "max": 15, "step": 0.5, "display": display}),
855 "aaa": ("FLOAT", {"default": 0, "min": -30, "max": 120, "step": 1, "display": display}),
856 "eee": ("FLOAT", {"default": 0, "min": -20, "max": 15, "step": 0.2, "display": display}),
857 "woo": ("FLOAT", {"default": 0, "min": -20, "max": 15, "step": 0.2, "display": display}),
858 "smile": ("FLOAT", {"default": 0, "min": -0.3, "max": 1.3, "step": 0.01, "display": display}),
859
860 "src_ratio": ("FLOAT", {"default": 1, "min": 0, "max": 1, "step": 0.01, "display": display}),
861 "sample_ratio": ("FLOAT", {"default": 1, "min": -0.2, "max": 1.2, "step": 0.01, "display": display}),
862 "sample_parts": (["OnlyExpression", "OnlyRotation", "OnlyMouth", "OnlyEyes", "All"],),
863 "crop_factor": ("FLOAT", {"default": crop_factor_default,
864 "min": crop_factor_min, "max": crop_factor_max, "step": 0.1}),
865 },
866
867 "optional": {"src_image": ("IMAGE",), "motion_link": ("EDITOR_LINK",),
868 "sample_image": ("IMAGE",), "add_exp": ("EXP_DATA",),
869 },
870 }
871
872 RETURN_TYPES = ("IMAGE", "EDITOR_LINK", "EXP_DATA")
873 RETURN_NAMES = ("image", "motion_link", "save_exp")
874
875 FUNCTION = "run"
876
877 OUTPUT_NODE = True
878
879 CATEGORY = "AdvancedLivePortrait"
880
881 # INPUT_IS_LIST = False
882 # OUTPUT_IS_LIST = (False,)
883
884 def run(self, rotate_pitch, rotate_yaw, rotate_roll, blink, eyebrow, wink, pupil_x, pupil_y, aaa, eee, woo, smile,
885 src_ratio, sample_ratio, sample_parts, crop_factor, src_image=None, sample_image=None, motion_link=None, add_exp=None):
886 rotate_yaw = -rotate_yaw
887
888 new_editor_link = None
889 if motion_link != None:
890 self.psi = motion_link[0]

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected