allow upport for inputs.mesh
This commit is contained in:
@@ -84,6 +84,7 @@ from .modules.threeDInferenceSettingsSparseStructure import Runware3DInferenceSe
|
||||
from .modules.threeDInferenceSettingsShapeSlat import Runware3DInferenceSettingsShapeSlat
|
||||
from .modules.threeDInferenceSettingsTexSlat import Runware3DInferenceSettingsTexSlat
|
||||
from .modules.save3D import RunwareSave3D
|
||||
from .modules.loadMesh import RunwareLoadMesh
|
||||
|
||||
RUNWARE_COMFYUI_VERSION = "1.4.0 Beta"
|
||||
|
||||
@@ -182,6 +183,7 @@ NODE_CLASS_MAPPINGS = {
|
||||
"Runware 3D Inference Settings Shape Slat": Runware3DInferenceSettingsShapeSlat,
|
||||
"Runware 3D Inference Settings Tex Slat": Runware3DInferenceSettingsTexSlat,
|
||||
"Runware Save 3D": RunwareSave3D,
|
||||
"Runware Load Mesh": RunwareLoadMesh,
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
|
||||
@@ -134,6 +134,7 @@ const RUNWARE_NODE_TYPES = {
|
||||
THREEDINFERENCESETTINGSSHAPESLAT: "Runware 3D Inference Settings Shape Slat",
|
||||
THREEDINFERENCESETTINGSTEXSLAT: "Runware 3D Inference Settings Tex Slat",
|
||||
SAVE3D: "Runware Save 3D",
|
||||
LOADMESH: "Runware Load Mesh",
|
||||
};
|
||||
|
||||
const RUNWARE_NODE_PROPS = {
|
||||
@@ -485,6 +486,10 @@ const RUNWARE_NODE_PROPS = {
|
||||
bgColor: DEFAULT_BGCOLOR,
|
||||
colorModeOnly: true,
|
||||
},
|
||||
[RUNWARE_NODE_TYPES.LOADMESH]: {
|
||||
bgColor: DEFAULT_BGCOLOR,
|
||||
colorModeOnly: true,
|
||||
},
|
||||
};
|
||||
|
||||
export {
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
import base64
|
||||
import os
|
||||
|
||||
|
||||
class RunwareLoadMesh:
|
||||
"""Runware Load Mesh node for loading 3D model files (uses same logic as Load Image)"""
|
||||
|
||||
MESH_EXTENSIONS = {".glb", ".ply"}
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"file_path": ("STRING", {
|
||||
"default": "",
|
||||
"multiline": False,
|
||||
"placeholder": "/path/to/model.glb or .ply",
|
||||
"tooltip": "Full path to .glb or .ply file. Use this to load from any directory.",
|
||||
}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("STRING",)
|
||||
RETURN_NAMES = ("Base64",)
|
||||
FUNCTION = "load_mesh"
|
||||
CATEGORY = "Runware"
|
||||
DESCRIPTION = "Load a 3D model file from a path or via upload. Base64 encodes and outputs as data URI. Connect to Runware 3D Inference Inputs meshFile."
|
||||
|
||||
def load_mesh(self, file_path):
|
||||
if not file_path or not isinstance(file_path, str) or not file_path.strip():
|
||||
return ("",)
|
||||
full_path = os.path.expanduser(file_path.strip())
|
||||
if not os.path.isfile(full_path) or os.path.splitext(full_path)[1].lower() not in self.MESH_EXTENSIONS:
|
||||
return ("",)
|
||||
with open(full_path, 'rb') as f:
|
||||
mesh_bytes = f.read()
|
||||
mesh_base64 = base64.b64encode(mesh_bytes).decode('utf-8')
|
||||
return (f"data:application/octet-stream;base64,{mesh_base64}",)
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"RunwareLoadMesh": RunwareLoadMesh,
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"RunwareLoadMesh": "Runware Load Mesh",
|
||||
}
|
||||
@@ -15,6 +15,10 @@ class threeDInferenceInputs:
|
||||
"mask": ("IMAGE", {
|
||||
"tooltip": "Optional mask image to specify a region of interest in the input image for 3D generation."
|
||||
}),
|
||||
"meshFile": ("STRING", {
|
||||
"default": "",
|
||||
"tooltip": "Base64 data URI of mesh file (.glb or .ply) from Runware Load Mesh, or media UUID from Runware Media Upload.",
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +32,7 @@ class threeDInferenceInputs:
|
||||
"""Create 3D inference inputs from provided parameters"""
|
||||
image = kwargs.get("image", None)
|
||||
mask = kwargs.get("mask", None)
|
||||
mesh_file = kwargs.get("meshFile", "")
|
||||
|
||||
inputs = {}
|
||||
|
||||
@@ -37,6 +42,9 @@ class threeDInferenceInputs:
|
||||
if mask is not None:
|
||||
inputs["mask"] = rwUtils.convertTensor2IMG(mask)
|
||||
|
||||
if mesh_file and isinstance(mesh_file, str) and mesh_file.strip():
|
||||
inputs["meshFile"] = mesh_file.strip()
|
||||
|
||||
return (inputs,)
|
||||
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user