Protoface Tripo H3.1 · Text to 3D
Tripo H3.1 text-to-3D
- model.3d
- files
- run id
Nearly every complaint about generated 3D is the same complaint: the surface is fine, the topology is trash. Triangle soup, unreadable edge loops, a UV map made by a machine that has never met a human. Tripo H3.1 exposes a quad switch. That single boolean is why this node is worth a look - quad output is the difference between an asset you can hand-edit and one you have to rebuild.
Tripo is Tripo AI (VAST), the lab behind the MIT-licensed TripoSR that's been the fast-and-permissive image-to-3D fallback since 2024. H3.1 is their hosted generation, several versions on, and the Protoface catalog prices the text-to-3D operation at 10 credits a job - half what the image-to-3D sibling costs, which makes text-to-3D here the cheap way to hunt for a silhouette.
What it is
A prompt in, a textured GLB-ish mesh out, no local anything. The Protoface pack generates this node from the model's published request schema, so the inputs read like the API's own form: required fields become widgets, optional ones become Default/Set dropdowns where Default means "omit this from the request" and Set means "send it."
The output is a native FILE_3D, so ComfyUI's 3D nodes consume it directly. And with 10 credits per attempt, this is the one 3D operation in the pack where iteration doesn't feel reckless - you can burn five prompts to find the shape and still be under what a single Hunyuan job costs.
The controls that actually matter
prompt (required, max 1024 characters). Same rule as everywhere in 3D: hard-surface objects reconstruct better than organics. "Chunky dieselpunk generator, rivets, pipes, weathered paint" works. "A photoreal human face" is a preview of disappointment.
negative_prompt is optional and Set-mode - omit it and it doesn't go to the API at all. Worth using for the failures you actually see: melted details, extra limbs, floating debris.
quad is the headline. Off by default (triangles); turn it on for four-sided topology that a modeller can actually loop-cut. It's the closest thing to a retopology pass you'll get out of a single call.
face_limit is optional and, if unset, the model adaptively decides the count. Explicit range is 1,000 to 2,000,000. Setting it gives you a predictable budget for a game engine or a print; leaving it unset gives you the model's own judgement, which is usually not the aggressive decimation a realtime asset wants.
geometry_quality and texture_quality are both standard / detailed. Detailed costs you nothing in credits by the catalog's flat per-job price, so the decision is really about turnaround and file size.
texture (on) and pbr (on) interact: the field description says PBR implies texture. Turning PBR off gives you a plain baked texture; turning both off gets you an untextured shape, which is a legitimate way to test geometry cheaply on the same budget.
auto_size scales the result to real-world dimensions. Useful if the mesh is heading into a scene next to something with known scale - furniture, a car, a product shot.
And the three seeds - image_seed, model_seed, texture_seed - each Set-mode and each covering a different stage (the internal text-to-image step, the geometry, the texture). Separate stages, separate seeds; that's more control than most hosted 3D wrappers give you.
Finally the pack's two bookkeeping fields: generation_id is the paid-job identity (fixed reuses the recorded run, increment re-buys) and request_scope is the non-secret per-node scope the frontend assigns and headless clients must supply.
Outputs
model.3d, files, run id. Extensions follow the response's real content type, so check whether you got .glb, .gltf, .obj, .stl or .fbx before wiring it into a picky downstream node - the README is explicit that the actual format is authoritative. Protoface Save File writes the original into ComfyUI's output/ directory; Protoface Resume Run takes the run id and fetches a timed-out job 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 route: search Protoface → install protoface-nodes → restart → reload the browser. ComfyUI 0.41.0+, Python 3.10+, and use ComfyUI's interpreter for pip. Key in via the Protoface button, bottom right; PROTOFACE_API_KEY / PROTOFACE_API_KEY_FILE for servers. Nothing downloaded, nothing compiled - which is the entire reason to pick this over building ComfyUI-3D-Pack.
Traps
Quads are a head start, not a finished asset: you'll still clean up UVs if the object has to be textured by hand. And auto_size can surprise you on stylised props - a "giant sword" comes back at plausible-sword scale, which is not what the concept art implied. Last one, the pack-wide classic: the API key sits in server memory, so after a restart every node in this pack fails auth until you re-enter it.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text description of the 3D object to generate. Maximum 1024 characters. | |
| auto_size | BOOLEAN | false | Auto-scale the model to real-world dimensions. |
| face_limit | COMBO | Target number of faces for the generated mesh. If not set, the model adaptively determines the count. | |
| geometry_quality | COMBO | standard | Quality level for geometry. |
| image_seed | COMBO | Seed for the text-to-image step. | |
| model_seed | COMBO | Seed for geometry generation reproducibility. | |
| negative_prompt | COMBO | Text describing features to avoid in the generated model.Maximum 1024 characters. | |
| pbr | BOOLEAN | true | Whether to generate PBR (Physically Based Rendering) materials. If true, texture is also enabled. |
| quad | BOOLEAN | false | Generate quad (4-sided) mesh topology instead of triangles. |
| texture | BOOLEAN | true | Whether to generate textures for the model. |
| texture_quality | COMBO | standard | Quality level for textures. 'detailed' produces higher-resolution textures. |
| texture_seed | COMBO | Seed for texture generation reproducibility. | |
| 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 | — |