ComfyUI Node

BytePlus Hitem3D 2.0

Four photos in, a high-poly base mesh out

By byteplus-sa·Created 22 days ago·Updated a day ago· 4
BytePlus Hitem3D 2.0
  • images
  • model
  • response
◄resolution1536►
◄request_typeGeometry and texture►
◄file_formatglb►
◄face0►
◄views►

Hitem3D 2.0 is the image-to-3D model people in the 3D subs keep naming as the one that actually makes a usable dense mesh - the +185 "Hitem3D currently best mesh generator?" thread from mid-2025 was a pile of three-view reconstructions and a queue of people asking to run it locally. You can't; the weights aren't out. This node is the other door: it calls Hitem3D 2.0 on BytePlus ModelArk with your own key and hands the result back to the graph as a FILE_3D.

That distinction is the reason to care. Local image-to-3D means Hunyuan3D or TRELLIS in ComfyUI-3D-Pack: CUDA extensions built against your exact torch version, or an 8GB VRAM conversion fight. This node means a git clone, one key, and a queue. You pay per task instead of per evening.

What it actually does

Give it one to four pictures of one object; it submits a task, polls, downloads the file and returns the model. No local inference, no weights, nothing compiled. The source is plain about the plumbing: it posts to the Seedance task endpoint, sends the model options as --name value flags inside a text item, packs your images as base64 data URIs, polls every four seconds, then downloads file_url - a link BytePlus keeps for 24 hours, so the node grabs it the moment the task lands.

What comes back is the standard honest deliverable of this field: a mesh whose silhouette impresses and whose topology doesn't. Set expectations with that Hitem3D thread itself - good enough as a high-poly starting block to remesh in ZBrush and bake down in Blender, not an asset you rig as-is. Printing, background props, a hero object you'll retopo anyway: fine. Anything that has to deform: budget the cleanup pass.

The inputs you'll actually touch

images is the whole game: one image batch, 1–4 frames, in the order front, back, left, right. One image is fine and the node sends no view information at all - the model invents the rest. Four is where it gets good.

resolution is 1536 (default) or 1536pro. request_type is Geometry and texture or Geometry only; the latter returns an untextured model, which is right if you're taking it into your own texturing pass. file_format defaults to glb, and the pack also offers obj, stl, fbx, usdz. Keep GLB unless something downstream forces otherwise, because that's the one carrying the texture.

The two advanced fields are where people get it wrong. views is a four-digit bitmap for front, back, left, right - 1010 means your two images are front and left. Leave it empty and the node assumes the first views in order (two images = front and back). The number of 1s must equal your image count, or you get a validation error before anything bills. face sets an exact face count between 100,000 and 2,000,000; 0 uses the model default.

Outputs: model, the FILE_3D that goes into core's Save 3D (Advanced) node to view and keep, and response, a JSON string with the task ID and format - screenshot that, it's your receipt.

Install

ComfyUI-Manager: search BytePlus ModelArk, or:

cd ComfyUI/custom_nodes
git clone https://github.com/byteplus-sa/ComfyUI-BytePlus-ModelArk
pip install -r ComfyUI-BytePlus-ModelArk/requirements.txt

Use the Python that runs ComfyUI, then restart. Dependencies are light - the BytePlus SDK, httpx, sniffio - no compile step, no weights, which is the entire point.

Then add a key: Settings → BytePlus, paste your ModelArk key, pick its region (ap-southeast-1 default, or eu-west-1), Save, no restart. Keys and models are per region, so create the key in the region you select and activate Hitem3D in the console first.

Where people get burned

Nothing saves unless you connect something. Unconsumed outputs don't run, which is kind to your bill, but a node wired to nothing also produces nothing. Always terminate in Save 3D (Advanced).

The nodes vanish on old ComfyUI. The pack only registers its 3D nodes when the running ComfyUI exposes the core FILE_3D type - 0.31.0 or newer. On an older build they silently don't appear, and the fix is updating ComfyUI, not reinstalling the pack.

It's the slow one. Hitem3D takes noticeably longer than Hyper3D and its GLB runs to tens of megabytes. Don't interrupt at the three-minute mark to "see if it worked" - interrupting cancels the pending task and you've paid for nothing. Paid task creation is never auto-retried, so a flaky submit can't bill twice; your manual rerun will.

A 401 is a region mismatch, not a bad key. If the console says the key is fine and ComfyUI says Invalid API Key, change the region in Settings before regenerating anything.

Content filters reject images, so feed it single-object shots on plain backgrounds. The pack ships a template that runs Seedream → Hyper3D and Hitem3D side by side, which is the sane way to compare both on your own object first.

The tradeoff stands: your images leave the machine under BytePlus's moderation policy, and every run is metered. If that's a dealbreaker, stay on Hunyuan3D and accept the lower ceiling.

CategoryBytePlus ModelArk/3D

Inputs (6)

NameTypeDefaultDescription
imagesIMAGE1 to 4 images of one object (a batch), in the order front, back, left, right. With several images, set views if they are not the first views.
resolutionCOMBO1536Model resolution: 1536 (default) or 1536pro.
request_typeCOMBOGeometry and textureGeometry only returns an untextured model.
file_formatCOMBOglbFormat of the 3D file. GLB is the default.
faceoptINT00–2000000Face count (100,000-2,000,000). 0 = the model's default.
viewsoptSTRINGWhich views the images are, as 4 digits for front, back, left, right: 1010 = front and left. One 1 per image. Empty = the first views in order.

Outputs (2)

NameTypeDescription
modelFILE_3DThe generated 3D model. Connect it to Save 3D Model to keep it, or to any 3D node.
responseSTRINGTask ID and format of the result, as JSON.