mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-05-29 20:27:32 +08:00
feat: add model_info output to Load3D node (#14144)
This commit is contained in:
@ -777,6 +777,17 @@ class Load3DCamera(ComfyTypeIO):
|
||||
Type = CameraInfo
|
||||
|
||||
|
||||
@comfytype(io_type="LOAD3D_MODEL_INFO")
|
||||
class Load3DModelInfo(ComfyTypeIO):
|
||||
class Model3DTransform(TypedDict):
|
||||
# Coordinate system: right-handed, Y-up, world space
|
||||
position: dict[str, float | int] # scene units
|
||||
quaternion: dict[str, float | int] # normalized, dimensionless; world rotation
|
||||
scale: dict[str, float | int] # dimensionless multiplier
|
||||
|
||||
Type = list[Model3DTransform]
|
||||
|
||||
|
||||
@comfytype(io_type="LOAD_3D")
|
||||
class Load3D(ComfyTypeIO):
|
||||
"""3D models are stored as a dictionary."""
|
||||
@ -786,6 +797,7 @@ class Load3D(ComfyTypeIO):
|
||||
normal: str
|
||||
camera_info: Load3DCamera.CameraInfo
|
||||
recording: NotRequired[str]
|
||||
model_3d_info: NotRequired[list[Load3DModelInfo.Model3DTransform]]
|
||||
|
||||
Type = Model3DDict
|
||||
|
||||
@ -2298,6 +2310,7 @@ __all__ = [
|
||||
"FlowControl",
|
||||
"Accumulation",
|
||||
"Load3DCamera",
|
||||
"Load3DModelInfo",
|
||||
"Load3D",
|
||||
"Load3DAnimation",
|
||||
"Photomaker",
|
||||
|
||||
@ -47,6 +47,7 @@ class Load3D(IO.ComfyNode):
|
||||
IO.Load3DCamera.Output(display_name="camera_info"),
|
||||
IO.Video.Output(display_name="recording_video"),
|
||||
IO.File3DAny.Output(display_name="model_3d"),
|
||||
IO.Load3DModelInfo.Output(display_name="model_3d_info"),
|
||||
],
|
||||
)
|
||||
|
||||
@ -73,7 +74,8 @@ class Load3D(IO.ComfyNode):
|
||||
if model_file and model_file != "none":
|
||||
file_3d = Types.File3D(folder_paths.get_annotated_filepath(model_file))
|
||||
mesh_path = model_file
|
||||
return IO.NodeOutput(output_image, output_mask, mesh_path, normal_image, image['camera_info'], video, file_3d)
|
||||
model_3d_info = image.get('model_3d_info', [])
|
||||
return IO.NodeOutput(output_image, output_mask, mesh_path, normal_image, image['camera_info'], video, file_3d, model_3d_info)
|
||||
|
||||
process = execute # TODO: remove
|
||||
|
||||
|
||||
Reference in New Issue
Block a user