[PR #21] [MERGED] Map MODEL_3D input type to MultiType socket (mirror upstream union) #22

Closed
opened 2026-10-26 22:29:00 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Comfy-Org/comfy-remote-nodes/pull/21
Author: @Kosinkadink
Created: 5/17/2026
Status: ✅ Merged
Merged: 5/17/2026
Merged by: @Kosinkadink

Base: main ← Head: feat/model3d-input-multitype-mapping


📝 Commits (1)

  • 197e7ba Map "MODEL_3D" input type to MultiType socket (mirror upstream union)

📊 Changes

1 file changed (+24 additions, -0 deletions)

View changed files

📝 proxy_node.py (+24 -0)

📄 Description

Follow-up to PR #20: the MODEL_3D input wire type now resolves to an IO.MultiType.Input(types=[IO.File3DGLB, IO.File3DOBJ, IO.File3DFBX, IO.File3DAny]) socket — symmetric counterpart of the existing "MODEL_3D" entry in _OUTPUT_CLASSES that maps to IO.File3DGLB.Output.

Previously the descriptor wire type "MODEL_3D" fell through to the opaque IO.Custom("MODEL_3D").Input(...) socket, which is a single-comfytype socket the frontend only allows connections from identically-tagged outputs. Real upstream 3D sources expose different comfytypes:

  • Load3D outputs IO.File3DAny (comfytype FILE_3D).
  • Meshy / Hunyuan3D / Tripo / Rodin partner nodes output IO.File3DGLB (comfytype FILE_3D_GLB) via the existing _OUTPUT_CLASSES["MODEL_3D"] mapping.
  • Meshy's dual FILE_3D_FBX output socket emits FILE_3D_FBX.

None of these connect to IO.Custom("MODEL_3D"). The upstream Tencent Hunyuan3D MODEL_3D-input nodes (TencentModelTo3DUVNode / Tencent3DTextureEditNode / Tencent3DPartNode / TencentSmartTopologyNode) all use IO.MultiType.Input(types=[...]) to accept the union; mirroring that union here keeps the proxy socket compatible with every existing 3D-emitting node.

get_io_type() on IO.MultiType.Input returns the comma-joined inner type IDs (e.g. "FILE_3D_GLB,FILE_3D_OBJ,FILE_3D_FBX,FILE_3D") — matches the convention SxS workflows already use for their SaveGLB connector inputs.

Per-node format validation (e.g. 3DTextureEdit's FBX-only enforcement, 3DPart's FBX-only enforcement) is done server-side in each provider's execute() against the inline envelope's format extra; this socket-level filter is purely about frontend connection validity.

Unblocks the paired comfy-rnp-server PR (TencentModelTo3DUVNode_RNP + Tencent3DPartNode_RNP) which uses the ["MODEL_3D", {}] wire shape.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Comfy-Org/comfy-remote-nodes/pull/21 **Author:** [@Kosinkadink](https://github.com/Kosinkadink) **Created:** 5/17/2026 **Status:** ✅ Merged **Merged:** 5/17/2026 **Merged by:** [@Kosinkadink](https://github.com/Kosinkadink) **Base:** `main` ← **Head:** `feat/model3d-input-multitype-mapping` --- ### 📝 Commits (1) - [`197e7ba`](https://github.com/Comfy-Org/comfy-remote-nodes/commit/197e7ba4067deb8ca7cfee6b79a0cf5d36a13e1a) Map "MODEL_3D" input type to MultiType socket (mirror upstream union) ### 📊 Changes **1 file changed** (+24 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `proxy_node.py` (+24 -0) </details> ### 📄 Description Follow-up to PR #20: the `MODEL_3D` input wire type now resolves to an `IO.MultiType.Input(types=[IO.File3DGLB, IO.File3DOBJ, IO.File3DFBX, IO.File3DAny])` socket — symmetric counterpart of the existing `"MODEL_3D"` entry in `_OUTPUT_CLASSES` that maps to `IO.File3DGLB.Output`. Previously the descriptor wire type `"MODEL_3D"` fell through to the opaque `IO.Custom("MODEL_3D").Input(...)` socket, which is a single-comfytype socket the frontend only allows connections from identically-tagged outputs. Real upstream 3D sources expose different comfytypes: - `Load3D` outputs `IO.File3DAny` (comfytype `FILE_3D`). - Meshy / Hunyuan3D / Tripo / Rodin partner nodes output `IO.File3DGLB` (comfytype `FILE_3D_GLB`) via the existing `_OUTPUT_CLASSES["MODEL_3D"]` mapping. - Meshy's dual `FILE_3D_FBX` output socket emits `FILE_3D_FBX`. None of these connect to `IO.Custom("MODEL_3D")`. The upstream Tencent Hunyuan3D MODEL_3D-input nodes (`TencentModelTo3DUVNode` / `Tencent3DTextureEditNode` / `Tencent3DPartNode` / `TencentSmartTopologyNode`) all use `IO.MultiType.Input(types=[...])` to accept the union; mirroring that union here keeps the proxy socket compatible with every existing 3D-emitting node. `get_io_type()` on `IO.MultiType.Input` returns the comma-joined inner type IDs (e.g. `"FILE_3D_GLB,FILE_3D_OBJ,FILE_3D_FBX,FILE_3D"`) — matches the convention SxS workflows already use for their `SaveGLB` connector inputs. Per-node format validation (e.g. 3DTextureEdit's FBX-only enforcement, 3DPart's FBX-only enforcement) is done server-side in each provider's `execute()` against the inline envelope's `format` extra; this socket-level filter is purely about frontend connection validity. Unblocks the paired comfy-rnp-server PR (`TencentModelTo3DUVNode_RNP` + `Tencent3DPartNode_RNP`) which uses the `["MODEL_3D", {}]` wire shape. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-26 22:29:00 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/comfy-remote-nodes#22
No description provided.