From 63bc583059679ba80aba3a9d6e49bf282a9d19d1 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Tue, 10 Feb 2026 00:19:10 -0500 Subject: [PATCH] add trellis support --- __init__.py | 8 ++ clientlibs/main.js | 10 +- clientlibs/types.js | 20 ++++ clientlibs/utils.js | 73 ++++++++++++ modules/threeDInference.py | 25 +++++ modules/threeDInferenceSettings.py | 106 ++++++++++++++++++ modules/threeDInferenceSettingsShapeSlat.py | 88 +++++++++++++++ .../threeDInferenceSettingsSparseStructure.py | 88 +++++++++++++++ modules/threeDInferenceSettingsTexSlat.py | 88 +++++++++++++++ modules/videoModelSearch.py | 3 + ...unware_3D_Inference_microsoft_trellis.json | 1 + ...Runware_Video_Inference_Vidu_Q3_Turbo.json | 1 + 12 files changed, 510 insertions(+), 1 deletion(-) create mode 100644 modules/threeDInferenceSettings.py create mode 100644 modules/threeDInferenceSettingsShapeSlat.py create mode 100644 modules/threeDInferenceSettingsSparseStructure.py create mode 100644 modules/threeDInferenceSettingsTexSlat.py create mode 100644 workflows/Runware_3D_Inference_microsoft_trellis.json create mode 100644 workflows/Runware_Video_Inference_Vidu_Q3_Turbo.json diff --git a/__init__.py b/__init__.py index 2a361fa..6629d2a 100644 --- a/__init__.py +++ b/__init__.py @@ -79,6 +79,10 @@ from .modules.saveImage import RunwareSaveImage from .modules.videoOutputs import RunwareVideoInferenceOutputs from .modules.threeDInference import threeDInference from .modules.threeDInferenceInputs import threeDInferenceInputs +from .modules.threeDInferenceSettings import Runware3DInferenceSettings +from .modules.threeDInferenceSettingsSparseStructure import Runware3DInferenceSettingsSparseStructure +from .modules.threeDInferenceSettingsShapeSlat import Runware3DInferenceSettingsShapeSlat +from .modules.threeDInferenceSettingsTexSlat import Runware3DInferenceSettingsTexSlat from .modules.save3D import RunwareSave3D RUNWARE_COMFYUI_VERSION = "1.4.0 Beta" @@ -173,6 +177,10 @@ NODE_CLASS_MAPPINGS = { "Runware Video Inference Outputs": RunwareVideoInferenceOutputs, "Runware 3D Inference": threeDInference, "Runware 3D Inference Inputs": threeDInferenceInputs, + "Runware 3D Inference Settings": Runware3DInferenceSettings, + "Runware 3D Inference Settings Sparse Structure": Runware3DInferenceSettingsSparseStructure, + "Runware 3D Inference Settings Shape Slat": Runware3DInferenceSettingsShapeSlat, + "Runware 3D Inference Settings Tex Slat": Runware3DInferenceSettingsTexSlat, "Runware Save 3D": RunwareSave3D, } diff --git a/clientlibs/main.js b/clientlibs/main.js index 4768d95..25f43dc 100644 --- a/clientlibs/main.js +++ b/clientlibs/main.js @@ -1,6 +1,6 @@ import { app } from "../../scripts/app.js"; import { api } from "../../scripts/api.js"; -import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, useParameterToggleHandler, imageInferenceToggleHandler, upscalerToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler } from "./utils.js"; +import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, useParameterToggleHandler, imageInferenceToggleHandler, upscalerToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler } from "./utils.js"; import { RUNWARE_NODE_TYPES, RUNWARE_NODE_PROPS, SEARCH_TERMS } from "./types.js"; const nodeInitList = []; @@ -128,6 +128,14 @@ app.registerExtension({ videoAdvancedFeatureInputsToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.AUDIOINFERENCEINPUTS) { audioInferenceInputsToggleHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCE) { + threeDInferenceToggleHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGS) { + threeDInferenceSettingsToggleHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSSPARSESTRUCTURE || + nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSSHAPESLAT || + nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSTEXSLAT) { + threeDInferenceSettingsLatToggleHandler(node); } if(crNodeProps.colorModeOnly === true) return; diff --git a/clientlibs/types.js b/clientlibs/types.js index 6a44812..778f48d 100644 --- a/clientlibs/types.js +++ b/clientlibs/types.js @@ -129,6 +129,10 @@ const RUNWARE_NODE_TYPES = { VIDEOINFERENCEOUTPUTS: "Runware Video Inference Outputs", THREEDINFERENCE: "Runware 3D Inference", THREEDINFERENCEINPUTS: "Runware 3D Inference Inputs", + THREEDINFERENCESETTINGS: "Runware 3D Inference Settings", + THREEDINFERENCESETTINGSSPARSESTRUCTURE: "Runware 3D Inference Settings Sparse Structure", + THREEDINFERENCESETTINGSSHAPESLAT: "Runware 3D Inference Settings Shape Slat", + THREEDINFERENCESETTINGSTEXSLAT: "Runware 3D Inference Settings Tex Slat", SAVE3D: "Runware Save 3D", }; @@ -461,6 +465,22 @@ const RUNWARE_NODE_PROPS = { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, + [RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGS]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, + [RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSSPARSESTRUCTURE]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, + [RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSSHAPESLAT]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, + [RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSTEXSLAT]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, [RUNWARE_NODE_TYPES.SAVE3D]: { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, diff --git a/clientlibs/utils.js b/clientlibs/utils.js index bd69aa3..a56d0a8 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -1553,6 +1553,73 @@ function sourcefulProviderSettingsFontsToggleHandler(fontsNode) { } } +function threeDInferenceToggleHandler(node) { + const useOutputQualityWidget = node.widgets.find(w => w.name === "useOutputQuality"); + const outputQualityWidget = node.widgets.find(w => w.name === "outputQuality"); + if (!useOutputQualityWidget || !outputQualityWidget) return; + function toggleEnabled() { + const enabled = useOutputQualityWidget.value === true; + if (outputQualityWidget.inputEl) { + outputQualityWidget.inputEl.disabled = !enabled; + outputQualityWidget.inputEl.style.opacity = enabled ? "1" : "0.5"; + } + outputQualityWidget.disabled = !enabled; + node.setDirtyCanvas(true); + } + appendWidgetCB(useOutputQualityWidget, () => setTimeout(toggleEnabled, 50)); + setTimeout(toggleEnabled, 100); +} + +function threeDInferenceSettingsToggleHandler(node) { + const pairs = [ + ["useTextureSize", "textureSize"], + ["useDecimationTarget", "decimationTarget"], + ["useRemesh", "remesh"], + ["useResolution", "resolution"], + ]; + pairs.forEach(([useName, paramName]) => { + const useW = node.widgets.find(w => w.name === useName); + const paramW = node.widgets.find(w => w.name === paramName); + if (!useW || !paramW) return; + function toggleEnabled() { + const enabled = useW.value === true; + if (paramW.inputEl) { + paramW.inputEl.disabled = !enabled; + paramW.inputEl.style.opacity = enabled ? "1" : "0.5"; + } + paramW.disabled = !enabled; + node.setDirtyCanvas(true); + } + appendWidgetCB(useW, () => setTimeout(toggleEnabled, 50)); + setTimeout(toggleEnabled, 100); + }); +} + +function threeDInferenceSettingsLatToggleHandler(node) { + const pairs = [ + ["useGuidanceStrength", "guidanceStrength"], + ["useGuidanceRescale", "guidanceRescale"], + ["useSteps", "steps"], + ["useRescaleT", "rescaleT"], + ]; + pairs.forEach(([useName, paramName]) => { + const useW = node.widgets.find(w => w.name === useName); + const paramW = node.widgets.find(w => w.name === paramName); + if (!useW || !paramW) return; + function toggleEnabled() { + const enabled = useW.value === true; + if (paramW.inputEl) { + paramW.inputEl.disabled = !enabled; + paramW.inputEl.style.opacity = enabled ? "1" : "0.5"; + } + paramW.disabled = !enabled; + node.setDirtyCanvas(true); + } + appendWidgetCB(useW, () => setTimeout(toggleEnabled, 50)); + setTimeout(toggleEnabled, 100); + }); +} + function openaiProviderSettingsToggleHandler(openaiNode) { // Find all "use" parameter widgets for OpenAI Provider Settings (these are COMBO widgets) const useBackgroundWidget = openaiNode.widgets.find(w => w.name === "useBackground"); @@ -2083,6 +2150,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "vidu:1@0 (Vidu Q1 Classic)", "vidu:1@1 (Vidu Q1)", "vidu:1@5 (Vidu 1.5)", "vidu:2@0 (Vidu 2.0)", "vidu:4@1 (Vidu Q3)", + "vidu:4@2 (Vidu Q3 Turbo)", ], "Wan": [ "runware:200@1 (Wan 2.1 1.3B)", "runware:200@2 (Wan 2.1 14B)", @@ -2178,6 +2246,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "vidu:1@5": {"width": 1920, "height": 1080}, "vidu:2@0": {"width": 1920, "height": 1080}, "vidu:4@1": {"width": 1920, "height": 1080}, + "vidu:4@2": {"width": 1920, "height": 1080}, "runware:200@1": {"width": 853, "height": 480}, "runware:200@2": {"width": 853, "height": 480}, "runware:200@6": {"width": 1280, "height": 720}, @@ -2251,6 +2320,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "vidu:1@5": "1080p", "vidu:2@0": "1080p", "vidu:4@1": "1080p", + "vidu:4@2": "1080p", "runware:200@1": "480p", "runware:200@2": "480p", "runware:200@6": "720p", @@ -3546,6 +3616,9 @@ export { viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, + threeDInferenceToggleHandler, + threeDInferenceSettingsToggleHandler, + threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, diff --git a/modules/threeDInference.py b/modules/threeDInference.py index f90fddc..64f247f 100644 --- a/modules/threeDInference.py +++ b/modules/threeDInference.py @@ -8,6 +8,7 @@ class threeDInference: # Available 3D models THREED_MODELS = { "Meta SAM 3D": "meta:sam@3d", + "TRELLIS.2": "microsoft:trellis-2@4b", } # Output formats @@ -38,9 +39,23 @@ class threeDInference: }), }, "optional": { + "useOutputQuality": ("BOOLEAN", { + "tooltip": "Enable to include outputQuality in API request.", + "default": False, + }), + "outputQuality": ("INT", { + "tooltip": "Output quality (0-100). Only used when 'Use Output Quality' is enabled.", + "default": 95, + "min": 0, + "max": 100, + "step": 1, + }), "inputs": ("RUNWARE3DINFERENCEINPUTS", { "tooltip": "Connect a Runware 3D Inference Inputs node to provide image and mask inputs.", }), + "settings": ("RUNWARE3DINFERENCESETTINGS", { + "tooltip": "Connect Runware 3D Inference Settings node for textureSize, decimationTarget, remesh, resolution, sparseStructure, shapeSlat, texSlat.", + }), }, } @@ -56,7 +71,10 @@ class threeDInference: positivePrompt = kwargs.get("positivePrompt", "") seed = kwargs.get("seed", 1) outputFormat = kwargs.get("outputFormat", "GLB") + use_output_quality = kwargs.get("useOutputQuality", False) + output_quality = kwargs.get("outputQuality", 95) inputs = kwargs.get("inputs", None) + settings = kwargs.get("settings", None) # Get model AIR code model = self.THREED_MODELS.get(modelName, "meta:sam@3d") @@ -82,10 +100,17 @@ class threeDInference: # Add seed genConfig[0]["seed"] = seed + if use_output_quality: + genConfig[0]["outputQuality"] = int(output_quality) + # Handle inputs from 3D Inference Inputs node if inputs is not None and isinstance(inputs, dict) and len(inputs) > 0: genConfig[0]["inputs"] = inputs + # Handle settings from 3D Inference Settings node + if settings is not None and isinstance(settings, dict) and len(settings) > 0: + genConfig[0]["settings"] = settings + try: print(f"[DEBUG] Sending 3D Inference Request:") print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") diff --git a/modules/threeDInferenceSettings.py b/modules/threeDInferenceSettings.py new file mode 100644 index 0000000..03d75fb --- /dev/null +++ b/modules/threeDInferenceSettings.py @@ -0,0 +1,106 @@ +""" +Runware 3D Inference Settings Node +Main settings for 3D inference: textureSize, decimationTarget, remesh, resolution, +and sub-configs sparseStructure, shapeSlat, texSlat from connected nodes. +""" + +from typing import Dict, Any + + +class Runware3DInferenceSettings: + """Runware 3D Inference Settings Node""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "useTextureSize": ("BOOLEAN", { + "tooltip": "Enable to include textureSize in settings", + "default": False, + }), + "textureSize": ("INT", { + "tooltip": "Texture size for 3D output (1024-4096, step 1024). Only used when enabled.", + "default": 2048, + "min": 1024, + "max": 4096, + "step": 1024, + }), + "useDecimationTarget": ("BOOLEAN", { + "tooltip": "Enable to include decimationTarget in settings", + "default": False, + }), + "decimationTarget": ("INT", { + "tooltip": "Decimation target for mesh (100000-1000000). Only used when enabled.", + "default": 500000, + "min": 100000, + "max": 1000000, + "step": 10000, + }), + "useRemesh": ("BOOLEAN", { + "tooltip": "Enable to include remesh in settings", + "default": False, + }), + "remesh": ("BOOLEAN", { + "tooltip": "Whether to remesh the output. Only used when enabled.", + "default": True, + }), + "useResolution": ("BOOLEAN", { + "tooltip": "Enable to include resolution in settings", + "default": False, + }), + "resolution": ([512, 1024, 1536], { + "tooltip": "Resolution for 3D generation (512, 1024, or 1536). Only used when enabled.", + "default": 1024, + }), + "sparseStructure": ("RUNWARE3DINFERENCESETTINGSLAT", { + "tooltip": "Connect Runware 3D Inference Settings Sparse Structure node.", + }), + "shapeSlat": ("RUNWARE3DINFERENCESETTINGSLAT", { + "tooltip": "Connect Runware 3D Inference Settings Shape Slat node.", + }), + "texSlat": ("RUNWARE3DINFERENCESETTINGSLAT", { + "tooltip": "Connect Runware 3D Inference Settings Tex Slat node.", + }), + } + } + + RETURN_TYPES = ("RUNWARE3DINFERENCESETTINGS",) + RETURN_NAMES = ("Settings",) + FUNCTION = "create" + CATEGORY = "Runware" + DESCRIPTION = "Configure Runware 3D Inference settings: texture, decimation, remesh, resolution, and lat configs." + + def create(self, **kwargs) -> tuple[Dict[str, Any]]: + settings: Dict[str, Any] = {} + + if kwargs.get("useTextureSize", False): + settings["textureSize"] = int(kwargs.get("textureSize", 2048)) + if kwargs.get("useDecimationTarget", False): + settings["decimationTarget"] = int(kwargs.get("decimationTarget", 500000)) + if kwargs.get("useRemesh", False): + settings["remesh"] = bool(kwargs.get("remesh", True)) + if kwargs.get("useResolution", False): + settings["resolution"] = int(kwargs.get("resolution", 1024)) + + sparse = kwargs.get("sparseStructure", None) + if sparse is not None and isinstance(sparse, dict) and len(sparse) > 0: + settings["sparseStructure"] = sparse + + shape = kwargs.get("shapeSlat", None) + if shape is not None and isinstance(shape, dict) and len(shape) > 0: + settings["shapeSlat"] = shape + + tex = kwargs.get("texSlat", None) + if tex is not None and isinstance(tex, dict) and len(tex) > 0: + settings["texSlat"] = tex + + return (settings,) + + +NODE_CLASS_MAPPINGS = { + "Runware3DInferenceSettings": Runware3DInferenceSettings, +} +NODE_DISPLAY_NAME_MAPPINGS = { + "Runware3DInferenceSettings": "Runware 3D Inference Settings", +} diff --git a/modules/threeDInferenceSettingsShapeSlat.py b/modules/threeDInferenceSettingsShapeSlat.py new file mode 100644 index 0000000..baebaee --- /dev/null +++ b/modules/threeDInferenceSettingsShapeSlat.py @@ -0,0 +1,88 @@ +""" +Runware 3D Inference Settings Shape Slat Node +Outputs shapeSlat config: guidanceStrength, guidanceRescale, steps, rescaleT +""" + +from typing import Dict, Any + + +class Runware3DInferenceSettingsShapeSlat: + """Runware 3D Inference Settings Shape Slat Node""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "useGuidanceStrength": ("BOOLEAN", { + "tooltip": "Enable to include guidanceStrength in shapeSlat", + "default": False, + }), + "guidanceStrength": ("FLOAT", { + "tooltip": "Guidance strength for shape slat (1.0-10.0). Only used when enabled.", + "default": 7.5, + "min": 1.0, + "max": 10.0, + "step": 0.1, + }), + "useGuidanceRescale": ("BOOLEAN", { + "tooltip": "Enable to include guidanceRescale in shapeSlat", + "default": False, + }), + "guidanceRescale": ("FLOAT", { + "tooltip": "Guidance rescale for shape slat. Only used when enabled.", + "default": 0.5, + "min": 0.0, + "max": 1.0, + "step": 0.05, + }), + "useSteps": ("BOOLEAN", { + "tooltip": "Enable to include steps in shapeSlat", + "default": False, + }), + "steps": ("INT", { + "tooltip": "Number of steps for shape slat (1-50). Only used when enabled.", + "default": 12, + "min": 1, + "max": 50, + "step": 1, + }), + "useRescaleT": ("BOOLEAN", { + "tooltip": "Enable to include rescaleT in shapeSlat", + "default": False, + }), + "rescaleT": ("FLOAT", { + "tooltip": "Rescale T for shape slat (1.0-6.0). Only used when enabled.", + "default": 3.0, + "min": 1.0, + "max": 6.0, + "step": 0.1, + }), + } + } + + RETURN_TYPES = ("RUNWARE3DINFERENCESETTINGSLAT",) + RETURN_NAMES = ("Shape Slat",) + FUNCTION = "create" + CATEGORY = "Runware" + DESCRIPTION = "Configure shape slat parameters for Runware 3D Inference settings." + + def create(self, **kwargs) -> tuple[Dict[str, Any]]: + out: Dict[str, Any] = {} + if kwargs.get("useGuidanceStrength", False): + out["guidanceStrength"] = float(kwargs.get("guidanceStrength", 7.5)) + if kwargs.get("useGuidanceRescale", False): + out["guidanceRescale"] = float(kwargs.get("guidanceRescale", 0.5)) + if kwargs.get("useSteps", False): + out["steps"] = int(kwargs.get("steps", 12)) + if kwargs.get("useRescaleT", False): + out["rescaleT"] = float(kwargs.get("rescaleT", 3.0)) + return (out,) + + +NODE_CLASS_MAPPINGS = { + "Runware3DInferenceSettingsShapeSlat": Runware3DInferenceSettingsShapeSlat, +} +NODE_DISPLAY_NAME_MAPPINGS = { + "Runware3DInferenceSettingsShapeSlat": "Runware 3D Inference Settings Shape Slat", +} diff --git a/modules/threeDInferenceSettingsSparseStructure.py b/modules/threeDInferenceSettingsSparseStructure.py new file mode 100644 index 0000000..3c4bbc5 --- /dev/null +++ b/modules/threeDInferenceSettingsSparseStructure.py @@ -0,0 +1,88 @@ +""" +Runware 3D Inference Settings Sparse Structure Node +Outputs sparseStructure config: guidanceStrength, guidanceRescale, steps, rescaleT +""" + +from typing import Dict, Any + + +class Runware3DInferenceSettingsSparseStructure: + """Runware 3D Inference Settings Sparse Structure Node""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "useGuidanceStrength": ("BOOLEAN", { + "tooltip": "Enable to include guidanceStrength in sparseStructure", + "default": False, + }), + "guidanceStrength": ("FLOAT", { + "tooltip": "Guidance strength for sparse structure (1.0-10.0). Only used when enabled.", + "default": 7.5, + "min": 1.0, + "max": 10.0, + "step": 0.1, + }), + "useGuidanceRescale": ("BOOLEAN", { + "tooltip": "Enable to include guidanceRescale in sparseStructure", + "default": False, + }), + "guidanceRescale": ("FLOAT", { + "tooltip": "Guidance rescale for sparse structure. Only used when enabled.", + "default": 0.7, + "min": 0.0, + "max": 1.0, + "step": 0.05, + }), + "useSteps": ("BOOLEAN", { + "tooltip": "Enable to include steps in sparseStructure", + "default": False, + }), + "steps": ("INT", { + "tooltip": "Number of steps for sparse structure (1-50). Only used when enabled.", + "default": 12, + "min": 1, + "max": 50, + "step": 1, + }), + "useRescaleT": ("BOOLEAN", { + "tooltip": "Enable to include rescaleT in sparseStructure", + "default": False, + }), + "rescaleT": ("FLOAT", { + "tooltip": "Rescale T for sparse structure (1.0-6.0). Only used when enabled.", + "default": 5.0, + "min": 1.0, + "max": 6.0, + "step": 0.1, + }), + } + } + + RETURN_TYPES = ("RUNWARE3DINFERENCESETTINGSLAT",) + RETURN_NAMES = ("Sparse Structure",) + FUNCTION = "create" + CATEGORY = "Runware" + DESCRIPTION = "Configure sparse structure parameters for Runware 3D Inference settings." + + def create(self, **kwargs) -> tuple[Dict[str, Any]]: + out: Dict[str, Any] = {} + if kwargs.get("useGuidanceStrength", False): + out["guidanceStrength"] = float(kwargs.get("guidanceStrength", 7.5)) + if kwargs.get("useGuidanceRescale", False): + out["guidanceRescale"] = float(kwargs.get("guidanceRescale", 0.7)) + if kwargs.get("useSteps", False): + out["steps"] = int(kwargs.get("steps", 12)) + if kwargs.get("useRescaleT", False): + out["rescaleT"] = float(kwargs.get("rescaleT", 5.0)) + return (out,) + + +NODE_CLASS_MAPPINGS = { + "Runware3DInferenceSettingsSparseStructure": Runware3DInferenceSettingsSparseStructure, +} +NODE_DISPLAY_NAME_MAPPINGS = { + "Runware3DInferenceSettingsSparseStructure": "Runware 3D Inference Settings Sparse Structure", +} diff --git a/modules/threeDInferenceSettingsTexSlat.py b/modules/threeDInferenceSettingsTexSlat.py new file mode 100644 index 0000000..4d807aa --- /dev/null +++ b/modules/threeDInferenceSettingsTexSlat.py @@ -0,0 +1,88 @@ +""" +Runware 3D Inference Settings Tex Slat Node +Outputs texSlat config: guidanceStrength, guidanceRescale, steps, rescaleT +""" + +from typing import Dict, Any + + +class Runware3DInferenceSettingsTexSlat: + """Runware 3D Inference Settings Tex Slat Node""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "useGuidanceStrength": ("BOOLEAN", { + "tooltip": "Enable to include guidanceStrength in texSlat", + "default": False, + }), + "guidanceStrength": ("FLOAT", { + "tooltip": "Guidance strength for tex slat (1.0-10.0). Only used when enabled.", + "default": 1.0, + "min": 1.0, + "max": 10.0, + "step": 0.1, + }), + "useGuidanceRescale": ("BOOLEAN", { + "tooltip": "Enable to include guidanceRescale in texSlat", + "default": False, + }), + "guidanceRescale": ("FLOAT", { + "tooltip": "Guidance rescale for tex slat. Only used when enabled.", + "default": 0.0, + "min": 0.0, + "max": 1.0, + "step": 0.05, + }), + "useSteps": ("BOOLEAN", { + "tooltip": "Enable to include steps in texSlat", + "default": False, + }), + "steps": ("INT", { + "tooltip": "Number of steps for tex slat (1-50). Only used when enabled.", + "default": 12, + "min": 1, + "max": 50, + "step": 1, + }), + "useRescaleT": ("BOOLEAN", { + "tooltip": "Enable to include rescaleT in texSlat", + "default": False, + }), + "rescaleT": ("FLOAT", { + "tooltip": "Rescale T for tex slat (1.0-6.0). Only used when enabled.", + "default": 3.0, + "min": 1.0, + "max": 6.0, + "step": 0.1, + }), + } + } + + RETURN_TYPES = ("RUNWARE3DINFERENCESETTINGSLAT",) + RETURN_NAMES = ("Tex Slat",) + FUNCTION = "create" + CATEGORY = "Runware" + DESCRIPTION = "Configure tex slat parameters for Runware 3D Inference settings." + + def create(self, **kwargs) -> tuple[Dict[str, Any]]: + out: Dict[str, Any] = {} + if kwargs.get("useGuidanceStrength", False): + out["guidanceStrength"] = float(kwargs.get("guidanceStrength", 1.0)) + if kwargs.get("useGuidanceRescale", False): + out["guidanceRescale"] = float(kwargs.get("guidanceRescale", 0.0)) + if kwargs.get("useSteps", False): + out["steps"] = int(kwargs.get("steps", 12)) + if kwargs.get("useRescaleT", False): + out["rescaleT"] = float(kwargs.get("rescaleT", 3.0)) + return (out,) + + +NODE_CLASS_MAPPINGS = { + "Runware3DInferenceSettingsTexSlat": Runware3DInferenceSettingsTexSlat, +} +NODE_DISPLAY_NAME_MAPPINGS = { + "Runware3DInferenceSettingsTexSlat": "Runware 3D Inference Settings Tex Slat", +} diff --git a/modules/videoModelSearch.py b/modules/videoModelSearch.py index 2feffdf..47c6d67 100644 --- a/modules/videoModelSearch.py +++ b/modules/videoModelSearch.py @@ -56,6 +56,7 @@ class videoModelSearch: "vidu:1@5 (Vidu 1.5)", "vidu:2@0 (Vidu 2.0)", "vidu:4@1 (Vidu Q3)", + "vidu:4@2 (Vidu Q3 Turbo)", ], "Wan": [ "runware:200@1 (Wan 2.1 1.3B)", @@ -166,6 +167,7 @@ class videoModelSearch: "vidu:1@5": {"width": 1920, "height": 1080}, "vidu:2@0": {"width": 1920, "height": 1080}, "vidu:4@1": {"width": 1920, "height": 1080}, + "vidu:4@2": {"width": 1920, "height": 1080}, # Wan Models "runware:200@1": {"width": 853, "height": 480}, @@ -275,6 +277,7 @@ class videoModelSearch: "vidu:1@5": "1080p", "vidu:2@0": "1080p", "vidu:4@1": "1080p", + "vidu:4@2": "1080p", # Wan Models "runware:200@1": "480p", diff --git a/workflows/Runware_3D_Inference_microsoft_trellis.json b/workflows/Runware_3D_Inference_microsoft_trellis.json new file mode 100644 index 0000000..786183f --- /dev/null +++ b/workflows/Runware_3D_Inference_microsoft_trellis.json @@ -0,0 +1 @@ +{"id":"4f919008-d74f-4dcb-baaa-c9f3e0cfce69","revision":0,"last_node_id":14,"last_link_id":10,"nodes":[{"id":7,"type":"Runware Save 3D","pos":[1139.60986328125,388.7558898925781],"size":[234.08380126953125,123.42192840576172],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"3dObject","name":"3dObject","type":"STRING","widget":{"name":"3dObject"},"link":4},{"localized_name":"filenamePrefix","name":"filenamePrefix","type":"STRING","widget":{"name":"filenamePrefix"},"link":null},{"localized_name":"filepath","name":"filepath","shape":7,"type":"STRING","widget":{"name":"filepath"},"link":null}],"outputs":[{"localized_name":"filepath","name":"filepath","type":"STRING","links":[]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"ff6b7d8ad4471836cfbf1637e1ee1e24fe20bc48","Node name for S&R":"Runware Save 3D"},"widgets_values":["","ComfyUI","/Users/sirshenduganguly/Downloads/Runware-codebase/ComfyUI/output/3d_models/ComfyUI_20260130_101951.glb"],"bgcolor":"#5345bf"},{"id":2,"type":"Runware 3D Inference Inputs","pos":[482.9165954589844,172.42942810058594],"size":[222.00253295898438,46],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":3},{"localized_name":"mask","name":"mask","shape":7,"type":"IMAGE","link":null}],"outputs":[{"localized_name":"Inputs","name":"Inputs","type":"RUNWARE3DINFERENCEINPUTS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"938185cd42fdc0a25095c8e72ba42fdcef10913e","Node name for S&R":"Runware 3D Inference Inputs"},"widgets_values":[],"bgcolor":"#5345bf"},{"id":11,"type":"Runware 3D Inference Settings","pos":[262.4438171386719,664.2613525390625],"size":[294.4507751464844,266],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"sparseStructure","name":"sparseStructure","shape":7,"type":"RUNWARE3DINFERENCESETTINGSLAT","link":8},{"localized_name":"shapeSlat","name":"shapeSlat","shape":7,"type":"RUNWARE3DINFERENCESETTINGSLAT","link":9},{"localized_name":"texSlat","name":"texSlat","shape":7,"type":"RUNWARE3DINFERENCESETTINGSLAT","link":10},{"localized_name":"useTextureSize","name":"useTextureSize","shape":7,"type":"BOOLEAN","widget":{"name":"useTextureSize"},"link":null},{"localized_name":"textureSize","name":"textureSize","shape":7,"type":"INT","widget":{"name":"textureSize"},"link":null},{"localized_name":"useDecimationTarget","name":"useDecimationTarget","shape":7,"type":"BOOLEAN","widget":{"name":"useDecimationTarget"},"link":null},{"localized_name":"decimationTarget","name":"decimationTarget","shape":7,"type":"INT","widget":{"name":"decimationTarget"},"link":null},{"localized_name":"useRemesh","name":"useRemesh","shape":7,"type":"BOOLEAN","widget":{"name":"useRemesh"},"link":null},{"localized_name":"remesh","name":"remesh","shape":7,"type":"BOOLEAN","widget":{"name":"remesh"},"link":null},{"localized_name":"useResolution","name":"useResolution","shape":7,"type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"resolution","name":"resolution","shape":7,"type":"COMBO","widget":{"name":"resolution"},"link":null}],"outputs":[{"localized_name":"Settings","name":"Settings","type":"RUNWARE3DINFERENCESETTINGS","links":[7]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"668d66b70effa2667a8ef2aa0016d176063623e7","Node name for S&R":"Runware 3D Inference Settings"},"widgets_values":[true,2048,true,500000,true,true,false,1024],"bgcolor":"#5345bf"},{"id":14,"type":"Runware 3D Inference Settings Sparse Structure","pos":[-336.5362548828125,273.68701171875],"size":[403.3882751464844,226],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"useGuidanceStrength","name":"useGuidanceStrength","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceStrength"},"link":null},{"localized_name":"guidanceStrength","name":"guidanceStrength","shape":7,"type":"FLOAT","widget":{"name":"guidanceStrength"},"link":null},{"localized_name":"useGuidanceRescale","name":"useGuidanceRescale","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceRescale"},"link":null},{"localized_name":"guidanceRescale","name":"guidanceRescale","shape":7,"type":"FLOAT","widget":{"name":"guidanceRescale"},"link":null},{"localized_name":"useSteps","name":"useSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","shape":7,"type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useRescaleT","name":"useRescaleT","shape":7,"type":"BOOLEAN","widget":{"name":"useRescaleT"},"link":null},{"localized_name":"rescaleT","name":"rescaleT","shape":7,"type":"FLOAT","widget":{"name":"rescaleT"},"link":null}],"outputs":[{"localized_name":"Sparse Structure","name":"Sparse Structure","type":"RUNWARE3DINFERENCESETTINGSLAT","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"668d66b70effa2667a8ef2aa0016d176063623e7","Node name for S&R":"Runware 3D Inference Settings Sparse Structure"},"widgets_values":[true,7.5,true,0.7,true,12,true,5],"bgcolor":"#5345bf"},{"id":13,"type":"Runware 3D Inference Settings Shape Slat","pos":[-314.4887390136719,572.8907470703125],"size":[366.8365173339844,226],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"useGuidanceStrength","name":"useGuidanceStrength","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceStrength"},"link":null},{"localized_name":"guidanceStrength","name":"guidanceStrength","shape":7,"type":"FLOAT","widget":{"name":"guidanceStrength"},"link":null},{"localized_name":"useGuidanceRescale","name":"useGuidanceRescale","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceRescale"},"link":null},{"localized_name":"guidanceRescale","name":"guidanceRescale","shape":7,"type":"FLOAT","widget":{"name":"guidanceRescale"},"link":null},{"localized_name":"useSteps","name":"useSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","shape":7,"type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useRescaleT","name":"useRescaleT","shape":7,"type":"BOOLEAN","widget":{"name":"useRescaleT"},"link":null},{"localized_name":"rescaleT","name":"rescaleT","shape":7,"type":"FLOAT","widget":{"name":"rescaleT"},"link":null}],"outputs":[{"localized_name":"Shape Slat","name":"Shape Slat","type":"RUNWARE3DINFERENCESETTINGSLAT","links":[9]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"668d66b70effa2667a8ef2aa0016d176063623e7","Node name for S&R":"Runware 3D Inference Settings Shape Slat"},"widgets_values":[true,7.5,true,0.5,true,12,true,3],"bgcolor":"#5345bf"},{"id":12,"type":"Runware 3D Inference Settings Tex Slat","pos":[-253.27981567382812,852.3280639648438],"size":[348.1402282714844,226],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"useGuidanceStrength","name":"useGuidanceStrength","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceStrength"},"link":null},{"localized_name":"guidanceStrength","name":"guidanceStrength","shape":7,"type":"FLOAT","widget":{"name":"guidanceStrength"},"link":null},{"localized_name":"useGuidanceRescale","name":"useGuidanceRescale","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceRescale"},"link":null},{"localized_name":"guidanceRescale","name":"guidanceRescale","shape":7,"type":"FLOAT","widget":{"name":"guidanceRescale"},"link":null},{"localized_name":"useSteps","name":"useSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","shape":7,"type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useRescaleT","name":"useRescaleT","shape":7,"type":"BOOLEAN","widget":{"name":"useRescaleT"},"link":null},{"localized_name":"rescaleT","name":"rescaleT","shape":7,"type":"FLOAT","widget":{"name":"rescaleT"},"link":null}],"outputs":[{"localized_name":"Tex Slat","name":"Tex Slat","type":"RUNWARE3DINFERENCESETTINGSLAT","links":[10]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"668d66b70effa2667a8ef2aa0016d176063623e7","Node name for S&R":"Runware 3D Inference Settings Tex Slat"},"widgets_values":[true,1,true,0,true,12,false,3],"bgcolor":"#5345bf"},{"id":4,"type":"LoadImage","pos":[139.97543334960938,231.3725128173828],"size":[274.080078125,314],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["object1.jpg","image"]},{"id":1,"type":"Runware 3D Inference","pos":[593.8966064453125,329.1553039550781],"size":[400,252],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWARE3DINFERENCEINPUTS","link":2},{"localized_name":"settings","name":"settings","shape":7,"type":"RUNWARE3DINFERENCESETTINGS","link":7},{"localized_name":"Model","name":"Model","type":"COMBO","widget":{"name":"Model"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useOutputQuality","name":"useOutputQuality","shape":7,"type":"BOOLEAN","widget":{"name":"useOutputQuality"},"link":null},{"localized_name":"outputQuality","name":"outputQuality","shape":7,"type":"INT","widget":{"name":"outputQuality"},"link":null}],"outputs":[{"localized_name":"3dObject","name":"3dObject","type":"STRING","links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"938185cd42fdc0a25095c8e72ba42fdcef10913e","Node name for S&R":"Runware 3D Inference"},"widgets_values":["TRELLIS.2","",1935894403,"randomize","GLB",false,95],"bgcolor":"#5345bf"}],"links":[[2,2,0,1,0,"RUNWARE3DINFERENCEINPUTS"],[3,4,0,2,0,"IMAGE"],[4,1,0,7,0,"STRING"],[7,11,0,1,1,"RUNWARE3DINFERENCESETTINGS"],[8,14,0,11,0,"RUNWARE3DINFERENCESETTINGSLAT"],[9,13,0,11,1,"RUNWARE3DINFERENCESETTINGSLAT"],[10,12,0,11,2,"RUNWARE3DINFERENCESETTINGSLAT"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[558.9964234675817,-27.73514629244677]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Inference_Vidu_Q3_Turbo.json b/workflows/Runware_Video_Inference_Vidu_Q3_Turbo.json new file mode 100644 index 0000000..f9ac516 --- /dev/null +++ b/workflows/Runware_Video_Inference_Vidu_Q3_Turbo.json @@ -0,0 +1 @@ +{"id":"1f8932a9-7f5a-4e5f-8274-ad1c56f93dd8","revision":0,"last_node_id":14,"last_link_id":15,"nodes":[{"id":2,"type":"SaveVideo","pos":[751.237548828125,17.92486000061035],"size":[440.4127197265625,484.90679931640625],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":1},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":1,"type":"Runware Video Inference","pos":[236.01295471191406,-62.52852249145508],"size":[400,760],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":2},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":12},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":15},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useBatchSize","name":"useBatchSize","type":"BOOLEAN","widget":{"name":"useBatchSize"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null},{"localized_name":"OUTPUT","name":"OUTPUT","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"89412ff4b588adf407736eb84e6fb9853b9a033d","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,5,false,24,"mp4",false,794923580,"randomize",false,20,false,1,"none","The character in the image turns their head and smiles warmly at the camera.","","",""],"bgcolor":"#5345bf"},{"id":12,"type":"LoadImage","pos":[-503.0928649902344,217.16226196289062],"size":[274.080078125,314],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[13]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["man_beard.jpg","image"]},{"id":14,"type":"Runware Video Inputs Frame Images","pos":[-528.9557495117188,662.4791870117188],"size":[331.5357360839844,190],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"image1","name":"image1","shape":7,"type":"IMAGE","link":13},{"localized_name":"image2","name":"image2","shape":7,"type":"IMAGE","link":null},{"localized_name":"image3","name":"image3","shape":7,"type":"IMAGE","link":null},{"localized_name":"image4","name":"image4","shape":7,"type":"IMAGE","link":null},{"localized_name":"frame1 position","name":"frame1 position","shape":7,"type":"STRING","widget":{"name":"frame1 position"},"link":null},{"localized_name":"frame2 position","name":"frame2 position","shape":7,"type":"STRING","widget":{"name":"frame2 position"},"link":null},{"localized_name":"frame3 position","name":"frame3 position","shape":7,"type":"STRING","widget":{"name":"frame3 position"},"link":null},{"localized_name":"frame4 position","name":"frame4 position","shape":7,"type":"STRING","widget":{"name":"frame4 position"},"link":null}],"outputs":[{"localized_name":"Video Inputs Frame Images","name":"Video Inputs Frame Images","type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","links":[14]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"668d66b70effa2667a8ef2aa0016d176063623e7","Node name for S&R":"Runware Video Inputs Frame Images"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":11,"type":"Runware Vidu Provider Settings","pos":[743.8780517578125,599.3399047851562],"size":[298.0806579589844,370],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"useAudio","name":"useAudio","shape":7,"type":"BOOLEAN","widget":{"name":"useAudio"},"link":null},{"localized_name":"audio","name":"audio","shape":7,"type":"BOOLEAN","widget":{"name":"audio"},"link":null},{"localized_name":"useBgm","name":"useBgm","shape":7,"type":"BOOLEAN","widget":{"name":"useBgm"},"link":null},{"localized_name":"bgm","name":"bgm","shape":7,"type":"BOOLEAN","widget":{"name":"bgm"},"link":null},{"localized_name":"useStyle","name":"useStyle","shape":7,"type":"BOOLEAN","widget":{"name":"useStyle"},"link":null},{"localized_name":"style","name":"style","shape":7,"type":"STRING","widget":{"name":"style"},"link":null},{"localized_name":"useMovementAmplitude","name":"useMovementAmplitude","shape":7,"type":"BOOLEAN","widget":{"name":"useMovementAmplitude"},"link":null},{"localized_name":"movementAmplitude","name":"movementAmplitude","shape":7,"type":"STRING","widget":{"name":"movementAmplitude"},"link":null},{"localized_name":"useTemplateName","name":"useTemplateName","shape":7,"type":"BOOLEAN","widget":{"name":"useTemplateName"},"link":null},{"localized_name":"templateName","name":"templateName","shape":7,"type":"STRING","widget":{"name":"templateName"},"link":null},{"localized_name":"useTemplateArea","name":"useTemplateArea","shape":7,"type":"BOOLEAN","widget":{"name":"useTemplateArea"},"link":null},{"localized_name":"templateArea","name":"templateArea","shape":7,"type":"STRING","widget":{"name":"templateArea"},"link":null},{"localized_name":"useTemplateBeast","name":"useTemplateBeast","shape":7,"type":"BOOLEAN","widget":{"name":"useTemplateBeast"},"link":null},{"localized_name":"templateBeast","name":"templateBeast","shape":7,"type":"STRING","widget":{"name":"templateBeast"},"link":null}],"outputs":[{"localized_name":"Vidu Provider Settings","name":"Vidu Provider Settings","type":"RUNWAREPROVIDERSETTINGS","links":[12]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"0db9461bd7809f89affaba771086ca28bb222e04","Node name for S&R":"Runware Vidu Provider Settings"},"widgets_values":[true,true,"","","","","","",false,"",false,"",false,""],"bgcolor":"#5345bf"},{"id":13,"type":"Runware Video Inference Inputs","pos":[-139.05953979492188,294.06292724609375],"size":[320.0390625,290],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame Images","name":"Frame Images","shape":7,"type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","link":14},{"localized_name":"Audio Inputs","name":"Audio Inputs","shape":7,"type":"RUNWAREAUDIOINPUT","link":null},{"localized_name":"Speech Inputs","name":"Speech Inputs","shape":7,"type":"RUNWARESPEECHINPUT","link":null},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":null},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCEIMAGES","link":null},{"localized_name":"Reference Videos","name":"Reference Videos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"Reference Voices","name":"Reference Voices","shape":7,"type":"RUNWAREREFERENCEVOICES","link":null},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":null},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":null},{"localized_name":"draftId","name":"draftId","shape":7,"type":"STRING","widget":{"name":"draftId"},"link":null},{"localized_name":"videoId","name":"videoId","shape":7,"type":"STRING","widget":{"name":"videoId"},"link":null}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[15]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"668d66b70effa2667a8ef2aa0016d176063623e7","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Video Model Search","pos":[-133.2332000732422,-58.92354965209961],"size":[287.380859375,250],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"COMBO","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"resolution","name":"resolution","type":"COMBO","widget":{"name":"resolution"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"89412ff4b588adf407736eb84e6fb9853b9a033d","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Vidu","vidu:4@2 (Vidu Q3 Turbo)",false,"Model Default",1920,1080,false,"1080p"],"bgcolor":"#5345bf"}],"links":[[1,1,0,2,0,"VIDEO"],[2,3,0,1,0,"RUNWAREVIDEOMODEL"],[12,11,0,1,3,"RUNWAREPROVIDERSETTINGS"],[13,12,0,14,0,"IMAGE"],[14,14,0,13,1,"RUNWAREVIDEOINPUTSFRAMEIMAGES"],[15,13,0,1,6,"RUNWAREVIDEOINFERENCEINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6528554800764321,"offset":[784.2719648551679,359.3016908055905]}},"version":0.4} \ No newline at end of file