Merge pull request #156 from Runware/feature-trellis2
Added trellis2 support
This commit is contained in:
@@ -119,6 +119,7 @@ from .modules.threeDInferenceSettings import Runware3DInferenceSettings
|
||||
from .modules.threeDInferenceSettingsSparseStructure import Runware3DInferenceSettingsSparseStructure
|
||||
from .modules.threeDInferenceSettingsShapeSlat import Runware3DInferenceSettingsShapeSlat
|
||||
from .modules.threeDInferenceSettingsTexSlat import Runware3DInferenceSettingsTexSlat
|
||||
from .modules.threeDInferenceSettingsMeshCluster import Runware3DInferenceSettingsMeshCluster
|
||||
from .modules.save3D import RunwareSave3D
|
||||
from .modules.saveText import RunwareSaveText
|
||||
from .modules.loadMesh import RunwareLoadMesh
|
||||
@@ -257,6 +258,7 @@ NODE_CLASS_MAPPINGS = {
|
||||
"Runware 3D Inference Settings Sparse Structure": Runware3DInferenceSettingsSparseStructure,
|
||||
"Runware 3D Inference Settings Shape Slat": Runware3DInferenceSettingsShapeSlat,
|
||||
"Runware 3D Inference Settings Tex Slat": Runware3DInferenceSettingsTexSlat,
|
||||
"Runware 3D Inference Settings Mesh Cluster": Runware3DInferenceSettingsMeshCluster,
|
||||
"Runware Save 3D": RunwareSave3D,
|
||||
"Runware Save Text": RunwareSaveText,
|
||||
"Runware Load Mesh": RunwareLoadMesh,
|
||||
|
||||
+3
-1
@@ -1,6 +1,6 @@
|
||||
import { app } from "../../scripts/app.js";
|
||||
import { api } from "../../scripts/api.js";
|
||||
import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, saveTextHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, textModelSearchFilterHandler, vectorizeModelSearchFilterHandler, vectorizeToggleHandler, useParameterToggleHandler, imageInferenceToggleHandler, imageInferenceAdvancedFeaturesToggleHandler, watermarkAdvancedFeatureToggleHandler, videoInferenceSpeechInputToggleHandler, regionalPromptingRegionsToggleHandler, upscalerToggleHandler, imageUpscalerSettingsToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, audioInferenceSpeechToggleHandler, audioSettingsToggleHandler, textInferenceSettingsToggleHandler, videoSettingsToggleHandler, videoInferenceSettingsTtsToggleHandler, videoInferenceSettingsActiveSpeakerDetectionToggleHandler, videoInferenceSettingsActiveSpeakerBoundingBoxesToggleHandler, videoInferenceSettingsSegmentsToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, outpaintSettingsToggleHandler, safetyInputsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, imageInferenceSettingsMoodboardsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler, audioInferenceSpeechVoicesToggleHandler, referenceVideosToggleHandler } from "./utils.js";
|
||||
import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, saveTextHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, textModelSearchFilterHandler, vectorizeModelSearchFilterHandler, vectorizeToggleHandler, useParameterToggleHandler, imageInferenceToggleHandler, imageInferenceAdvancedFeaturesToggleHandler, watermarkAdvancedFeatureToggleHandler, videoInferenceSpeechInputToggleHandler, regionalPromptingRegionsToggleHandler, upscalerToggleHandler, imageUpscalerSettingsToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, audioInferenceSpeechToggleHandler, audioSettingsToggleHandler, textInferenceSettingsToggleHandler, videoSettingsToggleHandler, videoInferenceSettingsTtsToggleHandler, videoInferenceSettingsActiveSpeakerDetectionToggleHandler, videoInferenceSettingsActiveSpeakerBoundingBoxesToggleHandler, videoInferenceSettingsSegmentsToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, threeDInferenceSettingsMeshClusterToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, outpaintSettingsToggleHandler, safetyInputsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, imageInferenceSettingsMoodboardsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler, audioInferenceSpeechVoicesToggleHandler, referenceVideosToggleHandler } from "./utils.js";
|
||||
import { RUNWARE_NODE_TYPES, RUNWARE_NODE_PROPS, SEARCH_TERMS } from "./types.js";
|
||||
|
||||
const nodeInitList = [];
|
||||
@@ -176,6 +176,8 @@ app.registerExtension({
|
||||
nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSSHAPESLAT ||
|
||||
nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSTEXSLAT) {
|
||||
threeDInferenceSettingsLatToggleHandler(node);
|
||||
} else if(nodeClass === RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSMESHCLUSTER) {
|
||||
threeDInferenceSettingsMeshClusterToggleHandler(node);
|
||||
}
|
||||
|
||||
if(crNodeProps.colorModeOnly === true) return;
|
||||
|
||||
@@ -169,6 +169,7 @@ const RUNWARE_NODE_TYPES = {
|
||||
THREEDINFERENCESETTINGSSPARSESTRUCTURE: "Runware 3D Inference Settings Sparse Structure",
|
||||
THREEDINFERENCESETTINGSSHAPESLAT: "Runware 3D Inference Settings Shape Slat",
|
||||
THREEDINFERENCESETTINGSTEXSLAT: "Runware 3D Inference Settings Tex Slat",
|
||||
THREEDINFERENCESETTINGSMESHCLUSTER: "Runware 3D Inference Settings Mesh Cluster",
|
||||
SAVE3D: "Runware Save 3D",
|
||||
LOADMESH: "Runware Load Mesh",
|
||||
WATERMARKADVANCEDFEATURE: "Runware Watermark Advanced Feature",
|
||||
@@ -670,6 +671,10 @@ const RUNWARE_NODE_PROPS = {
|
||||
bgColor: DEFAULT_BGCOLOR,
|
||||
colorModeOnly: true,
|
||||
},
|
||||
[RUNWARE_NODE_TYPES.THREEDINFERENCESETTINGSMESHCLUSTER]: {
|
||||
bgColor: DEFAULT_BGCOLOR,
|
||||
colorModeOnly: true,
|
||||
},
|
||||
[RUNWARE_NODE_TYPES.SAVE3D]: {
|
||||
bgColor: DEFAULT_BGCOLOR,
|
||||
colorModeOnly: true,
|
||||
|
||||
@@ -2224,6 +2224,14 @@ function threeDInferenceSettingsToggleHandler(node) {
|
||||
["useModeration", "moderation"],
|
||||
["useSavePreRemeshedModel", "savePreRemeshedModel"],
|
||||
["useTexturePrompt", "texturePrompt"],
|
||||
["useFaceCount", "faceCount"],
|
||||
["useGenerateType", "generateType"],
|
||||
["usePolygonType", "polygonType"],
|
||||
["useGeometryOnly", "geometryOnly"],
|
||||
["useRemeshBand", "remeshBand"],
|
||||
["useRemeshProject", "remeshProject"],
|
||||
["useTextureFormat", "textureFormat"],
|
||||
["useAlphaMode", "alphaMode"],
|
||||
];
|
||||
pairs.forEach(([useName, paramName]) => {
|
||||
const useW = node.widgets.find(w => w.name === useName);
|
||||
@@ -2260,6 +2268,27 @@ function threeDInferenceSettingsLatToggleHandler(node) {
|
||||
});
|
||||
}
|
||||
|
||||
function threeDInferenceSettingsMeshClusterToggleHandler(node) {
|
||||
const pairs = [
|
||||
["useThresholdConeHalfAngleRad", "thresholdConeHalfAngleRad"],
|
||||
["useRefineIterations", "refineIterations"],
|
||||
["useGlobalIterations", "globalIterations"],
|
||||
["useSmoothStrength", "smoothStrength"],
|
||||
];
|
||||
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;
|
||||
toggleWidgetEnabled(paramW, enabled, node);
|
||||
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");
|
||||
@@ -5043,6 +5072,7 @@ export {
|
||||
threeDInferenceToggleHandler,
|
||||
threeDInferenceSettingsToggleHandler,
|
||||
threeDInferenceSettingsLatToggleHandler,
|
||||
threeDInferenceSettingsMeshClusterToggleHandler,
|
||||
ultralyticsProviderSettingsToggleHandler,
|
||||
openaiProviderSettingsToggleHandler,
|
||||
lightricksProviderSettingsToggleHandler,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
"""
|
||||
Runware 3D Inference Settings Node
|
||||
Main settings for 3D inference: textureSize, decimationTarget, remesh, resolution,
|
||||
imageAutoFix, faceLimit, texture, pbr, Tripo mesh/texture options, material/quality,
|
||||
Main settings for 3D inference: textureSize, decimationTarget, remesh, remeshBand, remeshProject,
|
||||
resolution, imageAutoFix, faceLimit, texture, pbr, textureFormat, alphaMode, Tripo mesh/texture options, material/quality,
|
||||
polyCount, taPose, boundingBox, meshMode, addons, hdTexture, and sub-configs
|
||||
sparseStructure, shapeSlat, texSlat from connected nodes.
|
||||
sparseStructure, shapeSlat, texSlat, meshCluster from connected nodes.
|
||||
"""
|
||||
|
||||
from typing import Dict, Any
|
||||
@@ -425,6 +425,47 @@ class Runware3DInferenceSettings:
|
||||
"label_on": "true",
|
||||
"label_off": "false",
|
||||
}),
|
||||
"meshCluster": ("RUNWARE3DINFERENCESETTINGSLAT", {
|
||||
"tooltip": "Connect Runware 3D Inference Settings Mesh Cluster node.",
|
||||
}),
|
||||
"useRemeshBand": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include remeshBand in settings.",
|
||||
"default": False,
|
||||
}),
|
||||
"remeshBand": ("FLOAT", {
|
||||
"tooltip": "Narrow-band width (in voxels) for dual-contouring remeshing. Must be greater than 0 when remesh is true. Only used when enabled.",
|
||||
"default": 1.0,
|
||||
"min": 0.1,
|
||||
"max": 16.0,
|
||||
"step": 0.1,
|
||||
}),
|
||||
"useRemeshProject": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include remeshProject in settings.",
|
||||
"default": False,
|
||||
}),
|
||||
"remeshProject": ("FLOAT", {
|
||||
"tooltip": "Projection factor for snapping remeshed vertices back to the original surface. Must be greater than 0 when remesh is true. Only used when enabled.",
|
||||
"default": 0.01,
|
||||
"min": 0.01,
|
||||
"max": 1.0,
|
||||
"step": 0.01,
|
||||
}),
|
||||
"useTextureFormat": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include textureFormat in settings.",
|
||||
"default": False,
|
||||
}),
|
||||
"textureFormat": (["WEBP", "PNG"], {
|
||||
"tooltip": "Texture format stored in the GLB output: WEBP or PNG. Only used when 'Use Texture Format' is enabled.",
|
||||
"default": "WEBP",
|
||||
}),
|
||||
"useAlphaMode": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include alphaMode in settings.",
|
||||
"default": False,
|
||||
}),
|
||||
"alphaMode": (["OPAQUE", "BLEND", "MASK"], {
|
||||
"tooltip": "Material alpha mode. Only used when 'Use Alpha Mode' is enabled.",
|
||||
"default": "OPAQUE",
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -433,10 +474,11 @@ class Runware3DInferenceSettings:
|
||||
FUNCTION = "create"
|
||||
CATEGORY = "Runware"
|
||||
DESCRIPTION = (
|
||||
"Configure Runware 3D Inference settings: textureSize, decimationTarget, remesh, resolution, imageAutoFix, faceLimit, "
|
||||
"texture, pbr, textureSeed, textureAlignment, textureQuality, autoSize, orientation, quad, compress, "
|
||||
"Configure Runware 3D Inference settings: textureSize, decimationTarget, remesh, remeshBand, remeshProject, "
|
||||
"resolution, imageAutoFix, faceLimit, texture, pbr, textureSeed, textureAlignment, textureQuality, "
|
||||
"textureFormat, alphaMode, autoSize, orientation, quad, compress, "
|
||||
"smartLowPoly, generateParts, exportUv, geometryQuality, originalAlpha, material, quality, polyCount, "
|
||||
"taPose, boundingBox, meshMode, addons, hdTexture, and lat configs."
|
||||
"taPose, boundingBox, meshMode, addons, hdTexture, lat configs, and meshCluster."
|
||||
)
|
||||
|
||||
def create(self, **kwargs) -> tuple[Dict[str, Any]]:
|
||||
@@ -448,6 +490,10 @@ class Runware3DInferenceSettings:
|
||||
settings["decimationTarget"] = int(kwargs.get("decimationTarget", 500000))
|
||||
if kwargs.get("useRemesh", False):
|
||||
settings["remesh"] = bool(kwargs.get("remesh", True))
|
||||
if kwargs.get("useRemeshBand", False):
|
||||
settings["remeshBand"] = float(kwargs.get("remeshBand", 1.0))
|
||||
if kwargs.get("useRemeshProject", False):
|
||||
settings["remeshProject"] = float(kwargs.get("remeshProject", 0.01))
|
||||
if kwargs.get("useResolution", False):
|
||||
settings["resolution"] = int(kwargs.get("resolution", 1024))
|
||||
|
||||
@@ -473,6 +519,10 @@ class Runware3DInferenceSettings:
|
||||
settings["textureAlignment"] = kwargs.get("textureAlignment", "original_image")
|
||||
if kwargs.get("useTextureQuality", False):
|
||||
settings["textureQuality"] = kwargs.get("textureQuality", "standard")
|
||||
if kwargs.get("useTextureFormat", False):
|
||||
settings["textureFormat"] = kwargs.get("textureFormat", "WEBP")
|
||||
if kwargs.get("useAlphaMode", False):
|
||||
settings["alphaMode"] = kwargs.get("alphaMode", "OPAQUE")
|
||||
if kwargs.get("useAutoSize", False):
|
||||
settings["autoSize"] = bool(kwargs.get("autoSize", False))
|
||||
if kwargs.get("useOrientation", False):
|
||||
@@ -556,6 +606,10 @@ class Runware3DInferenceSettings:
|
||||
if tex is not None and isinstance(tex, dict) and len(tex) > 0:
|
||||
settings["texSlat"] = tex
|
||||
|
||||
mesh_cluster = kwargs.get("meshCluster", None)
|
||||
if mesh_cluster is not None and isinstance(mesh_cluster, dict) and len(mesh_cluster) > 0:
|
||||
settings["meshCluster"] = mesh_cluster
|
||||
|
||||
return (settings,)
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
"""
|
||||
Runware 3D Inference Settings Mesh Cluster Node
|
||||
Outputs meshCluster config: thresholdConeHalfAngleRad, refineIterations,
|
||||
globalIterations, smoothStrength
|
||||
"""
|
||||
|
||||
import math
|
||||
from typing import Dict, Any
|
||||
|
||||
|
||||
class Runware3DInferenceSettingsMeshCluster:
|
||||
"""Runware 3D Inference Settings Mesh Cluster Node"""
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {},
|
||||
"optional": {
|
||||
"useThresholdConeHalfAngleRad": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include thresholdConeHalfAngleRad in meshCluster",
|
||||
"default": False,
|
||||
}),
|
||||
"thresholdConeHalfAngleRad": ("FLOAT", {
|
||||
"tooltip": "Cone half-angle threshold (radians) used during UV chart clustering. Only used when enabled.",
|
||||
"default": math.pi / 2,
|
||||
"min": 0.0,
|
||||
"max": math.pi,
|
||||
"step": 0.01,
|
||||
}),
|
||||
"useRefineIterations": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include refineIterations in meshCluster",
|
||||
"default": False,
|
||||
}),
|
||||
"refineIterations": ("INT", {
|
||||
"tooltip": "Local refinement iterations for chart clustering. Only used when enabled.",
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 64,
|
||||
"step": 1,
|
||||
}),
|
||||
"useGlobalIterations": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include globalIterations in meshCluster",
|
||||
"default": False,
|
||||
}),
|
||||
"globalIterations": ("INT", {
|
||||
"tooltip": "Global iterations for chart clustering. Only used when enabled.",
|
||||
"default": 1,
|
||||
"min": 0,
|
||||
"max": 64,
|
||||
"step": 1,
|
||||
}),
|
||||
"useSmoothStrength": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include smoothStrength in meshCluster",
|
||||
"default": False,
|
||||
}),
|
||||
"smoothStrength": ("INT", {
|
||||
"tooltip": "Smoothing strength applied during chart clustering. Only used when enabled.",
|
||||
"default": 1,
|
||||
"min": 0,
|
||||
"max": 10,
|
||||
"step": 1,
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("RUNWARE3DINFERENCESETTINGSLAT",)
|
||||
RETURN_NAMES = ("Mesh Cluster",)
|
||||
FUNCTION = "create"
|
||||
CATEGORY = "Runware"
|
||||
DESCRIPTION = "Configure mesh cluster parameters for Runware 3D Inference settings."
|
||||
|
||||
def create(self, **kwargs) -> tuple[Dict[str, Any]]:
|
||||
out: Dict[str, Any] = {}
|
||||
if kwargs.get("useThresholdConeHalfAngleRad", False):
|
||||
out["thresholdConeHalfAngleRad"] = float(kwargs.get("thresholdConeHalfAngleRad", math.pi / 2))
|
||||
if kwargs.get("useRefineIterations", False):
|
||||
out["refineIterations"] = int(kwargs.get("refineIterations", 0))
|
||||
if kwargs.get("useGlobalIterations", False):
|
||||
out["globalIterations"] = int(kwargs.get("globalIterations", 1))
|
||||
if kwargs.get("useSmoothStrength", False):
|
||||
out["smoothStrength"] = int(kwargs.get("smoothStrength", 1))
|
||||
return (out,)
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"Runware3DInferenceSettingsMeshCluster": Runware3DInferenceSettingsMeshCluster,
|
||||
}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"Runware3DInferenceSettingsMeshCluster": "Runware 3D Inference Settings Mesh Cluster",
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user