diff --git a/__init__.py b/__init__.py index 368c579..fbf4130 100644 --- a/__init__.py +++ b/__init__.py @@ -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, diff --git a/clientlibs/main.js b/clientlibs/main.js index 7cb4f4c..39293f0 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, 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; diff --git a/clientlibs/types.js b/clientlibs/types.js index e1cc897..e6c329b 100644 --- a/clientlibs/types.js +++ b/clientlibs/types.js @@ -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, diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 6de9389..0f90b98 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -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, diff --git a/modules/threeDInferenceSettings.py b/modules/threeDInferenceSettings.py index 52414d9..88e23c0 100644 --- a/modules/threeDInferenceSettings.py +++ b/modules/threeDInferenceSettings.py @@ -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,) diff --git a/modules/threeDInferenceSettingsMeshCluster.py b/modules/threeDInferenceSettingsMeshCluster.py new file mode 100644 index 0000000..9efac65 --- /dev/null +++ b/modules/threeDInferenceSettingsMeshCluster.py @@ -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", +} diff --git a/workflows/Runware_3d_Inference_Trellis_2_alphamode.json b/workflows/Runware_3d_Inference_Trellis_2_alphamode.json new file mode 100644 index 0000000..aa00af5 --- /dev/null +++ b/workflows/Runware_3d_Inference_Trellis_2_alphamode.json @@ -0,0 +1 @@ +{"id":"a5d87c24-fb34-4b94-8a9b-3dc4ab80df2a","revision":0,"last_node_id":5,"last_link_id":3,"nodes":[{"id":2,"type":"Runware Save 3D","pos":[787.0926635168705,-62.82743222548057],"size":[270,106],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"3dObject","name":"3dObject","type":"STRING","widget":{"name":"3dObject"},"link":1},{"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":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"dde85898864590cd10c92e86009fcbf7b74a2fe1","Node name for S&R":"Runware Save 3D"},"widgets_values":["","ComfyUI","/Users/sirshenduganguly/Downloads/Runware-codebase/ComfyUI/output/3d_models/ComfyUI_20260529_231846.glb"],"bgcolor":"#5345bf"},{"id":1,"type":"Runware 3D Inference","pos":[-139.24153748139744,-282.38381499362237],"size":[400,330],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWARE3DINFERENCEINPUTS","link":2},{"localized_name":"settings","name":"settings","shape":7,"type":"RUNWARE3DINFERENCESETTINGS","link":null},{"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":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"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":"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":[1]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"dde85898864590cd10c92e86009fcbf7b74a2fe1","Node name for S&R":"Runware 3D Inference"},"widgets_values":["TRELLIS.2","","",true,502879673,"randomize","GLB",false,95],"bgcolor":"#5345bf"},{"id":3,"type":"Runware 3D Inference Inputs","pos":[-45.829691285943866,162.31560728727223],"size":[291.853125,238],"flags":{},"order":2,"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},{"localized_name":"images_1","name":"images_1","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_2","name":"images_2","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_3","name":"images_3","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_4","name":"images_4","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_5","name":"images_5","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_6","name":"images_6","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_7","name":"images_7","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_8","name":"images_8","shape":7,"type":"IMAGE","link":null},{"localized_name":"meshFile","name":"meshFile","shape":7,"type":"STRING","widget":{"name":"meshFile"},"link":null}],"outputs":[{"localized_name":"Inputs","name":"Inputs","type":"RUNWARE3DINFERENCEINPUTS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"dde85898864590cd10c92e86009fcbf7b74a2fe1","Node name for S&R":"Runware 3D Inference Inputs"},"widgets_values":[""],"bgcolor":"#5345bf"},{"id":4,"type":"LoadImage","pos":[-18.46138470588654,541.3814716307909],"size":[282.798828125,314.0000000000001],"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":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.22.0","Node name for S&R":"LoadImage"},"widgets_values":[".webp","image"]},{"id":5,"type":"Runware 3D Inference Settings","pos":[324.86823299100723,-359.6118106146616],"size":[400,2380],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"sparseStructure","name":"sparseStructure","shape":7,"type":"RUNWARE3DINFERENCESETTINGSLAT","link":null},{"localized_name":"shapeSlat","name":"shapeSlat","shape":7,"type":"RUNWARE3DINFERENCESETTINGSLAT","link":null},{"localized_name":"texSlat","name":"texSlat","shape":7,"type":"RUNWARE3DINFERENCESETTINGSLAT","link":null},{"localized_name":"meshCluster","name":"meshCluster","shape":7,"type":"RUNWARE3DINFERENCESETTINGSLAT","link":null},{"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},{"localized_name":"useImageAutoFix","name":"useImageAutoFix","shape":7,"type":"BOOLEAN","widget":{"name":"useImageAutoFix"},"link":null},{"localized_name":"imageAutoFix","name":"imageAutoFix","shape":7,"type":"BOOLEAN","widget":{"name":"imageAutoFix"},"link":null},{"localized_name":"useFaceLimit","name":"useFaceLimit","shape":7,"type":"BOOLEAN","widget":{"name":"useFaceLimit"},"link":null},{"localized_name":"faceLimit","name":"faceLimit","shape":7,"type":"INT","widget":{"name":"faceLimit"},"link":null},{"localized_name":"useTexture","name":"useTexture","shape":7,"type":"BOOLEAN","widget":{"name":"useTexture"},"link":null},{"localized_name":"texture","name":"texture","shape":7,"type":"BOOLEAN","widget":{"name":"texture"},"link":null},{"localized_name":"usePbr","name":"usePbr","shape":7,"type":"BOOLEAN","widget":{"name":"usePbr"},"link":null},{"localized_name":"pbr","name":"pbr","shape":7,"type":"BOOLEAN","widget":{"name":"pbr"},"link":null},{"localized_name":"useTextureSeed","name":"useTextureSeed","shape":7,"type":"BOOLEAN","widget":{"name":"useTextureSeed"},"link":null},{"localized_name":"textureSeed","name":"textureSeed","shape":7,"type":"INT","widget":{"name":"textureSeed"},"link":null},{"localized_name":"useTextureAlignment","name":"useTextureAlignment","shape":7,"type":"BOOLEAN","widget":{"name":"useTextureAlignment"},"link":null},{"localized_name":"textureAlignment","name":"textureAlignment","shape":7,"type":"COMBO","widget":{"name":"textureAlignment"},"link":null},{"localized_name":"useTextureQuality","name":"useTextureQuality","shape":7,"type":"BOOLEAN","widget":{"name":"useTextureQuality"},"link":null},{"localized_name":"textureQuality","name":"textureQuality","shape":7,"type":"COMBO","widget":{"name":"textureQuality"},"link":null},{"localized_name":"useAutoSize","name":"useAutoSize","shape":7,"type":"BOOLEAN","widget":{"name":"useAutoSize"},"link":null},{"localized_name":"autoSize","name":"autoSize","shape":7,"type":"BOOLEAN","widget":{"name":"autoSize"},"link":null},{"localized_name":"useOrientation","name":"useOrientation","shape":7,"type":"BOOLEAN","widget":{"name":"useOrientation"},"link":null},{"localized_name":"orientation","name":"orientation","shape":7,"type":"COMBO","widget":{"name":"orientation"},"link":null},{"localized_name":"useQuad","name":"useQuad","shape":7,"type":"BOOLEAN","widget":{"name":"useQuad"},"link":null},{"localized_name":"quad","name":"quad","shape":7,"type":"BOOLEAN","widget":{"name":"quad"},"link":null},{"localized_name":"useCompress","name":"useCompress","shape":7,"type":"BOOLEAN","widget":{"name":"useCompress"},"link":null},{"localized_name":"compress","name":"compress","shape":7,"type":"COMBO","widget":{"name":"compress"},"link":null},{"localized_name":"useSmartLowPoly","name":"useSmartLowPoly","shape":7,"type":"BOOLEAN","widget":{"name":"useSmartLowPoly"},"link":null},{"localized_name":"smartLowPoly","name":"smartLowPoly","shape":7,"type":"BOOLEAN","widget":{"name":"smartLowPoly"},"link":null},{"localized_name":"useGenerateParts","name":"useGenerateParts","shape":7,"type":"BOOLEAN","widget":{"name":"useGenerateParts"},"link":null},{"localized_name":"generateParts","name":"generateParts","shape":7,"type":"BOOLEAN","widget":{"name":"generateParts"},"link":null},{"localized_name":"useExportUv","name":"useExportUv","shape":7,"type":"BOOLEAN","widget":{"name":"useExportUv"},"link":null},{"localized_name":"exportUv","name":"exportUv","shape":7,"type":"BOOLEAN","widget":{"name":"exportUv"},"link":null},{"localized_name":"useGeometryQuality","name":"useGeometryQuality","shape":7,"type":"BOOLEAN","widget":{"name":"useGeometryQuality"},"link":null},{"localized_name":"geometryQuality","name":"geometryQuality","shape":7,"type":"COMBO","widget":{"name":"geometryQuality"},"link":null},{"localized_name":"useOriginalAlpha","name":"useOriginalAlpha","shape":7,"type":"BOOLEAN","widget":{"name":"useOriginalAlpha"},"link":null},{"localized_name":"originalAlpha","name":"originalAlpha","shape":7,"type":"BOOLEAN","widget":{"name":"originalAlpha"},"link":null},{"localized_name":"useMaterial","name":"useMaterial","shape":7,"type":"BOOLEAN","widget":{"name":"useMaterial"},"link":null},{"localized_name":"material","name":"material","shape":7,"type":"COMBO","widget":{"name":"material"},"link":null},{"localized_name":"useQuality","name":"useQuality","shape":7,"type":"BOOLEAN","widget":{"name":"useQuality"},"link":null},{"localized_name":"quality","name":"quality","shape":7,"type":"COMBO","widget":{"name":"quality"},"link":null},{"localized_name":"usePolyCount","name":"usePolyCount","shape":7,"type":"BOOLEAN","widget":{"name":"usePolyCount"},"link":null},{"localized_name":"polyCount","name":"polyCount","shape":7,"type":"FLOAT","widget":{"name":"polyCount"},"link":null},{"localized_name":"useTaPose","name":"useTaPose","shape":7,"type":"BOOLEAN","widget":{"name":"useTaPose"},"link":null},{"localized_name":"taPose","name":"taPose","shape":7,"type":"BOOLEAN","widget":{"name":"taPose"},"link":null},{"localized_name":"useBoundingBox","name":"useBoundingBox","shape":7,"type":"BOOLEAN","widget":{"name":"useBoundingBox"},"link":null},{"localized_name":"boundingBox","name":"boundingBox","shape":7,"type":"STRING","widget":{"name":"boundingBox"},"link":null},{"localized_name":"useMeshMode","name":"useMeshMode","shape":7,"type":"BOOLEAN","widget":{"name":"useMeshMode"},"link":null},{"localized_name":"meshMode","name":"meshMode","shape":7,"type":"COMBO","widget":{"name":"meshMode"},"link":null},{"localized_name":"useAddons","name":"useAddons","shape":7,"type":"BOOLEAN","widget":{"name":"useAddons"},"link":null},{"localized_name":"addons","name":"addons","shape":7,"type":"STRING","widget":{"name":"addons"},"link":null},{"localized_name":"useHdTexture","name":"useHdTexture","shape":7,"type":"BOOLEAN","widget":{"name":"useHdTexture"},"link":null},{"localized_name":"hdTexture","name":"hdTexture","shape":7,"type":"BOOLEAN","widget":{"name":"hdTexture"},"link":null},{"localized_name":"useMeshType","name":"useMeshType","shape":7,"type":"BOOLEAN","widget":{"name":"useMeshType"},"link":null},{"localized_name":"meshType","name":"meshType","shape":7,"type":"COMBO","widget":{"name":"meshType"},"link":null},{"localized_name":"useTopology","name":"useTopology","shape":7,"type":"BOOLEAN","widget":{"name":"useTopology"},"link":null},{"localized_name":"topology","name":"topology","shape":7,"type":"COMBO","widget":{"name":"topology"},"link":null},{"localized_name":"useDecimation","name":"useDecimation","shape":7,"type":"BOOLEAN","widget":{"name":"useDecimation"},"link":null},{"localized_name":"decimation","name":"decimation","shape":7,"type":"INT","widget":{"name":"decimation"},"link":null},{"localized_name":"useSymmetry","name":"useSymmetry","shape":7,"type":"BOOLEAN","widget":{"name":"useSymmetry"},"link":null},{"localized_name":"symmetry","name":"symmetry","shape":7,"type":"COMBO","widget":{"name":"symmetry"},"link":null},{"localized_name":"usePose","name":"usePose","shape":7,"type":"BOOLEAN","widget":{"name":"usePose"},"link":null},{"localized_name":"pose","name":"pose","shape":7,"type":"COMBO","widget":{"name":"pose"},"link":null},{"localized_name":"useImageEnhancement","name":"useImageEnhancement","shape":7,"type":"BOOLEAN","widget":{"name":"useImageEnhancement"},"link":null},{"localized_name":"imageEnhancement","name":"imageEnhancement","shape":7,"type":"BOOLEAN","widget":{"name":"imageEnhancement"},"link":null},{"localized_name":"useRemoveLighting","name":"useRemoveLighting","shape":7,"type":"BOOLEAN","widget":{"name":"useRemoveLighting"},"link":null},{"localized_name":"removeLighting","name":"removeLighting","shape":7,"type":"BOOLEAN","widget":{"name":"removeLighting"},"link":null},{"localized_name":"useOrigin","name":"useOrigin","shape":7,"type":"BOOLEAN","widget":{"name":"useOrigin"},"link":null},{"localized_name":"origin","name":"origin","shape":7,"type":"COMBO","widget":{"name":"origin"},"link":null},{"localized_name":"useModeration","name":"useModeration","shape":7,"type":"BOOLEAN","widget":{"name":"useModeration"},"link":null},{"localized_name":"moderation","name":"moderation","shape":7,"type":"BOOLEAN","widget":{"name":"moderation"},"link":null},{"localized_name":"useSavePreRemeshedModel","name":"useSavePreRemeshedModel","shape":7,"type":"BOOLEAN","widget":{"name":"useSavePreRemeshedModel"},"link":null},{"localized_name":"savePreRemeshedModel","name":"savePreRemeshedModel","shape":7,"type":"BOOLEAN","widget":{"name":"savePreRemeshedModel"},"link":null},{"localized_name":"useTexturePrompt","name":"useTexturePrompt","shape":7,"type":"BOOLEAN","widget":{"name":"useTexturePrompt"},"link":null},{"localized_name":"texturePrompt","name":"texturePrompt","shape":7,"type":"STRING","widget":{"name":"texturePrompt"},"link":null},{"localized_name":"useFaceCount","name":"useFaceCount","shape":7,"type":"BOOLEAN","widget":{"name":"useFaceCount"},"link":null},{"localized_name":"faceCount","name":"faceCount","shape":7,"type":"INT","widget":{"name":"faceCount"},"link":null},{"localized_name":"useGenerateType","name":"useGenerateType","shape":7,"type":"BOOLEAN","widget":{"name":"useGenerateType"},"link":null},{"localized_name":"generateType","name":"generateType","shape":7,"type":"COMBO","widget":{"name":"generateType"},"link":null},{"localized_name":"usePolygonType","name":"usePolygonType","shape":7,"type":"BOOLEAN","widget":{"name":"usePolygonType"},"link":null},{"localized_name":"polygonType","name":"polygonType","shape":7,"type":"COMBO","widget":{"name":"polygonType"},"link":null},{"localized_name":"useGeometryOnly","name":"useGeometryOnly","shape":7,"type":"BOOLEAN","widget":{"name":"useGeometryOnly"},"link":null},{"localized_name":"geometryOnly","name":"geometryOnly","shape":7,"type":"BOOLEAN","widget":{"name":"geometryOnly"},"link":null},{"localized_name":"useRemeshBand","name":"useRemeshBand","shape":7,"type":"BOOLEAN","widget":{"name":"useRemeshBand"},"link":null},{"localized_name":"remeshBand","name":"remeshBand","shape":7,"type":"FLOAT","widget":{"name":"remeshBand"},"link":null},{"localized_name":"useRemeshProject","name":"useRemeshProject","shape":7,"type":"BOOLEAN","widget":{"name":"useRemeshProject"},"link":null},{"localized_name":"remeshProject","name":"remeshProject","shape":7,"type":"FLOAT","widget":{"name":"remeshProject"},"link":null},{"localized_name":"useTextureFormat","name":"useTextureFormat","shape":7,"type":"BOOLEAN","widget":{"name":"useTextureFormat"},"link":null},{"localized_name":"textureFormat","name":"textureFormat","shape":7,"type":"COMBO","widget":{"name":"textureFormat"},"link":null},{"localized_name":"useAlphaMode","name":"useAlphaMode","shape":7,"type":"BOOLEAN","widget":{"name":"useAlphaMode"},"link":null},{"localized_name":"alphaMode","name":"alphaMode","shape":7,"type":"COMBO","widget":{"name":"alphaMode"},"link":null}],"outputs":[{"localized_name":"Settings","name":"Settings","type":"RUNWARE3DINFERENCESETTINGS","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"dde85898864590cd10c92e86009fcbf7b74a2fe1","Node name for S&R":"Runware 3D Inference Settings"},"widgets_values":[false,2048,false,500000,false,true,false,1024,false,false,false,10000,false,true,false,true,false,1,false,"original_image",false,"standard",false,false,false,"default",false,false,false,"meshopt",false,false,false,false,false,true,false,"standard",false,false,false,"PBR",false,"medium",false,18000,false,false,false,"",false,"Quad",false,"",false,false,false,"standard",false,"triangle",false,2,false,"auto",false,"none",false,true,false,true,false,"bottom",false,false,false,false,false,"",false,500000,false,"Normal",false,"triangle",false,false,false,1,false,0,false,"WEBP",true,"OPAQUE"],"bgcolor":"#5345bf"}],"links":[[1,1,0,2,0,"STRING"],[2,3,0,1,0,"RUNWARE3DINFERENCEINPUTS"],[3,4,0,3,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.505529313703492,"offset":[982.2541248963807,496.19633452920067]}},"version":0.4} \ No newline at end of file