Merge pull request #140 from Runware/feature-3dInfTencentHunyan

Added support for Hunyan 3D
This commit is contained in:
Sirshendu Ganguly
2026-04-29 19:16:35 +05:30
committed by GitHub
4 changed files with 61 additions and 3 deletions
+13 -1
View File
@@ -7,6 +7,8 @@ class threeDInference:
# Available 3D models
THREED_MODELS = {
"Tencent Hunyuan 3D 3.1 Pro": "tencent:hunyuan-3d@3.1-pro",
"Tencent Hunyuan 3D 3.1 Rapid": "tencent:hunyuan-3d@3.1-rapid",
"Meta SAM 3D": "meta:sam@3d",
"TRELLIS.2": "microsoft:trellis-2@4b",
"Tripo 3D v3.1": "tripo:v3.1@0",
@@ -16,7 +18,7 @@ class threeDInference:
}
# Output formats
OUTPUT_FORMATS = ["GLB", "PLY", "FBX"]
OUTPUT_FORMATS = ["GLB", "FBX", "PLY", "OBJ"]
@classmethod
def INPUT_TYPES(cls):
@@ -31,6 +33,11 @@ class threeDInference:
"placeholder": "Describe the 3D object you want to generate...",
"tooltip": "A text prompt describing the 3D object to generate."
}),
"negativePrompt": ("STRING", {
"multiline": True,
"placeholder": "Describe what to avoid in the 3D output...",
"tooltip": "A negative text prompt describing attributes to avoid in the generated 3D object."
}),
"useSeed": ("BOOLEAN", {
"tooltip": "Include seed in the API request. Turn off if the model should not receive a seed.",
"default": True,
@@ -77,6 +84,7 @@ class threeDInference:
"""Generate 3D model from inputs"""
modelName = kwargs.get("Model", "Meta SAM 3D")
positivePrompt = kwargs.get("positivePrompt", "")
negativePrompt = kwargs.get("negativePrompt", "")
seed = kwargs.get("seed", 1)
use_seed = kwargs.get("useSeed", True)
outputFormat = kwargs.get("outputFormat", "GLB")
@@ -106,6 +114,10 @@ class threeDInference:
if positivePrompt and positivePrompt.strip() != "":
genConfig[0]["positivePrompt"] = positivePrompt.strip()
# Add negativePrompt if provided
if negativePrompt and negativePrompt.strip() != "":
genConfig[0]["negativePrompt"] = negativePrompt.strip()
if use_seed:
genConfig[0]["seed"] = seed
+2 -2
View File
@@ -1,6 +1,6 @@
from .utils import runwareUtils as rwUtils
_IMAGE_SLOTS = 4
_IMAGE_SLOTS = 8
class threeDInferenceInputs:
@@ -30,7 +30,7 @@ class threeDInferenceInputs:
}
DESCRIPTION = (
"Configure custom inputs for Runware 3D Inference: image, mask, meshFile, and images_1…images_4 "
"Configure custom inputs for Runware 3D Inference: image, mask, meshFile, and images_1…images_8 "
"(merged into inputs.images as an array)."
)
FUNCTION = "createInputs"
+45
View File
@@ -388,6 +388,43 @@ class Runware3DInferenceSettings:
"texSlat": ("RUNWARE3DINFERENCESETTINGSLAT", {
"tooltip": "Connect Runware 3D Inference Settings Tex Slat node.",
}),
"useFaceCount": ("BOOLEAN", {
"tooltip": "Enable to include faceCount in settings (Tencent Hunyuan Pro).",
"default": False,
}),
"faceCount": ("INT", {
"tooltip": "Target number of mesh faces for Hunyuan Pro (3000-1500000).",
"default": 500000,
"min": 3000,
"max": 1500000,
"step": 1000,
}),
"useGenerateType": ("BOOLEAN", {
"tooltip": "Enable to include generateType in settings (Tencent Hunyuan Pro).",
"default": False,
}),
"generateType": (["Normal", "Geometry"], {
"tooltip": "Hunyuan Pro generation mode: Normal or Geometry.",
"default": "Normal",
}),
"usePolygonType": ("BOOLEAN", {
"tooltip": "Enable to include polygonType in settings (Tencent Hunyuan Pro).",
"default": False,
}),
"polygonType": (["triangle", "quadrilateral"], {
"tooltip": "Polygon type for low-poly style output. For Hunyuan 3.1, lowpoly mode is not supported by provider.",
"default": "triangle",
}),
"useGeometryOnly": ("BOOLEAN", {
"tooltip": "Enable to include geometryOnly in settings (Tencent Hunyuan Rapid).",
"default": False,
}),
"geometryOnly": ("BOOLEAN", {
"tooltip": "Rapid-only: texture-free white model generation.",
"default": False,
"label_on": "true",
"label_off": "false",
}),
}
}
@@ -422,6 +459,14 @@ class Runware3DInferenceSettings:
settings["texture"] = bool(kwargs.get("texture", True))
if kwargs.get("usePbr", False):
settings["pbr"] = bool(kwargs.get("pbr", True))
if kwargs.get("useFaceCount", False):
settings["faceCount"] = int(kwargs.get("faceCount", 500000))
if kwargs.get("useGenerateType", False):
settings["generateType"] = kwargs.get("generateType", "Normal")
if kwargs.get("usePolygonType", False):
settings["polygonType"] = kwargs.get("polygonType", "triangle")
if kwargs.get("useGeometryOnly", False):
settings["geometryOnly"] = bool(kwargs.get("geometryOnly", False))
if kwargs.get("useTextureSeed", False):
settings["textureSeed"] = int(kwargs.get("textureSeed", 1))
if kwargs.get("useTextureAlignment", False):
@@ -0,0 +1 @@
{"id":"9c7846cc-28e4-4e47-9afd-a0afd8aa946e","revision":0,"last_node_id":4,"last_link_id":3,"nodes":[{"id":4,"type":"LoadImage","pos":[-262.55990081701316,-173.49336151906746],"size":[282.798828125,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":[2]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.19.3","Node name for S&R":"LoadImage"},"widgets_values":[".webp","image"]},{"id":1,"type":"Runware 3D Inference","pos":[410.20945011776087,-170.0173422261238],"size":[400,330],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWARE3DINFERENCEINPUTS","link":3},{"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":"4f974312a40d669210eee8bbec40c15a9d664eb8","Node name for S&R":"Runware 3D Inference"},"widgets_values":["Tencent Hunyuan 3D 3.1 Pro","","",false,2026520027,"randomize","GLB",false,95],"bgcolor":"#5345bf"},{"id":3,"type":"Runware 3D Inference Inputs","pos":[81.77888705546957,-123.22973560217876],"size":[291.853125,238],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":null},{"localized_name":"mask","name":"mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"images_1","name":"images_1","shape":7,"type":"IMAGE","link":2},{"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":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"4f974312a40d669210eee8bbec40c15a9d664eb8","Node name for S&R":"Runware 3D Inference Inputs"},"widgets_values":[""],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Save 3D","pos":[874.6227690216073,-163.10399773255116],"size":[270,106],"flags":{},"order":3,"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":"4f974312a40d669210eee8bbec40c15a9d664eb8","Node name for S&R":"Runware Save 3D"},"widgets_values":["","ComfyUI",""],"bgcolor":"#5345bf"}],"links":[[1,1,0,2,0,"STRING"],[2,4,0,3,2,"IMAGE"],[3,3,0,1,0,"RUNWARE3DINFERENCEINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6057126191083312,"offset":[487.1679059599401,535.6289486296486]}},"version":0.4}