Files
Runware-ComfyUI-Runware/modules/loadMesh.py
T

56 lines
1.8 KiB
Python

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 entering a path. Base64 encodes and outputs as data URI. Connect to Runware 3D Inference Inputs meshFile."
def load_mesh(self, file_path):
path = (file_path or "").strip() if isinstance(file_path, str) else ""
if not path:
return ("",)
full_path = os.path.expanduser(path)
ext = os.path.splitext(full_path)[1].lower()
if ext not in self.MESH_EXTENSIONS:
raise ValueError(
f"Runware Load Mesh: unsupported extension '{ext}'. Expected .glb or .ply."
)
if not os.path.isfile(full_path):
raise FileNotFoundError(
f"Runware Load Mesh: file not found: {full_path}"
)
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",
}