Merge pull request #140 from Runware/feature-3dInfTencentHunyan
Added support for Hunyan 3D
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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}
|
||||
Reference in New Issue
Block a user