Skip to content

insodimension/gen-local-3d

v0.1.0MIT

Image-to-3D on this machine's GPU: Pixal3D (single view) and TRELLIS.2 through pixal3d.cpp's trellis-cli. No account, no key, no cost per model.

Local image-to-3D

What it is

Image-to-3D that runs on this machine's GPU, with no account, no key and no cost per model. The agent hands it one picture of an object with its background already removed, and it runs the model through pixal3d.cpp's trellis-cli and returns a textured glb. It is a connector for the engine's generation jobs; it adds no tool of its own. Nothing is sent anywhere.

What it contains

  • A generation provider, id local-3d. It produces model3d and runs locally (runtime: "local"): a job is the trellis-cli process, started into its own work folder, with progress read from the [n/N] stage banners it prints.
  • Two models, listed in models.json:
    • pixal3d-sv, Pixal3D single view (Q8_0), whose weights live in the pixal3d-sv/ folder;
    • trellis2-4b-q8, TRELLIS.2-4B (Q8_0 GGUF), whose weights live in the trellis2-gguf/q8/ folder. Both take the options texture, atlas, gss and gsh; Pixal3D also takes fov. A model whose weights folder is missing or incomplete is not offered.
  • Defaults measured in the lab: gss 10, field of view 20 degrees, 1024, seed 42.
  • Output: the model as raw.glb plus its base-colour atlas, raw_base.png.

No tools, skills, rules or components.

Who can use it

Off by default (defaultEnabled: false); switch it on, then open its Connect form and give it two paths, not secrets: the full path of the trellis-cli executable, and the models folder that holds one subfolder of weights per model. They are kept on this machine at ~/.config/dimension-gen-local-3d/config.json. It is global: it declares no spaces, so once on it loads in every space. It needs pixal3d.cpp built or downloaded with its folder kept together, since trellis-cli.exe needs the CUDA and ggml DLLs beside it.

Limits and risks

  • It costs nothing to ask, and a lot of GPU to run. The quote is $0, so the spend caps (generation.maxUsdPerJob, generation.maxUsdPerDay) never stop it. A job holds the GPU for minutes: measured on an RTX 4080 SUPER, Pixal3D took 219 s for a prop and 581 s for a character, and TRELLIS.2 took 155 s and 526 s. The engine lets only one local job run at a time across all local providers; the rest wait in line.
  • It will not cut your picture out for you. One PNG per job, absolute path, background already removed. The pack reads the alpha channel and refuses a PNG that cuts nothing out, because trellis-cli would build the backdrop as geometry. Making the cutout is a separate step.
  • Pixal3D is prototype-only. Its weights' commercial terms are disputed upstream (TencentARC/Pixal3D issue 33) and its DINOv3 encoder is under Meta's DINOv3 License, which has not been legally reviewed. Its commercial use is recorded as unknown, and a release export is blocked.
  • TRELLIS.2 is MIT, but not yet cleared to ship. The bundled dinov3.gguf encoder has the same unreviewed DINOv3 License; the owner and legal must clear it before an asset ships.
  • Stopping a job kills only that job's process. Cancel and abort kill the one trellis-cli process tree the pack started, and return only once it is gone.
  • It reads GPU memory. While a job runs it samples the machine's total GPU memory in use through nvidia-smi, for the asset's provenance. The figure includes other programs on the GPU, so it is an upper bound.

Build and test

There is no build step: the engine loads index.ts as it is. The tests run a fake trellis-cli that prints the stage banners, writes the files, fails or hangs as a file beside it says, so they need no GPU and no weights. From the Dimension repository root:

bun test marketplace/packs/gen-local-3d/test