150 lines
7.1 KiB
Python
150 lines
7.1 KiB
Python
from ..utils import runwareUtils as rwUtils
|
|
|
|
|
|
class RunwarePixverseProviderSettings:
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"useEffect": ("BOOLEAN", {
|
|
"tooltip": "Enable to include effect parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"effect": (["none", "boom drop", "zoom in", "zoom out", "pan left", "pan right", "tilt up", "tilt down"], {
|
|
"default": "none",
|
|
"tooltip": "Camera effect for Pixverse videos. Only used when 'Use Effect' is enabled.",
|
|
}),
|
|
"useCameraMovement": ("BOOLEAN", {
|
|
"tooltip": "Enable to include cameraMovement parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"cameraMovement": (["none", "static", "dynamic", "smooth"], {
|
|
"default": "none",
|
|
"tooltip": "Camera movement style for Pixverse videos. Only used when 'Use Camera Movement' is enabled.",
|
|
}),
|
|
"useStyle": ("BOOLEAN", {
|
|
"tooltip": "Enable to include style parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"style": (["anime", "realistic", "cinematic", "artistic", "vintage", "modern"], {
|
|
"default": "realistic",
|
|
"tooltip": "Visual style for Pixverse videos. Only used when 'Use Style' is enabled.",
|
|
}),
|
|
"useMotionMode": ("BOOLEAN", {
|
|
"tooltip": "Enable to include motionMode parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"motionMode": (["normal", "slow", "fast", "smooth", "dynamic"], {
|
|
"default": "normal",
|
|
"tooltip": "Motion mode for Pixverse videos. Only used when 'Use Motion Mode' is enabled.",
|
|
}),
|
|
"useSoundEffectSwitch": ("BOOLEAN", {
|
|
"tooltip": "Enable to include soundEffectSwitch parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"soundEffectSwitch": ("BOOLEAN", {
|
|
"default": False,
|
|
"tooltip": "Enable or disable sound effects for Pixverse videos. Only used when 'Use Sound Effect Switch' is enabled.",
|
|
"label_on": "Enabled",
|
|
"label_off": "Disabled",
|
|
}),
|
|
"useSoundEffectContent": ("BOOLEAN", {
|
|
"tooltip": "Enable to include soundEffectContent parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"soundEffectContent": ("STRING", {
|
|
"multiline": True,
|
|
"placeholder": "Sound effect description or content",
|
|
"tooltip": "Sound effect content for Pixverse videos. Only used when 'Use Sound Effect Content' is enabled.",
|
|
}),
|
|
"useAudio": ("BOOLEAN", {
|
|
"tooltip": "Enable to include audio parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"audio": ("BOOLEAN", {
|
|
"tooltip": "Controls audio generation for Pixverse videos. Only used when 'Use Audio' is enabled.",
|
|
"default": False,
|
|
}),
|
|
"useMultiClip": ("BOOLEAN", {
|
|
"tooltip": "Enable to include multiClip parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"multiClip": ("BOOLEAN", {
|
|
"tooltip": "Multi-clip (Multi-shot) for Pixverse videos. Only used when 'Use Multi Clip' is enabled.",
|
|
"default": False,
|
|
}),
|
|
"useThinking": ("BOOLEAN", {
|
|
"tooltip": "Enable to include thinking parameter in API request.",
|
|
"default": False,
|
|
}),
|
|
"thinking": (["enabled", "disabled", "auto"], {
|
|
"tooltip": "Thinking option for Pixverse videos. Only used when 'Use Thinking' is enabled.",
|
|
"default": "auto",
|
|
}),
|
|
}
|
|
}
|
|
|
|
DESCRIPTION = "Configure Pixverse-specific settings for video generation with effect, style, motion, and sound options."
|
|
FUNCTION = "create_pixverse_settings"
|
|
RETURN_TYPES = ("RUNWAREPROVIDERSETTINGS",)
|
|
RETURN_NAMES = ("Provider Settings",)
|
|
CATEGORY = "Runware"
|
|
|
|
def create_pixverse_settings(self, **kwargs):
|
|
useEffect = kwargs.get("useEffect", False)
|
|
effect = kwargs.get("effect", "none")
|
|
useCameraMovement = kwargs.get("useCameraMovement", False)
|
|
cameraMovement = kwargs.get("cameraMovement", "none")
|
|
useStyle = kwargs.get("useStyle", False)
|
|
style = kwargs.get("style", "realistic")
|
|
useMotionMode = kwargs.get("useMotionMode", False)
|
|
motionMode = kwargs.get("motionMode", "normal")
|
|
useSoundEffectSwitch = kwargs.get("useSoundEffectSwitch", False)
|
|
soundEffectSwitch = kwargs.get("soundEffectSwitch", False)
|
|
useSoundEffectContent = kwargs.get("useSoundEffectContent", False)
|
|
soundEffectContent = kwargs.get("soundEffectContent", "")
|
|
useAudio = kwargs.get("useAudio", False)
|
|
audio = kwargs.get("audio", False)
|
|
useMultiClip = kwargs.get("useMultiClip", False)
|
|
multiClip = kwargs.get("multiClip", False)
|
|
useThinking = kwargs.get("useThinking", False)
|
|
thinking = kwargs.get("thinking", "auto")
|
|
|
|
# Create Pixverse settings dictionary - only include parameters if their use flags are enabled
|
|
pixverse_settings = {}
|
|
|
|
if useEffect:
|
|
pixverse_settings["effect"] = effect
|
|
if useCameraMovement:
|
|
pixverse_settings["cameraMovement"] = cameraMovement
|
|
if useStyle:
|
|
pixverse_settings["style"] = style
|
|
if useMotionMode:
|
|
pixverse_settings["motionMode"] = motionMode
|
|
if useSoundEffectSwitch:
|
|
pixverse_settings["soundEffectSwitch"] = soundEffectSwitch
|
|
if useSoundEffectContent and soundEffectContent and soundEffectContent.strip():
|
|
pixverse_settings["soundEffectContent"] = soundEffectContent
|
|
if useAudio:
|
|
pixverse_settings["audio"] = audio
|
|
if useMultiClip:
|
|
pixverse_settings["multiClip"] = multiClip
|
|
if useThinking:
|
|
pixverse_settings["thinking"] = thinking
|
|
|
|
# Remove "none" values to keep the settings clean
|
|
pixverse_settings = {k: v for k, v in pixverse_settings.items() if v != "none" and v is not None}
|
|
|
|
print(f"[Pixverse Provider Settings] Created settings: {pixverse_settings}")
|
|
return (pixverse_settings,)
|
|
|
|
|
|
# Node class mappings for ComfyUI registration
|
|
NODE_CLASS_MAPPINGS = {
|
|
"RunwarePixverseProviderSettings": RunwarePixverseProviderSettings,
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"RunwarePixverseProviderSettings": "Runware Pixverse Provider Settings",
|
|
}
|