add trellis support

This commit is contained in:
Sirshendu Ganguly
2026-02-10 00:19:10 -05:00
parent 668d66b70e
commit 63bc583059
12 changed files with 510 additions and 1 deletions
+8
View File
@@ -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,
}
+9 -1
View File
@@ -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;
+20
View File
@@ -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,
+73
View File
@@ -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,
+25
View File
@@ -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)}")
+106
View File
@@ -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",
}
@@ -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",
}
@@ -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",
}
+88
View File
@@ -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",
}
+3
View File
@@ -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",
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long