VNTANA Upload 3D Model
Push a 3D model into VNTANA and let its pipeline do the optimization
- credentials
- success
- product_uuid
- conversion_status
The reverse of VNTANADownloadModel, and arguably the most interesting node in this pack: VNTANAUpload3DModel takes a model file from your disk, creates a brand-new product entry in VNTANA, uploads the geometry, and hands the result to VNTANA's optimization pipeline - the server-side machinery that produces web-ready, mobile-ready, and high-quality variants of the same asset. If you're generating 3D content (Hunyuan3D, TRELLIS, TripoSR - the whole image-to-3D scene) and want it to land in a real product catalog, this is the handoff.
How it works
Three steps, and they're worth knowing because they explain the outputs:
- Create the product - the node POSTs a new product with the
nameyou gave it, in the workspace you're targeting, at thestatusyou picked. - Get a signed upload URL - same GCS signed-URL pattern as UploadRender.
- PUT the model file - bytes go straight to cloud storage.
Outputs: success (BOOLEAN), product_uuid (the new product's ID - save this, it's how you reference the product later), and conversion_status (which is "PENDING" - the node returns immediately after upload, and the actual optimization runs async on VNTANA's side).
The file handling is genuinely careful: it rejects symlinks, caps at 30GB, verifies magic bytes for known formats, and only accepts real regular files. The supported extensions are .glb, .gltf, .usdz, .fbx, .obj, .step, .stp.
Inputs that matter
- file_path and name - required. The file must exist; the name becomes the product name.
- pipeline_uuid - required, and the easy miss. This is the optimization pipeline VNTANA runs the model through, and you get it from
VNTANAListPipelines. No pipeline, no upload. - optimization_preset -
webOptimized(default),highQuality,mobile,preserveOriginal. - status -
DRAFT(default),LIVE_INTERNAL,LIVE_PUBLIC. Default toDRAFTfirst; review on the platform, then promote.
The preset reality check
The README sells these presets hard - Draco compression, 50K polygons, 2K textures, the works. Here's the thing the README doesn't tell you: in the current code, all four presets send the exact same parameter - {"desiredOutput": "AUTO"}. The dropdown is effectively a label; the real optimization decisions come from the pipeline_uuid you pass, which is where VNTANA's actual preset logic lives server-side. So don't over-index on choosing the "right" preset - it's currently a request, not a spec, and the pipeline is the thing that matters.
Install
Standard for this pack - light client, no models:
cd ComfyUI/custom_nodes
git clone https://github.com/VNTANA-3D/vntana-comfyui-node
cd vntana-comfyui-node
pip install -e .
Restart ComfyUI, or install from Manager via "vntana-comfyui-node".
Troubleshooting
- "File not found" -
file_pathis relative to where ComfyUI runs, not where your browser is. Use an absolute path. - "Invalid file type" / magic-byte errors - the file extension and content disagree. A
.glbrenamed to.objwill get rejected when the bytes don't match the claimed type. - "Invalid pipeline" - grab a real one from
VNTANAListPipelines; the node validates the UUID format before calling out. - Upload succeeded but nothing optimized -
conversion_statusisPENDINGby design. Optimization is async; check the product on the VNTANA platform after a bit.
The pipeline-centric design is the takeaway: this node is a clean API client, and the intelligence (the actual optimization presets) lives in your VNTANA workspace, configured through the pipeline you reference.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| credentials | VNTANA_CREDENTIALS | — | |
| file_path | STRING | — | |
| name | STRING | — | |
| pipeline_uuid | STRING | — | |
| workspace_uuidopt | STRING | — | |
| optimization_presetopt | COMBO | webOptimized | 4 options: webOptimized, highQuality, mobile, preserveOriginal |
| descriptionopt | STRING | — | |
| statusopt | COMBO | DRAFT | 3 options: DRAFT, LIVE_INTERNAL, LIVE_PUBLIC |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| success | BOOLEAN | — |
| product_uuid | STRING | — |
| conversion_status | STRING | — |