Protoface Hunyuan3D V3 · Image to 3D
Hunyuan3D V3 from images
- model.3d
- files
- run id
Everything about image-to-3D comes down to what the model can't see. Feed it one photo and it invents the back of the head, the far side of the car, the inside of the mug - usually badly, because diffusion doesn't know your object, it knows objects like yours. This node's best feature isn't in the resolution or the mesh settings. It's that Hunyuan3D V3 takes additional views.
What it is
The Protoface pack's node for Tencent's hosted Hunyuan3D V3 image-to-3D operation: an image in, a textured mesh out, 25 credits per job, no local weights or CUDA anywhere. It's the same model as the text-to-3D node beside it, reached from a picture instead of a prompt, and it exposes the optional back_image, left_image, and right_image inputs on top of the primary image.
If you've followed local 3D at all, the pitch is familiar: Hunyuan3D is the default reach for image-to-3D, the open 2.1 release is the one people actually install, and 2.5-onward stayed hosted. The KB's 3D doc is blunt about the ceiling - silhouette and surface good, topology bad, organics worse than hard surface, prints fine, rigging a rebuild. V3 hosted doesn't repeal any of that. It does remove the install fight that's the real barrier in the local path.
Why the multi-view inputs are the whole point
The single image is required; back_image, left_image and right_image are all optional and all sit in Default mode by default, which means they're omitted from the request entirely rather than sent as nulls. Switch one to Image and send a native ComfyUI image, or to References and send a Protoface Reuse Result Asset handle.
When you have them, this changes the job from guessing to reconstructing. If you generated a character turnaround - front, side, back in a consistent style - feeding those three or four views in gets you geometry that actually resolves on all sides instead of a plausible smear. That's a bigger quality jump than any face-count setting on this node, and it's the reason to keep the sibling text-to-3D node around only for objects whose other sides you don't care about.
The catch is consistency. Views that disagree - different lighting, different proportions, a slightly different outfit - give the model contradictory evidence and you'll get something worse than the single-image result. Build the extra views from one source, not from four separate generations that each went their own way.
The other controls
image is the required input; mode dropdown as described (Image / References / asset id or URL).
face_count (40,000–1,500,000, default 500,000) is your polygon budget. Nobody needs half a million triangles for a background prop. Set it to what the destination can eat.
generate_type - Normal (textured), LowPoly (reduction), Geometry (white, untextured). Geometry mode is the cheap way to check whether the shape is worth texturing.
polygon_type - triangle or quadrilateral, only active under LowPoly. Quads if you're going to hand-edit in Blender.
enable_pbr - off by default; turn it on for relightable materials. Hunyuan's PBR output is the most developed part of its texturing pipeline, and it's the difference between an asset you can light and one you can only paste.
Plus the pack's two housekeeping fields: generation_id identifies the paid job (fixed reuses, incremented re-buys, unrelated to any seed) and request_scope is the non-secret per-node scope the browser fills in and headless clients must supply.
Outputs
model.3d, files, run id. Watch the format caveat: the extension comes from the response's content type, so you may get GLB, GLTF, OBJ, STL, PLY or FBX depending on what the provider returned. ComfyUI's Load3D and Preview3D handle most of those; a strict GLB-only downstream node may need converting first. Protoface Save File puts the original in output/ with a sane name; keep run id in case a long job times out, since Protoface Resume Run retrieves it without resubmitting.
Install
cd ComfyUI/custom_nodes
git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git protoface
python -m pip install -r protoface/requirements.txt
Manager users: search Protoface → protoface-nodes → restart → reload. ComfyUI 0.41.0+, Python 3.10+, pip run with ComfyUI's interpreter. API key via the Protoface panel in the lower-right corner, or PROTOFACE_API_KEY / PROTOFACE_API_KEY_FILE for a persistent server. Billing is direct to Protoface, not Comfy credits.
Traps
Inconsistent multi-view inputs are the top one, and they don't error - they just quietly produce mush. Second: leaving face_count at 500k and then wondering why your viewport crawls. Third: the API key lives in server memory, so a restart logs you out. And the general rule for a node that costs 25 credits a click - iterate on Geometry mode until the silhouette is right, then spend on texture.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | COMBO | A public URL, a data URI, or an asset id. | |
| back_image | COMBO | A public URL, a data URI, or an asset id. | |
| enable_pbr | BOOLEAN | false | Whether to enable PBR material generation |
| face_count | INT | 50000040000–1500000 | Target face count. Range: 40000-1500000 |
| generate_type | COMBO | Normal | Generation type. Normal: textured model. LowPoly: polygon reduction. Geometry: white model without texture. |
| left_image | COMBO | A public URL, a data URI, or an asset id. | |
| polygon_type | COMBO | triangle | Polygon type. Only takes effect when GenerateType is LowPoly. |
| right_image | COMBO | A public URL, a data URI, or an asset id. | |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model.3d | FILE_3D | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |